¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | |
| | | <groupId>com.wgcloud</groupId> |
| | | <artifactId>wgcloud-agent</artifactId> |
| | | <!--<version>2.0-SNAPSHOT</version>--> |
| | | <version>release</version> |
| | | |
| | | |
| | | <parent> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-parent</artifactId> |
| | | <version>2.6.6</version> |
| | | <relativePath/> |
| | | </parent> |
| | | |
| | | |
| | | <properties> |
| | | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| | | <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> |
| | | <java.version>1.8</java.version> |
| | | </properties> |
| | | |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-web</artifactId> |
| | | <exclusions> |
| | | <exclusion> |
| | | <groupId>com.fasterxml.jackson.core</groupId> |
| | | <artifactId>jackson-databind</artifactId> |
| | | </exclusion> |
| | | <exclusion> |
| | | <groupId>com.fasterxml.jackson.datatype</groupId> |
| | | <artifactId>jackson-datatype-jsr310</artifactId> |
| | | </exclusion> |
| | | <exclusion> |
| | | <groupId>com.fasterxml.jackson.datatype</groupId> |
| | | <artifactId>jackson-datatype-jdk8</artifactId> |
| | | </exclusion> |
| | | <exclusion> |
| | | <groupId>com.fasterxml.jackson.module</groupId> |
| | | <artifactId>jackson-module-parameter-names</artifactId> |
| | | </exclusion> |
| | | </exclusions> |
| | | </dependency> |
| | | <!--ä¿®å¤æ¼æ´CVE-2022-42003å¼å
¥æ°å
begin--> |
| | | <dependency> |
| | | <groupId>com.fasterxml.jackson.core</groupId> |
| | | <artifactId>jackson-databind</artifactId> |
| | | <version>2.14.0-rc3</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.fasterxml.jackson.datatype</groupId> |
| | | <artifactId>jackson-datatype-jsr310</artifactId> |
| | | <version>2.14.0-rc3</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.fasterxml.jackson.datatype</groupId> |
| | | <artifactId>jackson-datatype-jdk8</artifactId> |
| | | <version>2.14.0-rc3</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.fasterxml.jackson.module</groupId> |
| | | <artifactId>jackson-module-parameter-names</artifactId> |
| | | <version>2.14.0-rc3</version> |
| | | </dependency> |
| | | <!--ä¿®å¤æ¼æ´CVE-2022-42003å¼å
¥æ°å
end--> |
| | | <dependency> |
| | | <groupId>org.projectlombok</groupId> |
| | | <artifactId>lombok</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.hutool</groupId> |
| | | <artifactId>hutool-all</artifactId> |
| | | <version>4.4.5</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.apache.commons</groupId> |
| | | <artifactId>commons-lang3</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.github.oshi</groupId> |
| | | <artifactId>oshi-core</artifactId> |
| | | <version>5.3.6</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>net.java.dev.jna</groupId> |
| | | <artifactId>jna</artifactId> |
| | | <version>5.10.0</version> |
| | | </dependency> |
| | | <!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna-platform --> |
| | | <dependency> |
| | | <groupId>net.java.dev.jna</groupId> |
| | | <artifactId>jna-platform</artifactId> |
| | | <version>5.10.0</version> |
| | | </dependency> |
| | | <!-- çé¨ç½² --> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-devtools</artifactId> |
| | | <!-- å¯ç¨ --> |
| | | <optional>true</optional> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-maven-plugin</artifactId> |
| | | </plugin> |
| | | <!--ä¸å è¿ä¸ªï¼springboot v2.6.6 install伿¥éï¼å ä¸å°±å¥½äº--> |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-resources-plugin</artifactId> |
| | | <version>3.1.0</version> |
| | | </plugin> |
| | | </plugins> |
| | | <resources> |
| | | <resource> |
| | | <directory>src/main/resources/</directory> |
| | | <filtering>true</filtering> |
| | | </resource> |
| | | </resources> |
| | | </build> |
| | | |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud; |
| | | |
| | | import org.springframework.beans.BeansException; |
| | | import org.springframework.context.ApplicationContext; |
| | | import org.springframework.context.ApplicationContextAware; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:ApplicationContextHelper.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: ApplicationContextHelper.java |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | @Component |
| | | public class ApplicationContextHelper implements ApplicationContextAware { |
| | | private static ApplicationContext applicationContext; |
| | | |
| | | @Override |
| | | public void setApplicationContext(ApplicationContext applicationContext1) throws BeansException { |
| | | applicationContext = applicationContext1; |
| | | } |
| | | |
| | | public static ApplicationContext getApplicationContext() { |
| | | return applicationContext; |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | public static <T> T getBean(Class<T> clazz) { |
| | | return (T) applicationContext.getBean(clazz); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud; |
| | | |
| | | import lombok.Data; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | |
| | | @Data |
| | | @Configuration |
| | | @ConfigurationProperties(prefix = "base") |
| | | public class CommonConfig { |
| | | |
| | | |
| | | private String serverUrl = ""; |
| | | |
| | | private String bindIp = ""; |
| | | |
| | | private String wgToken = ""; |
| | | |
| | | public String getServerUrl() { |
| | | return serverUrl; |
| | | } |
| | | |
| | | public void setServerUrl(String serverUrl) { |
| | | this.serverUrl = serverUrl; |
| | | } |
| | | |
| | | public String getBindIp() { |
| | | return bindIp; |
| | | } |
| | | |
| | | public void setBindIp(String bindIp) { |
| | | this.bindIp = bindIp; |
| | | } |
| | | |
| | | public String getWgToken() { |
| | | return wgToken; |
| | | } |
| | | |
| | | public void setWgToken(String wgToken) { |
| | | this.wgToken = wgToken; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud; |
| | | |
| | | import cn.hutool.core.io.FileUtil; |
| | | import com.wgcloud.entity.AppInfo; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | | import java.sql.Timestamp; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:FormatUtil.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: FormatUtil.java |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class FormatUtil { |
| | | |
| | | private static Logger logger = LoggerFactory.getLogger(ScheduledTask.class); |
| | | |
| | | private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; |
| | | |
| | | /** |
| | | * æ ¼å¼ådoubleæ°æ®ï¼æªåå°æ°ç¹åæ°å |
| | | * |
| | | * @param str |
| | | * @param num |
| | | * @return |
| | | */ |
| | | public static double formatDouble(double str, int num) { |
| | | java.math.BigDecimal b = new java.math.BigDecimal(str); |
| | | double myNum3 = b.setScale(num, java.math.BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | return myNum3; |
| | | } |
| | | |
| | | public static String delChar(String str) { |
| | | if (StringUtils.isEmpty(str)) { |
| | | return ""; |
| | | } |
| | | str = str.replace("%", ""); |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åæ¶é´ |
| | | * |
| | | * @return å½åæ¥æ |
| | | */ |
| | | public static Timestamp getNowTime() { |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat(DATETIME_PATTERN); |
| | | Timestamp nowTime = Timestamp.valueOf(dateFormat.format(new Date())); |
| | | return nowTime; |
| | | } |
| | | |
| | | public static Date getDateBefore(Date datetimes, int day) { |
| | | Calendar now = Calendar.getInstance(); |
| | | now.setTime(datetimes); |
| | | now.set(Calendar.DATE, now.get(Calendar.DATE) - day); |
| | | return now.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * m转为g |
| | | * |
| | | * @param str |
| | | * @return |
| | | */ |
| | | public static double mToG(String str) { |
| | | double result = 0; |
| | | double mod = 1024; |
| | | if (str.contains("M")) { |
| | | double f = Double.valueOf(str.replace("M", "")); |
| | | result = f / mod; |
| | | } else if (str.contains("K")) { |
| | | double f = Double.valueOf(str.replace("K", "")); |
| | | result = (f / mod) / mod; |
| | | } else if (str.contains("T")) { |
| | | double f = Double.valueOf(str.replace("T", "")); |
| | | result = f * 1024; |
| | | } else if (str.contains("G")) { |
| | | result = Double.valueOf(str.replace("G", "")); |
| | | } |
| | | return formatDouble(result, 2); |
| | | } |
| | | |
| | | public static String getPidByFile(AppInfo appInfo) { |
| | | if ("1".equals(appInfo.getAppType())) { |
| | | return appInfo.getAppPid(); |
| | | } else { |
| | | try { |
| | | String pid = FileUtil.readString(appInfo.getAppPid(), "UTF-8"); |
| | | if (!StringUtils.isEmpty(pid)) { |
| | | return pid.trim(); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("è·åPIDæä»¶é误", e); |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.IOException; |
| | | import java.security.MessageDigest; |
| | | import java.security.NoSuchAlgorithmException; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:MD5Utils.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: Md5å å¯å¤ç |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | @SuppressWarnings("unused") |
| | | public class MD5Utils { |
| | | private static final Logger logger = LoggerFactory.getLogger(MD5Utils.class); |
| | | |
| | | // å
¨å±æ°ç» |
| | | private final static String[] strDigits = {"0", "1", "2", "3", "4", "5", |
| | | "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; |
| | | |
| | | /** |
| | | * 16è¿å¶å符 |
| | | */ |
| | | private final static char hexdigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', |
| | | '9', 'a', 'b', 'c', 'd', 'e', 'f'}; |
| | | |
| | | |
| | | /** |
| | | * 对æä»¶å
¨æçæMD5æè¦ |
| | | * |
| | | * @param file è¦å å¯çæä»¶ |
| | | * @return MD5æè¦ç |
| | | */ |
| | | public static String getMD5ForFile(String filePath) { |
| | | FileInputStream fis = null; |
| | | MessageDigest md = null; |
| | | try { |
| | | md = MessageDigest.getInstance("MD5"); |
| | | File file = new File(filePath); |
| | | if (!file.exists()) { |
| | | return ""; |
| | | } |
| | | fis = new FileInputStream(file); |
| | | byte[] buffer = new byte[4096]; |
| | | int length = -1; |
| | | while ((length = fis.read(buffer)) != -1) { |
| | | md.update(buffer, 0, length); |
| | | } |
| | | byte[] b = md.digest(); |
| | | return byteToHexString(b); |
| | | } catch (Exception ex) { |
| | | logger.error("è·åMD5ä¿¡æ¯åçå¼å¸¸ï¼" + ex.toString()); |
| | | return null; |
| | | } finally { |
| | | try { |
| | | if (null != fis) { |
| | | fis.close(); |
| | | } |
| | | } catch (IOException e) { |
| | | logger.error("è·åMD5ä¿¡æ¯åçå¼å¸¸ï¼" + e.toString()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æbyte[]æ°ç»è½¬æ¢æåå
è¿å¶åç¬¦ä¸²è¡¨ç¤ºå½¢å¼ |
| | | * |
| | | * @param tmp è¦è½¬æ¢çbyte[] |
| | | * @return åå
è¿å¶åç¬¦ä¸²è¡¨ç¤ºå½¢å¼ |
| | | */ |
| | | private static String byteToHexString(byte[] tmp) { |
| | | String s; |
| | | char str[] = new char[16 * 2]; |
| | | int k = 0; |
| | | for (int i = 0; i < 16; i++) { |
| | | byte byte0 = tmp[i]; |
| | | str[k++] = hexdigits[byte0 >>> 4 & 0xf]; |
| | | str[k++] = hexdigits[byte0 & 0xf]; |
| | | } |
| | | s = new String(str); |
| | | return s; |
| | | } |
| | | |
| | | // è¿åå½¢å¼ä¸ºæ°åè·å符串 |
| | | private static String byteToArrayString(byte bByte) { |
| | | int iRet = bByte; |
| | | // System.out.println("iRet="+iRet); |
| | | if (iRet < 0) { |
| | | iRet += 256; |
| | | } |
| | | int iD1 = iRet / 16; |
| | | int iD2 = iRet % 16; |
| | | return strDigits[iD1] + strDigits[iD2]; |
| | | } |
| | | |
| | | // è¿åå½¢å¼åªä¸ºæ°å |
| | | private static String byteToNum(byte bByte) { |
| | | int iRet = bByte; |
| | | System.out.println("iRet1=" + iRet); |
| | | if (iRet < 0) { |
| | | iRet += 256; |
| | | } |
| | | return String.valueOf(iRet); |
| | | } |
| | | |
| | | // 转æ¢åèæ°ç»ä¸º16è¿å¶å串 |
| | | private static String byteToString(byte[] bByte) { |
| | | StringBuffer sBuffer = new StringBuffer(); |
| | | for (int i = 0; i < bByte.length; i++) { |
| | | sBuffer.append(byteToArrayString(bByte[i])); |
| | | } |
| | | return sBuffer.toString(); |
| | | } |
| | | |
| | | public static String GetMD5Code(String strObj) { |
| | | if (StringUtils.isEmpty(strObj)) { |
| | | return ""; |
| | | } |
| | | String resultString = null; |
| | | try { |
| | | resultString = new String(strObj); |
| | | MessageDigest md = MessageDigest.getInstance("MD5"); |
| | | // md.digest() è¯¥å½æ°è¿åå¼ä¸ºåæ¾åå¸å¼ç»æçbyteæ°ç» |
| | | resultString = byteToString(md.digest(strObj.getBytes())); |
| | | } catch (NoSuchAlgorithmException ex) { |
| | | ex.printStackTrace(); |
| | | } |
| | | return resultString; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud; |
| | | |
| | | import com.wgcloud.entity.*; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import oshi.hardware.CentralProcessor; |
| | | import oshi.hardware.GlobalMemory; |
| | | import oshi.hardware.HardwareAbstractionLayer; |
| | | import oshi.hardware.NetworkIF; |
| | | import oshi.software.os.FileSystem; |
| | | import oshi.software.os.OSFileStore; |
| | | import oshi.software.os.OSProcess; |
| | | import oshi.software.os.OperatingSystem; |
| | | import oshi.util.Util; |
| | | |
| | | import java.sql.Timestamp; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @version v3.3 |
| | | * @ClassName: OshiUtil |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2021å¹´11æ19æ¥ |
| | | * @Description: Oshiå·¥å
·ç±» |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class OshiUtil { |
| | | |
| | | private static Logger logger = LoggerFactory.getLogger(OshiUtil.class); |
| | | |
| | | private static CommonConfig commonConfig = (CommonConfig) ApplicationContextHelper.getBean(CommonConfig.class); |
| | | |
| | | private static Runtime r = Runtime.getRuntime(); |
| | | |
| | | |
| | | /** |
| | | * è·åå
å使ç¨ä¿¡æ¯ |
| | | * |
| | | * @return |
| | | */ |
| | | public static MemState memory(GlobalMemory memory) throws Exception { |
| | | MemState memState = new MemState(); |
| | | long total = memory.getTotal() / 1024L / 1024L; |
| | | long free = memory.getAvailable() / 1024L / 1024L; |
| | | double usePer = (double) (total - free) / (double) total; |
| | | memState.setUsePer(FormatUtil.formatDouble(usePer * 100, 1)); |
| | | memState.setHostname(commonConfig.getBindIp()); |
| | | return memState; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è·åcpu使ç¨çï¼çå¾
çï¼ç©ºé²ç |
| | | * |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public static CpuState cpu(CentralProcessor processor) throws Exception { |
| | | |
| | | long[] prevTicks = processor.getSystemCpuLoadTicks(); |
| | | // Wait a second... |
| | | Util.sleep(1000); |
| | | |
| | | CpuState cpuState = new CpuState(); |
| | | cpuState.setSys(FormatUtil.formatDouble(processor.getSystemCpuLoadBetweenTicks(prevTicks) * 100, 1)); |
| | | cpuState.setHostname(commonConfig.getBindIp()); |
| | | return cpuState; |
| | | } |
| | | |
| | | /** |
| | | * è·åæä½ç³»ç»ä¿¡æ¯ |
| | | * |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public static com.wgcloud.entity.SystemInfo os(CentralProcessor processor, OperatingSystem os) throws Exception { |
| | | com.wgcloud.entity.SystemInfo systemInfo = new com.wgcloud.entity.SystemInfo(); |
| | | systemInfo.setHostname(commonConfig.getBindIp()); |
| | | systemInfo.setCpuCoreNum(processor.getLogicalProcessorCount() + ""); |
| | | String cpuInfo = processor.toString(); |
| | | if (cpuInfo.indexOf("\n") > 0) { |
| | | cpuInfo = cpuInfo.substring(0, cpuInfo.indexOf("\n")); |
| | | } |
| | | systemInfo.setCpuXh(cpuInfo); |
| | | systemInfo.setVersion(os.toString()); |
| | | systemInfo.setVersionDetail(os.toString()); |
| | | systemInfo.setState("1"); |
| | | return systemInfo; |
| | | } |
| | | |
| | | /** |
| | | * è·åç£ç使ç¨ä¿¡æ¯ |
| | | * |
| | | * @throws Exception |
| | | */ |
| | | public static List<DeskState> file(Timestamp t, FileSystem fileSystem) throws Exception { |
| | | |
| | | List<DeskState> list = new ArrayList<DeskState>(); |
| | | List<OSFileStore> fsArray = fileSystem.getFileStores(); |
| | | for (OSFileStore fs : fsArray) { |
| | | long usable = fs.getUsableSpace(); |
| | | long total = fs.getTotalSpace(); |
| | | |
| | | DeskState deskState = new DeskState(); |
| | | deskState.setFileSystem(fs.getName()); |
| | | deskState.setHostname(commonConfig.getBindIp()); |
| | | deskState.setUsed(((total - usable) / 1024 / 1024 / 1024) + "G"); |
| | | deskState.setAvail((usable / 1024 / 1024 / 1024) + "G"); |
| | | deskState.setSize((total / 1024 / 1024 / 1024) + "G"); |
| | | double usedSize = (total - usable); |
| | | double usePercent = 0; |
| | | if (total > 0) { |
| | | usePercent = FormatUtil.formatDouble(usedSize / total * 100D, 2); |
| | | } |
| | | deskState.setUsePer(usePercent + "%"); |
| | | deskState.setCreateTime(t); |
| | | list.add(deskState); |
| | | } |
| | | |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * è·åç³»ç»è´è½½ |
| | | * |
| | | * @return |
| | | */ |
| | | public static SysLoadState getLoadState(com.wgcloud.entity.SystemInfo systemInfo, CentralProcessor processor) throws Exception { |
| | | SysLoadState sysLoadState = new SysLoadState(); |
| | | if (systemInfo == null) { |
| | | return null; |
| | | } |
| | | if (systemInfo.getVersionDetail().indexOf("Microsoft") > -1) { |
| | | //windowsç³»ç»ä¸æ¯æè´è½½ææ |
| | | return null; |
| | | } |
| | | double[] loadAverage = processor.getSystemLoadAverage(3); |
| | | |
| | | sysLoadState.setOneLoad(loadAverage[0]); |
| | | sysLoadState.setHostname(commonConfig.getBindIp()); |
| | | sysLoadState.setFiveLoad(loadAverage[1]); |
| | | sysLoadState.setFifteenLoad(loadAverage[2]); |
| | | return sysLoadState; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è·åè¿ç¨ä¿¡æ¯ |
| | | * |
| | | * @return |
| | | */ |
| | | public static AppState getLoadPid(String pid, OperatingSystem os, GlobalMemory memory) throws Exception { |
| | | |
| | | try { |
| | | List<Integer> pidList = new ArrayList<>(); |
| | | pidList.add(Integer.valueOf(pid)); |
| | | List<OSProcess> procs = os.getProcesses(pidList); |
| | | |
| | | for (int i = 0; i < procs.size() && i < 5; i++) { |
| | | OSProcess p = procs.get(i); |
| | | |
| | | AppState appState = new AppState(); |
| | | appState.setCpuPer(FormatUtil.formatDouble(100d * (p.getKernelTime() + p.getUserTime()) / p.getUpTime(), 2)); |
| | | appState.setMemPer(FormatUtil.formatDouble(100d * p.getResidentSetSize() / memory.getTotal(), 2)); |
| | | return appState; |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | logger.error("è·åè¿ç¨ä¿¡æ¯é误", e); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è·åç½ç»å¸¦å®½ |
| | | * |
| | | * @param hal |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public static NetIoState net(HardwareAbstractionLayer hal) throws Exception { |
| | | long rxBytesBegin = 0; |
| | | long txBytesBegin = 0; |
| | | long rxPacketsBegin = 0; |
| | | long txPacketsBegin = 0; |
| | | long rxBytesEnd = 0; |
| | | long txBytesEnd = 0; |
| | | long rxPacketsEnd = 0; |
| | | long txPacketsEnd = 0; |
| | | List<NetworkIF> listBegin = hal.getNetworkIFs(); |
| | | for (NetworkIF net : listBegin) { |
| | | rxBytesBegin += net.getBytesRecv(); |
| | | txBytesBegin += net.getBytesSent(); |
| | | rxPacketsBegin += net.getPacketsRecv(); |
| | | txPacketsBegin += net.getPacketsSent(); |
| | | } |
| | | |
| | | //æå3ç§ |
| | | Thread.sleep(5000); |
| | | List<NetworkIF> listEnd = hal.getNetworkIFs(); |
| | | for (NetworkIF net : listEnd) { |
| | | rxBytesEnd += net.getBytesRecv(); |
| | | txBytesEnd += net.getBytesSent(); |
| | | rxPacketsEnd += net.getPacketsRecv(); |
| | | txPacketsEnd += net.getPacketsSent(); |
| | | } |
| | | |
| | | long rxBytesAvg = (rxBytesEnd - rxBytesBegin) / 3 / 1024; |
| | | long txBytesAvg = (txBytesEnd - txBytesBegin) / 3 / 1024; |
| | | long rxPacketsAvg = (rxPacketsEnd - rxPacketsBegin) / 3 / 1024; |
| | | long txPacketsAvg = (txPacketsEnd - txPacketsBegin) / 3 / 1024; |
| | | NetIoState netIoState = new NetIoState(); |
| | | netIoState.setRxbyt(rxBytesAvg + ""); |
| | | netIoState.setTxbyt(txBytesAvg + ""); |
| | | netIoState.setRxpck(rxPacketsAvg + ""); |
| | | netIoState.setTxpck(txPacketsAvg + ""); |
| | | netIoState.setHostname(commonConfig.getBindIp()); |
| | | return netIoState; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud; |
| | | |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:RestUtil.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: RestUtil.java |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | @Component |
| | | public class RestUtil { |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | @Autowired |
| | | private CommonConfig commonConfig; |
| | | |
| | | public String post(String url, JSONObject jsonObject) { |
| | | if (null != jsonObject) { |
| | | jsonObject.put("wgToken", MD5Utils.GetMD5Code(commonConfig.getWgToken())); |
| | | } |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_JSON_UTF8); |
| | | headers.add("Accept", MediaType.APPLICATION_JSON_UTF8.toString()); |
| | | HttpEntity<String> httpEntity = new HttpEntity<>(JSONUtil.parse(jsonObject).toString(), headers); |
| | | ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); |
| | | return responseEntity.getBody(); |
| | | } |
| | | |
| | | public JSONObject post(String url) { |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_JSON_UTF8); |
| | | headers.add("Accept", MediaType.APPLICATION_JSON_UTF8.toString()); |
| | | HttpEntity<String> httpEntity = new HttpEntity<>("", headers); |
| | | ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); |
| | | return JSONUtil.parseObj(responseEntity.getBody()); |
| | | } |
| | | |
| | | public JSONObject get(String url) { |
| | | ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class); |
| | | return JSONUtil.parseObj(responseEntity.getBody()); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud; |
| | | |
| | | |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.wgcloud.entity.*; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | import oshi.hardware.HardwareAbstractionLayer; |
| | | import oshi.software.os.OperatingSystem; |
| | | |
| | | import java.sql.Timestamp; |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.concurrent.LinkedBlockingDeque; |
| | | import java.util.concurrent.ThreadPoolExecutor; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:ScheduledTask.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: ScheduledTask.java |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | @Component |
| | | public class ScheduledTask { |
| | | |
| | | private Logger logger = LoggerFactory.getLogger(ScheduledTask.class); |
| | | public static List<AppInfo> appInfoList = Collections.synchronizedList(new ArrayList<AppInfo>()); |
| | | @Autowired |
| | | private RestUtil restUtil; |
| | | @Autowired |
| | | private CommonConfig commonConfig; |
| | | |
| | | private SystemInfo systemInfo = null; |
| | | |
| | | |
| | | /** |
| | | * çº¿ç¨æ± |
| | | */ |
| | | static ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 2, TimeUnit.MINUTES, new LinkedBlockingDeque<>()); |
| | | |
| | | /** |
| | | * 60ç§åæ§è¡ï¼æ¯é120ç§æ§è¡, åä½ï¼msã |
| | | */ |
| | | @Scheduled(initialDelay = 59 * 1000L, fixedRate = 120 * 1000) |
| | | public void minTask() { |
| | | List<AppInfo> APP_INFO_LIST_CP = new ArrayList<AppInfo>(); |
| | | APP_INFO_LIST_CP.addAll(appInfoList); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | LogInfo logInfo = new LogInfo(); |
| | | Timestamp t = FormatUtil.getNowTime(); |
| | | logInfo.setHostname(commonConfig.getBindIp() + "ï¼Agenté误"); |
| | | logInfo.setCreateTime(t); |
| | | try { |
| | | oshi.SystemInfo si = new oshi.SystemInfo(); |
| | | |
| | | HardwareAbstractionLayer hal = si.getHardware(); |
| | | OperatingSystem os = si.getOperatingSystem(); |
| | | |
| | | // æä½ç³»ç»ä¿¡æ¯ |
| | | systemInfo = OshiUtil.os(hal.getProcessor(), os); |
| | | systemInfo.setCreateTime(t); |
| | | // æä»¶ç³»ç»ä¿¡æ¯ |
| | | List<DeskState> deskStateList = OshiUtil.file(t, os.getFileSystem()); |
| | | // cpuä¿¡æ¯ |
| | | CpuState cpuState = OshiUtil.cpu(hal.getProcessor()); |
| | | cpuState.setCreateTime(t); |
| | | // å
åä¿¡æ¯ |
| | | MemState memState = OshiUtil.memory(hal.getMemory()); |
| | | memState.setCreateTime(t); |
| | | // ç½ç»æµéä¿¡æ¯ |
| | | NetIoState netIoState = OshiUtil.net(hal); |
| | | netIoState.setCreateTime(t); |
| | | // ç³»ç»è´è½½ä¿¡æ¯ |
| | | SysLoadState sysLoadState = OshiUtil.getLoadState(systemInfo, hal.getProcessor()); |
| | | if (sysLoadState != null) { |
| | | sysLoadState.setCreateTime(t); |
| | | } |
| | | if (cpuState != null) { |
| | | jsonObject.put("cpuState", cpuState); |
| | | } |
| | | if (memState != null) { |
| | | jsonObject.put("memState", memState); |
| | | } |
| | | if (netIoState != null) { |
| | | jsonObject.put("netIoState", netIoState); |
| | | } |
| | | if (sysLoadState != null) { |
| | | jsonObject.put("sysLoadState", sysLoadState); |
| | | } |
| | | if (systemInfo != null) { |
| | | if (memState != null) { |
| | | systemInfo.setVersionDetail(systemInfo.getVersion() + "ï¼æ»å
åï¼" + oshi.util.FormatUtil.formatBytes(hal.getMemory().getTotal())); |
| | | systemInfo.setMemPer(memState.getUsePer()); |
| | | } else { |
| | | systemInfo.setMemPer(0d); |
| | | } |
| | | if (cpuState != null) { |
| | | systemInfo.setCpuPer(cpuState.getSys()); |
| | | } else { |
| | | systemInfo.setCpuPer(0d); |
| | | } |
| | | jsonObject.put("systemInfo", systemInfo); |
| | | } |
| | | if (deskStateList != null) { |
| | | jsonObject.put("deskStateList", deskStateList); |
| | | } |
| | | //è¿ç¨ä¿¡æ¯ |
| | | if (APP_INFO_LIST_CP.size() > 0) { |
| | | List<AppInfo> appInfoResList = new ArrayList<>(); |
| | | List<AppState> appStateResList = new ArrayList<>(); |
| | | for (AppInfo appInfo : APP_INFO_LIST_CP) { |
| | | appInfo.setHostname(commonConfig.getBindIp()); |
| | | appInfo.setCreateTime(t); |
| | | appInfo.setState("1"); |
| | | String pid = FormatUtil.getPidByFile(appInfo); |
| | | if (StringUtils.isEmpty(pid)) { |
| | | continue; |
| | | } |
| | | AppState appState = OshiUtil.getLoadPid(pid, os, hal.getMemory()); |
| | | if (appState != null) { |
| | | appState.setCreateTime(t); |
| | | appState.setAppInfoId(appInfo.getId()); |
| | | appInfo.setMemPer(appState.getMemPer()); |
| | | appInfo.setCpuPer(appState.getCpuPer()); |
| | | appInfoResList.add(appInfo); |
| | | appStateResList.add(appState); |
| | | } |
| | | } |
| | | jsonObject.put("appInfoList", appInfoResList); |
| | | jsonObject.put("appStateList", appStateResList); |
| | | } |
| | | |
| | | logger.debug("---------------" + jsonObject.toString()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | logInfo.setInfoContent(e.toString()); |
| | | } finally { |
| | | if (!StringUtils.isEmpty(logInfo.getInfoContent())) { |
| | | jsonObject.put("logInfo", logInfo); |
| | | } |
| | | restUtil.post(commonConfig.getServerUrl() + "/wgcloud/agent/minTask", jsonObject); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 30ç§åæ§è¡ï¼æ¯é5åéæ§è¡, åä½ï¼msã |
| | | * è·åçæ§è¿ç¨ |
| | | */ |
| | | @Scheduled(initialDelay = 28 * 1000L, fixedRate = 300 * 1000) |
| | | public void appInfoListTask() { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | LogInfo logInfo = new LogInfo(); |
| | | Timestamp t = FormatUtil.getNowTime(); |
| | | logInfo.setHostname(commonConfig.getBindIp() + "ï¼Agentè·åè¿ç¨å表é误"); |
| | | logInfo.setCreateTime(t); |
| | | try { |
| | | JSONObject paramsJson = new JSONObject(); |
| | | paramsJson.put("hostname", commonConfig.getBindIp()); |
| | | String resultJson = restUtil.post(commonConfig.getServerUrl() + "/wgcloud/appInfo/agentList", paramsJson); |
| | | if (resultJson != null) { |
| | | JSONArray resultArray = JSONUtil.parseArray(resultJson); |
| | | appInfoList.clear(); |
| | | if (resultArray.size() > 0) { |
| | | appInfoList = JSONUtil.toList(resultArray, AppInfo.class); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | logInfo.setInfoContent(e.toString()); |
| | | } finally { |
| | | if (!StringUtils.isEmpty(logInfo.getInfoContent())) { |
| | | jsonObject.put("logInfo", logInfo); |
| | | } |
| | | restUtil.post(commonConfig.getServerUrl() + "/wgcloud/agent/minTask", jsonObject); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud; |
| | | |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.boot.web.client.RestTemplateBuilder; |
| | | import org.springframework.cache.annotation.EnableCaching; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.ComponentScan; |
| | | import org.springframework.http.converter.StringHttpMessageConverter; |
| | | import org.springframework.scheduling.TaskScheduler; |
| | | import org.springframework.scheduling.annotation.EnableScheduling; |
| | | import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.nio.charset.Charset; |
| | | |
| | | @SpringBootApplication |
| | | @ComponentScan(basePackages = "com.wgcloud") |
| | | @EnableCaching |
| | | @EnableScheduling |
| | | public class WgcloudServiceApplication { |
| | | public static void main(String[] args) { |
| | | SpringApplication.run(WgcloudServiceApplication.class, args); |
| | | } |
| | | |
| | | @Bean |
| | | public RestTemplate restTemplate() { |
| | | StringHttpMessageConverter m = new StringHttpMessageConverter(Charset.forName("UTF-8")); |
| | | RestTemplate restTemplate = new RestTemplateBuilder().additionalMessageConverters(m).build(); |
| | | return restTemplate; |
| | | } |
| | | |
| | | @Bean |
| | | public TaskScheduler taskScheduler() { |
| | | ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); |
| | | taskScheduler.setPoolSize(10); |
| | | return taskScheduler; |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:AccountInfo.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: AccountInfo.java |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class AccountInfo extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -6510176051328150406L; |
| | | |
| | | /** |
| | | * ç»å½å¸å· |
| | | */ |
| | | private String account; |
| | | |
| | | /** |
| | | * keyæ è¯ |
| | | */ |
| | | private String accountMd5; |
| | | |
| | | /** |
| | | * ç¨æ·è§è²ï¼admin管çåï¼useræ®éç¨æ·,testæµè¯ç¨æ· |
| | | */ |
| | | private String role; |
| | | |
| | | /** |
| | | * é®ç®± |
| | | */ |
| | | private String email; |
| | | |
| | | /** |
| | | * å¯ç |
| | | */ |
| | | private String passwd; |
| | | |
| | | /** |
| | | * ææºå·ç |
| | | */ |
| | | private String phone; |
| | | |
| | | /** |
| | | * è¿ææ¶é´ |
| | | */ |
| | | private Date expDate; |
| | | |
| | | /** |
| | | * çå®å§å |
| | | */ |
| | | private String realName; |
| | | |
| | | |
| | | public String getAccount() { |
| | | return account; |
| | | } |
| | | |
| | | public void setAccount(String account) { |
| | | this.account = account; |
| | | } |
| | | |
| | | public String getEmail() { |
| | | return email; |
| | | } |
| | | |
| | | public void setEmail(String email) { |
| | | this.email = email; |
| | | } |
| | | |
| | | public String getPasswd() { |
| | | return passwd; |
| | | } |
| | | |
| | | public void setPasswd(String passwd) { |
| | | this.passwd = passwd; |
| | | } |
| | | |
| | | public String getPhone() { |
| | | return phone; |
| | | } |
| | | |
| | | public void setPhone(String phone) { |
| | | this.phone = phone; |
| | | } |
| | | |
| | | |
| | | public Date getExpDate() { |
| | | return expDate; |
| | | } |
| | | |
| | | public void setExpDate(Date expDate) { |
| | | this.expDate = expDate; |
| | | } |
| | | |
| | | public String getRealName() { |
| | | return realName; |
| | | } |
| | | |
| | | public void setRealName(String realName) { |
| | | this.realName = realName; |
| | | } |
| | | |
| | | |
| | | public String getRole() { |
| | | return role; |
| | | } |
| | | |
| | | public void setRole(String role) { |
| | | this.role = role; |
| | | } |
| | | |
| | | |
| | | public String getAccountMd5() { |
| | | return accountMd5; |
| | | } |
| | | |
| | | public void setAccountMd5(String accountMd5) { |
| | | this.accountMd5 = accountMd5; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:AppInfo.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: app端å£ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class AppInfo extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -2913111613773445949L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * åºç¨è¿ç¨ID |
| | | */ |
| | | private String appPid; |
| | | |
| | | /** |
| | | * åºç¨è¿ç¨åç§° |
| | | */ |
| | | private String appName; |
| | | |
| | | /** |
| | | * å
å使ç¨M |
| | | */ |
| | | private Double memPer; |
| | | |
| | | /** |
| | | * cpu使ç¨ç |
| | | */ |
| | | private Double cpuPer; |
| | | |
| | | |
| | | /** |
| | | * è¿ç¨è·åéå¾ï¼1è¿ç¨idå·ï¼2è¿ç¨pidæä»¶ |
| | | */ |
| | | private String appType; |
| | | |
| | | |
| | | /** |
| | | * è¿ç¨ç¶æï¼1æ£å¸¸ï¼2ä¸çº¿ |
| | | */ |
| | | private String state; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | |
| | | public String getAppPid() { |
| | | return appPid; |
| | | } |
| | | |
| | | public void setAppPid(String appPid) { |
| | | this.appPid = appPid; |
| | | } |
| | | |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | public String getAppName() { |
| | | return appName; |
| | | } |
| | | |
| | | public void setAppName(String appName) { |
| | | this.appName = appName; |
| | | } |
| | | |
| | | public Double getMemPer() { |
| | | return memPer; |
| | | } |
| | | |
| | | public void setMemPer(Double memPer) { |
| | | this.memPer = memPer; |
| | | } |
| | | |
| | | public Double getCpuPer() { |
| | | return cpuPer; |
| | | } |
| | | |
| | | public void setCpuPer(Double cpuPer) { |
| | | this.cpuPer = cpuPer; |
| | | } |
| | | |
| | | public String getAppType() { |
| | | return appType; |
| | | } |
| | | |
| | | public void setAppType(String appType) { |
| | | this.appType = appType; |
| | | } |
| | | |
| | | public String getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(String state) { |
| | | this.state = state; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:AppState.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: appç¶æçæ§ |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class AppState extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -2913111613773445949L; |
| | | |
| | | |
| | | /** |
| | | * åºç¨ä¿¡æ¯ID |
| | | */ |
| | | private String appInfoId; |
| | | |
| | | |
| | | /** |
| | | * %CPU |
| | | */ |
| | | private Double cpuPer; |
| | | |
| | | /** |
| | | * %MEM |
| | | */ |
| | | private Double memPer; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public Double getCpuPer() { |
| | | return cpuPer; |
| | | } |
| | | |
| | | public void setCpuPer(Double cpuPer) { |
| | | this.cpuPer = cpuPer; |
| | | } |
| | | |
| | | |
| | | public String getAppInfoId() { |
| | | return appInfoId; |
| | | } |
| | | |
| | | public void setAppInfoId(String appInfoId) { |
| | | this.appInfoId = appInfoId; |
| | | } |
| | | |
| | | public Double getMemPer() { |
| | | return memPer; |
| | | } |
| | | |
| | | public void setMemPer(Double memPer) { |
| | | this.memPer = memPer; |
| | | } |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(5); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | |
| | | public class BaseEntity implements Serializable { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 8698319936744959815L; |
| | | |
| | | |
| | | private String id; |
| | | |
| | | private Integer page; |
| | | |
| | | private Integer pageSize; |
| | | |
| | | public String getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(String id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getPage() { |
| | | if (page == null) { |
| | | page = 1; |
| | | } |
| | | return page; |
| | | } |
| | | |
| | | public void setPage(Integer page) { |
| | | this.page = page; |
| | | } |
| | | |
| | | public Integer getPageSize() { |
| | | if (pageSize == null) { |
| | | pageSize = 20; |
| | | } |
| | | return pageSize; |
| | | } |
| | | |
| | | public void setPageSize(Integer pageSize) { |
| | | this.pageSize = pageSize; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:CpuState.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çCPUä½¿ç¨æ
åµ |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class CpuState extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -2913111613773445949L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * ç¨æ·æçCPUæ¶é´ï¼%ï¼åºå¼ |
| | | */ |
| | | private String user; |
| | | |
| | | /** |
| | | * cpu使ç¨ç |
| | | */ |
| | | private Double sys; |
| | | |
| | | /** |
| | | * å½å空é²ç |
| | | */ |
| | | private Double idle; |
| | | |
| | | /** |
| | | * cpuå½åçå¾
ç |
| | | */ |
| | | private Double iowait; |
| | | |
| | | /** |
| | | * ç¡¬ä¸ææ¶é´ï¼%ï¼ åºå¼ |
| | | */ |
| | | private String irq; |
| | | |
| | | /** |
| | | * è½¯ä¸ææ¶é´ï¼%ï¼ åºå¼ |
| | | */ |
| | | private String soft; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getUser() { |
| | | return user; |
| | | } |
| | | |
| | | public void setUser(String user) { |
| | | this.user = user; |
| | | } |
| | | |
| | | public Double getSys() { |
| | | return sys; |
| | | } |
| | | |
| | | public void setSys(Double sys) { |
| | | this.sys = sys; |
| | | } |
| | | |
| | | public Double getIdle() { |
| | | return idle; |
| | | } |
| | | |
| | | public void setIdle(Double idle) { |
| | | this.idle = idle; |
| | | } |
| | | |
| | | public Double getIowait() { |
| | | return iowait; |
| | | } |
| | | |
| | | public void setIowait(Double iowait) { |
| | | this.iowait = iowait; |
| | | } |
| | | |
| | | public String getIrq() { |
| | | return irq; |
| | | } |
| | | |
| | | public void setIrq(String irq) { |
| | | this.irq = irq; |
| | | } |
| | | |
| | | public String getSoft() { |
| | | return soft; |
| | | } |
| | | |
| | | public void setSoft(String soft) { |
| | | this.soft = soft; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(5); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:DeskState.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çç£ç大å°ä½¿ç¨ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class DeskState extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 879979812204191283L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * ç符类å |
| | | */ |
| | | private String fileSystem; |
| | | |
| | | /** |
| | | * ååºå¤§å° |
| | | */ |
| | | private String size; |
| | | |
| | | /** |
| | | * å·²ä½¿ç¨ |
| | | */ |
| | | private String used; |
| | | |
| | | /** |
| | | * å¯ç¨ |
| | | */ |
| | | private String avail; |
| | | |
| | | /** |
| | | * 已使ç¨ç¾åæ¯ |
| | | */ |
| | | private String usePer; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * yyyy-MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getFileSystem() { |
| | | return fileSystem; |
| | | } |
| | | |
| | | public void setFileSystem(String fileSystem) { |
| | | this.fileSystem = fileSystem; |
| | | } |
| | | |
| | | public String getSize() { |
| | | return size; |
| | | } |
| | | |
| | | public void setSize(String size) { |
| | | this.size = size; |
| | | } |
| | | |
| | | public String getUsed() { |
| | | return used; |
| | | } |
| | | |
| | | public void setUsed(String used) { |
| | | this.used = used; |
| | | } |
| | | |
| | | public String getAvail() { |
| | | return avail; |
| | | } |
| | | |
| | | public void setAvail(String avail) { |
| | | this.avail = avail; |
| | | } |
| | | |
| | | public String getUsePer() { |
| | | return usePer; |
| | | } |
| | | |
| | | public void setUsePer(String usePer) { |
| | | this.usePer = usePer; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(5); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:HostInfo.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: hostçIPå¯ç çä¿¡æ¯ |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class HostInfo extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 3875927332935900938L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String ip; |
| | | |
| | | /** |
| | | * ç¨æ· |
| | | */ |
| | | private String root; |
| | | |
| | | /** |
| | | * sshç«¯å£ |
| | | */ |
| | | private String port; |
| | | |
| | | /** |
| | | * å¯ç |
| | | */ |
| | | private String passwd; |
| | | |
| | | /** |
| | | * å¯ç |
| | | */ |
| | | private String remark; |
| | | |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getIp() { |
| | | return ip; |
| | | } |
| | | |
| | | public void setIp(String ip) { |
| | | this.ip = ip; |
| | | } |
| | | |
| | | public String getRoot() { |
| | | return root; |
| | | } |
| | | |
| | | public void setRoot(String root) { |
| | | this.root = root; |
| | | } |
| | | |
| | | public String getPort() { |
| | | return port; |
| | | } |
| | | |
| | | public void setPort(String port) { |
| | | this.port = port; |
| | | } |
| | | |
| | | public String getPasswd() { |
| | | return passwd; |
| | | } |
| | | |
| | | public void setPasswd(String passwd) { |
| | | this.passwd = passwd; |
| | | } |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getRemark() { |
| | | return remark; |
| | | } |
| | | |
| | | public void setRemark(String remark) { |
| | | this.remark = remark; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:LogInfo.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥å¿ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class LogInfo extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 1565538727002722890L; |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * æè¿° |
| | | */ |
| | | private String infoContent; |
| | | |
| | | /** |
| | | * 0æåï¼1失败 |
| | | */ |
| | | private String state; |
| | | |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | public String getInfoContent() { |
| | | return infoContent; |
| | | } |
| | | |
| | | |
| | | public void setInfoContent(String infoContent) { |
| | | this.infoContent = infoContent; |
| | | } |
| | | |
| | | |
| | | public String getState() { |
| | | return state; |
| | | } |
| | | |
| | | |
| | | public void setState(String state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:MemState.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çå
åä½¿ç¨æ
åµ |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class MemState extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -1412473355088780549L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * æ»è®¡å
åï¼M |
| | | */ |
| | | private String total; |
| | | |
| | | /** |
| | | * 已使ç¨å¤å°ï¼M |
| | | */ |
| | | private String used; |
| | | |
| | | /** |
| | | * æªä½¿ç¨ï¼M |
| | | */ |
| | | private String free; |
| | | |
| | | /** |
| | | * 已使ç¨ç¾åæ¯% |
| | | */ |
| | | private Double usePer; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * yyyy-MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getTotal() { |
| | | return total; |
| | | } |
| | | |
| | | public void setTotal(String total) { |
| | | this.total = total; |
| | | } |
| | | |
| | | public String getUsed() { |
| | | return used; |
| | | } |
| | | |
| | | public void setUsed(String used) { |
| | | this.used = used; |
| | | } |
| | | |
| | | public String getFree() { |
| | | return free; |
| | | } |
| | | |
| | | public void setFree(String free) { |
| | | this.free = free; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(5); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | public Double getUsePer() { |
| | | return usePer; |
| | | } |
| | | |
| | | public void setUsePer(Double usePer) { |
| | | this.usePer = usePer; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:NetIoState.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: ç½ç»è®¾å¤çååç |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class NetIoState extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -8314012397341825158L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * æ¯ç§éæ¥æ¶çæ°æ®å
,rxpck/s |
| | | */ |
| | | private String rxpck; |
| | | |
| | | /** |
| | | * æ¯ç§éåéçæ°æ®å
,txpck/s |
| | | */ |
| | | private String txpck; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éæ¥æ¶çKBæ°,rxkB/s |
| | | */ |
| | | private String rxbyt; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éåéçKBæ°,txkB/s |
| | | */ |
| | | private String txbyt; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éæ¥æ¶çåç¼©æ°æ®å
,rxcmp/s |
| | | */ |
| | | private String rxcmp; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éåéçåç¼©æ°æ®å
,txcmp/s |
| | | */ |
| | | private String txcmp; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éæ¥æ¶çå¤ææ°æ®å
,rxmcst/s |
| | | */ |
| | | private String rxmcst; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * yyyy-MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getRxpck() { |
| | | return rxpck; |
| | | } |
| | | |
| | | public void setRxpck(String rxpck) { |
| | | this.rxpck = rxpck; |
| | | } |
| | | |
| | | public String getTxpck() { |
| | | return txpck; |
| | | } |
| | | |
| | | public void setTxpck(String txpck) { |
| | | this.txpck = txpck; |
| | | } |
| | | |
| | | public String getRxbyt() { |
| | | return rxbyt; |
| | | } |
| | | |
| | | public void setRxbyt(String rxbyt) { |
| | | this.rxbyt = rxbyt; |
| | | } |
| | | |
| | | public String getTxbyt() { |
| | | return txbyt; |
| | | } |
| | | |
| | | public void setTxbyt(String txbyt) { |
| | | this.txbyt = txbyt; |
| | | } |
| | | |
| | | public String getRxcmp() { |
| | | return rxcmp; |
| | | } |
| | | |
| | | public void setRxcmp(String rxcmp) { |
| | | this.rxcmp = rxcmp; |
| | | } |
| | | |
| | | public String getTxcmp() { |
| | | return txcmp; |
| | | } |
| | | |
| | | public void setTxcmp(String txcmp) { |
| | | this.txcmp = txcmp; |
| | | } |
| | | |
| | | public String getRxmcst() { |
| | | return rxmcst; |
| | | } |
| | | |
| | | public void setRxmcst(String rxmcst) { |
| | | this.rxmcst = rxmcst; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(5); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:SysLoadState.java |
| | | * @author: wgcloud |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: uptimeæ¥çç³»ç»è´è½½ç¶æ |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class SysLoadState extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -4863071148000213553L; |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * 1åéä¹åå°ç°å¨çè´è½½ |
| | | */ |
| | | private Double oneLoad; |
| | | |
| | | /** |
| | | * 5åéä¹åå°ç°å¨çè´è½½ |
| | | */ |
| | | private Double fiveLoad; |
| | | |
| | | /** |
| | | * 15åéä¹åå°ç°å¨çè´è½½ |
| | | */ |
| | | private Double fifteenLoad; |
| | | |
| | | /** |
| | | * ç»å½ç¨æ·æ°é åºå¼ |
| | | */ |
| | | private String users; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * yyyy-MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public Double getOneLoad() { |
| | | return oneLoad; |
| | | } |
| | | |
| | | public void setOneLoad(Double oneLoad) { |
| | | this.oneLoad = oneLoad; |
| | | } |
| | | |
| | | public Double getFiveLoad() { |
| | | return fiveLoad; |
| | | } |
| | | |
| | | public void setFiveLoad(Double fiveLoad) { |
| | | this.fiveLoad = fiveLoad; |
| | | } |
| | | |
| | | public Double getFifteenLoad() { |
| | | return fifteenLoad; |
| | | } |
| | | |
| | | public void setFifteenLoad(Double fifteenLoad) { |
| | | this.fifteenLoad = fifteenLoad; |
| | | } |
| | | |
| | | public String getUsers() { |
| | | return users; |
| | | } |
| | | |
| | | public void setUsers(String users) { |
| | | this.users = users; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(5); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version V2.3 |
| | | * @ClassName:SystemInfo.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çç³»ç»ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 www.wgstart.com. All rights reserved. |
| | | */ |
| | | public class SystemInfo extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 879979812204191283L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * ç³»ç»çæ¬ä¿¡æ¯ |
| | | */ |
| | | private String version; |
| | | |
| | | /** |
| | | * ç³»ç»çæ¬è¯¦ç»ä¿¡æ¯ |
| | | */ |
| | | private String versionDetail; |
| | | |
| | | /** |
| | | * å
å使ç¨ç |
| | | */ |
| | | private Double memPer; |
| | | |
| | | /** |
| | | * coreç个æ°(峿 ¸æ°) |
| | | */ |
| | | private String cpuCoreNum; |
| | | |
| | | /** |
| | | * cpu使ç¨ç |
| | | */ |
| | | private Double cpuPer; |
| | | |
| | | /** |
| | | * CPUåå·ä¿¡æ¯ |
| | | */ |
| | | private String cpuXh; |
| | | |
| | | |
| | | /** |
| | | * 主æºç¶æï¼1æ£å¸¸ï¼2ä¸çº¿ |
| | | */ |
| | | private String state; |
| | | |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getVersion() { |
| | | return version; |
| | | } |
| | | |
| | | public void setVersion(String version) { |
| | | this.version = version; |
| | | } |
| | | |
| | | public String getVersionDetail() { |
| | | return versionDetail; |
| | | } |
| | | |
| | | public void setVersionDetail(String versionDetail) { |
| | | this.versionDetail = versionDetail; |
| | | } |
| | | |
| | | |
| | | public String getCpuCoreNum() { |
| | | return cpuCoreNum; |
| | | } |
| | | |
| | | public void setCpuCoreNum(String cpuCoreNum) { |
| | | this.cpuCoreNum = cpuCoreNum; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | public String getCpuXh() { |
| | | return cpuXh; |
| | | } |
| | | |
| | | public void setCpuXh(String cpuXh) { |
| | | this.cpuXh = cpuXh; |
| | | } |
| | | |
| | | public Double getMemPer() { |
| | | return memPer; |
| | | } |
| | | |
| | | public void setMemPer(Double memPer) { |
| | | this.memPer = memPer; |
| | | } |
| | | |
| | | public Double getCpuPer() { |
| | | return cpuPer; |
| | | } |
| | | |
| | | public void setCpuPer(Double cpuPer) { |
| | | this.cpuPer = cpuPer; |
| | | } |
| | | |
| | | public String getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(String state) { |
| | | this.state = state; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | server: |
| | | port: 9998 |
| | | servlet: |
| | | context-path: /wgcloud-agent |
| | | spring: |
| | | application: |
| | | name: wgcloud-agent |
| | | #æ¥å¿æä»¶è¾åºè·¯å¾ |
| | | logging: |
| | | file: |
| | | path: ./log |
| | | |
| | | #èªå®ä¹é
ç½®åæ° |
| | | base: |
| | | #wgcloud-server端访é®å°å |
| | | serverUrl: http://localhost:9999 |
| | | #æ¬æºipï¼ä¸è¦ç¨localhostæ127.0.0.1 |
| | | bindIp: 192.168.1.2 |
| | | #éä¿¡tokenï¼è¯·åserver端é
ç½®çwgTokenä¿æä¸è´ |
| | | wgToken: wgcloud |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!--该æ¥å¿å°æ¥å¿çº§å«ä¸åçlogä¿¡æ¯ä¿åå°ä¸åçæä»¶ä¸ --> |
| | | <configuration> |
| | | <include resource="org/springframework/boot/logging/logback/defaults.xml" /> |
| | | |
| | | <springProperty scope="context" name="springAppName" source="spring.application.name" /> |
| | | |
| | | <!-- æ¥å¿å¨å·¥ç¨ä¸çè¾åºä½ç½® --> |
| | | <property name="LOG_FILE" value="${LOG_PATH:-.}" /> |
| | | |
| | | <!-- å½©è²æ¥å¿ --> |
| | | <!-- å½©è²æ¥å¿ä¾èµç渲æç±» --> |
| | | <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> |
| | | <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> |
| | | <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> |
| | | <!-- å½©è²æ¥å¿æ ¼å¼ --> |
| | | <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> |
| | | |
| | | <!-- æ§å¶å°è¾åº --> |
| | | <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> |
| | | <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
| | | <level>INFO</level> |
| | | </filter> |
| | | <!-- æ¥å¿è¾åºç¼ç --> |
| | | <encoder> |
| | | <pattern>${CONSOLE_LOG_PATTERN}</pattern> |
| | | <charset>utf8</charset> |
| | | </encoder> |
| | | </appender> |
| | | |
| | | <!-- æç
§æ¯å¤©çææ¥å¿æä»¶ --> |
| | | <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <!--æ¥å¿æä»¶è¾åºçæä»¶å--> |
| | | <FileNamePattern>${LOG_FILE}/wgcloud.%d{yyyy-MM-dd}.log</FileNamePattern> |
| | | <MaxHistory>30</MaxHistory> |
| | | </rollingPolicy> |
| | | <layout class="ch.qos.logback.classic.PatternLayout"> |
| | | <!--æ ¼å¼åè¾åºï¼%dè¡¨ç¤ºæ¥æï¼%thread表示线ç¨åï¼%-5levelï¼çº§å«ä»å·¦æ¾ç¤º5个å符宽度%msgï¼æ¥å¿æ¶æ¯ï¼%næ¯æ¢è¡ç¬¦--> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n |
| | | </pattern> |
| | | </layout> |
| | | <!--æ¥å¿æä»¶æå¤§ç大å°--> |
| | | <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> |
| | | <MaxFileSize>100MB</MaxFileSize> |
| | | </triggeringPolicy> |
| | | </appender> |
| | | |
| | | |
| | | <!-- æ¥å¿è¾åºçº§å« --> |
| | | <root level="INFO"> |
| | | <appender-ref ref="console" /> |
| | | <appender-ref ref="FILE" /> |
| | | </root> |
| | | </configuration> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | |
| | | <groupId>com.wgcloud</groupId> |
| | | <artifactId>wgcloud-server</artifactId> |
| | | <!--<version>2.0-SNAPSHOT</version>--> |
| | | <version>release</version> |
| | | |
| | | |
| | | <parent> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-parent</artifactId> |
| | | <version>2.6.6</version> |
| | | <relativePath/> |
| | | </parent> |
| | | |
| | | |
| | | <properties> |
| | | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| | | <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> |
| | | <java.version>1.8</java.version> |
| | | </properties> |
| | | |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-thymeleaf</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-web</artifactId> |
| | | <exclusions> |
| | | <exclusion> |
| | | <groupId>com.fasterxml.jackson.core</groupId> |
| | | <artifactId>jackson-databind</artifactId> |
| | | </exclusion> |
| | | <exclusion> |
| | | <groupId>com.fasterxml.jackson.datatype</groupId> |
| | | <artifactId>jackson-datatype-jsr310</artifactId> |
| | | </exclusion> |
| | | <exclusion> |
| | | <groupId>com.fasterxml.jackson.datatype</groupId> |
| | | <artifactId>jackson-datatype-jdk8</artifactId> |
| | | </exclusion> |
| | | <exclusion> |
| | | <groupId>com.fasterxml.jackson.module</groupId> |
| | | <artifactId>jackson-module-parameter-names</artifactId> |
| | | </exclusion> |
| | | </exclusions> |
| | | </dependency> |
| | | <!--ä¿®å¤æ¼æ´CVE-2022-42003å¼å
¥æ°å
begin--> |
| | | <dependency> |
| | | <groupId>com.fasterxml.jackson.core</groupId> |
| | | <artifactId>jackson-databind</artifactId> |
| | | <version>2.14.0-rc3</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.fasterxml.jackson.datatype</groupId> |
| | | <artifactId>jackson-datatype-jsr310</artifactId> |
| | | <version>2.14.0-rc3</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.fasterxml.jackson.datatype</groupId> |
| | | <artifactId>jackson-datatype-jdk8</artifactId> |
| | | <version>2.14.0-rc3</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.fasterxml.jackson.module</groupId> |
| | | <artifactId>jackson-module-parameter-names</artifactId> |
| | | <version>2.14.0-rc3</version> |
| | | </dependency> |
| | | <!--ä¿®å¤æ¼æ´CVE-2022-42003å¼å
¥æ°å
end--> |
| | | <dependency> |
| | | <groupId>org.projectlombok</groupId> |
| | | <artifactId>lombok</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.hutool</groupId> |
| | | <artifactId>hutool-all</artifactId> |
| | | <version>4.4.5</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>mysql</groupId> |
| | | <artifactId>mysql-connector-java</artifactId> |
| | | <version>8.0.28</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.oracle</groupId> |
| | | <artifactId>ojdbc6</artifactId> |
| | | <version>11.2.0.3</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.github.pagehelper</groupId> |
| | | <artifactId>pagehelper</artifactId> |
| | | <version>4.1.0</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.apache.commons</groupId> |
| | | <artifactId>commons-lang3</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.mybatis.spring.boot</groupId> |
| | | <artifactId>mybatis-spring-boot-starter</artifactId> |
| | | <version>2.0.0</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.mybatis</groupId> |
| | | <artifactId>mybatis</artifactId> |
| | | <version>3.5.6</version> |
| | | </dependency> |
| | | <!-- CVE-2023-26119 æ¼æ´ä¿®å¤ 2023.11.27 --> |
| | | <dependency> |
| | | <groupId>org.htmlunit</groupId> |
| | | <artifactId>htmlunit</artifactId> |
| | | <version>3.6.0</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.jsoup</groupId> |
| | | <artifactId>jsoup</artifactId> |
| | | <version>1.12.1</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>net.coobird</groupId> |
| | | <artifactId>thumbnailator</artifactId> |
| | | <version>0.4.8</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>ch.ethz.ganymed</groupId> |
| | | <artifactId>ganymed-ssh2</artifactId> |
| | | <version>262</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.apache.commons</groupId> |
| | | <artifactId>commons-email</artifactId> |
| | | <version>1.5</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.postgresql</groupId> |
| | | <artifactId>postgresql</artifactId> |
| | | <version>42.5.0</version> |
| | | </dependency> |
| | | <!-- SqlServer --> |
| | | <dependency> |
| | | <groupId>com.microsoft.sqlserver</groupId> |
| | | <artifactId>sqljdbc4</artifactId> |
| | | <version>4.0</version> |
| | | </dependency> |
| | | <!-- çé¨ç½² --> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-devtools</artifactId> |
| | | <!-- å¯ç¨ --> |
| | | <optional>true</optional> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-maven-plugin</artifactId> |
| | | </plugin> |
| | | <!--ä¸å è¿ä¸ªï¼springboot v2.6.6 install伿¥éï¼å ä¸å°±å¥½äº--> |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-resources-plugin</artifactId> |
| | | <version>3.1.0</version> |
| | | </plugin> |
| | | </plugins> |
| | | <resources> |
| | | <!--<resource> |
| | | <directory>src/main/resources/</directory> |
| | | <filtering>true</filtering> |
| | | </resource>--> |
| | | <resource> |
| | | <directory>src/main/resources</directory> |
| | | <filtering>true</filtering> |
| | | <excludes> |
| | | <exclude>static/AdminLTE/plugins/fontawesome-free/webfonts/**</exclude> |
| | | </excludes> |
| | | </resource> |
| | | <resource> |
| | | <directory>src/main/resources</directory> |
| | | <filtering>false</filtering> |
| | | <includes> |
| | | <include>static/AdminLTE/plugins/fontawesome-free/webfonts/**</include> |
| | | </includes> |
| | | </resource> |
| | | </resources> |
| | | </build> |
| | | |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud; |
| | | |
| | | import org.mybatis.spring.annotation.MapperScan; |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.boot.web.client.RestTemplateBuilder; |
| | | import org.springframework.boot.web.servlet.ServletComponentScan; |
| | | import org.springframework.cache.annotation.EnableCaching; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.ComponentScan; |
| | | import org.springframework.http.converter.StringHttpMessageConverter; |
| | | import org.springframework.scheduling.TaskScheduler; |
| | | import org.springframework.scheduling.annotation.EnableScheduling; |
| | | import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.nio.charset.Charset; |
| | | |
| | | @SpringBootApplication |
| | | @MapperScan("com.wgcloud.mapper") |
| | | @ServletComponentScan("com.wgcloud.filter") |
| | | @ComponentScan(basePackages = "com.wgcloud") |
| | | @EnableCaching |
| | | @EnableScheduling |
| | | public class WgcloudServiceApplication { |
| | | public static void main(String[] args) { |
| | | SpringApplication.run(WgcloudServiceApplication.class, args); |
| | | } |
| | | |
| | | @Bean |
| | | public RestTemplate restTemplate() { |
| | | StringHttpMessageConverter m = new StringHttpMessageConverter(Charset.forName("UTF-8")); |
| | | RestTemplate restTemplate = new RestTemplateBuilder().additionalMessageConverters(m).build(); |
| | | return restTemplate; |
| | | } |
| | | |
| | | @Bean |
| | | public TaskScheduler taskScheduler() { |
| | | ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); |
| | | taskScheduler.setPoolSize(50); |
| | | return taskScheduler; |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.common; |
| | | |
| | | import org.springframework.beans.BeansException; |
| | | import org.springframework.context.ApplicationContext; |
| | | import org.springframework.context.ApplicationContextAware; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:ApplicationContextHelper.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: ApplicationContextHelper.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | @Component |
| | | public class ApplicationContextHelper implements ApplicationContextAware { |
| | | private static ApplicationContext applicationContext; |
| | | |
| | | @Override |
| | | public void setApplicationContext(ApplicationContext applicationContext1) throws BeansException { |
| | | applicationContext = applicationContext1; |
| | | } |
| | | |
| | | public static ApplicationContext getApplicationContext() { |
| | | return applicationContext; |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | public static <T> T getBean(Class<T> clazz) { |
| | | return (T) applicationContext.getBean(clazz); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.config; |
| | | |
| | | import lombok.Data; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | |
| | | @Data |
| | | @Configuration |
| | | @ConfigurationProperties(prefix = "base") |
| | | public class CommonConfig { |
| | | |
| | | |
| | | //admin管çåå¯ç |
| | | private String admindPwd = "111111"; |
| | | private String wgToken = ""; |
| | | private String dashView; |
| | | private Integer dbTableTimes = 3600000; |
| | | private Integer heathTimes = 600000; |
| | | |
| | | |
| | | public String getAdmindPwd() { |
| | | return admindPwd; |
| | | } |
| | | |
| | | public void setAdmindPwd(String admindPwd) { |
| | | this.admindPwd = admindPwd; |
| | | } |
| | | |
| | | public String getWgToken() { |
| | | return wgToken; |
| | | } |
| | | |
| | | public void setWgToken(String wgToken) { |
| | | this.wgToken = wgToken; |
| | | } |
| | | |
| | | |
| | | public String getDashView() { |
| | | if (StringUtils.isEmpty(dashView)) { |
| | | return "true"; |
| | | } |
| | | return dashView; |
| | | } |
| | | |
| | | public void setDashView(String dashView) { |
| | | this.dashView = dashView; |
| | | } |
| | | |
| | | public Integer getDbTableTimes() { |
| | | if (dbTableTimes == null) { |
| | | return 3600000; |
| | | } |
| | | return dbTableTimes; |
| | | } |
| | | |
| | | public void setDbTableTimes(Integer dbTableTimes) { |
| | | this.dbTableTimes = dbTableTimes; |
| | | } |
| | | |
| | | public Integer getHeathTimes() { |
| | | if (heathTimes == null) { |
| | | return 600000; |
| | | } |
| | | return heathTimes; |
| | | } |
| | | |
| | | public void setHeathTimes(Integer heathTimes) { |
| | | this.heathTimes = heathTimes; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.config; |
| | | |
| | | import lombok.Data; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | |
| | | @Data |
| | | @Configuration |
| | | @ConfigurationProperties(prefix = "mail") |
| | | public class MailConfig { |
| | | |
| | | |
| | | private Double memWarnVal = 98d; |
| | | private Double cpuWarnVal = 98d; |
| | | private String memWarnMail; |
| | | private String cpuWarnMail; |
| | | private String hostDownWarnMail; |
| | | private String appDownWarnMail; |
| | | private String heathWarnMail; |
| | | private String allWarnMail; |
| | | |
| | | |
| | | public Double getMemWarnVal() { |
| | | if (memWarnVal == null) { |
| | | return 98d; |
| | | } |
| | | return memWarnVal; |
| | | } |
| | | |
| | | public void setMemWarnVal(Double memWarnVal) { |
| | | this.memWarnVal = memWarnVal; |
| | | } |
| | | |
| | | public Double getCpuWarnVal() { |
| | | if (cpuWarnVal == null) { |
| | | return 98d; |
| | | } |
| | | return cpuWarnVal; |
| | | } |
| | | |
| | | public void setCpuWarnVal(Double cpuWarnVal) { |
| | | this.cpuWarnVal = cpuWarnVal; |
| | | } |
| | | |
| | | public String getMemWarnMail() { |
| | | if (StringUtils.isEmpty(memWarnMail)) { |
| | | return "true"; |
| | | } |
| | | return memWarnMail; |
| | | } |
| | | |
| | | public void setMemWarnMail(String memWarnMail) { |
| | | this.memWarnMail = memWarnMail; |
| | | } |
| | | |
| | | public String getCpuWarnMail() { |
| | | if (StringUtils.isEmpty(cpuWarnMail)) { |
| | | return "true"; |
| | | } |
| | | return cpuWarnMail; |
| | | } |
| | | |
| | | public void setCpuWarnMail(String cpuWarnMail) { |
| | | this.cpuWarnMail = cpuWarnMail; |
| | | } |
| | | |
| | | public String getHostDownWarnMail() { |
| | | if (StringUtils.isEmpty(hostDownWarnMail)) { |
| | | return "true"; |
| | | } |
| | | return hostDownWarnMail; |
| | | } |
| | | |
| | | public void setHostDownWarnMail(String hostDownWarnMail) { |
| | | this.hostDownWarnMail = hostDownWarnMail; |
| | | } |
| | | |
| | | public String getAppDownWarnMail() { |
| | | if (StringUtils.isEmpty(appDownWarnMail)) { |
| | | return "true"; |
| | | } |
| | | return appDownWarnMail; |
| | | } |
| | | |
| | | public void setAppDownWarnMail(String appDownWarnMail) { |
| | | this.appDownWarnMail = appDownWarnMail; |
| | | } |
| | | |
| | | public String getHeathWarnMail() { |
| | | if (StringUtils.isEmpty(heathWarnMail)) { |
| | | return "true"; |
| | | } |
| | | return heathWarnMail; |
| | | } |
| | | |
| | | public void setHeathWarnMail(String heathWarnMail) { |
| | | this.heathWarnMail = heathWarnMail; |
| | | } |
| | | |
| | | public String getAllWarnMail() { |
| | | if (StringUtils.isEmpty(allWarnMail)) { |
| | | return "true"; |
| | | } |
| | | return allWarnMail; |
| | | } |
| | | |
| | | public void setAllWarnMail(String allWarnMail) { |
| | | this.allWarnMail = allWarnMail; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.config; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | import java.util.Properties; |
| | | |
| | | /** |
| | | * @Description |
| | | * @Author Administrator |
| | | * @Date 2019/7/16 |
| | | */ |
| | | @Configuration |
| | | public class MybatisConf { |
| | | @Bean |
| | | public PageHelper pageHelper() { |
| | | PageHelper pageHelper = new PageHelper(); |
| | | Properties p = new Properties(); |
| | | p.setProperty("offsetAsPageNum", "true"); |
| | | p.setProperty("rowBoundsWithCount", "true"); |
| | | p.setProperty("reasonable", "true"); |
| | | p.setProperty("dialect", "mysql"); |
| | | pageHelper.setProperties(p); |
| | | return pageHelper; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.wgcloud.entity.*; |
| | | import com.wgcloud.service.LogInfoService; |
| | | import com.wgcloud.service.SystemInfoService; |
| | | import com.wgcloud.util.TokenUtils; |
| | | import com.wgcloud.util.msg.WarnMailUtil; |
| | | import com.wgcloud.util.staticvar.BatchData; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | import java.util.concurrent.LinkedBlockingDeque; |
| | | import java.util.concurrent.ThreadPoolExecutor; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:AgentController.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: AgentController.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/agent") |
| | | public class AgentController { |
| | | |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(AgentController.class); |
| | | |
| | | ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 40, 2, TimeUnit.MINUTES, new LinkedBlockingDeque<>()); |
| | | |
| | | |
| | | @Resource |
| | | private LogInfoService logInfoService; |
| | | @Resource |
| | | private SystemInfoService systemInfoService; |
| | | @Autowired |
| | | private TokenUtils tokenUtils; |
| | | |
| | | @ResponseBody |
| | | @RequestMapping("/minTask") |
| | | public JSONObject minTask(@RequestBody String paramBean) { |
| | | JSONObject agentJsonObject = (JSONObject) JSONUtil.parse(paramBean); |
| | | JSONObject resultJson = new JSONObject(); |
| | | if (!tokenUtils.checkAgentToken(agentJsonObject)) { |
| | | logger.error("token is invalidate"); |
| | | resultJson.put("result", "errorï¼token is invalidate"); |
| | | return resultJson; |
| | | } |
| | | JSONObject cpuState = agentJsonObject.getJSONObject("cpuState"); |
| | | JSONObject memState = agentJsonObject.getJSONObject("memState"); |
| | | JSONObject sysLoadState = agentJsonObject.getJSONObject("sysLoadState"); |
| | | JSONArray appInfoList = agentJsonObject.getJSONArray("appInfoList"); |
| | | JSONArray appStateList = agentJsonObject.getJSONArray("appStateList"); |
| | | JSONObject logInfo = agentJsonObject.getJSONObject("logInfo"); |
| | | JSONObject systemInfo = agentJsonObject.getJSONObject("systemInfo"); |
| | | JSONObject netIoState = agentJsonObject.getJSONObject("netIoState"); |
| | | JSONArray deskStateList = agentJsonObject.getJSONArray("deskStateList"); |
| | | |
| | | try { |
| | | |
| | | if (logInfo != null) { |
| | | LogInfo bean = new LogInfo(); |
| | | BeanUtil.copyProperties(logInfo, bean); |
| | | BatchData.LOG_INFO_LIST.add(bean); |
| | | } |
| | | if (cpuState != null) { |
| | | CpuState bean = new CpuState(); |
| | | BeanUtil.copyProperties(cpuState, bean); |
| | | BatchData.CPU_STATE_LIST.add(bean); |
| | | Runnable runnable = () -> { |
| | | WarnMailUtil.sendCpuWarnInfo(bean); |
| | | }; |
| | | executor.execute(runnable); |
| | | |
| | | } |
| | | if (memState != null) { |
| | | MemState bean = new MemState(); |
| | | BeanUtil.copyProperties(memState, bean); |
| | | BatchData.MEM_STATE_LIST.add(bean); |
| | | Runnable runnable = () -> { |
| | | WarnMailUtil.sendWarnInfo(bean); |
| | | }; |
| | | executor.execute(runnable); |
| | | } |
| | | if (sysLoadState != null) { |
| | | SysLoadState bean = new SysLoadState(); |
| | | BeanUtil.copyProperties(sysLoadState, bean); |
| | | BatchData.SYSLOAD_STATE_LIST.add(bean); |
| | | } |
| | | if (netIoState != null) { |
| | | NetIoState bean = new NetIoState(); |
| | | BeanUtil.copyProperties(netIoState, bean); |
| | | BatchData.NETIO_STATE_LIST.add(bean); |
| | | } |
| | | if (appInfoList != null && appStateList != null) { |
| | | List<AppInfo> appInfoResList = JSONUtil.toList(appInfoList, AppInfo.class); |
| | | for (AppInfo appInfo : appInfoResList) { |
| | | BatchData.APP_INFO_LIST.add(appInfo); |
| | | } |
| | | List<AppState> appStateResList = JSONUtil.toList(appStateList, AppState.class); |
| | | for (AppState appState : appStateResList) { |
| | | BatchData.APP_STATE_LIST.add(appState); |
| | | } |
| | | } |
| | | if (systemInfo != null) { |
| | | SystemInfo bean = new SystemInfo(); |
| | | BeanUtil.copyProperties(systemInfo, bean); |
| | | BatchData.SYSTEM_INFO_LIST.add(bean); |
| | | } |
| | | if (deskStateList != null) { |
| | | for (Object jsonObjects : deskStateList) { |
| | | DeskState bean = new DeskState(); |
| | | BeanUtil.copyProperties(jsonObjects, bean); |
| | | BatchData.DESK_STATE_LIST.add(bean); |
| | | } |
| | | } |
| | | resultJson.put("result", "success"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | resultJson.put("result", "errorï¼" + e.toString()); |
| | | } finally { |
| | | return resultJson; |
| | | } |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.AppInfo; |
| | | import com.wgcloud.entity.AppState; |
| | | import com.wgcloud.entity.SystemInfo; |
| | | import com.wgcloud.service.*; |
| | | import com.wgcloud.util.CodeUtil; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.PageUtil; |
| | | import com.wgcloud.util.TokenUtils; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:AppInfoController.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: AppInfoController.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/appInfo") |
| | | public class AppInfoController { |
| | | |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(AppInfoController.class); |
| | | |
| | | @Resource |
| | | private AppInfoService appInfoService; |
| | | |
| | | @Resource |
| | | private AppStateService appStateService; |
| | | |
| | | @Resource |
| | | private LogInfoService logInfoService; |
| | | |
| | | @Resource |
| | | private DashboardService dashBoardService; |
| | | |
| | | @Resource |
| | | private SystemInfoService systemInfoService; |
| | | |
| | | @Resource |
| | | private HostInfoService hostInfoService; |
| | | |
| | | @Resource |
| | | private DashboardService dashboardService; |
| | | |
| | | @Autowired |
| | | private TokenUtils tokenUtils; |
| | | |
| | | |
| | | /** |
| | | * agentæ¥è¯¢è¿ç¨å表 |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "agentList") |
| | | public String agentList(@RequestBody String paramBean) { |
| | | JSONObject agentJsonObject = (JSONObject) JSONUtil.parse(paramBean); |
| | | if (!tokenUtils.checkAgentToken(agentJsonObject)) { |
| | | logger.error("token is invalidate"); |
| | | return "errorï¼token is invalidate"; |
| | | } |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | if (null == agentJsonObject.get("hostname") || StringUtils.isEmpty(agentJsonObject.get("hostname").toString())) { |
| | | return ""; |
| | | } |
| | | params.put("hostname", agentJsonObject.get("hostname").toString()); |
| | | try { |
| | | List<AppInfo> appInfoList = appInfoService.selectAllByParams(params); |
| | | return JSONUtil.toJsonStr(appInfoList); |
| | | } catch (Exception e) { |
| | | logger.error("agentè·åè¿ç¨ä¿¡æ¯é误", e); |
| | | logInfoService.save("agentè·åè¿ç¨ä¿¡æ¯é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶æ¥è¯¢è¿ç¨å表 |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "list") |
| | | public String AppInfoList(AppInfo appInfo, Model model) { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | try { |
| | | StringBuffer url = new StringBuffer(); |
| | | String hostname = null; |
| | | if (!StringUtils.isEmpty(appInfo.getHostname())) { |
| | | hostname = CodeUtil.unescape(appInfo.getHostname()); |
| | | params.put("hostname", hostname.trim()); |
| | | url.append("&hostname=").append(CodeUtil.escape(hostname)); |
| | | } |
| | | PageInfo pageInfo = appInfoService.selectByParams(params, appInfo.getPage(), appInfo.getPageSize()); |
| | | PageUtil.initPageNumber(pageInfo, model); |
| | | model.addAttribute("pageUrl", "/appInfo/list?1=1" + url.toString()); |
| | | model.addAttribute("page", pageInfo); |
| | | model.addAttribute("appInfo", appInfo); |
| | | } catch (Exception e) { |
| | | logger.error("æ¥è¯¢è¿ç¨ä¿¡æ¯é误", e); |
| | | logInfoService.save("æ¥è¯¢è¿ç¨ä¿¡æ¯é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | |
| | | } |
| | | return "app/list"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä¿ååºç¨çæ§ä¿¡æ¯ |
| | | * |
| | | * @param AppInfo |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "save") |
| | | public String saveAppInfo(AppInfo AppInfo, Model model, HttpServletRequest request) { |
| | | try { |
| | | if (StringUtils.isEmpty(AppInfo.getId())) { |
| | | appInfoService.save(AppInfo); |
| | | } else { |
| | | appInfoService.updateById(AppInfo); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("ä¿åè¿ç¨é误ï¼", e); |
| | | logInfoService.save(AppInfo.getHostname(), "ä¿åè¿ç¨é误ï¼" + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "redirect:/appInfo/list"; |
| | | } |
| | | |
| | | /** |
| | | * æ·»å |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "edit") |
| | | public String edit(Model model, HttpServletRequest request) { |
| | | String errorMsg = "æ·»å è¿ç¨ï¼"; |
| | | String id = request.getParameter("id"); |
| | | AppInfo appInfo = new AppInfo(); |
| | | try { |
| | | List<SystemInfo> systemInfoList = systemInfoService.selectAllByParams(new HashMap<>()); |
| | | model.addAttribute("systemInfoList", systemInfoList); |
| | | if (StringUtils.isEmpty(id)) { |
| | | model.addAttribute("appInfo", appInfo); |
| | | return "app/add"; |
| | | } |
| | | appInfo = appInfoService.selectById(id); |
| | | model.addAttribute("appInfo", appInfo); |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(appInfo.getAppPid(), errorMsg + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "app/add"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ¥ç该åºç¨ç»è®¡å¾ |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "view") |
| | | public String viewChart(Model model, HttpServletRequest request) { |
| | | String errorMsg = "æ¥çè¿ç¨ç»è®¡å¾é误ï¼"; |
| | | String id = request.getParameter("id"); |
| | | String date = request.getParameter("date"); |
| | | AppInfo appInfo = new AppInfo(); |
| | | try { |
| | | appInfo = appInfoService.selectById(id); |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | if (StringUtils.isEmpty(date)) { |
| | | date = DateUtil.getCurrentDate(); |
| | | } |
| | | dashboardService.setDateParam(date, params); |
| | | model.addAttribute("datenow", date); |
| | | model.addAttribute("dateList", dashboardService.getDateList()); |
| | | params.put("appInfoId", appInfo.getId()); |
| | | model.addAttribute("appInfo", appInfo); |
| | | List<AppState> appStateList = appStateService.selectAllByParams(params); |
| | | model.addAttribute("appStateList", JSONUtil.parseArray(appStateList)); |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(appInfo.getHostname() + ":" + appInfo.getAppPid(), errorMsg + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "app/view"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å é¤è¿ç¨ |
| | | * |
| | | * @param id |
| | | * @param model |
| | | * @param request |
| | | * @param redirectAttributes |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "del") |
| | | public String delete(Model model, HttpServletRequest request, RedirectAttributes redirectAttributes) { |
| | | String errorMsg = "å é¤è¿ç¨ä¿¡æ¯é误ï¼"; |
| | | AppInfo appInfo = new AppInfo(); |
| | | try { |
| | | if (!StringUtils.isEmpty(request.getParameter("id"))) { |
| | | appInfo = appInfoService.selectById(request.getParameter("id")); |
| | | logInfoService.save("å é¤è¿ç¨ï¼" + appInfo.getHostname(), "å é¤è¿ç¨ï¼" + appInfo.getHostname() + "ï¼" + appInfo.getAppPid(), StaticKeys.LOG_ERROR); |
| | | appInfoService.deleteById(request.getParameter("id").split(",")); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(appInfo.getHostname() + ":" + appInfo.getAppPid(), errorMsg + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | |
| | | return "redirect:/appInfo/list"; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | |
| | | import javax.imageio.ImageIO; |
| | | import javax.servlet.ServletOutputStream; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.servlet.http.HttpSession; |
| | | import java.awt.*; |
| | | import java.awt.image.BufferedImage; |
| | | import java.io.IOException; |
| | | import java.util.Random; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:CodeController.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: CodeController.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping(value = "/code") |
| | | public class CodeController { |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(CodeController.class); |
| | | private int codeCount = 4;//å®ä¹å¾ç䏿¾ç¤ºéªè¯ç çä¸ªæ° |
| | | char[] codeSequence = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; |
| | | |
| | | /** |
| | | * è·åéªè¯ç |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "get") |
| | | public void hostInfoList(Model model, HttpServletRequest req, HttpServletResponse resp) { |
| | | int xx = 13; |
| | | int codeY = 22; |
| | | int width = 70;//å®ä¹å¾ççwidth |
| | | int height = 30;//å®ä¹å¾ççheight |
| | | int fontHeight = 20; |
| | | // å®ä¹å¾åbuffer |
| | | BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); |
| | | // Graphics2D gd = buffImg.createGraphics(); |
| | | //Graphics2D gd = (Graphics2D) buffImg.getGraphics(); |
| | | Graphics gd = buffImg.getGraphics(); |
| | | // å建ä¸ä¸ªéæºæ°çæå¨ç±» |
| | | Random random = new Random(); |
| | | // å°å¾åå¡«å
为ç½è² |
| | | gd.setColor(Color.getColor("#ef3f22")); |
| | | gd.fillRect(0, 0, width, height); |
| | | |
| | | // å建åä½ï¼åä½ç大å°åºè¯¥æ ¹æ®å¾ççé«åº¦æ¥å®ã |
| | | Font font = new Font("ITALIC", 0, fontHeight); |
| | | // 设置åä½ã |
| | | gd.setFont(font); |
| | | |
| | | // ç»è¾¹æ¡ã |
| | | gd.setColor(Color.BLACK); |
| | | gd.drawRect(0, 0, width - 1, height - 1); |
| | | |
| | | |
| | | // randomCodeç¨äºä¿åéæºäº§ççéªè¯ç ï¼ä»¥ä¾¿ç¨æ·ç»å½åè¿è¡éªè¯ã |
| | | StringBuilder randomCode = new StringBuilder(); |
| | | int red = 0, green = 0, blue = 0; |
| | | Font font2 = new Font("Fixedsys", Font.BOLD, fontHeight); |
| | | // 设置åä½ã |
| | | gd.setFont(font2); |
| | | // éæºäº§çcodeCountæ°åçéªè¯ç ã |
| | | for (int i = 0; i < codeCount; i++) { |
| | | // å¾å°éæºäº§ççéªè¯ç æ°åã |
| | | String code = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]); |
| | | // 产çéæºçé¢è²å鿥æé é¢è²å¼ï¼è¿æ ·è¾åºçæ¯ä½æ°åçé¢è²å¼é½å°ä¸åã |
| | | red = random.nextInt(255); |
| | | green = random.nextInt(255); |
| | | blue = random.nextInt(255); |
| | | |
| | | // ç¨éæºäº§ççé¢è²å°éªè¯ç ç»å¶å°å¾åä¸ã |
| | | //gd.setColor(new Color(red, green, blue)); |
| | | gd.drawString(code, (i + 1) * xx, codeY); |
| | | // å°äº§ççåä¸ªéæºæ°ç»åå¨ä¸èµ·ã |
| | | randomCode.append(code); |
| | | } |
| | | // å°å使°åçéªè¯ç ä¿åå°Sessionä¸ã |
| | | HttpSession session = req.getSession(); |
| | | session.setAttribute(StaticKeys.SESSION_CODE, randomCode.toString()); |
| | | |
| | | // ç¦æ¢å¾åç¼åã |
| | | resp.setHeader("Pragma", "no-cache"); |
| | | resp.setHeader("Cache-Control", "no-cache"); |
| | | resp.setDateHeader("Expires", 0); |
| | | |
| | | resp.setContentType("image/jpeg"); |
| | | |
| | | // å°å¾åè¾åºå°Servletè¾åºæµä¸ã |
| | | ServletOutputStream sos; |
| | | try { |
| | | sos = resp.getOutputStream(); |
| | | ImageIO.write(buffImg, "jpeg", sos); |
| | | sos.close(); |
| | | } catch (IOException e) { |
| | | logger.error("çæéªè¯ç å¼å¸¸ï¼", e); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:CommonCotroller.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: CommonCotroller.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping(value = "/common/error") |
| | | public class CommonCotroller { |
| | | |
| | | |
| | | /** |
| | | * 转åå°404é¡µé¢ |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping("404") |
| | | public String to404(Model model, HttpServletRequest request) { |
| | | return "error/404"; |
| | | } |
| | | |
| | | /** |
| | | * 转åå°500é¡µé¢ |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping("500") |
| | | public String to500(Model model, HttpServletRequest request) { |
| | | return "error/500"; |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.dto.ChartInfo; |
| | | import com.wgcloud.dto.NetIoStateDto; |
| | | import com.wgcloud.entity.*; |
| | | import com.wgcloud.service.*; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.FormatUtil; |
| | | import com.wgcloud.util.PageUtil; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DashboardCotroller.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DashboardCotroller.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping(value = "/dash") |
| | | public class DashboardCotroller { |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(DashboardCotroller.class); |
| | | @Resource |
| | | DashboardService dashboardService; |
| | | @Resource |
| | | CpuStateService cpuStateService; |
| | | @Resource |
| | | DeskStateService deskStateService; |
| | | @Resource |
| | | MemStateService memStateService; |
| | | @Resource |
| | | NetIoStateService netIoStateService; |
| | | @Resource |
| | | SysLoadStateService sysLoadStateService; |
| | | @Resource |
| | | DbTableService dbTableService; |
| | | @Resource |
| | | DbInfoService dbInfoService; |
| | | @Resource |
| | | TcpStateService tcpStateService; |
| | | @Resource |
| | | SystemInfoService systemInfoService; |
| | | @Resource |
| | | MailSetService mailSetService; |
| | | @Resource |
| | | AppInfoService appInfoService; |
| | | @Resource |
| | | private LogInfoService logInfoService; |
| | | @Autowired |
| | | HeathMonitorService heathMonitorService; |
| | | @Autowired |
| | | HostInfoService hostInfoService; |
| | | |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶æ¥è¯¢hostå表 |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "main") |
| | | public String mainList(Model model, HttpServletRequest request) { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | List<ChartInfo> chartInfoList = new ArrayList<ChartInfo>(); |
| | | try { |
| | | int totalSystemInfoSize = systemInfoService.countByParams(params); |
| | | model.addAttribute("totalSystemInfoSize", totalSystemInfoSize); |
| | | int totalSizeApp = appInfoService.countByParams(params); |
| | | model.addAttribute("totalSizeApp", totalSizeApp); |
| | | |
| | | params.put("memPer", 90); |
| | | int memPerSize_90 = systemInfoService.countByParams(params); |
| | | double a = 0; |
| | | if (totalSystemInfoSize != 0) { |
| | | a = (double) memPerSize_90 / totalSystemInfoSize; |
| | | } |
| | | ChartInfo memPerSize_90_chart = new ChartInfo(); |
| | | memPerSize_90_chart.setItem("å
å>90%"); |
| | | memPerSize_90_chart.setCount(memPerSize_90); |
| | | memPerSize_90_chart.setPercent(FormatUtil.formatDouble(a, 2)); |
| | | chartInfoList.add(memPerSize_90_chart); |
| | | |
| | | params.put("memPer", 50); |
| | | params.put("memPerLe", 90); |
| | | int memPerSize_50_90 = systemInfoService.countByParams(params); |
| | | double b = 0; |
| | | if (totalSystemInfoSize != 0) { |
| | | b = (double) memPerSize_50_90 / totalSystemInfoSize; |
| | | } |
| | | ChartInfo memPerSize_50_90_chart = new ChartInfo(); |
| | | memPerSize_50_90_chart.setItem("å
å>50%ä¸<90%"); |
| | | memPerSize_50_90_chart.setCount(memPerSize_50_90); |
| | | memPerSize_50_90_chart.setPercent(FormatUtil.formatDouble(b, 2)); |
| | | chartInfoList.add(memPerSize_50_90_chart); |
| | | params.clear(); |
| | | |
| | | params.put("cpuPer", 90); |
| | | int cpuPerSize_90 = systemInfoService.countByParams(params); |
| | | double c = 0; |
| | | if (totalSystemInfoSize != 0) { |
| | | c = (double) cpuPerSize_90 / totalSystemInfoSize; |
| | | } |
| | | ChartInfo cpuPerSize_90_chart = new ChartInfo(); |
| | | cpuPerSize_90_chart.setItem("CPU>90%"); |
| | | cpuPerSize_90_chart.setCount(cpuPerSize_90); |
| | | cpuPerSize_90_chart.setPercent(FormatUtil.formatDouble(c, 2)); |
| | | chartInfoList.add(cpuPerSize_90_chart); |
| | | params.clear(); |
| | | |
| | | params.put("cpuPer", 90); |
| | | params.put("memPer", 90); |
| | | int perSize_90_90 = systemInfoService.countByParams(params); |
| | | double d = 0; |
| | | if (totalSystemInfoSize != 0) { |
| | | d = (double) perSize_90_90 / totalSystemInfoSize; |
| | | } |
| | | ChartInfo perSize_90_90_chart = new ChartInfo(); |
| | | perSize_90_90_chart.setItem("CPUåå
å>90%"); |
| | | perSize_90_90_chart.setCount(perSize_90_90); |
| | | perSize_90_90_chart.setPercent(FormatUtil.formatDouble(d, 2)); |
| | | chartInfoList.add(perSize_90_90_chart); |
| | | params.clear(); |
| | | |
| | | params.put("memPerLe", 50); |
| | | params.put("cpuPerLe", 50); |
| | | int perSize_50_50 = systemInfoService.countByParams(params); |
| | | double e = 0; |
| | | if (totalSystemInfoSize != 0) { |
| | | e = (double) perSize_50_50 / totalSystemInfoSize; |
| | | } |
| | | ChartInfo perSize_50_50_chart = new ChartInfo(); |
| | | perSize_50_50_chart.setItem("CPUåå
å<50%"); |
| | | perSize_50_50_chart.setCount(perSize_50_50); |
| | | perSize_50_50_chart.setPercent(FormatUtil.formatDouble(e, 2)); |
| | | chartInfoList.add(perSize_50_50_chart); |
| | | model.addAttribute("chartInfoList", JSONUtil.parseArray(chartInfoList)); |
| | | params.clear(); |
| | | |
| | | params.put("cpuPer", 90); |
| | | int memPerSizeApp = appInfoService.countByParams(params); |
| | | model.addAttribute("memPerSizeApp", memPerSizeApp); |
| | | params.clear(); |
| | | |
| | | int logSize = logInfoService.countByParams(params); |
| | | model.addAttribute("logSize", logSize); |
| | | |
| | | params.clear(); |
| | | int dbTableSize = dbTableService.countByParams(params); |
| | | model.addAttribute("dbTableSize", dbTableSize); |
| | | |
| | | Long dbTableSum = dbTableService.sumByParams(params); |
| | | model.addAttribute("dbTableSum", dbTableSum == null ? 0 : dbTableSum); |
| | | |
| | | PageInfo pageInfoDbTableList = dbTableService.selectByParams(params, 1, 10); |
| | | model.addAttribute("dbTableList", JSONUtil.parseArray(pageInfoDbTableList.getList())); |
| | | |
| | | int dbInfoSize = dbInfoService.countByParams(params); |
| | | model.addAttribute("dbInfoSize", dbInfoSize); |
| | | |
| | | int heathSize = heathMonitorService.countByParams(params); |
| | | model.addAttribute("heathSize", heathSize); |
| | | params.put("heathStatus", "200"); |
| | | int heath200Size = heathMonitorService.countByParams(params); |
| | | model.addAttribute("heath200Size", heath200Size); |
| | | model.addAttribute("heatherrSize", (heathSize - heath200Size)); |
| | | |
| | | |
| | | } catch (Exception e) { |
| | | logger.error("䏻颿¿ä¿¡æ¯å¼å¸¸ï¼", e); |
| | | logInfoService.save("dash/main", "䏻颿¿ä¿¡æ¯é误ï¼" + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | if (request.getParameter(StaticKeys.DASH_VIEW_ACCOUNT) != null) { |
| | | return "dashView/index"; |
| | | } else { |
| | | return "index"; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶æ¥è¯¢hostå表 |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "systemInfoList") |
| | | public String systemInfoList(SystemInfo systemInfo, Model model, HttpServletRequest request) { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | try { |
| | | StringBuffer url = new StringBuffer(); |
| | | if (request.getParameter(StaticKeys.DASH_VIEW_ACCOUNT) != null) { |
| | | url.append("&dashView=1"); |
| | | } |
| | | PageInfo<SystemInfo> pageInfo = systemInfoService.selectByParams(params, systemInfo.getPage(), systemInfo.getPageSize()); |
| | | |
| | | //设置ç£çæ»ä½¿ç¨ç begin |
| | | for (SystemInfo systemInfo1 : pageInfo.getList()) { |
| | | params.put("hostname", systemInfo1.getHostname()); |
| | | List<DeskState> deskStates = deskStateService.selectAllByParams(params); |
| | | try { |
| | | Double sumSize = 0d; |
| | | Double useSize = 0d; |
| | | for (DeskState deskState : deskStates) { |
| | | if (!StringUtils.isEmpty(deskState.getSize()) && !StringUtils.isEmpty(deskState.getUsed())) { |
| | | sumSize += Double.valueOf(deskState.getSize().replace("G", "")); |
| | | useSize += Double.valueOf(deskState.getUsed().replace("G", "")); |
| | | } |
| | | } |
| | | systemInfo1.setDiskPer(0D); |
| | | if (sumSize != 0) { |
| | | systemInfo1.setDiskPer(FormatUtil.formatDouble((useSize / sumSize) * 100, 2)); |
| | | } |
| | | } catch (Exception e){ |
| | | logger.error("设置ç£çæ»ä½¿ç¨çé误", e); |
| | | } |
| | | } |
| | | //设置ç£çæ»ä½¿ç¨ç end |
| | | |
| | | PageUtil.initPageNumber(pageInfo, model); |
| | | model.addAttribute("pageUrl", "/dash/systemInfoList?1=1" + url.toString()); |
| | | model.addAttribute("page", pageInfo); |
| | | } catch (Exception e) { |
| | | logger.error("æ¥è¯¢æå¡å¨å表é误ï¼", e); |
| | | logInfoService.save("æ¥è¯¢æå¡å¨å表é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | if (request.getParameter(StaticKeys.DASH_VIEW_ACCOUNT) != null) { |
| | | return "dashView/list"; |
| | | } else { |
| | | return "host/list"; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®IPæ¥è¯¢æå¡å¨è¯¦æ
ä¿¡æ¯ |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "detail") |
| | | public String hostDetail(Model model, HttpServletRequest request) { |
| | | //æå¡å¨åç§° |
| | | String id = request.getParameter("id"); |
| | | if (StringUtils.isEmpty(id)) { |
| | | return "error/500"; |
| | | } |
| | | String hostname = ""; |
| | | try { |
| | | SystemInfo systemInfo = systemInfoService.selectById(id); |
| | | hostname = systemInfo.getHostname(); |
| | | model.addAttribute("systemInfo", systemInfo); |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | params.put("hostname", systemInfo.getHostname()); |
| | | List<DeskState> deskStateList = deskStateService.selectAllByParams(params); |
| | | model.addAttribute("deskStateList", deskStateList); |
| | | } catch (Exception e) { |
| | | logger.error("æå¡å¨è¯¦ç»ä¿¡æ¯é误ï¼", e); |
| | | logInfoService.save(hostname, "æ¥çæå¡å¨è¯¦ç»ä¿¡æ¯é误", e.toString()); |
| | | } |
| | | if (request.getParameter(StaticKeys.DASH_VIEW_ACCOUNT) != null) { |
| | | return "dashView/view"; |
| | | } else { |
| | | return "host/view"; |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * å é¤ä¸»æº |
| | | * |
| | | * @param id |
| | | * @param model |
| | | * @param request |
| | | * @param redirectAttributes |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "del") |
| | | public String delete(Model model, HttpServletRequest request, RedirectAttributes redirectAttributes) { |
| | | String errorMsg = "å é¤ä¸»æºä¿¡æ¯é误ï¼"; |
| | | try { |
| | | if (!StringUtils.isEmpty(request.getParameter("id"))) { |
| | | String[] ids = request.getParameter("id").split(","); |
| | | for (String id : ids) { |
| | | SystemInfo sys = systemInfoService.selectById(id); |
| | | if (!StringUtils.isEmpty(sys.getHostname())) { |
| | | hostInfoService.deleteByIp(sys.getHostname().split(",")); |
| | | } |
| | | logInfoService.save("å é¤ä¸»æºï¼" + sys.getHostname(), sys.getHostname(), StaticKeys.LOG_ERROR); |
| | | } |
| | | systemInfoService.deleteById(ids); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "redirect:/dash/systemInfoList"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®IPæ¥è¯¢æå¡å¨å¾å½¢æ¥è¡¨ |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "chart") |
| | | public String hostChart(Model model, HttpServletRequest request) { |
| | | //æå¡å¨åç§° |
| | | String id = request.getParameter("id"); |
| | | String date = request.getParameter("date"); |
| | | if (StringUtils.isEmpty(id)) { |
| | | return "error/500"; |
| | | } |
| | | String hostname = ""; |
| | | try { |
| | | SystemInfo systemInfo = systemInfoService.selectById(id); |
| | | hostname = systemInfo.getHostname(); |
| | | model.addAttribute("systemInfo", systemInfo); |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | params.put("hostname", systemInfo.getHostname()); |
| | | if (StringUtils.isEmpty(date)) { |
| | | date = DateUtil.getCurrentDate(); |
| | | } |
| | | dashboardService.setDateParam(date, params); |
| | | model.addAttribute("datenow", date); |
| | | model.addAttribute("dateList", dashboardService.getDateList()); |
| | | List<CpuState> cpuStateList = cpuStateService.selectAllByParams(params); |
| | | model.addAttribute("cpuStateList", JSONUtil.parseArray(cpuStateList)); |
| | | model.addAttribute("cpuStateMaxVal", findCpuMaxVal(cpuStateList)); |
| | | List<MemState> memStateList = memStateService.selectAllByParams(params); |
| | | model.addAttribute("memStateList", JSONUtil.parseArray(memStateList)); |
| | | List<SysLoadState> ysLoadSstateList = sysLoadStateService.selectAllByParams(params); |
| | | model.addAttribute("ysLoadSstateList", JSONUtil.parseArray(ysLoadSstateList)); |
| | | model.addAttribute("ysLoadSstateMaxVal", findLoadMaxVal(ysLoadSstateList)); |
| | | List<NetIoState> netIoStateList = netIoStateService.selectAllByParams(params); |
| | | List<NetIoStateDto> netIoStateDtoList = toNetIoStateDto(netIoStateList); |
| | | model.addAttribute("netIoStateList", JSONUtil.parseArray(netIoStateDtoList)); |
| | | model.addAttribute("netIoStateBytMaxVal", findNetIoStateBytMaxVal(netIoStateDtoList)); |
| | | model.addAttribute("netIoStatePckMaxVal", findNetIoStatePckMaxVal(netIoStateDtoList)); |
| | | |
| | | } catch (Exception e) { |
| | | logger.error("æå¡å¨å¾å½¢æ¥è¡¨é误ï¼", e); |
| | | logInfoService.save(hostname, "å¾å½¢æ¥è¡¨é误", e.toString()); |
| | | } |
| | | if (request.getParameter(StaticKeys.DASH_VIEW_ACCOUNT) != null) { |
| | | return "dashView/viewChart"; |
| | | } else { |
| | | return "host/viewChart"; |
| | | } |
| | | } |
| | | |
| | | |
| | | private double findCpuMaxVal(List<CpuState> cpuStateList) { |
| | | double maxval = 0; |
| | | if (!CollectionUtil.isEmpty(cpuStateList)) { |
| | | for (CpuState cpuState : cpuStateList) { |
| | | if (null != cpuState.getIdle() && cpuState.getIdle() > maxval) { |
| | | maxval = cpuState.getIdle(); |
| | | } |
| | | if (null != cpuState.getSys() && cpuState.getSys() > maxval) { |
| | | maxval = cpuState.getSys(); |
| | | } |
| | | if (null != cpuState.getIowait() && cpuState.getIowait() > maxval) { |
| | | maxval = cpuState.getIowait(); |
| | | } |
| | | } |
| | | } |
| | | if (maxval == 0) { |
| | | maxval = 100; |
| | | } |
| | | return Math.ceil(maxval); |
| | | } |
| | | |
| | | private double findLoadMaxVal(List<SysLoadState> ysLoadSstateList) { |
| | | double maxval = 0; |
| | | if (!CollectionUtil.isEmpty(ysLoadSstateList)) { |
| | | for (SysLoadState sysLoadState : ysLoadSstateList) { |
| | | if (null != sysLoadState.getOneLoad() && sysLoadState.getOneLoad() > maxval) { |
| | | maxval = sysLoadState.getOneLoad(); |
| | | } |
| | | if (null != sysLoadState.getFiveLoad() && sysLoadState.getFiveLoad() > maxval) { |
| | | maxval = sysLoadState.getFiveLoad(); |
| | | } |
| | | if (null != sysLoadState.getFifteenLoad() && sysLoadState.getFifteenLoad() > maxval) { |
| | | maxval = sysLoadState.getFifteenLoad(); |
| | | } |
| | | } |
| | | } |
| | | if (maxval == 0) { |
| | | maxval = 1; |
| | | } |
| | | return Math.ceil(maxval); |
| | | } |
| | | |
| | | private List<NetIoStateDto> toNetIoStateDto(List<NetIoState> netIoStateList) { |
| | | List<NetIoStateDto> dtoList = new ArrayList<>(); |
| | | for (NetIoState netIoState : netIoStateList) { |
| | | NetIoStateDto dto = new NetIoStateDto(); |
| | | dto.setCreateTime(netIoState.getCreateTime()); |
| | | dto.setDateStr(netIoState.getDateStr()); |
| | | dto.setHostname(netIoState.getHostname()); |
| | | dto.setRxbyt(Integer.valueOf(netIoState.getRxbyt())); |
| | | dto.setRxpck(Integer.valueOf(netIoState.getRxpck())); |
| | | dto.setTxbyt(Integer.valueOf(netIoState.getTxbyt())); |
| | | dto.setTxpck(Integer.valueOf(netIoState.getTxpck())); |
| | | dtoList.add(dto); |
| | | } |
| | | return dtoList; |
| | | } |
| | | |
| | | private double findNetIoStateBytMaxVal(List<NetIoStateDto> netIoStateList) { |
| | | double maxval = 0; |
| | | if (!CollectionUtil.isEmpty(netIoStateList)) { |
| | | for (NetIoStateDto netIoState : netIoStateList) { |
| | | if (null != netIoState.getRxbyt() && netIoState.getRxbyt() > maxval) { |
| | | maxval = netIoState.getRxbyt(); |
| | | } |
| | | if (null != netIoState.getTxbyt() && netIoState.getTxbyt() > maxval) { |
| | | maxval = netIoState.getTxbyt(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | if (maxval == 0) { |
| | | maxval = 1; |
| | | } |
| | | return Math.ceil(maxval); |
| | | } |
| | | |
| | | private double findNetIoStatePckMaxVal(List<NetIoStateDto> netIoStateList) { |
| | | double maxval = 0; |
| | | if (!CollectionUtil.isEmpty(netIoStateList)) { |
| | | for (NetIoStateDto netIoState : netIoStateList) { |
| | | if (null != netIoState.getRxpck() && netIoState.getRxpck() > maxval) { |
| | | maxval = netIoState.getRxpck(); |
| | | } |
| | | if (null != netIoState.getTxpck() && netIoState.getTxpck() > maxval) { |
| | | maxval = netIoState.getTxpck(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | if (maxval == 0) { |
| | | maxval = 1; |
| | | } |
| | | return Math.ceil(maxval); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.dto.MessageDto; |
| | | import com.wgcloud.entity.DbInfo; |
| | | import com.wgcloud.service.DbInfoService; |
| | | import com.wgcloud.service.DbTableService; |
| | | import com.wgcloud.service.LogInfoService; |
| | | import com.wgcloud.util.PageUtil; |
| | | import com.wgcloud.util.jdbc.ConnectionUtil; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.jdbc.core.JdbcTemplate; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbInfoController.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DbInfoController.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/dbInfo") |
| | | public class DbInfoController { |
| | | |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(DbInfoController.class); |
| | | |
| | | @Resource |
| | | private DbInfoService dbInfoService; |
| | | @Resource |
| | | private DbTableService dbTableService; |
| | | @Resource |
| | | private LogInfoService logInfoService; |
| | | @Resource |
| | | private ConnectionUtil connectionUtil; |
| | | |
| | | |
| | | /** |
| | | * æµè¯æ°æ®åºè¿æ¥ |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "validate") |
| | | public String valdateDbInfo(DbInfo DbInfo, Model model, HttpServletRequest request) { |
| | | MessageDto messageDto = new MessageDto(); |
| | | try { |
| | | JdbcTemplate JdbcTemplate = connectionUtil.getJdbcTemplate(DbInfo); |
| | | if (JdbcTemplate == null) { |
| | | messageDto.setCode("1"); |
| | | messageDto.setMsg("è¿æ¥æ°æ®åºé误ï¼è¯·æ£æ¥åæ°æ¯å¦æ£ç¡®ã请å¨ç³»ç»ä¿¡æ¯éæ¥çæ¥å¿"); |
| | | } else { |
| | | messageDto.setCode("0"); |
| | | messageDto.setMsg("è¿æ¥æ°æ®åºæå"); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("æµè¯æ°æ®æºä¿¡æ¯é误", e); |
| | | logInfoService.save("æµè¯æ°æ®æºä¿¡æ¯é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | |
| | | } |
| | | return JSONUtil.toJsonStr(messageDto); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶æ¥è¯¢å表 |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "list") |
| | | public String DbInfoList(DbInfo DbInfo, Model model, HttpServletRequest request) { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | try { |
| | | PageInfo pageInfo = dbInfoService.selectByParams(params, DbInfo.getPage(), DbInfo.getPageSize()); |
| | | PageUtil.initPageNumber(pageInfo, model); |
| | | model.addAttribute("pageUrl", "/dbInfo/list?1=1"); |
| | | model.addAttribute("page", pageInfo); |
| | | } catch (Exception e) { |
| | | logger.error("æ¥è¯¢æ°æ®æºä¿¡æ¯é误", e); |
| | | logInfoService.save("æ¥è¯¢æ°æ®æºä¿¡æ¯é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | |
| | | } |
| | | return "mysql/dblist"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ·»å |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "edit") |
| | | public String edit(Model model, HttpServletRequest request) { |
| | | String errorMsg = "æ·»å æ°æ®æºï¼"; |
| | | String id = request.getParameter("id"); |
| | | DbInfo dbInfo = new DbInfo(); |
| | | try { |
| | | if (StringUtils.isEmpty(id)) { |
| | | model.addAttribute("dbInfo", dbInfo); |
| | | return "mysql/init"; |
| | | } |
| | | dbInfo = dbInfoService.selectById(id); |
| | | model.addAttribute("dbInfo", dbInfo); |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(dbInfo.getDbName(), errorMsg + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "mysql/init"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä¿åæ°æ®æºä¿¡æ¯ |
| | | * |
| | | * @param DbInfo |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "save") |
| | | public String saveDbInfo(DbInfo DbInfo, Model model, HttpServletRequest request) { |
| | | try { |
| | | if (StringUtils.isEmpty(DbInfo.getId())) { |
| | | dbInfoService.save(DbInfo); |
| | | } else { |
| | | dbInfoService.updateById(DbInfo); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("ä¿åæ°æ®æºé误ï¼", e); |
| | | logInfoService.save("ä¿åæ°æ®æºé误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "redirect:/dbInfo/list?msg=save"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å 餿°æ®æº |
| | | * |
| | | * @param id |
| | | * @param model |
| | | * @param request |
| | | * @param redirectAttributes |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "del") |
| | | public String delete(Model model, HttpServletRequest request, RedirectAttributes redirectAttributes) { |
| | | String errorMsg = "å 餿°æ®æºä¿¡æ¯é误ï¼"; |
| | | DbInfo DbInfo = new DbInfo(); |
| | | try { |
| | | if (!StringUtils.isEmpty(request.getParameter("id"))) { |
| | | DbInfo = dbInfoService.selectById(request.getParameter("id")); |
| | | logInfoService.save("å 餿°æ®æºï¼" + DbInfo.getAliasName(), "å 餿°æ®æºï¼" + DbInfo.getIp() + "ï¼" + DbInfo.getPort() + |
| | | "ï¼æ°æ®åºå«å" + DbInfo.getAliasName(), StaticKeys.LOG_ERROR); |
| | | dbInfoService.deleteById(request.getParameter("id").split(",")); |
| | | dbTableService.deleteByDbInfoId(DbInfo.getId()); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "redirect:/dbInfo/list?msg=del"; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.DbInfo; |
| | | import com.wgcloud.entity.DbTable; |
| | | import com.wgcloud.entity.DbTableCount; |
| | | import com.wgcloud.service.DbInfoService; |
| | | import com.wgcloud.service.DbTableCountService; |
| | | import com.wgcloud.service.DbTableService; |
| | | import com.wgcloud.service.LogInfoService; |
| | | import com.wgcloud.util.PageUtil; |
| | | import com.wgcloud.util.jdbc.RDSConnection; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbTableController.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DbTableController.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/dbTable") |
| | | public class DbTableController { |
| | | |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(DbTableController.class); |
| | | |
| | | @Resource |
| | | private DbInfoService dbInfoService; |
| | | @Resource |
| | | private DbTableService dbTableService; |
| | | @Resource |
| | | private DbTableCountService dbTableCountService; |
| | | @Resource |
| | | private LogInfoService logInfoService; |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶æ¥è¯¢å表 |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "list") |
| | | public String DbTableList(DbTable DbTable, Model model) { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | try { |
| | | PageInfo<DbTable> pageInfo = dbTableService.selectByParams(params, DbTable.getPage(), DbTable.getPageSize()); |
| | | PageUtil.initPageNumber(pageInfo, model); |
| | | List<DbInfo> dbInfoList = dbInfoService.selectAllByParams(params); |
| | | for (DbTable dbTable : pageInfo.getList()) { |
| | | for (DbInfo dbInfo : dbInfoList) { |
| | | if (dbInfo.getId().equals(dbTable.getDbInfoId())) { |
| | | dbTable.setTableName(dbInfo.getAliasName()); |
| | | } |
| | | } |
| | | } |
| | | model.addAttribute("pageUrl", "/dbTable/list?1=1"); |
| | | model.addAttribute("page", pageInfo); |
| | | } catch (Exception e) { |
| | | logger.error("æ¥è¯¢æ°æ®è¡¨ä¿¡æ¯é误", e); |
| | | logInfoService.save("æ¥è¯¢æ°æ®è¡¨ä¿¡æ¯é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | |
| | | } |
| | | return "mysql/list"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä¿åæ°æ®æºè¡¨ä¿¡æ¯ |
| | | * |
| | | * @param DbTable |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "save") |
| | | public String saveDbTable(DbTable DbTable, Model model, HttpServletRequest request) { |
| | | try { |
| | | String whereVal = DbTable.getWhereVal().toLowerCase(); |
| | | if (!StringUtils.isEmpty(whereVal)) { |
| | | String[] sqlinkeys = RDSConnection.SQL_INKEYS.split(","); |
| | | for (String sqlinkey : sqlinkeys) { |
| | | if (whereVal.indexOf(sqlinkey) > -1) { |
| | | model.addAttribute("dbTable", DbTable); |
| | | List<DbInfo> dbInfoList = dbInfoService.selectAllByParams(new HashMap<>()); |
| | | model.addAttribute("dbInfoList", dbInfoList); |
| | | model.addAttribute("msg", "whereè¯å¥å«æsqlææå符" + sqlinkey + "ï¼è¯·æ£æ¥"); |
| | | return "mysql/add"; |
| | | } |
| | | } |
| | | } |
| | | if (StringUtils.isEmpty(DbTable.getId())) { |
| | | dbTableService.save(DbTable); |
| | | } else { |
| | | dbTableService.updateById(DbTable); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("ä¿åæ°æ®è¡¨é误ï¼", e); |
| | | logInfoService.save("ä¿åæ°æ®è¡¨é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "redirect:/dbTable/list"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ¥çæ°æ®æºè¡¨ä¿¡æ¯ |
| | | * |
| | | * @param DbTable |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "edit") |
| | | public String editDbTable(DbTable DbTable, Model model, HttpServletRequest request) { |
| | | try { |
| | | String id = request.getParameter("id"); |
| | | DbTable dbTableInfo = new DbTable(); |
| | | if (!StringUtils.isEmpty(id)) { |
| | | dbTableInfo = dbTableService.selectById(id); |
| | | } |
| | | List<DbInfo> dbInfoList = dbInfoService.selectAllByParams(new HashMap<>()); |
| | | model.addAttribute("dbInfoList", dbInfoList); |
| | | model.addAttribute("dbTable", dbTableInfo); |
| | | } catch (Exception e) { |
| | | logger.error("æ¥çæ°æ®è¡¨é误ï¼", e); |
| | | logInfoService.save("æ¥çæ°æ®è¡¨é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "mysql/add"; |
| | | } |
| | | |
| | | /** |
| | | * æ¥çæ°æ®æºè¡¨å¾è¡¨ç»è®¡ä¿¡æ¯ |
| | | * |
| | | * @param DbTable |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "viewChart") |
| | | public String viewChartDbTable(DbTable DbTable, Model model, HttpServletRequest request) { |
| | | try { |
| | | String id = request.getParameter("id"); |
| | | if (!StringUtils.isEmpty(id)) { |
| | | DbTable dbTableInfo = dbTableService.selectById(id); |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | params.put("dbTableId", id); |
| | | List<DbTableCount> dbTableCounts = dbTableCountService.selectAllByParams(params); |
| | | model.addAttribute("dbTableCounts", JSONUtil.parseArray(dbTableCounts)); |
| | | model.addAttribute("dbTable", dbTableInfo); |
| | | String sql = RDSConnection.query_table_count.replace("{tableName}", dbTableInfo.getTableName()) + dbTableInfo.getWhereVal(); |
| | | model.addAttribute("sqlCount", sql); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("æ¥çæ°æ®è¡¨å¾è¡¨ç»è®¡é误ï¼", e); |
| | | logInfoService.save("æ¥çæ°æ®è¡¨å¾è¡¨ç»è®¡é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "mysql/view"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å 餿°æ®æºè¡¨ |
| | | * |
| | | * @param id |
| | | * @param model |
| | | * @param request |
| | | * @param redirectAttributes |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "del") |
| | | public String delete(Model model, HttpServletRequest request, RedirectAttributes redirectAttributes) { |
| | | String errorMsg = "å 餿°æ®æºè¡¨ä¿¡æ¯é误ï¼"; |
| | | try { |
| | | if (!StringUtils.isEmpty(request.getParameter("id"))) { |
| | | DbTable dbTable = dbTableService.selectById(request.getParameter("id")); |
| | | logInfoService.save("å 餿°æ®è¡¨ï¼" + dbTable.getTableName(), "å 餿°æ®è¡¨ï¼" + dbTable.getTableName(), StaticKeys.LOG_ERROR); |
| | | dbTableService.deleteById(request.getParameter("id").split(",")); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | |
| | | return "redirect:/dbTable/list"; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.DbTableCount; |
| | | import com.wgcloud.service.DbInfoService; |
| | | import com.wgcloud.service.DbTableCountService; |
| | | import com.wgcloud.service.DbTableService; |
| | | import com.wgcloud.service.LogInfoService; |
| | | import com.wgcloud.util.PageUtil; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbTableCountCountController.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DbTableCountCountController.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/dbTableCount") |
| | | public class DbTableCountController { |
| | | |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(DbTableCountController.class); |
| | | |
| | | @Resource |
| | | private DbInfoService dbInfoService; |
| | | @Resource |
| | | private DbTableService dbTableService; |
| | | @Resource |
| | | private DbTableCountService dbTableCountService; |
| | | @Resource |
| | | private LogInfoService logInfoService; |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶æ¥è¯¢å表 |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "list") |
| | | public String dbTableCountList(DbTableCount dbTableCount, Model model) { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | try { |
| | | PageInfo pageInfo = dbTableCountService.selectByParams(params, dbTableCount.getPage(), dbTableCount.getPageSize()); |
| | | PageUtil.initPageNumber(pageInfo, model); |
| | | model.addAttribute("pageUrl", "/dbTableCount/list?1=1"); |
| | | model.addAttribute("page", pageInfo); |
| | | } catch (Exception e) { |
| | | logger.error("æ¥è¯¢æ°æ®æºè¡¨ç»è®¡ä¿¡æ¯é误", e); |
| | | logInfoService.save("æ¥è¯¢æ°æ®æºè¡¨ç»è®¡ä¿¡æ¯é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | |
| | | } |
| | | return "dbTableCount/list"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä¿åæ°æ®æºè¡¨ç»è®¡ä¿¡æ¯ |
| | | * |
| | | * @param DbTableCount |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "save") |
| | | public String saveDbTableCount(DbTableCount DbTableCount, Model model, HttpServletRequest request) { |
| | | try { |
| | | dbTableCountService.save(DbTableCount); |
| | | } catch (Exception e) { |
| | | logger.error("ä¿åæ°æ®æºè¡¨ç»è®¡é误ï¼", e); |
| | | logInfoService.save("ä¿åæ°æ®æºè¡¨ç»è®¡é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "redirect:/dbTableCount/list"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å 餿°æ®æºè¡¨ç»è®¡ |
| | | * |
| | | * @param id |
| | | * @param model |
| | | * @param request |
| | | * @param redirectAttributes |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "del") |
| | | public String delete(Model model, HttpServletRequest request, RedirectAttributes redirectAttributes) { |
| | | String errorMsg = "å 餿°æ®æºè¡¨ç»è®¡ä¿¡æ¯é误ï¼"; |
| | | DbTableCount DbTableCount = new DbTableCount(); |
| | | try { |
| | | if (!StringUtils.isEmpty(request.getParameter("id"))) { |
| | | DbTableCount = dbTableCountService.selectById(request.getParameter("id")); |
| | | dbTableCountService.deleteById(request.getParameter("id").split(",")); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | |
| | | return "redirect:/dbTableCount/list"; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.HeathMonitor; |
| | | import com.wgcloud.service.HeathMonitorService; |
| | | import com.wgcloud.service.LogInfoService; |
| | | import com.wgcloud.util.PageUtil; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:HeathMonitorController.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: HeathMonitorController.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/heathMonitor") |
| | | public class HeathMonitorController { |
| | | |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(HeathMonitorController.class); |
| | | |
| | | @Resource |
| | | private HeathMonitorService heathMonitorService; |
| | | @Resource |
| | | private LogInfoService logInfoService; |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶æ¥è¯¢å¿è·³çæ§å表 |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "list") |
| | | public String heathMonitorList(HeathMonitor HeathMonitor, Model model) { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | try { |
| | | PageInfo pageInfo = heathMonitorService.selectByParams(params, HeathMonitor.getPage(), HeathMonitor.getPageSize()); |
| | | PageUtil.initPageNumber(pageInfo, model); |
| | | model.addAttribute("pageUrl", "/heathMonitor/list?1=1"); |
| | | model.addAttribute("page", pageInfo); |
| | | } catch (Exception e) { |
| | | logger.error("æ¥è¯¢æå¡å¿è·³çæ§é误", e); |
| | | logInfoService.save("æ¥è¯¢å¿è·³çæ§é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | |
| | | } |
| | | return "heath/list"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä¿åå¿è·³çæ§ä¿¡æ¯ |
| | | * |
| | | * @param HeathMonitor |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "save") |
| | | public String saveHeathMonitor(HeathMonitor HeathMonitor, Model model, HttpServletRequest request) { |
| | | try { |
| | | if (StringUtils.isEmpty(HeathMonitor.getId())) { |
| | | heathMonitorService.save(HeathMonitor); |
| | | } else { |
| | | heathMonitorService.updateById(HeathMonitor); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | logger.error("ä¿åæå¡å¿è·³çæ§é误ï¼", e); |
| | | logInfoService.save(HeathMonitor.getAppName(), "ä¿åå¿è·³çæ§é误ï¼" + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "redirect:/heathMonitor/list"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ¥ç该å¿è·³çæ§ |
| | | * |
| | | * @param HeathMonitor |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "edit") |
| | | public String edit(Model model, HttpServletRequest request) { |
| | | String errorMsg = "ç¼è¾æå¡å¿è·³çæ§ï¼"; |
| | | String id = request.getParameter("id"); |
| | | HeathMonitor heathMonitor = new HeathMonitor(); |
| | | if (StringUtils.isEmpty(id)) { |
| | | model.addAttribute("heathMonitor", heathMonitor); |
| | | return "heath/add"; |
| | | } |
| | | |
| | | try { |
| | | heathMonitor = heathMonitorService.selectById(id); |
| | | model.addAttribute("heathMonitor", heathMonitor); |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(heathMonitor.getAppName(), errorMsg + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "heath/add"; |
| | | } |
| | | |
| | | /** |
| | | * æ¥ç该å¿è·³çæ§ |
| | | * |
| | | * @param HeathMonitor |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "view") |
| | | public String view(Model model, HttpServletRequest request) { |
| | | String errorMsg = "æ¥çæå¡å¿è·³çæ§ï¼"; |
| | | String id = request.getParameter("id"); |
| | | String date = request.getParameter("date"); |
| | | HeathMonitor heathMonitor = new HeathMonitor(); |
| | | try { |
| | | heathMonitor = heathMonitorService.selectById(id); |
| | | model.addAttribute("heathMonitor", heathMonitor); |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(heathMonitor.getAppName(), errorMsg + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "heath/view"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å é¤å¿è·³çæ§ |
| | | * |
| | | * @param id |
| | | * @param model |
| | | * @param request |
| | | * @param redirectAttributes |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "del") |
| | | public String delete(Model model, HttpServletRequest request, RedirectAttributes redirectAttributes) { |
| | | String errorMsg = "å 餿å¡å¿è·³çæ§é误ï¼"; |
| | | HeathMonitor HeathMonitor = new HeathMonitor(); |
| | | try { |
| | | if (!StringUtils.isEmpty(request.getParameter("id"))) { |
| | | HeathMonitor = heathMonitorService.selectById(request.getParameter("id")); |
| | | logInfoService.save("å 餿å¡å¿è·³çæ§ï¼" + HeathMonitor.getAppName(), "å 餿å¡å¿è·³çæ§ï¼" + HeathMonitor.getAppName() + "ï¼" + HeathMonitor.getHeathUrl(), StaticKeys.LOG_ERROR); |
| | | heathMonitorService.deleteById(request.getParameter("id").split(",")); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(HeathMonitor.getAppName(), errorMsg + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | |
| | | return "redirect:/heathMonitor/list"; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import com.wgcloud.entity.SystemInfo; |
| | | import com.wgcloud.service.LogInfoService; |
| | | import com.wgcloud.service.SystemInfoService; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:HostInfoController.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: 主æºå¤æ³¨ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/host") |
| | | public class HostInfoController { |
| | | |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(HostInfoController.class); |
| | | |
| | | |
| | | @Resource |
| | | private SystemInfoService systemInfoService; |
| | | @Resource |
| | | private LogInfoService logInfoService; |
| | | |
| | | |
| | | /** |
| | | * ä¿å主æºå¤æ³¨ä¿¡æ¯ |
| | | * |
| | | * @param SystemInfo |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping(value = "save") |
| | | public String saveHostInfo(SystemInfo SystemInfo, Model model, HttpServletRequest request) { |
| | | try { |
| | | if (StringUtils.isEmpty(SystemInfo.getId())) { |
| | | systemInfoService.save(SystemInfo); |
| | | } else { |
| | | SystemInfo ho = systemInfoService.selectById(SystemInfo.getId()); |
| | | ho.setRemark(SystemInfo.getRemark()); |
| | | systemInfoService.updateById(ho); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | logger.error("ä¿å主æºå¤æ³¨ä¿¡æ¯é误ï¼", e); |
| | | logInfoService.save(SystemInfo.getHostname(), "ä¿å主æºå¤æ³¨ä¿¡æ¯é误ï¼" + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "redirect:/dash/systemInfoList"; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.core.Ordered; |
| | | import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; |
| | | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:IndexController.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: AppInfoController.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Configuration |
| | | public class IndexController implements WebMvcConfigurer { |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(IndexController.class); |
| | | |
| | | @Override |
| | | public void addViewControllers(ViewControllerRegistry registry) { |
| | | registry.addViewController("/").setViewName("forward:/login/login.html"); |
| | | registry.setOrder(Ordered.HIGHEST_PRECEDENCE); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.LogInfo; |
| | | import com.wgcloud.service.LogInfoService; |
| | | import com.wgcloud.util.CodeUtil; |
| | | import com.wgcloud.util.PageUtil; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:LogInfoController.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: LogInfoController.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/log") |
| | | public class LogInfoController { |
| | | |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(LogInfoController.class); |
| | | |
| | | @Resource |
| | | private LogInfoService logInfoService; |
| | | |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶æ¥è¯¢æ¥å¿ä¿¡æ¯å表 |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "list") |
| | | public String LogInfoList(LogInfo logInfo, Model model) { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | try { |
| | | StringBuffer url = new StringBuffer(); |
| | | String hostname = null; |
| | | if (!StringUtils.isEmpty(logInfo.getHostname())) { |
| | | hostname = CodeUtil.unescape(logInfo.getHostname()); |
| | | params.put("hostname", hostname.trim()); |
| | | url.append("&hostname=").append(CodeUtil.escape(hostname)); |
| | | } |
| | | PageInfo pageInfo = logInfoService.selectByParams(params, logInfo.getPage(), logInfo.getPageSize()); |
| | | PageUtil.initPageNumber(pageInfo, model); |
| | | |
| | | model.addAttribute("pageUrl", "/log/list?1=1" + url.toString()); |
| | | model.addAttribute("page", pageInfo); |
| | | model.addAttribute("logInfo", logInfo); |
| | | } catch (Exception e) { |
| | | logger.error("æ¥è¯¢æ¥å¿é误", e); |
| | | } |
| | | return "log/list"; |
| | | } |
| | | |
| | | /** |
| | | * æ¥çæ¥å¿ä¿¡æ¯ |
| | | * |
| | | * @param LogInfo |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "view") |
| | | public String viewLogInfo(Model model, HttpServletRequest request) { |
| | | String id = request.getParameter("id"); |
| | | LogInfo logInfo; |
| | | try { |
| | | logInfo = logInfoService.selectById(id); |
| | | model.addAttribute("logInfo", logInfo); |
| | | } catch (Exception e) { |
| | | logger.error("æ¥çæ¥å¿ä¿¡æ¯ï¼", e); |
| | | } |
| | | return "log/view"; |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import com.wgcloud.config.CommonConfig; |
| | | import com.wgcloud.entity.AccountInfo; |
| | | import com.wgcloud.util.shorturl.MD5; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpSession; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:LoginCotroller.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: LoginCotroller.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping(value = "/login") |
| | | public class LoginCotroller { |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(LoginCotroller.class); |
| | | |
| | | @Resource |
| | | private CommonConfig commonConfig; |
| | | |
| | | /** |
| | | * 转åå°ç»å½é¡µé¢ |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping("toLogin") |
| | | public String toLogin(Model model, HttpServletRequest request) { |
| | | return "login/login"; |
| | | } |
| | | |
| | | /** |
| | | * ç»åºç³»ç» |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping("loginOut") |
| | | public String loginOut(Model model, HttpServletRequest request) { |
| | | HttpSession session = request.getSession(); |
| | | session.invalidate(); |
| | | return "redirect:/login/toLogin"; |
| | | } |
| | | |
| | | /** |
| | | * 管çåç»å½éªè¯ |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "login") |
| | | public String login(Model model, HttpServletRequest request) { |
| | | String userName = request.getParameter("userName"); |
| | | String passwd = request.getParameter("md5pwd"); |
| | | // String code = request.getParameter(StaticKeys.SESSION_CODE); |
| | | HttpSession session = request.getSession(); |
| | | try { |
| | | if (!StringUtils.isEmpty(userName) && !StringUtils.isEmpty(passwd)) { |
| | | /*if (!code.equals(session.getAttribute(StaticKeys.SESSION_CODE))) { |
| | | model.addAttribute("error", "éªè¯ç é误"); |
| | | return "login/login"; |
| | | }*/ |
| | | AccountInfo accountInfo = new AccountInfo(); |
| | | if (MD5.GetMD5Code(commonConfig.getAdmindPwd()).equals(passwd) && StaticKeys.ADMIN_ACCOUNT.equals(userName)) { |
| | | accountInfo.setAccount(StaticKeys.ADMIN_ACCOUNT); |
| | | accountInfo.setId(StaticKeys.ADMIN_ACCOUNT); |
| | | request.getSession().setAttribute(StaticKeys.LOGIN_KEY, accountInfo); |
| | | return "redirect:/dash/main"; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("ç»å½å¼å¸¸ï¼", e); |
| | | } |
| | | model.addAttribute("error", "å¸å·æè
å¯ç é误"); |
| | | return "login/login"; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.controller; |
| | | |
| | | import com.wgcloud.entity.MailSet; |
| | | import com.wgcloud.service.LogInfoService; |
| | | import com.wgcloud.service.MailSetService; |
| | | import com.wgcloud.util.msg.WarnMailUtil; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:MailSetController.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: MailSetController.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Controller |
| | | @RequestMapping("/mailset") |
| | | public class MailSetController { |
| | | |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(MailSetController.class); |
| | | |
| | | @Resource |
| | | private MailSetService mailSetService; |
| | | @Resource |
| | | private LogInfoService logInfoService; |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶æ¥è¯¢å表 |
| | | * |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "list") |
| | | public String MailSetList(MailSet MailSet, Model model, HttpServletRequest request) { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | try { |
| | | List<MailSet> list = mailSetService.selectAllByParams(params); |
| | | if (list.size() > 0) { |
| | | model.addAttribute("mailSet", list.get(0)); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("æ¥è¯¢é®ä»¶è®¾ç½®é误", e); |
| | | logInfoService.save("æ¥è¯¢é®ä»¶è®¾ç½®é误ï¼", e.toString(), StaticKeys.LOG_ERROR); |
| | | |
| | | } |
| | | String msg = request.getParameter("msg"); |
| | | if (!StringUtils.isEmpty(msg)) { |
| | | if (msg.equals("save")) { |
| | | model.addAttribute("msg", "ä¿åæå"); |
| | | } else if (msg.equals("test")) { |
| | | String result = request.getParameter("result"); |
| | | if ("success".equals(result)) { |
| | | model.addAttribute("msg", "æµè¯åéæå"); |
| | | } else { |
| | | model.addAttribute("msg", "æµè¯åé失败ï¼è¯·æ¥çæ¥å¿"); |
| | | } |
| | | } else { |
| | | model.addAttribute("msg", "å 餿å"); |
| | | } |
| | | } else { |
| | | model.addAttribute("msg", ""); |
| | | } |
| | | return "mail/view"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä¿åé®ä»¶è®¾ç½®ä¿¡æ¯ |
| | | * |
| | | * @param MailSet |
| | | * @param model |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "save") |
| | | public String saveMailSet(MailSet mailSet, Model model, HttpServletRequest request) { |
| | | try { |
| | | if (StringUtils.isEmpty(mailSet.getId())) { |
| | | mailSetService.save(mailSet); |
| | | } else { |
| | | mailSetService.updateById(mailSet); |
| | | } |
| | | StaticKeys.mailSet = mailSet; |
| | | } catch (Exception e) { |
| | | logger.error("ä¿åé®ä»¶è®¾ç½®ä¿¡æ¯é误ï¼", e); |
| | | logInfoService.save("é®ä»¶è®¾ç½®ä¿¡æ¯é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "redirect:/mailset/list?msg=save"; |
| | | } |
| | | |
| | | @RequestMapping(value = "test") |
| | | public String test(MailSet mailSet, Model model, HttpServletRequest request) { |
| | | String result = "success"; |
| | | try { |
| | | if (StringUtils.isEmpty(mailSet.getId())) { |
| | | mailSetService.save(mailSet); |
| | | } else { |
| | | mailSetService.updateById(mailSet); |
| | | } |
| | | StaticKeys.mailSet = mailSet; |
| | | result = WarnMailUtil.sendMail(mailSet.getToMail(), "WGCLOUDæµè¯é®ä»¶åé", "WGCLOUDæµè¯é®ä»¶åé"); |
| | | } catch (Exception e) { |
| | | logger.error("æµè¯é®ä»¶è®¾ç½®ä¿¡æ¯é误ï¼", e); |
| | | logInfoService.save("æµè¯é®ä»¶è®¾ç½®ä¿¡æ¯é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | return "redirect:/mailset/list?msg=test&result=" + result; |
| | | } |
| | | |
| | | /** |
| | | * å é¤åè¦é®ä»¶ä¿¡æ¯ |
| | | * |
| | | * @param id |
| | | * @param model |
| | | * @param request |
| | | * @param redirectAttributes |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "del") |
| | | public String delete(Model model, HttpServletRequest request, RedirectAttributes redirectAttributes) { |
| | | String errorMsg = "å é¤åè¦é®ä»¶è®¾ç½®é误ï¼"; |
| | | try { |
| | | if (!StringUtils.isEmpty(request.getParameter("id"))) { |
| | | mailSetService.deleteById(request.getParameter("id").split(",")); |
| | | StaticKeys.mailSet = null; |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error(errorMsg, e); |
| | | logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | |
| | | return "redirect:/mailset/list?msg=save"; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.dto; |
| | | |
| | | import com.wgcloud.entity.BaseEntity; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:ChartInfo.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: å¾è¡¨dtoä¿¡æ¯ |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class ChartInfo extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -2913111613773445949L; |
| | | |
| | | |
| | | /** |
| | | * åç§° |
| | | */ |
| | | private String item; |
| | | |
| | | private Integer count; |
| | | |
| | | private Double percent; |
| | | |
| | | public String getItem() { |
| | | return item; |
| | | } |
| | | |
| | | public void setItem(String item) { |
| | | this.item = item; |
| | | } |
| | | |
| | | public Integer getCount() { |
| | | return count; |
| | | } |
| | | |
| | | public void setCount(Integer count) { |
| | | this.count = count; |
| | | } |
| | | |
| | | public Double getPercent() { |
| | | return percent; |
| | | } |
| | | |
| | | public void setPercent(Double percent) { |
| | | this.percent = percent; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.dto; |
| | | |
| | | import com.wgcloud.entity.BaseEntity; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:ManyLineDto.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: 表åæäº¤è¿åä¿¡æ¯ |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class ManyLineDto extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -2913111613773445949L; |
| | | |
| | | |
| | | private String one; |
| | | |
| | | private String oneAlias; |
| | | |
| | | private String two; |
| | | |
| | | private String twoAlias; |
| | | |
| | | private String three; |
| | | |
| | | private String threeAlias; |
| | | |
| | | private double maxval; |
| | | |
| | | public String getOne() { |
| | | return one; |
| | | } |
| | | |
| | | public void setOne(String one) { |
| | | this.one = one; |
| | | } |
| | | |
| | | public String getOneAlias() { |
| | | return oneAlias; |
| | | } |
| | | |
| | | public void setOneAlias(String oneAlias) { |
| | | this.oneAlias = oneAlias; |
| | | } |
| | | |
| | | public String getTwo() { |
| | | return two; |
| | | } |
| | | |
| | | public void setTwo(String two) { |
| | | this.two = two; |
| | | } |
| | | |
| | | public String getTwoAlias() { |
| | | return twoAlias; |
| | | } |
| | | |
| | | public void setTwoAlias(String twoAlias) { |
| | | this.twoAlias = twoAlias; |
| | | } |
| | | |
| | | public String getThree() { |
| | | return three; |
| | | } |
| | | |
| | | public void setThree(String three) { |
| | | this.three = three; |
| | | } |
| | | |
| | | public String getThreeAlias() { |
| | | return threeAlias; |
| | | } |
| | | |
| | | public void setThreeAlias(String threeAlias) { |
| | | this.threeAlias = threeAlias; |
| | | } |
| | | |
| | | public double getMaxval() { |
| | | return maxval; |
| | | } |
| | | |
| | | public void setMaxval(double maxval) { |
| | | this.maxval = maxval; |
| | | } |
| | | |
| | | public void setSysLoad(int index, String key, String alias) { |
| | | if (0 == index) { |
| | | this.one = key; |
| | | this.oneAlias = alias; |
| | | } |
| | | if (1 == index) { |
| | | this.two = key; |
| | | this.twoAlias = alias; |
| | | } |
| | | if (2 == index) { |
| | | this.three = key; |
| | | this.threeAlias = alias; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.dto; |
| | | |
| | | import com.wgcloud.entity.BaseEntity; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:MessageDto.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: 表åæäº¤è¿åä¿¡æ¯ |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class MessageDto extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -2913111613773445949L; |
| | | |
| | | |
| | | private String code; |
| | | |
| | | private String msg; |
| | | |
| | | public String getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public void setCode(String code) { |
| | | this.code = code; |
| | | } |
| | | |
| | | public String getMsg() { |
| | | return msg; |
| | | } |
| | | |
| | | public void setMsg(String msg) { |
| | | this.msg = msg; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.dto; |
| | | |
| | | import com.wgcloud.entity.BaseEntity; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:NetIoState.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: ç½ç»è®¾å¤çååç |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class NetIoStateDto extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -8314012397341825158L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * æ¯ç§éæ¥æ¶çæ°æ®å
,rxpck/s |
| | | */ |
| | | private Integer rxpck; |
| | | |
| | | /** |
| | | * æ¯ç§éåéçæ°æ®å
,txpck/s |
| | | */ |
| | | private Integer txpck; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éæ¥æ¶çKBæ°,rxkB/s |
| | | */ |
| | | private Integer rxbyt; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éåéçKBæ°,txkB/s |
| | | */ |
| | | private Integer txbyt; |
| | | |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * yyyy-MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | public Integer getRxpck() { |
| | | return rxpck; |
| | | } |
| | | |
| | | public void setRxpck(Integer rxpck) { |
| | | this.rxpck = rxpck; |
| | | } |
| | | |
| | | public Integer getTxpck() { |
| | | return txpck; |
| | | } |
| | | |
| | | public void setTxpck(Integer txpck) { |
| | | this.txpck = txpck; |
| | | } |
| | | |
| | | public Integer getRxbyt() { |
| | | return rxbyt; |
| | | } |
| | | |
| | | public void setRxbyt(Integer rxbyt) { |
| | | this.rxbyt = rxbyt; |
| | | } |
| | | |
| | | public Integer getTxbyt() { |
| | | return txbyt; |
| | | } |
| | | |
| | | public void setTxbyt(Integer txbyt) { |
| | | this.txbyt = txbyt; |
| | | } |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(5); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:AccountInfo.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: AccountInfo.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class AccountInfo extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -6510176051328150406L; |
| | | |
| | | /** |
| | | * ç»å½å¸å· |
| | | */ |
| | | private String account; |
| | | |
| | | /** |
| | | * keyæ è¯ |
| | | */ |
| | | private String accountMd5; |
| | | |
| | | /** |
| | | * ç¨æ·è§è²ï¼admin管çåï¼useræ®éç¨æ·,testæµè¯ç¨æ· |
| | | */ |
| | | private String role; |
| | | |
| | | /** |
| | | * é®ç®± |
| | | */ |
| | | private String email; |
| | | |
| | | /** |
| | | * å¯ç |
| | | */ |
| | | private String passwd; |
| | | |
| | | /** |
| | | * ææºå·ç |
| | | */ |
| | | private String phone; |
| | | |
| | | /** |
| | | * è¿ææ¶é´ |
| | | */ |
| | | private Date expDate; |
| | | |
| | | /** |
| | | * çå®å§å |
| | | */ |
| | | private String realName; |
| | | |
| | | |
| | | public String getAccount() { |
| | | return account; |
| | | } |
| | | |
| | | public void setAccount(String account) { |
| | | this.account = account; |
| | | } |
| | | |
| | | public String getEmail() { |
| | | return email; |
| | | } |
| | | |
| | | public void setEmail(String email) { |
| | | this.email = email; |
| | | } |
| | | |
| | | public String getPasswd() { |
| | | return passwd; |
| | | } |
| | | |
| | | public void setPasswd(String passwd) { |
| | | this.passwd = passwd; |
| | | } |
| | | |
| | | public String getPhone() { |
| | | return phone; |
| | | } |
| | | |
| | | public void setPhone(String phone) { |
| | | this.phone = phone; |
| | | } |
| | | |
| | | |
| | | public Date getExpDate() { |
| | | return expDate; |
| | | } |
| | | |
| | | public void setExpDate(Date expDate) { |
| | | this.expDate = expDate; |
| | | } |
| | | |
| | | public String getRealName() { |
| | | return realName; |
| | | } |
| | | |
| | | public void setRealName(String realName) { |
| | | this.realName = realName; |
| | | } |
| | | |
| | | |
| | | public String getRole() { |
| | | return role; |
| | | } |
| | | |
| | | public void setRole(String role) { |
| | | this.role = role; |
| | | } |
| | | |
| | | |
| | | public String getAccountMd5() { |
| | | return accountMd5; |
| | | } |
| | | |
| | | public void setAccountMd5(String accountMd5) { |
| | | this.accountMd5 = accountMd5; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:AppInfo.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: app端å£ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class AppInfo extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -2913111613773445949L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * åºç¨è¿ç¨ID |
| | | */ |
| | | private String appPid; |
| | | |
| | | /** |
| | | * è¿ç¨è·åéå¾ï¼1è¿ç¨idå·ï¼2è¿ç¨pidæä»¶ |
| | | */ |
| | | private String appType; |
| | | |
| | | /** |
| | | * è¿ç¨åç§° |
| | | */ |
| | | private String appName; |
| | | |
| | | /** |
| | | * å
å使ç¨ç% |
| | | */ |
| | | private Double memPer; |
| | | |
| | | /** |
| | | * cpu使ç¨ç% |
| | | */ |
| | | private Double cpuPer; |
| | | |
| | | |
| | | /** |
| | | * è¿ç¨ç¶æï¼1æ£å¸¸ï¼2ä¸çº¿ |
| | | */ |
| | | private String state; |
| | | |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | |
| | | public String getAppPid() { |
| | | return appPid; |
| | | } |
| | | |
| | | public void setAppPid(String appPid) { |
| | | this.appPid = appPid; |
| | | } |
| | | |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | public String getAppName() { |
| | | return appName; |
| | | } |
| | | |
| | | public void setAppName(String appName) { |
| | | this.appName = appName; |
| | | } |
| | | |
| | | public Double getMemPer() { |
| | | return memPer; |
| | | } |
| | | |
| | | public void setMemPer(Double memPer) { |
| | | this.memPer = memPer; |
| | | } |
| | | |
| | | public Double getCpuPer() { |
| | | return cpuPer; |
| | | } |
| | | |
| | | public void setCpuPer(Double cpuPer) { |
| | | this.cpuPer = cpuPer; |
| | | } |
| | | |
| | | public String getAppType() { |
| | | return appType; |
| | | } |
| | | |
| | | public void setAppType(String appType) { |
| | | this.appType = appType; |
| | | } |
| | | |
| | | public String getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(String state) { |
| | | this.state = state; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import com.wgcloud.util.DateUtil; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:AppState.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: appç¶æçæ§ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class AppState extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -2913111613773445949L; |
| | | |
| | | |
| | | /** |
| | | * åºç¨ä¿¡æ¯ID |
| | | */ |
| | | private String appInfoId; |
| | | |
| | | |
| | | /** |
| | | * %CPU |
| | | */ |
| | | private Double cpuPer; |
| | | |
| | | /** |
| | | * %MEM |
| | | */ |
| | | private Double memPer; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public Double getCpuPer() { |
| | | return cpuPer; |
| | | } |
| | | |
| | | public void setCpuPer(Double cpuPer) { |
| | | this.cpuPer = cpuPer; |
| | | } |
| | | |
| | | |
| | | public String getAppInfoId() { |
| | | return appInfoId; |
| | | } |
| | | |
| | | public void setAppInfoId(String appInfoId) { |
| | | this.appInfoId = appInfoId; |
| | | } |
| | | |
| | | public Double getMemPer() { |
| | | return memPer; |
| | | } |
| | | |
| | | public void setMemPer(Double memPer) { |
| | | this.memPer = memPer; |
| | | } |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | String str = DateUtil.getDateTimeString(createTime); |
| | | if (!StringUtils.isEmpty(str) && str.length() > 16) { |
| | | return str.substring(5); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | |
| | | public class BaseEntity implements Serializable { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 8698319936744959815L; |
| | | |
| | | |
| | | private String id; |
| | | |
| | | private Integer page; |
| | | |
| | | private Integer pageSize; |
| | | |
| | | public String getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(String id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getPage() { |
| | | if (page == null) { |
| | | page = 1; |
| | | } |
| | | return page; |
| | | } |
| | | |
| | | public void setPage(Integer page) { |
| | | this.page = page; |
| | | } |
| | | |
| | | public Integer getPageSize() { |
| | | if (pageSize == null) { |
| | | pageSize = 20; |
| | | } |
| | | return pageSize; |
| | | } |
| | | |
| | | public void setPageSize(Integer pageSize) { |
| | | this.pageSize = pageSize; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:CpuState.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çCPUä½¿ç¨æ
åµ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class CpuState extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -2913111613773445949L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * ç¨æ·æçCPUæ¶é´ï¼%ï¼åºå¼ |
| | | */ |
| | | private String user; |
| | | |
| | | /** |
| | | * cpu使ç¨ç |
| | | */ |
| | | private Double sys; |
| | | |
| | | /** |
| | | * å½å空é²ç |
| | | */ |
| | | private Double idle; |
| | | |
| | | /** |
| | | * cpuå½åçå¾
ç |
| | | */ |
| | | private Double iowait; |
| | | |
| | | /** |
| | | * ç¡¬ä¸ææ¶é´ï¼%ï¼ åºå¼ |
| | | */ |
| | | private String irq; |
| | | |
| | | /** |
| | | * è½¯ä¸ææ¶é´ï¼%ï¼ åºå¼ |
| | | */ |
| | | private String soft; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getUser() { |
| | | return user; |
| | | } |
| | | |
| | | public void setUser(String user) { |
| | | this.user = user; |
| | | } |
| | | |
| | | public Double getSys() { |
| | | return sys; |
| | | } |
| | | |
| | | public void setSys(Double sys) { |
| | | this.sys = sys; |
| | | } |
| | | |
| | | public Double getIdle() { |
| | | return idle; |
| | | } |
| | | |
| | | public void setIdle(Double idle) { |
| | | this.idle = idle; |
| | | } |
| | | |
| | | public Double getIowait() { |
| | | return iowait; |
| | | } |
| | | |
| | | public void setIowait(Double iowait) { |
| | | this.iowait = iowait; |
| | | } |
| | | |
| | | public String getIrq() { |
| | | return irq; |
| | | } |
| | | |
| | | public void setIrq(String irq) { |
| | | this.irq = irq; |
| | | } |
| | | |
| | | public String getSoft() { |
| | | return soft; |
| | | } |
| | | |
| | | public void setSoft(String soft) { |
| | | this.soft = soft; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(11); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DashboardView.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: 䏻颿¿æ¦è¦ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class DashboardView extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -1262528746414406709L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * ç³»ç»çæ¬ä¿¡æ¯ |
| | | */ |
| | | private String version; |
| | | |
| | | /** |
| | | * ç³»ç»å·²ç»è¿è¡äºå¤å°å¤© |
| | | */ |
| | | private String yxDays; |
| | | |
| | | /** |
| | | * å
å已使ç¨ç¾åæ¯ |
| | | */ |
| | | private double memPer; |
| | | |
| | | /** |
| | | * æ´æ°æ¶é´ |
| | | */ |
| | | private String dateStr; |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | public String getVersion() { |
| | | return version; |
| | | } |
| | | |
| | | public void setVersion(String version) { |
| | | this.version = version; |
| | | } |
| | | |
| | | public String getYxDays() { |
| | | return yxDays; |
| | | } |
| | | |
| | | public void setYxDays(String yxDays) { |
| | | this.yxDays = yxDays; |
| | | } |
| | | |
| | | public double getMemPer() { |
| | | return memPer; |
| | | } |
| | | |
| | | public void setMemPer(double memPer) { |
| | | this.memPer = memPer; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.sql.Timestamp; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbInfo.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ£æ¥ç³»ç»å
¥ä¾µä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class DbInfo extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 879979812204191283L; |
| | | |
| | | |
| | | /** |
| | | * è¿æ¥å«å |
| | | */ |
| | | private String aliasName; |
| | | |
| | | |
| | | /** |
| | | * æ°æ®åºç±»åï¼mysqlæåoracle |
| | | */ |
| | | private String dbType; |
| | | |
| | | /** |
| | | * æ°æ®åºç¨æ·å |
| | | */ |
| | | private String user; |
| | | |
| | | /** |
| | | * æ°æ®åºå¯ç |
| | | */ |
| | | private String passwd; |
| | | |
| | | /** |
| | | * æ°æ®åºæå¡å¨ip |
| | | */ |
| | | private String ip; |
| | | |
| | | /** |
| | | * æ°æ®åºç«¯å£ |
| | | */ |
| | | private String port; |
| | | |
| | | /** |
| | | * æ°æ®åºåç§° |
| | | */ |
| | | private String dbName; |
| | | |
| | | /** |
| | | * æ°æ®åºè¿æ¥ç¶æ,1æ£å¸¸ï¼2失败 |
| | | */ |
| | | private String dbState; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Timestamp createTime; |
| | | |
| | | public String getDbType() { |
| | | return dbType; |
| | | } |
| | | |
| | | public void setDbType(String dbType) { |
| | | this.dbType = dbType; |
| | | } |
| | | |
| | | public String getUser() { |
| | | return user; |
| | | } |
| | | |
| | | public void setUser(String user) { |
| | | this.user = user; |
| | | } |
| | | |
| | | public String getPasswd() { |
| | | return passwd; |
| | | } |
| | | |
| | | public void setPasswd(String passwd) { |
| | | this.passwd = passwd; |
| | | } |
| | | |
| | | public String getIp() { |
| | | return ip; |
| | | } |
| | | |
| | | public void setIp(String ip) { |
| | | this.ip = ip; |
| | | } |
| | | |
| | | public String getPort() { |
| | | return port; |
| | | } |
| | | |
| | | public void setPort(String port) { |
| | | this.port = port; |
| | | } |
| | | |
| | | public Timestamp getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Timestamp createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDbName() { |
| | | return dbName; |
| | | } |
| | | |
| | | public void setDbName(String dbName) { |
| | | this.dbName = dbName; |
| | | } |
| | | |
| | | public String getDbState() { |
| | | return dbState; |
| | | } |
| | | |
| | | public void setDbState(String dbState) { |
| | | this.dbState = dbState; |
| | | } |
| | | |
| | | public String getAliasName() { |
| | | return aliasName; |
| | | } |
| | | |
| | | public void setAliasName(String aliasName) { |
| | | this.aliasName = aliasName; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.sql.Timestamp; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbTable.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ£æ¥ç³»ç»å
¥ä¾µä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class DbTable extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 879979812204191283L; |
| | | |
| | | |
| | | /** |
| | | * æ°æ®æº |
| | | */ |
| | | private String dbInfoId; |
| | | |
| | | |
| | | /** |
| | | * 表åç§° |
| | | */ |
| | | private String tableName; |
| | | |
| | | /** |
| | | * whereæ¡ä»¶å¼ |
| | | */ |
| | | private String whereVal; |
| | | |
| | | /** |
| | | * 表å«å |
| | | */ |
| | | private String remark; |
| | | |
| | | private Long tableCount; |
| | | |
| | | private Long value; |
| | | |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Timestamp createTime; |
| | | |
| | | public String getTableName() { |
| | | return tableName; |
| | | } |
| | | |
| | | public void setTableName(String tableName) { |
| | | this.tableName = tableName; |
| | | } |
| | | |
| | | public String getWhereVal() { |
| | | return whereVal; |
| | | } |
| | | |
| | | public void setWhereVal(String whereVal) { |
| | | this.whereVal = whereVal; |
| | | } |
| | | |
| | | public String getRemark() { |
| | | return remark; |
| | | } |
| | | |
| | | public void setRemark(String remark) { |
| | | this.remark = remark; |
| | | } |
| | | |
| | | public Long getTableCount() { |
| | | return tableCount; |
| | | } |
| | | |
| | | public void setTableCount(Long tableCount) { |
| | | this.tableCount = tableCount; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | public Timestamp getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Timestamp createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public Long getValue() { |
| | | return tableCount; |
| | | } |
| | | |
| | | public void setValue(Long value) { |
| | | this.value = value; |
| | | } |
| | | |
| | | public String getDbInfoId() { |
| | | return dbInfoId; |
| | | } |
| | | |
| | | public void setDbInfoId(String dbInfoId) { |
| | | this.dbInfoId = dbInfoId; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbTableCount.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ£æ¥ç³»ç»å
¥ä¾µä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class DbTableCount extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 879979812204191283L; |
| | | |
| | | /** |
| | | * 表id |
| | | */ |
| | | private String dbTableId; |
| | | |
| | | /** |
| | | * wæ°æ®é |
| | | */ |
| | | private Long tableCount; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | public String getDbTableId() { |
| | | return dbTableId; |
| | | } |
| | | |
| | | public void setDbTableId(String dbTableId) { |
| | | this.dbTableId = dbTableId; |
| | | } |
| | | |
| | | public Long getTableCount() { |
| | | return tableCount; |
| | | } |
| | | |
| | | public void setTableCount(Long tableCount) { |
| | | this.tableCount = tableCount; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(5); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DeskState.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çç£ç大å°ä½¿ç¨ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class DeskState extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 879979812204191283L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * ç符类å |
| | | */ |
| | | private String fileSystem; |
| | | |
| | | /** |
| | | * ååºå¤§å° |
| | | */ |
| | | private String size; |
| | | |
| | | /** |
| | | * å·²ä½¿ç¨ |
| | | */ |
| | | private String used; |
| | | |
| | | /** |
| | | * å¯ç¨ |
| | | */ |
| | | private String avail; |
| | | |
| | | /** |
| | | * 已使ç¨ç¾åæ¯ |
| | | */ |
| | | private String usePer; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * yyyy-MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getFileSystem() { |
| | | return fileSystem; |
| | | } |
| | | |
| | | public void setFileSystem(String fileSystem) { |
| | | this.fileSystem = fileSystem; |
| | | } |
| | | |
| | | public String getSize() { |
| | | return size; |
| | | } |
| | | |
| | | public void setSize(String size) { |
| | | this.size = size; |
| | | } |
| | | |
| | | public String getUsed() { |
| | | return used; |
| | | } |
| | | |
| | | public void setUsed(String used) { |
| | | this.used = used; |
| | | } |
| | | |
| | | public String getAvail() { |
| | | return avail; |
| | | } |
| | | |
| | | public void setAvail(String avail) { |
| | | this.avail = avail; |
| | | } |
| | | |
| | | public String getUsePer() { |
| | | return usePer; |
| | | } |
| | | |
| | | public void setUsePer(String usePer) { |
| | | this.usePer = usePer; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(5); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:HeathMonitor.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: app端å£ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class HeathMonitor extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -2913111613773445949L; |
| | | |
| | | |
| | | /** |
| | | * åºç¨æå¡åç§° |
| | | */ |
| | | private String appName; |
| | | |
| | | /** |
| | | * å¿è·³æ£æµUrl |
| | | */ |
| | | private String heathUrl; |
| | | |
| | | /** |
| | | * ç¶æ |
| | | */ |
| | | private String heathStatus; |
| | | |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | public String getAppName() { |
| | | return appName; |
| | | } |
| | | |
| | | public void setAppName(String appName) { |
| | | this.appName = appName; |
| | | } |
| | | |
| | | public String getHeathUrl() { |
| | | return heathUrl; |
| | | } |
| | | |
| | | public void setHeathUrl(String heathUrl) { |
| | | this.heathUrl = heathUrl; |
| | | } |
| | | |
| | | public String getHeathStatus() { |
| | | return heathStatus; |
| | | } |
| | | |
| | | public void setHeathStatus(String heathStatus) { |
| | | this.heathStatus = heathStatus; |
| | | } |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:HostInfo.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: hostçIPå¯ç çä¿¡æ¯ï¼ææªç¨ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class HostInfo extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 3875927332935900938L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String ip; |
| | | |
| | | /** |
| | | * ç¨æ· |
| | | */ |
| | | private String root; |
| | | |
| | | /** |
| | | * sshç«¯å£ |
| | | */ |
| | | private String port; |
| | | |
| | | /** |
| | | * å¯ç |
| | | */ |
| | | private String passwd; |
| | | |
| | | /** |
| | | * å¯ç |
| | | */ |
| | | private String remark; |
| | | |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getIp() { |
| | | return ip; |
| | | } |
| | | |
| | | public void setIp(String ip) { |
| | | this.ip = ip; |
| | | } |
| | | |
| | | public String getRoot() { |
| | | return root; |
| | | } |
| | | |
| | | public void setRoot(String root) { |
| | | this.root = root; |
| | | } |
| | | |
| | | public String getPort() { |
| | | return port; |
| | | } |
| | | |
| | | public void setPort(String port) { |
| | | this.port = port; |
| | | } |
| | | |
| | | public String getPasswd() { |
| | | return passwd; |
| | | } |
| | | |
| | | public void setPasswd(String passwd) { |
| | | this.passwd = passwd; |
| | | } |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getRemark() { |
| | | return remark; |
| | | } |
| | | |
| | | public void setRemark(String remark) { |
| | | this.remark = remark; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.sql.Timestamp; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:IntrusionInfo.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ£æ¥ç³»ç»å
¥ä¾µä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class IntrusionInfo extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 879979812204191283L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * ç³»ç»å
æ ¸æ¨¡å |
| | | */ |
| | | private String lsmod; |
| | | |
| | | /** |
| | | * æ¥çpasswdæä»¶ä¿®æ¹æ¶é´ |
| | | */ |
| | | private String passwdInfo; |
| | | |
| | | /** |
| | | * æ¥çç³»ç»è®¡åä»»å¡ |
| | | */ |
| | | private String crontab; |
| | | |
| | | /** |
| | | * æ£æ¥ç½ç»ï¼æ£å¸¸ç½å¡ä¸è¯¥å¨promisc模å¼ï¼å¯è½åå¨sniffer |
| | | */ |
| | | private String promisc; |
| | | |
| | | /** |
| | | * ç³»ç»rpcæå¡ |
| | | */ |
| | | private String rpcinfo; |
| | | |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Timestamp createTime; |
| | | |
| | | |
| | | public Timestamp getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Timestamp createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | public String getLsmod() { |
| | | return lsmod; |
| | | } |
| | | |
| | | public void setLsmod(String lsmod) { |
| | | this.lsmod = lsmod; |
| | | } |
| | | |
| | | public String getPasswdInfo() { |
| | | return passwdInfo; |
| | | } |
| | | |
| | | public void setPasswdInfo(String passwdInfo) { |
| | | this.passwdInfo = passwdInfo; |
| | | } |
| | | |
| | | public String getCrontab() { |
| | | return crontab; |
| | | } |
| | | |
| | | public void setCrontab(String crontab) { |
| | | this.crontab = crontab; |
| | | } |
| | | |
| | | public String getPromisc() { |
| | | return promisc; |
| | | } |
| | | |
| | | public void setPromisc(String promisc) { |
| | | this.promisc = promisc; |
| | | } |
| | | |
| | | public String getRpcinfo() { |
| | | return rpcinfo; |
| | | } |
| | | |
| | | public void setRpcinfo(String rpcinfo) { |
| | | this.rpcinfo = rpcinfo; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:LogInfo.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥å¿ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class LogInfo extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 1565538727002722890L; |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * æè¿° |
| | | */ |
| | | private String infoContent; |
| | | |
| | | /** |
| | | * 0æåï¼1失败 |
| | | */ |
| | | private String state; |
| | | |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | public String getInfoContent() { |
| | | return infoContent; |
| | | } |
| | | |
| | | |
| | | public void setInfoContent(String infoContent) { |
| | | this.infoContent = infoContent; |
| | | } |
| | | |
| | | |
| | | public String getState() { |
| | | return state; |
| | | } |
| | | |
| | | |
| | | public void setState(String state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DiskIoState.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çç£çIOä½¿ç¨æ
åµ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class MailSet extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -8284741180883299533L; |
| | | |
| | | |
| | | /** |
| | | * æ¯å¦åéé®ä»¶åè¦,1åé0ä¸åé |
| | | */ |
| | | private String sendMail; |
| | | |
| | | /** |
| | | * åéé®ç®±çå¸å· |
| | | */ |
| | | private String fromMailName; |
| | | |
| | | /** |
| | | * åéé®ç®±çå¯ç |
| | | */ |
| | | private String fromPwd; |
| | | |
| | | /** |
| | | * åéé®ç®±çSMTPæå¡å¨ |
| | | */ |
| | | private String smtpHost; |
| | | |
| | | /** |
| | | * åéé®ç®±çSMTP端å£,25æ465 |
| | | */ |
| | | private String smtpPort; |
| | | |
| | | /** |
| | | * åéé®ç®±æ¯å¦å¯ç¨å®å
¨é¾æ¥(SSL),1å¯ç¨,0ä¸å¯ç¨ |
| | | */ |
| | | private String smtpSSL; |
| | | |
| | | /** |
| | | * æ¥ååè¦ä¿¡æ¯çé®ä»¶ |
| | | */ |
| | | private String toMail; |
| | | |
| | | /** |
| | | * cpu使ç¨çåè¦å¼ |
| | | */ |
| | | private String cpuPer; |
| | | /** |
| | | * mem使ç¨çåè¦å¼ |
| | | */ |
| | | private String memPer; |
| | | /** |
| | | * mem使ç¨çåè¦å¼ |
| | | */ |
| | | private String heathPer; |
| | | |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getSendMail() { |
| | | return sendMail; |
| | | } |
| | | |
| | | public void setSendMail(String sendMail) { |
| | | this.sendMail = sendMail; |
| | | } |
| | | |
| | | public String getFromMailName() { |
| | | return fromMailName; |
| | | } |
| | | |
| | | public void setFromMailName(String fromMailName) { |
| | | this.fromMailName = fromMailName; |
| | | } |
| | | |
| | | public String getFromPwd() { |
| | | return fromPwd; |
| | | } |
| | | |
| | | public void setFromPwd(String fromPwd) { |
| | | this.fromPwd = fromPwd; |
| | | } |
| | | |
| | | public String getSmtpHost() { |
| | | return smtpHost; |
| | | } |
| | | |
| | | public void setSmtpHost(String smtpHost) { |
| | | this.smtpHost = smtpHost; |
| | | } |
| | | |
| | | public String getSmtpPort() { |
| | | return smtpPort; |
| | | } |
| | | |
| | | public void setSmtpPort(String smtpPort) { |
| | | this.smtpPort = smtpPort; |
| | | } |
| | | |
| | | public String getSmtpSSL() { |
| | | return smtpSSL; |
| | | } |
| | | |
| | | public void setSmtpSSL(String smtpSSL) { |
| | | this.smtpSSL = smtpSSL; |
| | | } |
| | | |
| | | public String getToMail() { |
| | | return toMail; |
| | | } |
| | | |
| | | public void setToMail(String toMail) { |
| | | this.toMail = toMail; |
| | | } |
| | | |
| | | public String getCpuPer() { |
| | | return cpuPer; |
| | | } |
| | | |
| | | public void setCpuPer(String cpuPer) { |
| | | this.cpuPer = cpuPer; |
| | | } |
| | | |
| | | public String getMemPer() { |
| | | return memPer; |
| | | } |
| | | |
| | | public void setMemPer(String memPer) { |
| | | this.memPer = memPer; |
| | | } |
| | | |
| | | public String getHeathPer() { |
| | | return heathPer; |
| | | } |
| | | |
| | | public void setHeathPer(String heathPer) { |
| | | this.heathPer = heathPer; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:MemState.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çå
åä½¿ç¨æ
åµ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class MemState extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -1412473355088780549L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * æ»è®¡å
åï¼M |
| | | */ |
| | | private String total; |
| | | |
| | | /** |
| | | * 已使ç¨å¤å°ï¼M |
| | | */ |
| | | private String used; |
| | | |
| | | /** |
| | | * æªä½¿ç¨ï¼M |
| | | */ |
| | | private String free; |
| | | |
| | | /** |
| | | * 已使ç¨ç¾åæ¯% |
| | | */ |
| | | private Double usePer; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * yyyy-MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getTotal() { |
| | | return total; |
| | | } |
| | | |
| | | public void setTotal(String total) { |
| | | this.total = total; |
| | | } |
| | | |
| | | public String getUsed() { |
| | | return used; |
| | | } |
| | | |
| | | public void setUsed(String used) { |
| | | this.used = used; |
| | | } |
| | | |
| | | public String getFree() { |
| | | return free; |
| | | } |
| | | |
| | | public void setFree(String free) { |
| | | this.free = free; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(11); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | public Double getUsePer() { |
| | | return usePer; |
| | | } |
| | | |
| | | public void setUsePer(Double usePer) { |
| | | this.usePer = usePer; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:NetIoState.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: ç½ç»è®¾å¤çååç |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class NetIoState extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -8314012397341825158L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * æ¯ç§éæ¥æ¶çæ°æ®å
,rxpck/s |
| | | */ |
| | | private String rxpck; |
| | | |
| | | /** |
| | | * æ¯ç§éåéçæ°æ®å
,txpck/s |
| | | */ |
| | | private String txpck; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éæ¥æ¶çKBæ°,rxkB/s |
| | | */ |
| | | private String rxbyt; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éåéçKBæ°,txkB/s |
| | | */ |
| | | private String txbyt; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éæ¥æ¶çåç¼©æ°æ®å
,rxcmp/s |
| | | */ |
| | | private String rxcmp; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éåéçåç¼©æ°æ®å
,txcmp/s |
| | | */ |
| | | private String txcmp; |
| | | |
| | | |
| | | /** |
| | | * æ¯ç§éæ¥æ¶çå¤ææ°æ®å
,rxmcst/s |
| | | */ |
| | | private String rxmcst; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * yyyy-MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getRxpck() { |
| | | return rxpck; |
| | | } |
| | | |
| | | public void setRxpck(String rxpck) { |
| | | this.rxpck = rxpck; |
| | | } |
| | | |
| | | public String getTxpck() { |
| | | return txpck; |
| | | } |
| | | |
| | | public void setTxpck(String txpck) { |
| | | this.txpck = txpck; |
| | | } |
| | | |
| | | public String getRxbyt() { |
| | | return rxbyt; |
| | | } |
| | | |
| | | public void setRxbyt(String rxbyt) { |
| | | this.rxbyt = rxbyt; |
| | | } |
| | | |
| | | public String getTxbyt() { |
| | | return txbyt; |
| | | } |
| | | |
| | | public void setTxbyt(String txbyt) { |
| | | this.txbyt = txbyt; |
| | | } |
| | | |
| | | public String getRxcmp() { |
| | | return rxcmp; |
| | | } |
| | | |
| | | public void setRxcmp(String rxcmp) { |
| | | this.rxcmp = rxcmp; |
| | | } |
| | | |
| | | public String getTxcmp() { |
| | | return txcmp; |
| | | } |
| | | |
| | | public void setTxcmp(String txcmp) { |
| | | this.txcmp = txcmp; |
| | | } |
| | | |
| | | public String getRxmcst() { |
| | | return rxmcst; |
| | | } |
| | | |
| | | public void setRxmcst(String rxmcst) { |
| | | this.rxmcst = rxmcst; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(11); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:SysLoadState.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: uptimeæ¥çç³»ç»è´è½½ç¶æ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class SysLoadState extends BaseEntity { |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -4863071148000213553L; |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * 1åéä¹åå°ç°å¨çè´è½½ |
| | | */ |
| | | private Double oneLoad; |
| | | |
| | | /** |
| | | * 5åéä¹åå°ç°å¨çè´è½½ |
| | | */ |
| | | private Double fiveLoad; |
| | | |
| | | /** |
| | | * 15åéä¹åå°ç°å¨çè´è½½ |
| | | */ |
| | | private Double fifteenLoad; |
| | | |
| | | /** |
| | | * ç»å½ç¨æ·æ°é åºå¼ |
| | | */ |
| | | private String users; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * yyyy-MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public Double getOneLoad() { |
| | | return oneLoad; |
| | | } |
| | | |
| | | public void setOneLoad(Double oneLoad) { |
| | | this.oneLoad = oneLoad; |
| | | } |
| | | |
| | | public Double getFiveLoad() { |
| | | return fiveLoad; |
| | | } |
| | | |
| | | public void setFiveLoad(Double fiveLoad) { |
| | | this.fiveLoad = fiveLoad; |
| | | } |
| | | |
| | | public Double getFifteenLoad() { |
| | | return fifteenLoad; |
| | | } |
| | | |
| | | public void setFifteenLoad(Double fifteenLoad) { |
| | | this.fifteenLoad = fifteenLoad; |
| | | } |
| | | |
| | | public String getUsers() { |
| | | return users; |
| | | } |
| | | |
| | | public void setUsers(String users) { |
| | | this.users = users; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(11); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:SystemInfo.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çç³»ç»ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class SystemInfo extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = 879979812204191283L; |
| | | |
| | | |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * ç³»ç»çæ¬ä¿¡æ¯ |
| | | */ |
| | | private String version; |
| | | |
| | | /** |
| | | * ç³»ç»çæ¬è¯¦ç»ä¿¡æ¯ |
| | | */ |
| | | private String versionDetail; |
| | | |
| | | /** |
| | | * å
å使ç¨ç |
| | | */ |
| | | private Double memPer; |
| | | |
| | | /** |
| | | * coreç个æ°(峿 ¸æ°) |
| | | */ |
| | | private String cpuCoreNum; |
| | | |
| | | /** |
| | | * cpu使ç¨ç |
| | | */ |
| | | private Double cpuPer; |
| | | |
| | | /** |
| | | * CPUåå·ä¿¡æ¯ |
| | | */ |
| | | private String cpuXh; |
| | | |
| | | |
| | | /** |
| | | * 主æºç¶æï¼1æ£å¸¸ï¼2ä¸çº¿ |
| | | */ |
| | | private String state; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | //ç£çæ»ä½¿ç¨ç% |
| | | private Double diskPer; |
| | | |
| | | /** |
| | | * 主æºå¤æ³¨ |
| | | */ |
| | | private String remark; |
| | | |
| | | |
| | | public String getVersion() { |
| | | return version; |
| | | } |
| | | |
| | | public void setVersion(String version) { |
| | | this.version = version; |
| | | } |
| | | |
| | | public String getVersionDetail() { |
| | | return versionDetail; |
| | | } |
| | | |
| | | public void setVersionDetail(String versionDetail) { |
| | | this.versionDetail = versionDetail; |
| | | } |
| | | |
| | | |
| | | public String getCpuCoreNum() { |
| | | return cpuCoreNum; |
| | | } |
| | | |
| | | public void setCpuCoreNum(String cpuCoreNum) { |
| | | this.cpuCoreNum = cpuCoreNum; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | public String getCpuXh() { |
| | | return cpuXh; |
| | | } |
| | | |
| | | public void setCpuXh(String cpuXh) { |
| | | this.cpuXh = cpuXh; |
| | | } |
| | | |
| | | public Double getMemPer() { |
| | | return memPer; |
| | | } |
| | | |
| | | public void setMemPer(Double memPer) { |
| | | this.memPer = memPer; |
| | | } |
| | | |
| | | public Double getCpuPer() { |
| | | return cpuPer; |
| | | } |
| | | |
| | | public void setCpuPer(Double cpuPer) { |
| | | this.cpuPer = cpuPer; |
| | | } |
| | | |
| | | public String getState() { |
| | | return state; |
| | | } |
| | | |
| | | public void setState(String state) { |
| | | this.state = state; |
| | | } |
| | | |
| | | public String getRemark() { |
| | | return remark; |
| | | } |
| | | |
| | | public void setRemark(String remark) { |
| | | this.remark = remark; |
| | | } |
| | | |
| | | public Double getDiskPer() { |
| | | return diskPer; |
| | | } |
| | | |
| | | public void setDiskPer(Double diskPer) { |
| | | this.diskPer = diskPer; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.entity; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:TcpState.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çTCPè¿æ¥ç¶æ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | public class TcpState extends BaseEntity { |
| | | |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private static final long serialVersionUID = -299667815095138020L; |
| | | /** |
| | | * hoståç§° |
| | | */ |
| | | private String hostname; |
| | | |
| | | /** |
| | | * æ¯ç§æ¬å°åèµ·çTCPè¿æ¥æ°ï¼æ¢éè¿connectè°ç¨å建çTCPè¿æ¥ï¼,active/s |
| | | */ |
| | | private String active; |
| | | |
| | | /** |
| | | * æ¯ç§è¿ç¨åèµ·çTCPè¿æ¥æ°ï¼å³éè¿acceptè°ç¨å建çTCPè¿æ¥,passive/s |
| | | */ |
| | | private String passive; |
| | | |
| | | /** |
| | | * æ¯ç§TCPéä¼ æ°é,retrans/s |
| | | */ |
| | | private String retrans; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | * yyyy-MM-dd hh:mm:ss |
| | | */ |
| | | private String dateStr; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private Date createTime; |
| | | |
| | | |
| | | public String getActive() { |
| | | return active; |
| | | } |
| | | |
| | | public void setActive(String active) { |
| | | this.active = active; |
| | | } |
| | | |
| | | public String getPassive() { |
| | | return passive; |
| | | } |
| | | |
| | | public void setPassive(String passive) { |
| | | this.passive = passive; |
| | | } |
| | | |
| | | public String getRetrans() { |
| | | return retrans; |
| | | } |
| | | |
| | | public void setRetrans(String retrans) { |
| | | this.retrans = retrans; |
| | | } |
| | | |
| | | |
| | | public Date getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(Date createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getDateStr() { |
| | | if (!StringUtils.isEmpty(dateStr) && dateStr.length() > 16) { |
| | | return dateStr.substring(5); |
| | | } |
| | | return dateStr; |
| | | } |
| | | |
| | | public void setDateStr(String dateStr) { |
| | | this.dateStr = dateStr; |
| | | } |
| | | |
| | | |
| | | public String getHostname() { |
| | | return hostname; |
| | | } |
| | | |
| | | public void setHostname(String hostname) { |
| | | this.hostname = hostname; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.filter; |
| | | |
| | | |
| | | import com.wgcloud.config.CommonConfig; |
| | | import com.wgcloud.entity.AccountInfo; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | |
| | | import javax.servlet.*; |
| | | import javax.servlet.annotation.WebFilter; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.servlet.http.HttpSession; |
| | | import java.io.IOException; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:AuthRestFilter.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: http请æ±è¿æ»¤å¨ï¼æ¦æªä¸æ¯ä»è·¯ç±è¿æ¥çè¯·æ± |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @WebFilter(filterName = "authRestFilter", urlPatterns = {"/*"}) |
| | | public class AuthRestFilter implements Filter { |
| | | |
| | | static Logger log = LoggerFactory.getLogger(AuthRestFilter.class); |
| | | |
| | | @Autowired |
| | | CommonConfig commonConfig; |
| | | |
| | | String[] static_resource = {"/agent/minTask", "/login/toLogin", "/login/login", "/appInfo/agentList", "/static/"}; |
| | | |
| | | String[] dash_views = {"/dash/main", "/dash/systemInfoList", "/dash/detail", "/dash/chart"}; |
| | | |
| | | @Override |
| | | public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { |
| | | final HttpServletResponse response = (HttpServletResponse) servletResponse; |
| | | final HttpServletRequest request = (HttpServletRequest) servletRequest; |
| | | final HttpSession session = request.getSession(); |
| | | AccountInfo accountInfo = (AccountInfo) session.getAttribute(StaticKeys.LOGIN_KEY); |
| | | String uri = request.getRequestURI(); |
| | | log.debug("uri----" + uri); |
| | | String servletPath = request.getServletPath(); |
| | | log.debug("servletPath----" + servletPath); |
| | | menuActive(session, uri); |
| | | for (String ss : static_resource) { |
| | | if (servletPath.startsWith(ss)) { |
| | | filterChain.doFilter(servletRequest, servletResponse); |
| | | return; |
| | | } |
| | | } |
| | | if (accountInfo == null) { |
| | | for (String ss : dash_views) { |
| | | if (servletPath.startsWith(ss) && "true".equals(commonConfig.getDashView()) && request.getParameter(StaticKeys.DASH_VIEW_ACCOUNT) != null) { |
| | | filterChain.doFilter(servletRequest, servletResponse); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | if (accountInfo == null) { |
| | | response.sendRedirect("/wgcloud/login/toLogin"); |
| | | return; |
| | | } |
| | | filterChain.doFilter(servletRequest, servletResponse); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ·»å èåæ è¯ |
| | | * |
| | | * @param session |
| | | * @param uri |
| | | */ |
| | | public void menuActive(HttpSession session, String uri) { |
| | | if (uri.indexOf("/log/") > -1) { |
| | | session.setAttribute("menuActive", "21"); |
| | | return; |
| | | } |
| | | if (uri.indexOf("/dash/main") > -1) { |
| | | session.setAttribute("menuActive", "11"); |
| | | return; |
| | | } |
| | | if (uri.indexOf("/dash/systemInfoList") > -1 || uri.indexOf("/dash/detail") > -1 || uri.indexOf("/dash/chart") > -1) { |
| | | session.setAttribute("menuActive", "12"); |
| | | return; |
| | | } |
| | | if (uri.indexOf("/appInfo") > -1) { |
| | | session.setAttribute("menuActive", "13"); |
| | | return; |
| | | } |
| | | if (uri.indexOf("/mailset") > -1) { |
| | | session.setAttribute("menuActive", "31"); |
| | | return; |
| | | } |
| | | if (uri.indexOf("/dbInfo") > -1) { |
| | | session.setAttribute("menuActive", "41"); |
| | | return; |
| | | } |
| | | if (uri.indexOf("/dbTable") > -1) { |
| | | session.setAttribute("menuActive", "42"); |
| | | return; |
| | | } |
| | | if (uri.indexOf("/heathMonitor") > -1) { |
| | | session.setAttribute("menuActive", "51"); |
| | | return; |
| | | } |
| | | session.setAttribute("menuActive", "11"); |
| | | return; |
| | | |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.AppInfo; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:AppInfoDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: AppInfoDao.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface AppInfoMapper { |
| | | |
| | | public List<AppInfo> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public List<AppInfo> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public AppInfo selectById(String id) throws Exception; |
| | | |
| | | public List<AppInfo> selectByAccountId(String accountId) throws Exception; |
| | | |
| | | public void save(AppInfo AppInfo) throws Exception; |
| | | |
| | | public void insertList(List<AppInfo> recordList) throws Exception; |
| | | |
| | | public void updateList(List<AppInfo> recordList) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | public int deleteByHostName(Map<String, Object> map) throws Exception; |
| | | |
| | | public int deleteByDate(Map<String, Object> map) throws Exception; |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public int updateById(AppInfo AppInfo) throws Exception; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.AppState; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:AppStateDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: AppStateDao.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface AppStateMapper { |
| | | |
| | | public List<AppState> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public List<AppState> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public AppState selectById(String id) throws Exception; |
| | | |
| | | public int selectByParamsCount(Map<String, Object> map); |
| | | |
| | | public void save(AppState AppState) throws Exception; |
| | | |
| | | public void insertList(List<AppState> recordList) throws Exception; |
| | | |
| | | public int deleteByAppInfoId(String appInfoId) throws Exception; |
| | | |
| | | public int deleteByDate(Map<String, Object> map) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.CpuState; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:CpuStateDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: CpuStateDao.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface CpuStateMapper { |
| | | |
| | | |
| | | public List<CpuState> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public List<CpuState> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public CpuState selectById(String id) throws Exception; |
| | | |
| | | public int selectByParamsCount(Map<String, Object> map); |
| | | |
| | | public void save(CpuState CpuState) throws Exception; |
| | | |
| | | public void insertList(List<CpuState> recordList) throws Exception; |
| | | |
| | | public int deleteByAccountAndDate(Map<String, Object> map) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.DbInfo; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbInfoMapper.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DbInfoDao.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface DbInfoMapper { |
| | | |
| | | public List<DbInfo> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public List<DbInfo> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public DbInfo selectById(String id) throws Exception; |
| | | |
| | | public void save(DbInfo DbInfo) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public int updateById(DbInfo DbInfo) throws Exception; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.DbTableCount; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbTableCountMapper.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DbTableCountDao.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface DbTableCountMapper { |
| | | |
| | | public List<DbTableCount> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public List<DbTableCount> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public DbTableCount selectById(String id) throws Exception; |
| | | |
| | | public void save(DbTableCount DbTableCount) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | public void insertList(List<DbTableCount> recordList) throws Exception; |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public int updateById(DbTableCount DbTableCount) throws Exception; |
| | | |
| | | public int deleteByDate(Map<String, Object> map) throws Exception; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.DbTable; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbTableMapper.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DbTableDao.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface DbTableMapper { |
| | | |
| | | public List<DbTable> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public List<DbTable> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public DbTable selectById(String id) throws Exception; |
| | | |
| | | public void save(DbTable DbTable) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | public int deleteByDbInfoId(String dbInfoId) throws Exception; |
| | | |
| | | public void updateList(List<DbTable> recordList) throws Exception; |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public Long sumByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public void updateById(DbTable DbTable) throws Exception; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.DeskState; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DeskStateDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çç£ç大å°ä½¿ç¨ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface DeskStateMapper { |
| | | |
| | | |
| | | public List<DeskState> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public List<DeskState> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public DeskState selectById(String id) throws Exception; |
| | | |
| | | public void save(DeskState DeskState) throws Exception; |
| | | |
| | | public void insertList(List<DeskState> recordList) throws Exception; |
| | | |
| | | public int deleteByAccountAndDate(Map<String, Object> map) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | public int deleteByAccHname(Map<String, Object> map) throws Exception; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.HeathMonitor; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:HeathMonitorMapper.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: HeathMonitorDao.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface HeathMonitorMapper { |
| | | |
| | | public List<HeathMonitor> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public List<HeathMonitor> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public HeathMonitor selectById(String id) throws Exception; |
| | | |
| | | public void save(HeathMonitor HeathMonitor) throws Exception; |
| | | |
| | | public void insertList(List<HeathMonitor> recordList) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | public int deleteByDate(Map<String, Object> map) throws Exception; |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public void updateList(List<HeathMonitor> recordList) throws Exception; |
| | | |
| | | public void updateById(HeathMonitor HeathMonitor) throws Exception; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.HostInfo; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:HostInfoDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: ï¼ææªç¨ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface HostInfoMapper { |
| | | |
| | | public List<HostInfo> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public List<HostInfo> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public HostInfo selectById(String id) throws Exception; |
| | | |
| | | public void save(HostInfo HostInfo) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | public int deleteByIp(String[] ip) throws Exception; |
| | | |
| | | public int updateById(HostInfo HostInfo) throws Exception; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.IntrusionInfo; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:IntrusionInfoDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çç³»ç»å
¥ä¾µä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface IntrusionInfoMapper { |
| | | |
| | | |
| | | public List<IntrusionInfo> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | |
| | | public List<IntrusionInfo> selectByAccountId(String accountId) throws Exception; |
| | | |
| | | |
| | | public List<IntrusionInfo> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | |
| | | public IntrusionInfo selectById(String id) throws Exception; |
| | | |
| | | |
| | | public void save(IntrusionInfo IntrusionInfo) throws Exception; |
| | | |
| | | public void insertList(List<IntrusionInfo> recordList) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | public int deleteByAccountAndDate(Map<String, Object> map) throws Exception; |
| | | |
| | | public int deleteByAccHname(Map<String, Object> map) throws Exception; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.LogInfo; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:LogInfoDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çæ¥å¿ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface LogInfoMapper { |
| | | |
| | | |
| | | public List<LogInfo> selectAllByParams(Map<String, Object> map); |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public List<LogInfo> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public LogInfo selectById(String id) throws Exception; |
| | | |
| | | public void save(LogInfo LogInfo) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | public void insertList(List<LogInfo> recordList) throws Exception; |
| | | |
| | | public int deleteByDate(Map<String, Object> map) throws Exception; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.MailSet; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:MailSetMapper.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çç£çIOä½¿ç¨æ
åµ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface MailSetMapper { |
| | | |
| | | |
| | | public List<MailSet> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public void save(MailSet MailSet) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | public int updateById(MailSet MailSet) throws Exception; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.MemState; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:MemStateDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çå
åä½¿ç¨æ
åµ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface MemStateMapper { |
| | | |
| | | |
| | | public List<MemState> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public List<MemState> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public MemState selectById(String id) throws Exception; |
| | | |
| | | public void save(MemState MemState) throws Exception; |
| | | |
| | | public void insertList(List<MemState> recordList) throws Exception; |
| | | |
| | | public int deleteByAccountAndDate(Map<String, Object> map) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.NetIoState; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:NetIoStateDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çç½ç»è®¾å¤çååç |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface NetIoStateMapper { |
| | | |
| | | |
| | | public List<NetIoState> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | |
| | | public List<NetIoState> selectByParams(Map<String, Object> params); |
| | | |
| | | |
| | | public NetIoState selectById(String id) throws Exception; |
| | | |
| | | |
| | | public void save(NetIoState NetIoState) throws Exception; |
| | | |
| | | |
| | | public void insertList(List<NetIoState> recordList) throws Exception; |
| | | |
| | | public int deleteByAccountAndDate(Map<String, Object> map) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.SysLoadState; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:SysLoadStateDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çuptimeæ¥çç³»ç»è´è½½ç¶æ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface SysLoadStateMapper { |
| | | |
| | | |
| | | public List<SysLoadState> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | |
| | | public List<SysLoadState> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | |
| | | public SysLoadState selectById(String id) throws Exception; |
| | | |
| | | public void save(SysLoadState SysLoadState) throws Exception; |
| | | |
| | | |
| | | public void insertList(List<SysLoadState> recordList) throws Exception; |
| | | |
| | | public int deleteByAccountAndDate(Map<String, Object> map) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.SystemInfo; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:SystemInfoDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çç³»ç»ä¿¡æ¯ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface SystemInfoMapper { |
| | | |
| | | |
| | | public List<SystemInfo> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | public List<SystemInfo> selectByAccountId(String accountId) throws Exception; |
| | | |
| | | public List<SystemInfo> selectByParams(Map<String, Object> params); |
| | | |
| | | public void insertList(List<SystemInfo> recordList) throws Exception; |
| | | |
| | | public void updateList(List<SystemInfo> recordList) throws Exception; |
| | | |
| | | public SystemInfo selectById(String id) throws Exception; |
| | | |
| | | public int updateById(SystemInfo SystemInfo) throws Exception; |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | public void save(SystemInfo SystemInfo) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | |
| | | public int deleteByAccountAndDate(Map<String, Object> map) throws Exception; |
| | | |
| | | public int deleteByAccHname(Map<String, Object> map) throws Exception; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.mapper; |
| | | |
| | | import com.wgcloud.entity.TcpState; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:TcpStateDao.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: æ¥çTCPè¿æ¥ç¶æ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Repository |
| | | public interface TcpStateMapper { |
| | | |
| | | |
| | | public List<TcpState> selectAllByParams(Map<String, Object> map) throws Exception; |
| | | |
| | | |
| | | public List<TcpState> selectByParams(Map<String, Object> params) throws Exception; |
| | | |
| | | |
| | | public TcpState selectById(String id) throws Exception; |
| | | |
| | | public void save(TcpState TcpState) throws Exception; |
| | | |
| | | |
| | | public void insertList(List<TcpState> recordList) throws Exception; |
| | | |
| | | public int deleteByAccountAndDate(Map<String, Object> map) throws Exception; |
| | | |
| | | public int deleteById(String[] id) throws Exception; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.AppInfo; |
| | | import com.wgcloud.mapper.AppInfoMapper; |
| | | import com.wgcloud.mapper.AppStateMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:AppInfoService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: AppInfoService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class AppInfoService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<AppInfo> list = appInfoMapper.selectByParams(params); |
| | | PageInfo<AppInfo> pageInfo = new PageInfo<AppInfo>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(AppInfo AppInfo) throws Exception { |
| | | AppInfo.setId(UUIDUtil.getUUID()); |
| | | AppInfo.setCreateTime(DateUtil.getNowTime()); |
| | | if (!StringUtils.isEmpty(AppInfo.getAppPid())) { |
| | | AppInfo.setAppPid(AppInfo.getAppPid().trim()); |
| | | } |
| | | appInfoMapper.save(AppInfo); |
| | | } |
| | | |
| | | public int deleteByHostName(Map<String, Object> map) throws Exception { |
| | | return appInfoMapper.deleteByHostName(map); |
| | | } |
| | | |
| | | @Transactional |
| | | public void saveRecord(List<AppInfo> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | for (AppInfo as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | } |
| | | appInfoMapper.insertList(recordList); |
| | | } |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception { |
| | | return appInfoMapper.countByParams(params); |
| | | } |
| | | |
| | | @Transactional |
| | | public int deleteById(String[] id) throws Exception { |
| | | for (String AppInfoId : id) { |
| | | appStateMapper.deleteByAppInfoId(AppInfoId); |
| | | } |
| | | return appInfoMapper.deleteById(id); |
| | | } |
| | | |
| | | @Transactional |
| | | public void updateRecord(List<AppInfo> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | appInfoMapper.updateList(recordList); |
| | | } |
| | | |
| | | public void updateById(AppInfo AppInfo) |
| | | throws Exception { |
| | | appInfoMapper.updateById(AppInfo); |
| | | } |
| | | |
| | | public AppInfo selectById(String id) throws Exception { |
| | | return appInfoMapper.selectById(id); |
| | | } |
| | | |
| | | public List<AppInfo> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return appInfoMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private AppInfoMapper appInfoMapper; |
| | | @Autowired |
| | | private AppStateMapper appStateMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.AppState; |
| | | import com.wgcloud.mapper.AppStateMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:AppStateService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: AppStateService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class AppStateService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<AppState> list = appStateMapper.selectByParams(params); |
| | | PageInfo<AppState> pageInfo = new PageInfo<AppState>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(AppState AppState) throws Exception { |
| | | AppState.setId(UUIDUtil.getUUID()); |
| | | AppState.setCreateTime(DateUtil.getNowTime()); |
| | | AppState.setDateStr(DateUtil.getDateTimeString(AppState.getCreateTime())); |
| | | appStateMapper.save(AppState); |
| | | } |
| | | |
| | | public void saveRecord(List<AppState> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | for (AppState as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | as.setDateStr(DateUtil.getDateTimeString(as.getCreateTime())); |
| | | } |
| | | appStateMapper.insertList(recordList); |
| | | } |
| | | |
| | | public int deleteByAppInfoId(String appInfoId) throws Exception { |
| | | return appStateMapper.deleteByAppInfoId(appInfoId); |
| | | } |
| | | |
| | | |
| | | public int deleteById(String[] id) throws Exception { |
| | | return appStateMapper.deleteById(id); |
| | | } |
| | | |
| | | public AppState selectById(String id) throws Exception { |
| | | return appStateMapper.selectById(id); |
| | | } |
| | | |
| | | public List<AppState> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return appStateMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private AppStateMapper appStateMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.CpuState; |
| | | import com.wgcloud.mapper.CpuStateMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:CpuStateService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: CpuStateService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class CpuStateService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<CpuState> list = cpuStateMapper.selectByParams(params); |
| | | PageInfo<CpuState> pageInfo = new PageInfo<CpuState>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(CpuState CpuState) throws Exception { |
| | | CpuState.setId(UUIDUtil.getUUID()); |
| | | CpuState.setCreateTime(DateUtil.getNowTime()); |
| | | CpuState.setDateStr(DateUtil.getDateTimeString(CpuState.getCreateTime())); |
| | | cpuStateMapper.save(CpuState); |
| | | } |
| | | |
| | | public void saveRecord(List<CpuState> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | for (CpuState as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | as.setDateStr(DateUtil.getDateTimeString(as.getCreateTime())); |
| | | } |
| | | cpuStateMapper.insertList(recordList); |
| | | } |
| | | |
| | | public int deleteById(String[] id) throws Exception { |
| | | return cpuStateMapper.deleteById(id); |
| | | } |
| | | |
| | | public CpuState selectById(String id) throws Exception { |
| | | return cpuStateMapper.selectById(id); |
| | | } |
| | | |
| | | public List<CpuState> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return cpuStateMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private CpuStateMapper cpuStateMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DashboardService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: 䏻颿¿ä¿¡æ¯ç®¡ç |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class DashboardService { |
| | | |
| | | |
| | | /** |
| | | * è·åä»ä»å¤©å¼å§ï¼å¾å忰天æ°çæ¥æéå |
| | | * |
| | | * @param days |
| | | * @return |
| | | */ |
| | | public List<String> getDateList() { |
| | | int days = 7; |
| | | List<String> dateList = new ArrayList<String>(); |
| | | String nowTime = DateUtil.getCurrentDateTime(); |
| | | String sevenDayBefore = DateUtil.getDateBefore(nowTime, days); |
| | | for (int i = 0; i < days; i++) { |
| | | sevenDayBefore = DateUtil.getDateBefore(nowTime, i); |
| | | dateList.add(sevenDayBefore.substring(0, 10)); |
| | | } |
| | | return dateList; |
| | | } |
| | | |
| | | /** |
| | | * æ¥ç详ç»ä¿¡æ¯çæ§æ¶åï¼ç»è£
æ¥ææ¥è¯¢æ¡ä»¶ |
| | | * |
| | | * @param params |
| | | * @param date |
| | | */ |
| | | public void setDateParam(String date, Map<String, Object> params) { |
| | | params.put(StaticKeys.SEARCH_START_TIME, date + " 00:00:00"); |
| | | params.put(StaticKeys.SEARCH_END_TIME, date + " 23:59:59"); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.DbInfo; |
| | | import com.wgcloud.mapper.DbInfoMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbInfoService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DbInfoService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class DbInfoService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<DbInfo> list = dbInfoMapper.selectByParams(params); |
| | | PageInfo<DbInfo> pageInfo = new PageInfo<DbInfo>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(DbInfo DbInfo) throws Exception { |
| | | DbInfo.setId(UUIDUtil.getUUID()); |
| | | DbInfo.setCreateTime(DateUtil.getNowTime()); |
| | | DbInfo.setDbState("1"); |
| | | dbInfoMapper.save(DbInfo); |
| | | } |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception { |
| | | return dbInfoMapper.countByParams(params); |
| | | } |
| | | |
| | | @Transactional |
| | | public int deleteById(String[] id) throws Exception { |
| | | return dbInfoMapper.deleteById(id); |
| | | } |
| | | |
| | | public int updateById(DbInfo DbInfo) |
| | | throws Exception { |
| | | return dbInfoMapper.updateById(DbInfo); |
| | | } |
| | | |
| | | public DbInfo selectById(String id) throws Exception { |
| | | return dbInfoMapper.selectById(id); |
| | | } |
| | | |
| | | public List<DbInfo> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return dbInfoMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private DbInfoMapper dbInfoMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.DbTableCount; |
| | | import com.wgcloud.mapper.DbTableCountMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbTableCountCountService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DbTableCountService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class DbTableCountService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<DbTableCount> list = dbTableCountMapper.selectByParams(params); |
| | | PageInfo<DbTableCount> pageInfo = new PageInfo<DbTableCount>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(DbTableCount DbTableCount) throws Exception { |
| | | DbTableCount.setId(UUIDUtil.getUUID()); |
| | | DbTableCount.setCreateTime(DateUtil.getNowTime()); |
| | | dbTableCountMapper.save(DbTableCount); |
| | | } |
| | | |
| | | public void saveRecord(List<DbTableCount> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | for (DbTableCount as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | as.setDateStr(DateUtil.getDateTimeString(as.getCreateTime())); |
| | | } |
| | | dbTableCountMapper.insertList(recordList); |
| | | } |
| | | |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception { |
| | | return dbTableCountMapper.countByParams(params); |
| | | } |
| | | |
| | | @Transactional |
| | | public int deleteById(String[] id) throws Exception { |
| | | return dbTableCountMapper.deleteById(id); |
| | | } |
| | | |
| | | public void updateById(DbTableCount DbTableCount) |
| | | throws Exception { |
| | | dbTableCountMapper.updateById(DbTableCount); |
| | | } |
| | | |
| | | public DbTableCount selectById(String id) throws Exception { |
| | | return dbTableCountMapper.selectById(id); |
| | | } |
| | | |
| | | public List<DbTableCount> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return dbTableCountMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | public int deleteByDate(Map<String, Object> map) throws Exception { |
| | | return dbTableCountMapper.deleteByDate(map); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private DbTableCountMapper dbTableCountMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.DbTable; |
| | | import com.wgcloud.mapper.DbTableMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DbTableService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DbTableService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class DbTableService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<DbTable> list = dbTableMapper.selectByParams(params); |
| | | PageInfo<DbTable> pageInfo = new PageInfo<DbTable>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(DbTable DbTable) throws Exception { |
| | | DbTable.setId(UUIDUtil.getUUID()); |
| | | DbTable.setCreateTime(DateUtil.getNowTime()); |
| | | dbTableMapper.save(DbTable); |
| | | } |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception { |
| | | return dbTableMapper.countByParams(params); |
| | | } |
| | | |
| | | public Long sumByParams(Map<String, Object> params) throws Exception { |
| | | return dbTableMapper.sumByParams(params); |
| | | } |
| | | |
| | | @Transactional |
| | | public int deleteById(String[] id) throws Exception { |
| | | return dbTableMapper.deleteById(id); |
| | | } |
| | | |
| | | @Transactional |
| | | public int deleteByDbInfoId(String dbInfoId) throws Exception { |
| | | if (StringUtils.isEmpty(dbInfoId)) { |
| | | return 0; |
| | | } |
| | | return dbTableMapper.deleteByDbInfoId(dbInfoId); |
| | | } |
| | | |
| | | public void updateById(DbTable DbTable) |
| | | throws Exception { |
| | | dbTableMapper.updateById(DbTable); |
| | | } |
| | | |
| | | @Transactional |
| | | public void updateRecord(List<DbTable> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | dbTableMapper.updateList(recordList); |
| | | } |
| | | |
| | | public DbTable selectById(String id) throws Exception { |
| | | return dbTableMapper.selectById(id); |
| | | } |
| | | |
| | | public List<DbTable> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return dbTableMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private DbTableMapper dbTableMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.DeskState; |
| | | import com.wgcloud.mapper.DeskStateMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DeskStateService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DeskStateService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class DeskStateService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<DeskState> list = deskStateMapper.selectByParams(params); |
| | | PageInfo<DeskState> pageInfo = new PageInfo<DeskState>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(DeskState DeskState) throws Exception { |
| | | DeskState.setId(UUIDUtil.getUUID()); |
| | | DeskState.setCreateTime(DateUtil.getNowTime()); |
| | | DeskState.setDateStr(DateUtil.getDateTimeString(DeskState.getCreateTime())); |
| | | deskStateMapper.save(DeskState); |
| | | } |
| | | |
| | | @Transactional |
| | | public void saveRecord(List<DeskState> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | for (DeskState as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | as.setDateStr(DateUtil.getDateTimeString(as.getCreateTime())); |
| | | } |
| | | deskStateMapper.insertList(recordList); |
| | | } |
| | | |
| | | public int deleteById(String[] id) throws Exception { |
| | | return deskStateMapper.deleteById(id); |
| | | } |
| | | |
| | | public DeskState selectById(String id) throws Exception { |
| | | return deskStateMapper.selectById(id); |
| | | } |
| | | |
| | | public List<DeskState> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return deskStateMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | public int deleteByAccHname(Map<String, Object> params) throws Exception { |
| | | return deskStateMapper.deleteByAccHname(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private DeskStateMapper deskStateMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.HeathMonitor; |
| | | import com.wgcloud.mapper.HeathMonitorMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:HeathMonitorService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: HeathMonitorService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class HeathMonitorService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<HeathMonitor> list = heathMonitorMapper.selectByParams(params); |
| | | PageInfo<HeathMonitor> pageInfo = new PageInfo<HeathMonitor>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(HeathMonitor HeathMonitor) throws Exception { |
| | | HeathMonitor.setId(UUIDUtil.getUUID()); |
| | | HeathMonitor.setCreateTime(DateUtil.getNowTime()); |
| | | if (StringUtils.isEmpty(HeathMonitor.getHeathUrl())) { |
| | | HeathMonitor.setHeathUrl(HeathMonitor.getHeathUrl().trim()); |
| | | } |
| | | heathMonitorMapper.save(HeathMonitor); |
| | | } |
| | | |
| | | |
| | | @Transactional |
| | | public void saveRecord(List<HeathMonitor> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | for (HeathMonitor as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | } |
| | | heathMonitorMapper.insertList(recordList); |
| | | } |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception { |
| | | return heathMonitorMapper.countByParams(params); |
| | | } |
| | | |
| | | @Transactional |
| | | public int deleteById(String[] id) throws Exception { |
| | | return heathMonitorMapper.deleteById(id); |
| | | } |
| | | |
| | | public void updateById(HeathMonitor HeathMonitor) |
| | | throws Exception { |
| | | if (StringUtils.isEmpty(HeathMonitor.getHeathUrl())) { |
| | | HeathMonitor.setHeathUrl(HeathMonitor.getHeathUrl().trim()); |
| | | } |
| | | heathMonitorMapper.updateById(HeathMonitor); |
| | | } |
| | | |
| | | public HeathMonitor selectById(String id) throws Exception { |
| | | return heathMonitorMapper.selectById(id); |
| | | } |
| | | |
| | | @Transactional |
| | | public void updateRecord(List<HeathMonitor> recordList) throws Exception { |
| | | heathMonitorMapper.updateList(recordList); |
| | | } |
| | | |
| | | public List<HeathMonitor> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return heathMonitorMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private HeathMonitorMapper heathMonitorMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.HostInfo; |
| | | import com.wgcloud.mapper.HostInfoMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:HostInfoService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: ææªç¨ |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class HostInfoService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<HostInfo> list = hostInfoMapper.selectByParams(params); |
| | | PageInfo<HostInfo> pageInfo = new PageInfo<HostInfo>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(HostInfo HostInfo) throws Exception { |
| | | HostInfo.setId(UUIDUtil.getUUID()); |
| | | HostInfo.setCreateTime(DateUtil.getNowTime()); |
| | | hostInfoMapper.save(HostInfo); |
| | | } |
| | | |
| | | @Transactional |
| | | public int deleteById(String[] id) throws Exception { |
| | | return hostInfoMapper.deleteById(id); |
| | | } |
| | | |
| | | @Transactional |
| | | public int deleteByIp(String[] ip) throws Exception { |
| | | return hostInfoMapper.deleteByIp(ip); |
| | | } |
| | | |
| | | public void updateById(HostInfo HostInfo) |
| | | throws Exception { |
| | | hostInfoMapper.updateById(HostInfo); |
| | | } |
| | | |
| | | public HostInfo selectById(String id) throws Exception { |
| | | return hostInfoMapper.selectById(id); |
| | | } |
| | | |
| | | public List<HostInfo> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return hostInfoMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private HostInfoMapper hostInfoMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.IntrusionInfo; |
| | | import com.wgcloud.mapper.IntrusionInfoMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:IntrusionInfoService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: IntrusionInfoService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class IntrusionInfoService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<IntrusionInfo> list = intrusionInfoMapper.selectByParams(params); |
| | | PageInfo<IntrusionInfo> pageInfo = new PageInfo<IntrusionInfo>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(IntrusionInfo IntrusionInfo) throws Exception { |
| | | IntrusionInfo.setId(UUIDUtil.getUUID()); |
| | | IntrusionInfo.setCreateTime(DateUtil.getNowTime()); |
| | | intrusionInfoMapper.save(IntrusionInfo); |
| | | } |
| | | |
| | | public void saveRecord(List<IntrusionInfo> recordList) throws Exception { |
| | | Map<String, Object> map = new HashMap<String, Object>(); |
| | | for (IntrusionInfo as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | map.put("hostname", as.getHostname()); |
| | | intrusionInfoMapper.deleteByAccHname(map); |
| | | } |
| | | intrusionInfoMapper.insertList(recordList); |
| | | } |
| | | |
| | | public int deleteById(String[] id) throws Exception { |
| | | return intrusionInfoMapper.deleteById(id); |
| | | } |
| | | |
| | | public IntrusionInfo selectById(String id) throws Exception { |
| | | return intrusionInfoMapper.selectById(id); |
| | | } |
| | | |
| | | public List<IntrusionInfo> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return intrusionInfoMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | public List<IntrusionInfo> selectByAccountId(String accountId) throws Exception { |
| | | return intrusionInfoMapper.selectByAccountId(accountId); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private IntrusionInfoMapper intrusionInfoMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.LogInfo; |
| | | import com.wgcloud.mapper.LogInfoMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:LogInfoService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: LogInfoService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class LogInfoService { |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(LogInfoService.class); |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<LogInfo> list = logInfoMapper.selectByParams(params); |
| | | PageInfo<LogInfo> pageInfo = new PageInfo<LogInfo>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void saveRecord(List<LogInfo> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | Map<String, Object> map = new HashMap<String, Object>(); |
| | | for (LogInfo as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | } |
| | | logInfoMapper.insertList(recordList); |
| | | } |
| | | |
| | | public void save(String hostname, String infoContent, String state) { |
| | | LogInfo logInfo = new LogInfo(); |
| | | logInfo.setHostname(hostname); |
| | | logInfo.setInfoContent(infoContent); |
| | | logInfo.setState(state); |
| | | logInfo.setId(UUIDUtil.getUUID()); |
| | | logInfo.setCreateTime(DateUtil.getNowTime()); |
| | | try { |
| | | logInfoMapper.save(logInfo); |
| | | } catch (Exception e) { |
| | | logger.error("ä¿åæ¥å¿ä¿¡æ¯å¼å¸¸ï¼", e); |
| | | } |
| | | } |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception { |
| | | return logInfoMapper.countByParams(params); |
| | | } |
| | | |
| | | public int deleteById(String[] id) throws Exception { |
| | | return logInfoMapper.deleteById(id); |
| | | } |
| | | |
| | | public LogInfo selectById(String id) throws Exception { |
| | | return logInfoMapper.selectById(id); |
| | | } |
| | | |
| | | public List<LogInfo> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return logInfoMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | @Autowired |
| | | private LogInfoMapper logInfoMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.wgcloud.entity.MailSet; |
| | | import com.wgcloud.mapper.MailSetMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DiskIoStateService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DiskIoStateService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class MailSetService { |
| | | |
| | | |
| | | public void save(MailSet MailSet) throws Exception { |
| | | MailSet.setId(UUIDUtil.getUUID()); |
| | | MailSet.setCreateTime(DateUtil.getNowTime()); |
| | | MailSet.setFromMailName(MailSet.getFromMailName().trim()); |
| | | MailSet.setFromPwd(MailSet.getFromPwd().trim()); |
| | | MailSet.setToMail(MailSet.getToMail().trim()); |
| | | MailSet.setSmtpHost(MailSet.getSmtpHost().trim()); |
| | | mailSetMapper.save(MailSet); |
| | | } |
| | | |
| | | |
| | | public int deleteById(String[] id) throws Exception { |
| | | return mailSetMapper.deleteById(id); |
| | | } |
| | | |
| | | public List<MailSet> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return mailSetMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | public int updateById(MailSet MailSet) throws Exception { |
| | | return mailSetMapper.updateById(MailSet); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private MailSetMapper mailSetMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.MemState; |
| | | import com.wgcloud.mapper.MemStateMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:MemStateService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: MemStateService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class MemStateService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<MemState> list = memStateMapper.selectByParams(params); |
| | | PageInfo<MemState> pageInfo = new PageInfo<MemState>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(MemState MemState) throws Exception { |
| | | MemState.setId(UUIDUtil.getUUID()); |
| | | MemState.setCreateTime(DateUtil.getNowTime()); |
| | | MemState.setDateStr(DateUtil.getDateTimeString(MemState.getCreateTime())); |
| | | memStateMapper.save(MemState); |
| | | } |
| | | |
| | | public void saveRecord(List<MemState> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | for (MemState as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | as.setDateStr(DateUtil.getDateTimeString(as.getCreateTime())); |
| | | } |
| | | memStateMapper.insertList(recordList); |
| | | } |
| | | |
| | | public int deleteById(String[] id) throws Exception { |
| | | return memStateMapper.deleteById(id); |
| | | } |
| | | |
| | | public MemState selectById(String id) throws Exception { |
| | | return memStateMapper.selectById(id); |
| | | } |
| | | |
| | | public List<MemState> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return memStateMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private MemStateMapper memStateMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.NetIoState; |
| | | import com.wgcloud.mapper.NetIoStateMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:NetIoStateService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: NetIoStateService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class NetIoStateService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<NetIoState> list = netIoStateMapper.selectByParams(params); |
| | | PageInfo<NetIoState> pageInfo = new PageInfo<NetIoState>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(NetIoState NetIoState) throws Exception { |
| | | NetIoState.setId(UUIDUtil.getUUID()); |
| | | NetIoState.setCreateTime(DateUtil.getNowTime()); |
| | | NetIoState.setDateStr(DateUtil.getDateTimeString(NetIoState.getCreateTime())); |
| | | netIoStateMapper.save(NetIoState); |
| | | } |
| | | |
| | | public void saveRecord(List<NetIoState> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | for (NetIoState as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | as.setDateStr(DateUtil.getDateTimeString(as.getCreateTime())); |
| | | } |
| | | netIoStateMapper.insertList(recordList); |
| | | } |
| | | |
| | | public int deleteById(String[] id) throws Exception { |
| | | return netIoStateMapper.deleteById(id); |
| | | } |
| | | |
| | | public NetIoState selectById(String id) throws Exception { |
| | | return netIoStateMapper.selectById(id); |
| | | } |
| | | |
| | | public List<NetIoState> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return netIoStateMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private NetIoStateMapper netIoStateMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.SysLoadState; |
| | | import com.wgcloud.mapper.SysLoadStateMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:SysLoadStateService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: SysLoadStateService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class SysLoadStateService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<SysLoadState> list = sysLoadStateMapper.selectByParams(params); |
| | | PageInfo<SysLoadState> pageInfo = new PageInfo<SysLoadState>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(SysLoadState SysLoadState) throws Exception { |
| | | SysLoadState.setId(UUIDUtil.getUUID()); |
| | | SysLoadState.setCreateTime(DateUtil.getNowTime()); |
| | | SysLoadState.setDateStr(DateUtil.getDateTimeString(SysLoadState.getCreateTime())); |
| | | sysLoadStateMapper.save(SysLoadState); |
| | | } |
| | | |
| | | public void saveRecord(List<SysLoadState> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | for (SysLoadState as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | as.setDateStr(DateUtil.getDateTimeString(as.getCreateTime())); |
| | | } |
| | | sysLoadStateMapper.insertList(recordList); |
| | | } |
| | | |
| | | public int deleteById(String[] id) throws Exception { |
| | | return sysLoadStateMapper.deleteById(id); |
| | | } |
| | | |
| | | public SysLoadState selectById(String id) throws Exception { |
| | | return sysLoadStateMapper.selectById(id); |
| | | } |
| | | |
| | | public List<SysLoadState> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return sysLoadStateMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private SysLoadStateMapper sysLoadStateMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.SystemInfo; |
| | | import com.wgcloud.mapper.SystemInfoMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:SystemInfoService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: SystemInfoService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class SystemInfoService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<SystemInfo> list = systemInfoMapper.selectByParams(params); |
| | | PageInfo<SystemInfo> pageInfo = new PageInfo<SystemInfo>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(SystemInfo SystemInfo) throws Exception { |
| | | SystemInfo.setId(UUIDUtil.getUUID()); |
| | | SystemInfo.setCreateTime(DateUtil.getNowTime()); |
| | | systemInfoMapper.save(SystemInfo); |
| | | } |
| | | |
| | | @Transactional |
| | | public void saveRecord(List<SystemInfo> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | for (SystemInfo as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | as.setCreateTime(DateUtil.getNowTime()); |
| | | } |
| | | systemInfoMapper.insertList(recordList); |
| | | } |
| | | |
| | | @Transactional |
| | | public void updateRecord(List<SystemInfo> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | systemInfoMapper.updateList(recordList); |
| | | } |
| | | |
| | | @Transactional |
| | | public void updateById(SystemInfo SystemInfo) throws Exception { |
| | | systemInfoMapper.updateById(SystemInfo); |
| | | } |
| | | |
| | | public int deleteById(String[] id) throws Exception { |
| | | return systemInfoMapper.deleteById(id); |
| | | } |
| | | |
| | | public SystemInfo selectById(String id) throws Exception { |
| | | return systemInfoMapper.selectById(id); |
| | | } |
| | | |
| | | public List<SystemInfo> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return systemInfoMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | public int countByParams(Map<String, Object> params) throws Exception { |
| | | return systemInfoMapper.countByParams(params); |
| | | } |
| | | |
| | | public List<SystemInfo> selectByAccountId(String accountId) throws Exception { |
| | | return systemInfoMapper.selectByAccountId(accountId); |
| | | } |
| | | |
| | | public int deleteByAccHname(Map<String, Object> params) throws Exception { |
| | | return systemInfoMapper.deleteByAccHname(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private SystemInfoMapper systemInfoMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.service; |
| | | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.wgcloud.entity.TcpState; |
| | | import com.wgcloud.mapper.TcpStateMapper; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.UUIDUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:TcpStateService.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: TcpStateService.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Service |
| | | public class TcpStateService { |
| | | |
| | | public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception { |
| | | PageHelper.startPage(currPage, pageSize); |
| | | List<TcpState> list = tcpStateMapper.selectByParams(params); |
| | | PageInfo<TcpState> pageInfo = new PageInfo<TcpState>(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | public void save(TcpState TcpState) throws Exception { |
| | | TcpState.setId(UUIDUtil.getUUID()); |
| | | TcpState.setCreateTime(DateUtil.getNowTime()); |
| | | TcpState.setDateStr(DateUtil.getDateTimeString(TcpState.getCreateTime())); |
| | | tcpStateMapper.save(TcpState); |
| | | } |
| | | |
| | | |
| | | public void saveRecord(List<TcpState> recordList) throws Exception { |
| | | if (recordList.size() < 1) { |
| | | return; |
| | | } |
| | | for (TcpState as : recordList) { |
| | | as.setId(UUIDUtil.getUUID()); |
| | | as.setDateStr(DateUtil.getDateTimeString(as.getCreateTime())); |
| | | } |
| | | tcpStateMapper.insertList(recordList); |
| | | } |
| | | |
| | | |
| | | public int deleteById(String[] id) throws Exception { |
| | | return tcpStateMapper.deleteById(id); |
| | | } |
| | | |
| | | public TcpState selectById(String id) throws Exception { |
| | | return tcpStateMapper.selectById(id); |
| | | } |
| | | |
| | | public List<TcpState> selectAllByParams(Map<String, Object> params) throws Exception { |
| | | return tcpStateMapper.selectAllByParams(params); |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private TcpStateMapper tcpStateMapper; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.task; |
| | | |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import com.wgcloud.config.CommonConfig; |
| | | import com.wgcloud.entity.*; |
| | | import com.wgcloud.mapper.*; |
| | | import com.wgcloud.service.*; |
| | | import com.wgcloud.util.DateUtil; |
| | | import com.wgcloud.util.RestUtil; |
| | | import com.wgcloud.util.jdbc.ConnectionUtil; |
| | | import com.wgcloud.util.jdbc.RDSConnection; |
| | | import com.wgcloud.util.msg.WarnMailUtil; |
| | | import com.wgcloud.util.msg.WarnPools; |
| | | import com.wgcloud.util.staticvar.BatchData; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.*; |
| | | import java.util.concurrent.LinkedBlockingDeque; |
| | | import java.util.concurrent.ThreadPoolExecutor; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:ScheduledTask.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: ScheduledTask.java |
| | | * @Copyright: 2017-2024 wgcloud. All rights reserved. |
| | | */ |
| | | @Component |
| | | public class ScheduledTask { |
| | | |
| | | private Logger logger = LoggerFactory.getLogger(ScheduledTask.class); |
| | | |
| | | /** |
| | | * çº¿ç¨æ± |
| | | */ |
| | | static ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 40, 2, TimeUnit.MINUTES, new LinkedBlockingDeque<>()); |
| | | |
| | | @Autowired |
| | | SystemInfoService systemInfoService; |
| | | @Autowired |
| | | DeskStateService deskStateService; |
| | | @Autowired |
| | | LogInfoService logInfoService; |
| | | @Autowired |
| | | AppInfoService appInfoService; |
| | | @Autowired |
| | | CpuStateService cpuStateService; |
| | | @Autowired |
| | | MemStateService memStateService; |
| | | @Autowired |
| | | NetIoStateService netIoStateService; |
| | | @Autowired |
| | | SysLoadStateService sysLoadStateService; |
| | | @Autowired |
| | | TcpStateService tcpStateService; |
| | | @Autowired |
| | | AppStateService appStateService; |
| | | @Autowired |
| | | MailSetService mailSetService; |
| | | @Autowired |
| | | IntrusionInfoService intrusionInfoService; |
| | | @Autowired |
| | | HostInfoService hostInfoService; |
| | | @Autowired |
| | | DbInfoService dbInfoService; |
| | | @Autowired |
| | | DbTableService dbTableService; |
| | | @Autowired |
| | | DbTableCountService dbTableCountService; |
| | | @Autowired |
| | | HeathMonitorService heathMonitorService; |
| | | @Autowired |
| | | private RestUtil restUtil; |
| | | @Autowired |
| | | ConnectionUtil connectionUtil; |
| | | @Autowired |
| | | CommonConfig commonConfig; |
| | | |
| | | /** |
| | | * 20ç§åæ§è¡ |
| | | * åå§åæä½ |
| | | */ |
| | | @Scheduled(initialDelay = 20000L, fixedRate = 600 * 60 * 1000) |
| | | public void initTask() { |
| | | try { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | List<MailSet> list = mailSetService.selectAllByParams(params); |
| | | if (list.size() > 0) { |
| | | StaticKeys.mailSet = list.get(0); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("åå§åæä½é误", e); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 300ç§åæ§è¡ |
| | | * æ£æµä¸»æºæ¯å¦å·²ç»ä¸çº¿ï¼æ£æµè¿ç¨æ¯å¦ä¸çº¿ |
| | | */ |
| | | @Scheduled(initialDelay = 300000L, fixedRate = 20 * 60 * 1000) |
| | | public void hostDownCheckTask() { |
| | | Date date = DateUtil.getNowTime(); |
| | | long delayTime = 900 * 1000; |
| | | |
| | | try { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | List<SystemInfo> list = systemInfoService.selectAllByParams(params); |
| | | if (!CollectionUtil.isEmpty(list)) { |
| | | List<SystemInfo> updateList = new ArrayList<SystemInfo>(); |
| | | List<LogInfo> logInfoList = new ArrayList<LogInfo>(); |
| | | for (SystemInfo systemInfo : list) { |
| | | |
| | | Date createTime = systemInfo.getCreateTime(); |
| | | long diff = date.getTime() - createTime.getTime(); |
| | | if (diff > delayTime) { |
| | | if (!StringUtils.isEmpty(WarnPools.MEM_WARN_MAP.get(systemInfo.getId()))) { |
| | | continue; |
| | | } |
| | | systemInfo.setState(StaticKeys.DOWN_STATE); |
| | | LogInfo logInfo = new LogInfo(); |
| | | logInfo.setHostname("主æºä¸çº¿ï¼" + systemInfo.getHostname()); |
| | | logInfo.setInfoContent("è¶
è¿10åéæªä¸æ¥ç¶æï¼å¯è½å·²ä¸çº¿ï¼" + systemInfo.getHostname()); |
| | | logInfo.setState(StaticKeys.LOG_ERROR); |
| | | logInfoList.add(logInfo); |
| | | updateList.add(systemInfo); |
| | | Runnable runnable = () -> { |
| | | WarnMailUtil.sendHostDown(systemInfo, true); |
| | | }; |
| | | executor.execute(runnable); |
| | | } else { |
| | | if (!StringUtils.isEmpty(WarnPools.MEM_WARN_MAP.get(systemInfo.getId()))) { |
| | | Runnable runnable = () -> { |
| | | WarnMailUtil.sendHostDown(systemInfo, false); |
| | | }; |
| | | executor.execute(runnable); |
| | | } |
| | | } |
| | | } |
| | | if (updateList.size() > 0) { |
| | | systemInfoService.updateRecord(updateList); |
| | | } |
| | | if (logInfoList.size() > 0) { |
| | | logInfoService.saveRecord(logInfoList); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("æ£æµä¸»æºæ¯å¦ä¸çº¿é误", e); |
| | | } |
| | | |
| | | try { |
| | | Map<String, Object> params = new HashMap<String, Object>(); |
| | | List<AppInfo> list = appInfoService.selectAllByParams(params); |
| | | if (!CollectionUtil.isEmpty(list)) { |
| | | List<AppInfo> updateList = new ArrayList<AppInfo>(); |
| | | List<LogInfo> logInfoList = new ArrayList<LogInfo>(); |
| | | for (AppInfo appInfo : list) { |
| | | |
| | | Date createTime = appInfo.getCreateTime(); |
| | | long diff = date.getTime() - createTime.getTime(); |
| | | if (diff > delayTime) { |
| | | if (!StringUtils.isEmpty(WarnPools.MEM_WARN_MAP.get(appInfo.getId()))) { |
| | | continue; |
| | | } |
| | | appInfo.setState(StaticKeys.DOWN_STATE); |
| | | LogInfo logInfo = new LogInfo(); |
| | | logInfo.setHostname("è¿ç¨ä¸çº¿IPï¼" + appInfo.getHostname() + "ï¼åç§°ï¼" + appInfo.getAppName()); |
| | | logInfo.setInfoContent("è¶
è¿10åéæªä¸æ¥ç¶æï¼å¯è½å·²ä¸çº¿IPï¼" + appInfo.getHostname() + "ï¼åç§°ï¼" + appInfo.getAppName() + "ï¼è¿ç¨IDï¼" + appInfo.getAppPid()); |
| | | logInfo.setState(StaticKeys.LOG_ERROR); |
| | | logInfoList.add(logInfo); |
| | | updateList.add(appInfo); |
| | | Runnable runnable = () -> { |
| | | WarnMailUtil.sendAppDown(appInfo, true); |
| | | }; |
| | | executor.execute(runnable); |
| | | } else { |
| | | if (!StringUtils.isEmpty(WarnPools.MEM_WARN_MAP.get(appInfo.getId()))) { |
| | | Runnable runnable = () -> { |
| | | WarnMailUtil.sendAppDown(appInfo, false); |
| | | }; |
| | | executor.execute(runnable); |
| | | } |
| | | } |
| | | } |
| | | if (updateList.size() > 0) { |
| | | appInfoService.updateRecord(updateList); |
| | | } |
| | | if (logInfoList.size() > 0) { |
| | | logInfoService.saveRecord(logInfoList); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("æ£æµè¿ç¨æ¯å¦ä¸çº¿é误", e); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 90ç§åæ§è¡ï¼ä¹åæ¯é10åéæ§è¡, åä½ï¼msã |
| | | * æ£æµå¿è·³ |
| | | */ |
| | | @Scheduled(initialDelay = 90000L, fixedRateString = "${base.heathTimes}") |
| | | public void heathMonitorTask() { |
| | | logger.info("heathMonitorTask------------" + DateUtil.getDateTimeString(new Date())); |
| | | Map<String, Object> params = new HashMap<>(); |
| | | List<HeathMonitor> heathMonitors = new ArrayList<HeathMonitor>(); |
| | | List<LogInfo> logInfoList = new ArrayList<LogInfo>(); |
| | | Date date = DateUtil.getNowTime(); |
| | | try { |
| | | List<HeathMonitor> heathMonitorAllList = heathMonitorService.selectAllByParams(params); |
| | | if (heathMonitorAllList.size() > 0) { |
| | | for (HeathMonitor h : heathMonitorAllList) { |
| | | int status = 500; |
| | | status = restUtil.get(h.getHeathUrl()); |
| | | h.setCreateTime(date); |
| | | h.setHeathStatus(status + ""); |
| | | heathMonitors.add(h); |
| | | if (!"200".equals(h.getHeathStatus())) { |
| | | if (!StringUtils.isEmpty(WarnPools.MEM_WARN_MAP.get(h.getId()))) { |
| | | continue; |
| | | } |
| | | LogInfo logInfo = new LogInfo(); |
| | | logInfo.setHostname("æå¡æ¥å£æ£æµå¼å¸¸ï¼" + h.getAppName()); |
| | | logInfo.setInfoContent("æå¡æ¥å£æ£æµå¼å¸¸ï¼" + h.getAppName() + "ï¼" + h.getHeathUrl() + "ï¼è¿åç¶æ" + h.getHeathStatus()); |
| | | logInfo.setState(StaticKeys.LOG_ERROR); |
| | | logInfoList.add(logInfo); |
| | | Runnable runnable = () -> { |
| | | WarnMailUtil.sendHeathInfo(h, true); |
| | | }; |
| | | executor.execute(runnable); |
| | | } else { |
| | | if (!StringUtils.isEmpty(WarnPools.MEM_WARN_MAP.get(h.getId()))) { |
| | | Runnable runnable = () -> { |
| | | WarnMailUtil.sendHeathInfo(h, false); |
| | | }; |
| | | executor.execute(runnable); |
| | | } |
| | | } |
| | | } |
| | | heathMonitorService.updateRecord(heathMonitors); |
| | | if (logInfoList.size() > 0) { |
| | | logInfoService.saveRecord(logInfoList); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("æå¡æ¥å£æ£æµä»»å¡é误", e); |
| | | logInfoService.save("æå¡æ¥å£æ£æµé误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 60ç§åæ§è¡ï¼ä¹åæ¯é120åéæ§è¡, åä½ï¼msã |
| | | * æ°æ®è¡¨çæ§ |
| | | */ |
| | | @Scheduled(initialDelay = 60000L, fixedRateString = "${base.dbTableTimes}") |
| | | public void tableCountTask() { |
| | | Map<String, Object> params = new HashMap<>(); |
| | | List<DbTable> dbTablesUpdate = new ArrayList<DbTable>(); |
| | | List<DbTableCount> dbTableCounts = new ArrayList<DbTableCount>(); |
| | | Date date = DateUtil.getNowTime(); |
| | | String sql = ""; |
| | | Long tableCount = 0l; |
| | | try { |
| | | List<DbInfo> dbInfos = dbInfoService.selectAllByParams(params); |
| | | for (DbInfo dbInfo : dbInfos) { |
| | | params.put("dbInfoId", dbInfo.getId()); |
| | | List<DbTable> dbTables = dbTableService.selectAllByParams(params); |
| | | for (DbTable dbTable : dbTables) { |
| | | String whereAnd = ""; |
| | | if (!StringUtils.isEmpty(dbTable.getWhereVal())) { |
| | | whereAnd = " and "; |
| | | } |
| | | if ("postgresql".equals(dbInfo.getDbType())) { |
| | | sql = RDSConnection.query_table_count_pg.replace("{tableName}", dbTable.getTableName()) + whereAnd + dbTable.getWhereVal(); |
| | | } else { |
| | | sql = RDSConnection.query_table_count.replace("{tableName}", dbTable.getTableName()) + whereAnd + dbTable.getWhereVal(); |
| | | } |
| | | tableCount = connectionUtil.queryTableCount(dbInfo, sql); |
| | | DbTableCount dbTableCount = new DbTableCount(); |
| | | dbTableCount.setCreateTime(date); |
| | | dbTableCount.setDbTableId(dbTable.getId()); |
| | | dbTableCount.setTableCount(tableCount); |
| | | dbTableCounts.add(dbTableCount); |
| | | dbTable.setDateStr(DateUtil.getDateTimeString(date)); |
| | | dbTable.setTableCount(tableCount); |
| | | dbTablesUpdate.add(dbTable); |
| | | } |
| | | } |
| | | if (dbTableCounts.size() > 0) { |
| | | dbTableCountService.saveRecord(dbTableCounts); |
| | | dbTableService.updateRecord(dbTablesUpdate); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("æ°æ®è¡¨çæ§ä»»å¡é误", e); |
| | | logInfoService.save("æ°æ®è¡¨çæ§ä»»å¡é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 30ç§åæ§è¡ï¼ä¹åæ¯é1åéæ§è¡, åä½ï¼msã |
| | | * æ¹éæäº¤æ°æ® |
| | | */ |
| | | @Scheduled(initialDelay = 30000L, fixedRate = 1 * 60 * 1000) |
| | | public synchronized void commitTask() { |
| | | logger.info("æ¹éæäº¤çæ§æ°æ®ä»»å¡å¼å§----------" + DateUtil.getCurrentDateTime()); |
| | | try { |
| | | if (BatchData.APP_STATE_LIST.size() > 0) { |
| | | List<AppState> APP_STATE_LIST = new ArrayList<AppState>(); |
| | | APP_STATE_LIST.addAll(BatchData.APP_STATE_LIST); |
| | | BatchData.APP_STATE_LIST.clear(); |
| | | appStateService.saveRecord(APP_STATE_LIST); |
| | | } |
| | | if (BatchData.CPU_STATE_LIST.size() > 0) { |
| | | List<CpuState> CPU_STATE_LIST = new ArrayList<CpuState>(); |
| | | CPU_STATE_LIST.addAll(BatchData.CPU_STATE_LIST); |
| | | BatchData.CPU_STATE_LIST.clear(); |
| | | cpuStateService.saveRecord(CPU_STATE_LIST); |
| | | } |
| | | if (BatchData.MEM_STATE_LIST.size() > 0) { |
| | | List<MemState> MEM_STATE_LIST = new ArrayList<MemState>(); |
| | | MEM_STATE_LIST.addAll(BatchData.MEM_STATE_LIST); |
| | | BatchData.MEM_STATE_LIST.clear(); |
| | | memStateService.saveRecord(MEM_STATE_LIST); |
| | | } |
| | | if (BatchData.NETIO_STATE_LIST.size() > 0) { |
| | | List<NetIoState> NETIO_STATE_LIST = new ArrayList<NetIoState>(); |
| | | NETIO_STATE_LIST.addAll(BatchData.NETIO_STATE_LIST); |
| | | BatchData.NETIO_STATE_LIST.clear(); |
| | | netIoStateService.saveRecord(NETIO_STATE_LIST); |
| | | } |
| | | if (BatchData.SYSLOAD_STATE_LIST.size() > 0) { |
| | | List<SysLoadState> SYSLOAD_STATE_LIST = new ArrayList<SysLoadState>(); |
| | | SYSLOAD_STATE_LIST.addAll(BatchData.SYSLOAD_STATE_LIST); |
| | | BatchData.SYSLOAD_STATE_LIST.clear(); |
| | | sysLoadStateService.saveRecord(SYSLOAD_STATE_LIST); |
| | | } |
| | | if (BatchData.LOG_INFO_LIST.size() > 0) { |
| | | List<LogInfo> LOG_INFO_LIST = new ArrayList<LogInfo>(); |
| | | LOG_INFO_LIST.addAll(BatchData.LOG_INFO_LIST); |
| | | BatchData.LOG_INFO_LIST.clear(); |
| | | logInfoService.saveRecord(LOG_INFO_LIST); |
| | | } |
| | | if (BatchData.DESK_STATE_LIST.size() > 0) { |
| | | Map<String, Object> paramsDel = new HashMap<String, Object>(); |
| | | |
| | | List<DeskState> DESK_STATE_LIST = new ArrayList<DeskState>(); |
| | | DESK_STATE_LIST.addAll(BatchData.DESK_STATE_LIST); |
| | | BatchData.DESK_STATE_LIST.clear(); |
| | | List<String> hostnameList = new ArrayList<String>(); |
| | | for (DeskState deskState : DESK_STATE_LIST) { |
| | | if (!hostnameList.contains(deskState.getHostname())) { |
| | | hostnameList.add(deskState.getHostname()); |
| | | } |
| | | } |
| | | for (String hostname : hostnameList) { |
| | | paramsDel.put("hostname", hostname); |
| | | deskStateService.deleteByAccHname(paramsDel); |
| | | } |
| | | deskStateService.saveRecord(DESK_STATE_LIST); |
| | | } |
| | | if (BatchData.SYSTEM_INFO_LIST.size() > 0) { |
| | | Map<String, Object> paramsDel = new HashMap<String, Object>(); |
| | | List<SystemInfo> SYSTEM_INFO_LIST = new ArrayList<SystemInfo>(); |
| | | SYSTEM_INFO_LIST.addAll(BatchData.SYSTEM_INFO_LIST); |
| | | BatchData.SYSTEM_INFO_LIST.clear(); |
| | | List<SystemInfo> updateList = new ArrayList<SystemInfo>(); |
| | | List<SystemInfo> insertList = new ArrayList<SystemInfo>(); |
| | | List<SystemInfo> savedList = systemInfoService.selectAllByParams(paramsDel); |
| | | for (SystemInfo systemInfo : SYSTEM_INFO_LIST) { |
| | | boolean issaved = false; |
| | | for (SystemInfo systemInfoS : savedList) { |
| | | if (systemInfoS.getHostname().equals(systemInfo.getHostname())) { |
| | | systemInfo.setId(systemInfoS.getId()); |
| | | updateList.add(systemInfo); |
| | | issaved = true; |
| | | break; |
| | | } |
| | | } |
| | | if (!issaved) { |
| | | insertList.add(systemInfo); |
| | | } |
| | | } |
| | | systemInfoService.updateRecord(updateList); |
| | | systemInfoService.saveRecord(insertList); |
| | | } |
| | | if (BatchData.APP_INFO_LIST.size() > 0) { |
| | | Map<String, Object> paramsDel = new HashMap<String, Object>(); |
| | | List<AppInfo> APP_INFO_LIST = new ArrayList<AppInfo>(); |
| | | APP_INFO_LIST.addAll(BatchData.APP_INFO_LIST); |
| | | BatchData.APP_INFO_LIST.clear(); |
| | | |
| | | List<AppInfo> updateList = new ArrayList<AppInfo>(); |
| | | List<AppInfo> insertList = new ArrayList<AppInfo>(); |
| | | List<AppInfo> savedList = appInfoService.selectAllByParams(paramsDel); |
| | | for (AppInfo systemInfo : APP_INFO_LIST) { |
| | | boolean issaved = false; |
| | | for (AppInfo systemInfoS : savedList) { |
| | | if (systemInfoS.getHostname().equals(systemInfo.getHostname()) && systemInfoS.getAppPid().equals(systemInfo.getAppPid())) { |
| | | systemInfo.setId(systemInfoS.getId()); |
| | | updateList.add(systemInfo); |
| | | issaved = true; |
| | | break; |
| | | } |
| | | } |
| | | if (!issaved) { |
| | | insertList.add(systemInfo); |
| | | } |
| | | } |
| | | appInfoService.updateRecord(updateList); |
| | | appInfoService.saveRecord(insertList); |
| | | } |
| | | } catch (Exception e) { |
| | | // TODO Auto-generated catch block |
| | | logger.error("æ¹éæäº¤çæ§æ°æ®é误----------", e); |
| | | logInfoService.save("commitTask", "æ¹éæäº¤çæ§æ°æ®é误ï¼" + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | logger.info("æ¹éæäº¤çæ§æ°æ®ä»»å¡ç»æ----------" + DateUtil.getCurrentDateTime()); |
| | | } |
| | | |
| | | @Autowired |
| | | SystemInfoMapper systemInfoMapper; |
| | | @Autowired |
| | | CpuStateMapper cpuStateMapper; |
| | | @Autowired |
| | | DeskStateMapper deskStateMapper; |
| | | @Autowired |
| | | MemStateMapper memStateMapper; |
| | | @Autowired |
| | | NetIoStateMapper netIoStateMapper; |
| | | @Autowired |
| | | SysLoadStateMapper sysLoadStateMapper; |
| | | @Autowired |
| | | TcpStateMapper tcpStateMapper; |
| | | @Autowired |
| | | AppInfoMapper appInfoMapper; |
| | | @Autowired |
| | | AppStateMapper appStateMapper; |
| | | @Autowired |
| | | MailSetMapper mailSetMapper; |
| | | @Autowired |
| | | IntrusionInfoMapper intrusionInfoMapper; |
| | | @Autowired |
| | | LogInfoMapper logInfoMapper; |
| | | |
| | | /** |
| | | * æ¯å¤©åæ¨1:10æ§è¡ |
| | | * å é¤å岿°æ®ï¼15天 |
| | | */ |
| | | @Scheduled(cron = "0 10 1 * * ?") |
| | | public void clearHisdataTask() { |
| | | logger.info("宿¶æ¸
空å岿°æ®ä»»å¡å¼å§----------" + DateUtil.getCurrentDateTime()); |
| | | WarnPools.clearOldData();//æ¸
空ååè¦é®ä»¶çè®°å½ |
| | | String nowTime = DateUtil.getCurrentDateTime(); |
| | | //15å¤©åæ¶é´ |
| | | String thrityDayBefore = DateUtil.getDateBefore(nowTime, 15); |
| | | Map<String, Object> paramsDel = new HashMap<String, Object>(); |
| | | try { |
| | | paramsDel.put(StaticKeys.SEARCH_END_TIME, thrityDayBefore); |
| | | //æ§è¡å 餿ä½begin |
| | | if (paramsDel.get(StaticKeys.SEARCH_END_TIME) != null && !"".equals(paramsDel.get(StaticKeys.SEARCH_END_TIME))) { |
| | | cpuStateMapper.deleteByAccountAndDate(paramsDel);//å é¤cpuçæ§ä¿¡æ¯ |
| | | deskStateMapper.deleteByAccountAndDate(paramsDel);//å é¤ç£ççæ§ä¿¡æ¯ |
| | | memStateMapper.deleteByAccountAndDate(paramsDel);//å é¤å
åçæ§ä¿¡æ¯ |
| | | netIoStateMapper.deleteByAccountAndDate(paramsDel);//å é¤ååççæ§ä¿¡æ¯ |
| | | sysLoadStateMapper.deleteByAccountAndDate(paramsDel);//å é¤è´è½½ç¶æçæ§ä¿¡æ¯ |
| | | tcpStateMapper.deleteByAccountAndDate(paramsDel);//å é¤tcpçæ§ä¿¡æ¯ |
| | | appStateMapper.deleteByDate(paramsDel); |
| | | //å é¤15天åçæ¥å¿ä¿¡æ¯ |
| | | logInfoMapper.deleteByDate(paramsDel); |
| | | //å é¤15天忰æ®åºè¡¨ç»è®¡ä¿¡æ¯ |
| | | dbTableCountService.deleteByDate(paramsDel); |
| | | |
| | | logInfoService.save("宿¶æ¸
空å岿°æ®å®æ", "宿¶æ¸
空å岿°æ®å®æï¼", StaticKeys.LOG_ERROR); |
| | | } |
| | | //æ§è¡å 餿ä½end |
| | | |
| | | } catch (Exception e) { |
| | | logger.error("宿¶æ¸
空å岿°æ®ä»»å¡åºéï¼", e); |
| | | logInfoService.save("宿¶æ¸
空å岿°æ®é误", "宿¶æ¸
空å岿°æ®é误ï¼" + e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | logger.info("宿¶æ¸
空å岿°æ®ä»»å¡ç»æ----------" + DateUtil.getCurrentDateTime()); |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util; |
| | | |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.net.URLDecoder; |
| | | import java.net.URLEncoder; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:CodeUtil.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: ç¼ç è½¬æ¢ |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class CodeUtil { |
| | | /** |
| | | * æSRCç¼ç æuncode |
| | | * æ¹ä¾¿AJAXä¼ è¾ |
| | | * |
| | | * @param src |
| | | * @return |
| | | */ |
| | | public static String escape(String src) { |
| | | if (src == null) return src; |
| | | int i; |
| | | char j; |
| | | StringBuffer tmp = new StringBuffer(); |
| | | tmp.ensureCapacity(src.length() * 6); |
| | | for (i = 0; i < src.length(); i++) { |
| | | j = src.charAt(i); |
| | | if (Character.isDigit(j) |
| | | || Character.isLowerCase(j) |
| | | |
| | | || Character.isUpperCase(j)) |
| | | tmp.append(j); |
| | | else if (j < 256) { |
| | | tmp.append("%"); |
| | | if (j < 16) |
| | | tmp.append("0"); |
| | | tmp.append(Integer.toString(j, 16)); |
| | | } else { |
| | | tmp.append("%u"); |
| | | tmp.append(Integer.toString(j, 16)); |
| | | } |
| | | } |
| | | return tmp.toString(); |
| | | } |
| | | |
| | | /** |
| | | * æSRCè§£åºæ£å¸¸ç¼ç |
| | | * |
| | | * @param src |
| | | * @return |
| | | */ |
| | | public static String unescape(String src) { |
| | | if (src == null) return src; |
| | | StringBuffer tmp = new StringBuffer(); |
| | | |
| | | tmp.ensureCapacity(src.length()); |
| | | int lastPos = 0, pos = 0; |
| | | char ch; |
| | | while (lastPos < src.length()) { |
| | | pos = src.indexOf("%", lastPos); |
| | | if (pos == lastPos) { |
| | | if (src.charAt(pos + 1) == 'u') { |
| | | ch = |
| | | (char) Integer.parseInt( |
| | | src.substring(pos + 2, pos + 6), |
| | | 16); |
| | | tmp.append(ch); |
| | | lastPos = pos + 6; |
| | | } else { |
| | | ch = |
| | | (char) Integer.parseInt( |
| | | src.substring(pos + 1, pos + 3), |
| | | 16); |
| | | tmp.append(ch); |
| | | lastPos = pos + 3; |
| | | } |
| | | } else { |
| | | if (pos == -1) { |
| | | tmp.append(src.substring(lastPos)); |
| | | lastPos = src.length(); |
| | | } else { |
| | | tmp.append(src.substring(lastPos, pos)); |
| | | lastPos = pos; |
| | | } |
| | | } |
| | | } |
| | | return tmp.toString(); |
| | | } |
| | | |
| | | /** |
| | | * åå°è§£ç |
| | | * |
| | | * @param src |
| | | * @return |
| | | */ |
| | | public static String decodeURIComponent(String src) { |
| | | if (src == null) return src; |
| | | String ret = null; |
| | | try { |
| | | ret = URLDecoder.decode(src, "utf-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | return ret; |
| | | } |
| | | |
| | | /** |
| | | * åéç¼ç |
| | | * |
| | | * @param data |
| | | * @return |
| | | */ |
| | | public static String dbEncode(String data) { |
| | | if (data == null) return null; |
| | | return CodeUtil.escape(CodeUtil.encodeURIComponent(data)); |
| | | } |
| | | |
| | | /** |
| | | * åéè§£ç |
| | | * |
| | | * @param data |
| | | * @return |
| | | */ |
| | | public static String dbDecode(String data) { |
| | | if (data == null) return null; |
| | | return CodeUtil.decodeURIComponent(CodeUtil.unescape(data)); |
| | | } |
| | | |
| | | /** |
| | | * åå°ç¼ç |
| | | * |
| | | * @param src |
| | | * @return |
| | | */ |
| | | public static String encodeURIComponent(String src) { |
| | | if (src == null) return src; |
| | | String ret = null; |
| | | try { |
| | | ret = URLEncoder.encode(src, "utf-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | return ret; |
| | | |
| | | } |
| | | |
| | | /** |
| | | * HTML转为TEXT |
| | | * |
| | | * @param str |
| | | * @return |
| | | */ |
| | | public static String toText(String str) { |
| | | if (str == null) { |
| | | return ""; |
| | | } else { |
| | | str = str.replaceAll("<", "<"); |
| | | str = str.replaceAll(">", ">"); |
| | | str = str.replaceAll("'", "''"); |
| | | str = str.replaceAll(" ", " "); |
| | | str = str.replaceAll("\n", "<br>"); |
| | | str = str.replaceAll("\"", """); |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * TEXT转为HTML |
| | | * |
| | | * @param str |
| | | * @return |
| | | */ |
| | | public static String toHtml(String str) { |
| | | if (str == null) { |
| | | return ""; |
| | | } else { |
| | | str = str.replaceAll("<", "<"); |
| | | str = str.replaceAll(">", ">"); |
| | | str = str.replaceAll("''", "'"); |
| | | str = str.replaceAll(" ", " "); |
| | | str = str.replaceAll("<br>", "\n"); |
| | | str = str.replaceAll(""", "\""); |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | private static final char[] hexDigit = { |
| | | '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' |
| | | }; |
| | | |
| | | private static char toHex(int nibble) { |
| | | return hexDigit[(nibble & 0xF)]; |
| | | } |
| | | |
| | | /** |
| | | * å°å符串ç¼ç æ Unicode ã |
| | | * |
| | | * @param theString å¾
è½¬æ¢æUnicodeç¼ç çå符串ã |
| | | * @param escapeSpace æ¯å¦å¿½ç¥ç©ºæ ¼ã |
| | | * @return è¿å转æ¢åUnicodeç¼ç çå符串ã |
| | | */ |
| | | public static String toUnicode(String theString, boolean escapeSpace) { |
| | | int len = theString.length(); |
| | | int bufLen = len * 2; |
| | | if (bufLen < 0) { |
| | | bufLen = Integer.MAX_VALUE; |
| | | } |
| | | StringBuffer outBuffer = new StringBuffer(bufLen); |
| | | |
| | | for (int x = 0; x < len; x++) { |
| | | char aChar = theString.charAt(x); |
| | | // Handle common case first, selecting largest block that |
| | | // avoids the specials below |
| | | if ((aChar > 61) && (aChar < 127)) { |
| | | if (aChar == '\\') { |
| | | outBuffer.append('\\'); |
| | | outBuffer.append('\\'); |
| | | continue; |
| | | } |
| | | outBuffer.append(aChar); |
| | | continue; |
| | | } |
| | | switch (aChar) { |
| | | case ' ': |
| | | if (x == 0 || escapeSpace) |
| | | outBuffer.append('\\'); |
| | | outBuffer.append(' '); |
| | | break; |
| | | case '\t': |
| | | outBuffer.append('\\'); |
| | | outBuffer.append('t'); |
| | | break; |
| | | case '\n': |
| | | outBuffer.append('\\'); |
| | | outBuffer.append('n'); |
| | | break; |
| | | case '\r': |
| | | outBuffer.append('\\'); |
| | | outBuffer.append('r'); |
| | | break; |
| | | case '\f': |
| | | outBuffer.append('\\'); |
| | | outBuffer.append('f'); |
| | | break; |
| | | case '=': // Fall through |
| | | case ':': // Fall through |
| | | case '#': // Fall through |
| | | case '!': |
| | | outBuffer.append('\\'); |
| | | outBuffer.append(aChar); |
| | | break; |
| | | default: |
| | | if ((aChar < 0x0020) || (aChar > 0x007e)) { |
| | | outBuffer.append('\\'); |
| | | outBuffer.append('u'); |
| | | outBuffer.append(toHex((aChar >> 12) & 0xF)); |
| | | outBuffer.append(toHex((aChar >> 8) & 0xF)); |
| | | outBuffer.append(toHex((aChar >> 4) & 0xF)); |
| | | outBuffer.append(toHex(aChar & 0xF)); |
| | | } else { |
| | | outBuffer.append(aChar); |
| | | } |
| | | } |
| | | } |
| | | return outBuffer.toString(); |
| | | } |
| | | |
| | | /** |
| | | * ä» Unicode ç è½¬æ¢æç¼ç åçç¹æ®å符串ã |
| | | * |
| | | * @param in Unicodeç¼ç çå符æ°ç»ã |
| | | * @param off 转æ¢çèµ·å§åç§»éã |
| | | * @param len 转æ¢çå符é¿åº¦ã |
| | | * @param convtBuf 转æ¢çç¼åå符æ°ç»ã |
| | | * @return å®æè½¬æ¢ï¼è¿åç¼ç åçç¹æ®å符串ã |
| | | */ |
| | | public String fromUnicode(char[] in, int off, int len, char[] convtBuf) { |
| | | if (convtBuf.length < len) { |
| | | int newLen = len * 2; |
| | | if (newLen < 0) { |
| | | newLen = Integer.MAX_VALUE; |
| | | } |
| | | convtBuf = new char[newLen]; |
| | | } |
| | | char aChar; |
| | | char[] out = convtBuf; |
| | | int outLen = 0; |
| | | int end = off + len; |
| | | |
| | | while (off < end) { |
| | | aChar = in[off++]; |
| | | if (aChar == '\\') { |
| | | aChar = in[off++]; |
| | | if (aChar == 'u') { |
| | | // Read the xxxx |
| | | int value = 0; |
| | | for (int i = 0; i < 4; i++) { |
| | | aChar = in[off++]; |
| | | switch (aChar) { |
| | | case '0': |
| | | case '1': |
| | | case '2': |
| | | case '3': |
| | | case '4': |
| | | case '5': |
| | | case '6': |
| | | case '7': |
| | | case '8': |
| | | case '9': |
| | | value = (value << 4) + aChar - '0'; |
| | | break; |
| | | case 'a': |
| | | case 'b': |
| | | case 'c': |
| | | case 'd': |
| | | case 'e': |
| | | case 'f': |
| | | value = (value << 4) + 10 + aChar - 'a'; |
| | | break; |
| | | case 'A': |
| | | case 'B': |
| | | case 'C': |
| | | case 'D': |
| | | case 'E': |
| | | case 'F': |
| | | value = (value << 4) + 10 + aChar - 'A'; |
| | | break; |
| | | default: |
| | | throw new IllegalArgumentException( |
| | | "Malformed \\uxxxx encoding."); |
| | | } |
| | | } |
| | | out[outLen++] = (char) value; |
| | | } else { |
| | | if (aChar == 't') { |
| | | aChar = '\t'; |
| | | } else if (aChar == 'r') { |
| | | aChar = '\r'; |
| | | } else if (aChar == 'n') { |
| | | aChar = '\n'; |
| | | } else if (aChar == 'f') { |
| | | aChar = '\f'; |
| | | } |
| | | out[outLen++] = aChar; |
| | | } |
| | | } else { |
| | | out[outLen++] = (char) aChar; |
| | | } |
| | | } |
| | | return new String(out, 0, outLen); |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util; |
| | | |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | | import java.sql.Timestamp; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:DateUtil.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: DateUtil.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class DateUtil { |
| | | private static final Logger logger = LoggerFactory.getLogger(DateUtil.class); |
| | | |
| | | private static final String DATE_PATTERN = "yyyy-MM-dd"; |
| | | private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; |
| | | |
| | | |
| | | /** |
| | | * è·åå½åæ¶é´ |
| | | * |
| | | * @return å½åæ¥æ |
| | | */ |
| | | public static Timestamp getNowTime() { |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat(DATETIME_PATTERN); |
| | | Timestamp nowTime = Timestamp.valueOf(dateFormat.format(new Date())); |
| | | return nowTime; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è·åå½åç³»ç»æ¶é´. |
| | | * é»è®¤æ¨¡æ¿æ ¼å¼yyyy-MM-dd hh:mm:ss. |
| | | * |
| | | * @return å½åç³»ç»æ¶é´ |
| | | */ |
| | | public static String getCurrentDateTime() { |
| | | return getCurrentDateTime(DATETIME_PATTERN); |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åç³»ç»åæã |
| | | * |
| | | * @return å½åç³»ç»æ¥æ |
| | | * @author zhenggz 2003-11-09 |
| | | */ |
| | | public static String getCurrentDate() { |
| | | return getCurrentDateTime(DATE_PATTERN); |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åç³»ç»æ¶é´. |
| | | * |
| | | * @param strPattern æ¶é´æ¨¡æ¿ |
| | | * @return å½åç³»ç»æ¶é´ |
| | | */ |
| | | public static String getCurrentDateTime(String pattern) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat(pattern); |
| | | return sdf.format(cal.getTime()); |
| | | } |
| | | |
| | | public static Date getDate(String dateStr) throws ParseException { |
| | | return getDate(dateStr, DATETIME_PATTERN); |
| | | } |
| | | |
| | | public static Date getDate(String dateStr, String pattern) throws |
| | | ParseException { |
| | | Date date = null; |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); |
| | | date = dateFormat.parse(dateStr); |
| | | |
| | | return date; |
| | | } |
| | | |
| | | public static String getDateString(Date date) { |
| | | return getString(date, DATE_PATTERN); |
| | | } |
| | | |
| | | public static String getDateTimeString(Date date) { |
| | | return getString(date, DATETIME_PATTERN); |
| | | } |
| | | |
| | | public static String getString(Date date, String pattern) { |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); |
| | | return dateFormat.format(date); |
| | | } |
| | | |
| | | public static int getHour(Date date) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | int hour = calendar.get(Calendar.HOUR_OF_DAY); |
| | | return hour; |
| | | } |
| | | |
| | | public static long secsOf2Day(String day1, String day2) { |
| | | try { |
| | | Date date1 = getDate(day1); |
| | | Date date2 = getDate(day2); |
| | | long secs = Math.abs(date1.getTime() - date2.getTime()) / 1000; |
| | | return secs; |
| | | } catch (Exception e) { |
| | | return -1; |
| | | } |
| | | } |
| | | |
| | | |
| | | public static String getDateBefore(String datetimes, int day) { |
| | | Calendar now = Calendar.getInstance(); |
| | | try { |
| | | now.setTime(getDate(datetimes)); |
| | | } catch (ParseException e) { |
| | | logger.error("æ¶é´æ ¼å¼ [ " + datetimes + " ] æ æ³è¢«è§£æï¼" + e.toString()); |
| | | return null; |
| | | } |
| | | now.set(Calendar.DATE, now.get(Calendar.DATE) - day); |
| | | return getString(now.getTime(), DATETIME_PATTERN); |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util; |
| | | |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.net.URLDecoder; |
| | | import java.net.URLEncoder; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:Encode.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: Encode.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class Encode { |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(Encode.class); |
| | | |
| | | /** |
| | | * 以UTF-8ç¼ç ï¼å以系ç»é»è®¤ç¼ç è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String utf8ToSystem(String str) { |
| | | return encode(str, "UTF-8", System.getProperty("file.encoding")); |
| | | } |
| | | |
| | | /** |
| | | * 以系ç»é»è®¤ç¼ç ç¼ç ï¼å以UTF-8è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String systemToUtf8(String str) { |
| | | return encode(str, System.getProperty("file.encoding"), "UTF-8"); |
| | | } |
| | | |
| | | /** |
| | | * 以GBKç¼ç ï¼å以系ç»é»è®¤ç¼ç è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String gbkToSystem(String str) { |
| | | return encode(str, "GBK", System.getProperty("file.encoding")); |
| | | } |
| | | |
| | | /** |
| | | * 以系ç»é»è®¤ç¼ç ç¼ç ï¼å以GBKè§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String systemToGbk(String str) { |
| | | return encode(str, System.getProperty("file.encoding"), "GBK"); |
| | | } |
| | | |
| | | /** |
| | | * 以ISO_8859_1ç¼ç ï¼å以系ç»é»è®¤ç¼ç è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String iso_8859_1ToSystem(String str) { |
| | | return encode(str, "ISO_8859_1", System.getProperty("file.encoding")); |
| | | } |
| | | |
| | | /** |
| | | * 以系ç»é»è®¤ç¼ç ç¼ç ï¼å以ISO_8859_1è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String systemToIso_8859_1(String str) { |
| | | return encode(str, System.getProperty("file.encoding"), "ISO_8859_1"); |
| | | } |
| | | |
| | | /** |
| | | * 以ISO_8859_1ç¼ç ï¼å以GBKè§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String iso_8859_1ToGbk(String str) { |
| | | return encode(str, "ISO_8859_1", "GBK"); |
| | | } |
| | | |
| | | /** |
| | | * 以GBKç¼ç ï¼å以ISO_8859_1è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String gbkToIso_8859_1(String str) { |
| | | return encode(str, "GBK", "ISO_8859_1"); |
| | | } |
| | | |
| | | /** |
| | | * 以UTF-8ç¼ç ï¼å以GBKè§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String utf8ToGbk(String str) { |
| | | return encode(str, "UTF-8", "GBK"); |
| | | } |
| | | |
| | | /** |
| | | * 以GBKç¼ç ï¼å以UTF-8è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String gbkToUtf8(String str) { |
| | | return encode(str, "GBK", "UTF-8"); |
| | | } |
| | | |
| | | /** |
| | | * 以UTF-8ç¼ç ï¼å以ISO_8859_1è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String utf8ToIso_8859_1(String str) { |
| | | return encode(str, "UTF-8", "ISO_8859_1"); |
| | | } |
| | | |
| | | /** |
| | | * 以ISO_8859_1ç¼ç ï¼å以UTF-8è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String iso_8859_1ToUtf8(String str) { |
| | | return encode(str, "ISO_8859_1", "UTF-8"); |
| | | } |
| | | |
| | | /** |
| | | * URLç¼ç |
| | | * 以系ç»é»è®¤ç ç¼ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String urlEncode(String str) { |
| | | str = urlEncode(str, System.getProperty("file.encoding")); |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * URLç¼ç |
| | | * 以æå®ç ç¼ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @param encoding æå®ç¼ç |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String urlEncode(String str, String encoding) { |
| | | try { |
| | | str = URLEncoder.encode(str, encoding); |
| | | } catch (UnsupportedEncodingException ex) { |
| | | ex.printStackTrace(System.out); |
| | | return null; |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * URLè§£ç |
| | | * 以系ç»é»è®¤ç è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String urlDecode(String str) { |
| | | str = urlDecode(str, System.getProperty("file.encoding")); |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * URLè§£ç |
| | | * 以æå®ç è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @param encoding æå®ç¼ç |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String urlDecode(String str, String encoding) { |
| | | try { |
| | | str = URLDecoder.decode(str, encoding); |
| | | } catch (UnsupportedEncodingException ex) { |
| | | logger.error("å¤çä¹±ç å¼å¸¸" + ex.toString()); |
| | | return ""; |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * 坹䏿URLç¼ç ï¼ç¨æ¥å¨æµè§å¨ç«¯è®¿é®Linuxæå¡å¨ä¸èµæº |
| | | * 以æå®ç ç¼ç ï¼åªé坹䏿 |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @param encoding æå®ç¼ç |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String urlEncodeForLinux(String str, String encoding) { |
| | | str = Encode.gbkToSystem(str); |
| | | str = Encode.urlEncode(str, encoding); |
| | | str = str.replaceAll("\\+", "%20"); |
| | | |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * ç¼ç 转æ¢,å°å符串为æå®ç¼ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @param encodeStr åå符串ç¼ç |
| | | * @param decodeStr æå®ç¼ç |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String encode(String str, String encodeStr, String decodeStr) { |
| | | try { |
| | | str = new String(str.getBytes(encodeStr), decodeStr); |
| | | } catch (UnsupportedEncodingException ex) { |
| | | ex.printStackTrace(System.out); |
| | | return null; |
| | | } |
| | | |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * URLè§£ç |
| | | * 以æå®ç è§£ç |
| | | * |
| | | * @param str ç¼ç åå串 |
| | | * @param encoding æå®ç¼ç |
| | | * @return ç¼ç åå串 |
| | | */ |
| | | public static String luanmaStr(String str) { |
| | | try { |
| | | str = new String(str.getBytes("ISO-8859-1"), "utf-8"); |
| | | } catch (UnsupportedEncodingException ex) { |
| | | logger.error("å¤çä¹±ç å¼å¸¸" + ex.toString()); |
| | | return ""; |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | //æµè¯urlDecode()æ¹æ³ |
| | | //String s = "%E6%9C%AC%E5%9C%B0+%E6%9C%AC%E5%9C%B0"; |
| | | // String s = "æ¬å°+ æ¬å°"; |
| | | // s = urlEncode(s, "UTF-8"); |
| | | |
| | | // s = "%2Froot%2Fimage%2F+plmm"; |
| | | //s = urlDecode(s, "ISO_8859_1"); |
| | | // s = urlDecode(s, "UTF-8"); |
| | | String mytext = null; |
| | | String mytext2 = null; |
| | | try { |
| | | mytext = URLEncoder.encode("ä¸å", "utf-8"); |
| | | mytext2 = urlDecode(mytext, "utf-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | System.out.println(mytext); |
| | | System.out.println(mytext2); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util; |
| | | |
| | | |
| | | import java.io.File; |
| | | import java.util.*; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:FormatUtil.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: FormatUtil.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class FormatUtil { |
| | | |
| | | /** |
| | | * æ ¼å¼åæä»¶å¤§å° |
| | | * å½¢å¼å¦ï¼2.22 K, 2.22 M, 2222 Bytesï¼é¿åº¦ä¿ç4ä½ |
| | | * |
| | | * @param size æä»¶å¤§å° |
| | | * @return æ ¼å¼ååçå串 |
| | | */ |
| | | public static String formatSize(long size) { |
| | | String sizeStr = ""; |
| | | //å°äº1024åè |
| | | if (size < 1024) { |
| | | sizeStr = size + " Bytes"; |
| | | } |
| | | //大äº1M |
| | | else if (size > 1024000) { |
| | | sizeStr = Float.toString((float) size / 1024000); |
| | | if (sizeStr.length() > 4) { |
| | | sizeStr = sizeStr.substring(0, 4); |
| | | } |
| | | if (sizeStr.endsWith(".")) { |
| | | sizeStr = sizeStr.substring(0, sizeStr.length() - 1); |
| | | } |
| | | sizeStr += " M"; |
| | | } else { |
| | | sizeStr = Float.toString((float) size / 1024); |
| | | if (sizeStr.length() > 4) { |
| | | sizeStr = sizeStr.substring(0, 4); |
| | | } |
| | | if (sizeStr.endsWith(".")) { |
| | | sizeStr = sizeStr.substring(0, sizeStr.length() - 1); |
| | | } |
| | | sizeStr += " K"; |
| | | } |
| | | return sizeStr; |
| | | } |
| | | |
| | | public static String formatPath(String pathStr, boolean isEndWithSeparator) { |
| | | pathStr = formatPath(pathStr); |
| | | pathStr = pathStr + File.separator; |
| | | return pathStr; |
| | | } |
| | | |
| | | public static String formatPath(String pathStr) { |
| | | pathStr = pathStr.replace('/', File.separatorChar); |
| | | pathStr = pathStr.replace('\\', File.separatorChar); |
| | | if (pathStr.endsWith(File.separator)) { |
| | | pathStr = pathStr.substring(0, pathStr.length() - 1); |
| | | pathStr = formatPath(pathStr); |
| | | } |
| | | return pathStr; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 对å串è¿è¡å¤çï¼é²æ¢ç©ºå串产çé误 |
| | | * |
| | | * @param String |
| | | * @return String æ ¼å¼ååçå串 |
| | | */ |
| | | public static String formatNullString(String str) { |
| | | if (str == null || str.trim().equals("")) { |
| | | str = ""; |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 妿å符串为空ï¼è®¾æé»è®¤å¼ |
| | | * |
| | | * @param String å符串 |
| | | * @param String é»è®¤å符串 |
| | | * @return String æ ¼å¼ååçå串 |
| | | */ |
| | | public static String formatNullString(String str, String defaultStr) { |
| | | if (str == null || str.trim().equals("")) { |
| | | str = defaultStr; |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 夿æ¯å¦æ¯æ°å |
| | | * |
| | | * @param String å符串 |
| | | * @return boolean |
| | | */ |
| | | public static boolean isNumeric(String str) { |
| | | if (str != null && !"".equals(str) && !str.startsWith("0")) { |
| | | for (int i = str.length(); --i >= 0; ) { |
| | | int chr = str.charAt(i); |
| | | if (chr < 48 || chr > 57) |
| | | return false; |
| | | } |
| | | return true; |
| | | } else |
| | | return false; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 夿æ¯å¦æ¯ä¸æ |
| | | * |
| | | * @param char c |
| | | * @return boolean |
| | | */ |
| | | public static boolean isLetter(char c) { |
| | | int k = 0x80; |
| | | return c / k == 0 ? true : false; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å°å符串ä¸çå¤ä¸ªç©ºæ ¼ï¼æ¿æ¢æä¸ä¸ª |
| | | * |
| | | * @param str |
| | | * @return |
| | | */ |
| | | public static String replaceKg(String str) { |
| | | Pattern p = Pattern.compile("\\s+"); |
| | | Matcher m = p.matcher(str); |
| | | return m.replaceAll(" "); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®urlæªååå |
| | | * |
| | | * @param String url |
| | | * @return String |
| | | */ |
| | | public static String getDomainForUrl(String url) { |
| | | return url.replaceAll("http://([^/|:]+)[/|:].*", "$1"); |
| | | } |
| | | |
| | | /** |
| | | * m转为g |
| | | * |
| | | * @param str |
| | | * @return |
| | | */ |
| | | public static double mToG(String str) { |
| | | double result = 0; |
| | | double mod = 1024; |
| | | if (str.contains("M")) { |
| | | double f = Double.valueOf(str.replace("M", "")); |
| | | result = f / mod; |
| | | } else if (str.contains("K")) { |
| | | double f = Double.valueOf(str.replace("K", "")); |
| | | result = (f / mod) / mod; |
| | | } else if (str.contains("T")) { |
| | | double f = Double.valueOf(str.replace("T", "")); |
| | | result = f * 1024; |
| | | } else if (str.contains("G")) { |
| | | result = Double.valueOf(str.replace("G", "")); |
| | | } |
| | | return formatDouble(result, 2); |
| | | } |
| | | |
| | | |
| | | // æmapä¸çvalueæåº -- éåº |
| | | public static List<String> sortMapValueDouble(Map<String, Integer> maps) { |
| | | List<Map.Entry<String, Integer>> info = new ArrayList<Map.Entry<String, Integer>>(maps.entrySet()); |
| | | List<String> desc = new ArrayList<String>(); |
| | | Collections.sort(info, new DoubleComparator()); |
| | | for (Map.Entry<String, Integer> map : info) { |
| | | desc.add(map.getKey()); |
| | | } |
| | | return desc; |
| | | } |
| | | |
| | | // èªå®ä¹æ¯è¾å¨ï¼æç¸ä¼¼åº¦æ¥æåº |
| | | static class DoubleComparator implements Comparator { |
| | | public int compare(Object object1, Object object2) {// å®ç°æ¥å£ä¸çæ¹æ³ |
| | | Map.Entry<String, Integer> p1 = (Map.Entry<String, Integer>) object1; // 强å¶è½¬æ¢ |
| | | Map.Entry<String, Integer> p2 = (Map.Entry<String, Integer>) object2; |
| | | return p2.getValue().compareTo(p1.getValue()); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ ¼å¼ådoubleæ°æ®ï¼æªåå°æ°ç¹åæ°å |
| | | * |
| | | * @param str |
| | | * @param num |
| | | * @return |
| | | */ |
| | | public static double formatDouble(double str, int num) { |
| | | java.math.BigDecimal b = new java.math.BigDecimal(str); |
| | | double myNum3 = b.setScale(num, java.math.BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | return myNum3; |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | System.out.println(formatDouble(96.36, 1)); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.IOException; |
| | | import java.security.MessageDigest; |
| | | import java.security.NoSuchAlgorithmException; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:MD5Utils.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: Md5å å¯å¤ç |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | @SuppressWarnings("unused") |
| | | public class MD5Utils { |
| | | private static final Logger logger = LoggerFactory.getLogger(MD5Utils.class); |
| | | |
| | | // å
¨å±æ°ç» |
| | | private final static String[] strDigits = {"0", "1", "2", "3", "4", "5", |
| | | "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; |
| | | |
| | | /** |
| | | * 16è¿å¶å符 |
| | | */ |
| | | private final static char hexdigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', |
| | | '9', 'a', 'b', 'c', 'd', 'e', 'f'}; |
| | | |
| | | |
| | | /** |
| | | * 对æä»¶å
¨æçæMD5æè¦ |
| | | * |
| | | * @param file è¦å å¯çæä»¶ |
| | | * @return MD5æè¦ç |
| | | */ |
| | | public static String getMD5ForFile(String filePath) { |
| | | FileInputStream fis = null; |
| | | MessageDigest md = null; |
| | | try { |
| | | md = MessageDigest.getInstance("MD5"); |
| | | File file = new File(filePath); |
| | | if (!file.exists()) { |
| | | return ""; |
| | | } |
| | | fis = new FileInputStream(file); |
| | | byte[] buffer = new byte[4096]; |
| | | int length = -1; |
| | | while ((length = fis.read(buffer)) != -1) { |
| | | md.update(buffer, 0, length); |
| | | } |
| | | byte[] b = md.digest(); |
| | | return byteToHexString(b); |
| | | } catch (Exception ex) { |
| | | logger.error("è·åMD5ä¿¡æ¯åçå¼å¸¸ï¼" + ex.toString()); |
| | | return null; |
| | | } finally { |
| | | try { |
| | | if (null != fis) { |
| | | fis.close(); |
| | | } |
| | | } catch (IOException e) { |
| | | logger.error("è·åMD5ä¿¡æ¯åçå¼å¸¸ï¼" + e.toString()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æbyte[]æ°ç»è½¬æ¢æåå
è¿å¶åç¬¦ä¸²è¡¨ç¤ºå½¢å¼ |
| | | * |
| | | * @param tmp è¦è½¬æ¢çbyte[] |
| | | * @return åå
è¿å¶åç¬¦ä¸²è¡¨ç¤ºå½¢å¼ |
| | | */ |
| | | private static String byteToHexString(byte[] tmp) { |
| | | String s; |
| | | char str[] = new char[16 * 2]; |
| | | int k = 0; |
| | | for (int i = 0; i < 16; i++) { |
| | | byte byte0 = tmp[i]; |
| | | str[k++] = hexdigits[byte0 >>> 4 & 0xf]; |
| | | str[k++] = hexdigits[byte0 & 0xf]; |
| | | } |
| | | s = new String(str); |
| | | return s; |
| | | } |
| | | |
| | | // è¿åå½¢å¼ä¸ºæ°åè·å符串 |
| | | private static String byteToArrayString(byte bByte) { |
| | | int iRet = bByte; |
| | | // System.out.println("iRet="+iRet); |
| | | if (iRet < 0) { |
| | | iRet += 256; |
| | | } |
| | | int iD1 = iRet / 16; |
| | | int iD2 = iRet % 16; |
| | | return strDigits[iD1] + strDigits[iD2]; |
| | | } |
| | | |
| | | // è¿åå½¢å¼åªä¸ºæ°å |
| | | private static String byteToNum(byte bByte) { |
| | | int iRet = bByte; |
| | | System.out.println("iRet1=" + iRet); |
| | | if (iRet < 0) { |
| | | iRet += 256; |
| | | } |
| | | return String.valueOf(iRet); |
| | | } |
| | | |
| | | // 转æ¢åèæ°ç»ä¸º16è¿å¶å串 |
| | | private static String byteToString(byte[] bByte) { |
| | | StringBuffer sBuffer = new StringBuffer(); |
| | | for (int i = 0; i < bByte.length; i++) { |
| | | sBuffer.append(byteToArrayString(bByte[i])); |
| | | } |
| | | return sBuffer.toString(); |
| | | } |
| | | |
| | | public static String GetMD5Code(String strObj) { |
| | | if (StringUtils.isEmpty(strObj)) { |
| | | return ""; |
| | | } |
| | | String resultString = null; |
| | | try { |
| | | resultString = new String(strObj); |
| | | MessageDigest md = MessageDigest.getInstance("MD5"); |
| | | // md.digest() è¯¥å½æ°è¿åå¼ä¸ºåæ¾åå¸å¼ç»æçbyteæ°ç» |
| | | resultString = byteToString(md.digest(strObj.getBytes())); |
| | | } catch (NoSuchAlgorithmException ex) { |
| | | ex.printStackTrace(); |
| | | } |
| | | return resultString; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util; |
| | | |
| | | |
| | | import com.github.pagehelper.PageInfo; |
| | | import org.springframework.ui.Model; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:FormatUtil.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: FormatUtil.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class PageUtil { |
| | | |
| | | public static void initPageNumber(PageInfo pageInfo, Model model) { |
| | | List<String> pageNumbers = new ArrayList<String>(); |
| | | for (int i = 5; i > 0; i--) { |
| | | if (pageInfo.getPageNum() - i > 0) { |
| | | pageNumbers.add((pageInfo.getPageNum() - i) + ""); |
| | | } |
| | | } |
| | | for (int i = 0; i < 5; i++) { |
| | | if (pageInfo.getPageNum() + i <= pageInfo.getPages()) { |
| | | pageNumbers.add((pageInfo.getPageNum() + i) + ""); |
| | | } |
| | | } |
| | | model.addAttribute("pageNumbers", pageNumbers); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util; |
| | | |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.util.Properties; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:PropertyUtil.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: PropertyUtil.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class PropertyUtil { |
| | | |
| | | public static Set<String> getKeys(String fileName) { |
| | | ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); |
| | | InputStream in = classLoader.getResourceAsStream(fileName); |
| | | Properties p = new Properties(); |
| | | Set<String> keySet = null; |
| | | try { |
| | | p.load(in); |
| | | keySet = p.stringPropertyNames(); |
| | | in.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return keySet; |
| | | } |
| | | |
| | | |
| | | public static String get(String fileName, String propertyName) { |
| | | ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); |
| | | InputStream in = classLoader.getResourceAsStream(fileName); |
| | | Properties p = new Properties(); |
| | | String msg = ""; |
| | | try { |
| | | p.load(in); |
| | | msg = (String) p.get(propertyName); |
| | | in.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return msg; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util; |
| | | |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.client.HttpClientErrorException; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | /** |
| | | * @version V1.0 |
| | | * @ClassName:RestUtil.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: RestUtil.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | @Component |
| | | public class RestUtil { |
| | | |
| | | private Logger logger = LoggerFactory.getLogger(RestUtil.class); |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | |
| | | public JSONObject post(String url, JSONObject jsonObject) { |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_JSON_UTF8); |
| | | headers.add("Accept", MediaType.APPLICATION_JSON_UTF8.toString()); |
| | | HttpEntity<String> httpEntity = new HttpEntity<>(JSONUtil.parse(jsonObject).toString(), headers); |
| | | ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); |
| | | return JSONUtil.parseObj(responseEntity.getBody()); |
| | | } |
| | | |
| | | public JSONObject post(String url) { |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_JSON_UTF8); |
| | | headers.add("Accept", MediaType.APPLICATION_JSON_UTF8.toString()); |
| | | HttpEntity<String> httpEntity = new HttpEntity<>("", headers); |
| | | ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); |
| | | return JSONUtil.parseObj(responseEntity.getBody()); |
| | | } |
| | | |
| | | public int get(String url) { |
| | | try { |
| | | ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class); |
| | | return responseEntity.getStatusCodeValue(); |
| | | } catch (HttpClientErrorException e) { |
| | | logger.error("æå¡æ¥å£æ£æµä»»å¡é误", e); |
| | | return e.getRawStatusCode(); |
| | | } catch (Exception e) { |
| | | logger.error("æå¡æ¥å£æ£æµä»»å¡é误", e); |
| | | return 500; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util; |
| | | |
| | | import cn.hutool.json.JSONObject; |
| | | import com.wgcloud.config.CommonConfig; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:TokenUtils.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: Md5å å¯å¤ç |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | @Component |
| | | public class TokenUtils { |
| | | private static final Logger logger = LoggerFactory.getLogger(TokenUtils.class); |
| | | |
| | | @Autowired |
| | | private CommonConfig commonConfig; |
| | | |
| | | /** |
| | | * éªè¯agentçtokenåserverçtokenæ¯å¦ä¸è´ |
| | | * |
| | | * @param agentJsonObject |
| | | * @return |
| | | */ |
| | | public boolean checkAgentToken(JSONObject agentJsonObject) { |
| | | if (null == agentJsonObject) { |
| | | return false; |
| | | } |
| | | String wgToken = MD5Utils.GetMD5Code(commonConfig.getWgToken()); |
| | | String agentWgToken = agentJsonObject.getStr("wgToken"); |
| | | if (StringUtils.isEmpty(agentWgToken)) { |
| | | return false; |
| | | } |
| | | if (wgToken.equals(agentWgToken)) { |
| | | return true; |
| | | } |
| | | return false; |
| | | |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util; |
| | | |
| | | import java.util.Random; |
| | | import java.util.UUID; |
| | | |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:UUIDUtil.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: UUIDUtil.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class UUIDUtil { |
| | | |
| | | public static String getUUID() { |
| | | return String.valueOf(UUID.randomUUID()).replace("-", ""); |
| | | } |
| | | |
| | | /** |
| | | * éæº6使°å |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getRandomSix() { |
| | | return "" + new Random().nextInt(999999); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util.jdbc; |
| | | |
| | | import com.wgcloud.entity.DbInfo; |
| | | import com.wgcloud.service.DbInfoService; |
| | | import com.wgcloud.service.LogInfoService; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.jdbc.core.JdbcTemplate; |
| | | import org.springframework.jdbc.datasource.DriverManagerDataSource; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:ConnectionUtil.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: ConnectionUtil.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | @Component |
| | | public class ConnectionUtil { |
| | | private static final Logger logger = LoggerFactory.getLogger(ConnectionUtil.class); |
| | | @Resource |
| | | private LogInfoService logInfoService; |
| | | @Resource |
| | | private DbInfoService dbInfoService; |
| | | |
| | | public JdbcTemplate getJdbcTemplate(DbInfo dbInfo) throws Exception { |
| | | JdbcTemplate jdbcTemplate = null; |
| | | String driver = ""; |
| | | String url = ""; |
| | | if ("mysql".equals(dbInfo.getDbType())) { |
| | | driver = RDSConnection.driver_mysql; |
| | | url = RDSConnection.url_mysql; |
| | | } else if ("postgresql".equals(dbInfo.getDbType())) { |
| | | driver = RDSConnection.driver_postgresql; |
| | | url = RDSConnection.url_postgresql; |
| | | } else if ("sqlserver".equals(dbInfo.getDbType())) { |
| | | driver = RDSConnection.driver_sqlserver; |
| | | url = RDSConnection.url_sqlserver; |
| | | } else if ("db2".equals(dbInfo.getDbType())) { |
| | | driver = RDSConnection.driver_db2; |
| | | url = RDSConnection.url_db2; |
| | | } else { |
| | | driver = RDSConnection.driver_oracle; |
| | | url = RDSConnection.url_oracle; |
| | | } |
| | | url = url.replace("{ip}", dbInfo.getIp()).replace("{port}", dbInfo.getPort()).replace("{dbname}", dbInfo.getDbName()); |
| | | try { |
| | | //åå»ºè¿æ¥æ± |
| | | DriverManagerDataSource dataSource = new DriverManagerDataSource(); |
| | | dataSource.setDriverClassName(driver); |
| | | dataSource.setUrl(url); |
| | | dataSource.setUsername(dbInfo.getUser()); |
| | | dataSource.setPassword(dbInfo.getPasswd()); |
| | | jdbcTemplate = new JdbcTemplate(dataSource); |
| | | if ("mysql".equals(dbInfo.getDbType())) { |
| | | jdbcTemplate.queryForRowSet(RDSConnection.MYSQL_VERSION); |
| | | } else if ("postgresql".equals(dbInfo.getDbType())) { |
| | | jdbcTemplate.queryForRowSet(RDSConnection.MYSQL_VERSION); |
| | | } else if ("sqlserver".equals(dbInfo.getDbType())) { |
| | | jdbcTemplate.queryForRowSet(RDSConnection.SQLSERVER_VERSION); |
| | | } else if ("db2".equals(dbInfo.getDbType())) { |
| | | jdbcTemplate.queryForRowSet(RDSConnection.DB2_VERSION); |
| | | } else { |
| | | jdbcTemplate.queryForRowSet(RDSConnection.ORACLE_VERSION); |
| | | } |
| | | dbInfo.setDbState("1"); |
| | | dbInfoService.updateById(dbInfo); |
| | | return jdbcTemplate; |
| | | } catch (Exception e) { |
| | | jdbcTemplate = null; |
| | | logger.error("è¿æ¥æ°æ®åºé误", e); |
| | | logInfoService.save("è¿æ¥æ°æ®åºé误ï¼" + dbInfo.getAliasName(), "IPï¼" + dbInfo.getIp() + "ï¼ç«¯å£ï¼" + dbInfo.getPort() + "ï¼æ°æ®åºå«åï¼" |
| | | + dbInfo.getAliasName() + "ï¼é误信æ¯ï¼" + e.toString(), StaticKeys.LOG_ERROR); |
| | | dbInfo.setDbState("2"); |
| | | dbInfoService.updateById(dbInfo); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public long queryTableCount(DbInfo dbInfo, String sql) { |
| | | try { |
| | | JdbcTemplate jdbcTemplate = getJdbcTemplate(dbInfo); |
| | | if (null == jdbcTemplate) { |
| | | return 0; |
| | | } |
| | | return jdbcTemplate.queryForObject(sql, Long.class); |
| | | } catch (Exception e) { |
| | | logger.error("ç»è®¡æ°æ®è¡¨é误ï¼", e); |
| | | logInfoService.save("ç»è®¡æ°æ®è¡¨é误ï¼" + dbInfo.getAliasName(), "IPï¼" + dbInfo.getIp() + "ï¼ç«¯å£ï¼" + dbInfo.getPort() + "ï¼æ°æ®åºå«åï¼" |
| | | + dbInfo.getAliasName() + "ï¼é误信æ¯ï¼" + e.toString(), StaticKeys.LOG_ERROR); |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util.jdbc; |
| | | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:RDSConnection.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: RDSConnection.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | @Component |
| | | public class RDSConnection { |
| | | public static final String driver_oracle = "oracle.jdbc.driver.OracleDriver"; |
| | | public static final String url_oracle = "jdbc:oracle:thin:@{ip}:{port}:{dbname}"; |
| | | |
| | | public static final String driver_postgresql = "org.postgresql.Driver"; |
| | | public static final String url_postgresql = "jdbc:postgresql://{ip}:{port}/{dbname}"; |
| | | |
| | | public static final String driver_mysql = "com.mysql.jdbc.Driver"; |
| | | public static final String url_mysql = "jdbc:mysql://{ip}:{port}/{dbname}?characterEncoding=utf-8&characterSetResults=utf8&autoReconnect=true&useSSL=false"; |
| | | |
| | | public static final String driver_sqlserver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; |
| | | public static final String url_sqlserver = "jdbc:sqlserver://{ip}:{port};DatabaseName={dbname}"; |
| | | |
| | | public static final String driver_db2 = "com.ibm.db2.jdbc.app.DB2Driver"; |
| | | public static final String url_db2 = "jdbc:db2://{ip}:{port}/{dbname}"; |
| | | |
| | | public static final String SQL_INKEYS = "execute,update,delete,insert,create,drop,alter,rename,where,modify";//sql注å
¥å
³é®å |
| | | public static final String MYSQL_VERSION = "select version()";//æ¥çMySQLçæ¬ |
| | | public static final String ORACLE_VERSION = "select * from v$version";//æ¥çOracleçæ¬ |
| | | public static final String SQLSERVER_VERSION = "SELECT @@VERSION";//æ¥çsqlserverçæ¬ |
| | | public static final String DB2_VERSION = "SELECT SERVICE_LEVEL FROM SYSIBMADM.ENV_INST_INFO";//æ¥çdb2çæ¬ |
| | | public static final String PROCESS_LIST = "SHOW FULL PROCESSLIST";//æ¥çå½åå¤äºè¿æ¥æªå
³éç¶æçè¿ç¨åè¡¨ï¼ |
| | | public static final String GLOBAL_VAR = "SHOW GLOBAL VARIABLES";//æ¥çmysql设置 |
| | | public static final String MAX_CONN = "show variables like '%max_connections%'";//æ°æ®åºå½å设置çæå¤§è¿æ¥æ° |
| | | public static final String MAX_USED_CONN = "show global status like 'Max_used_connections'";//æå¡å¨ååºçæå¤§è¿æ¥æ° |
| | | public static final String query_table_count = "SELECT COUNT(*) FROM {tableName} WHERE 1=1 "; |
| | | public static final String query_table_count_pg = "SELECT COUNT(*) FROM \"{tableName}\" WHERE 1=1 "; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util.msg; |
| | | |
| | | import com.wgcloud.common.ApplicationContextHelper; |
| | | import com.wgcloud.config.MailConfig; |
| | | import com.wgcloud.entity.*; |
| | | import com.wgcloud.service.LogInfoService; |
| | | import com.wgcloud.util.staticvar.StaticKeys; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.commons.mail.DefaultAuthenticator; |
| | | import org.apache.commons.mail.HtmlEmail; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:WarnMailUtil.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: WarnMailUtil.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class WarnMailUtil { |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(WarnMailUtil.class); |
| | | |
| | | public static final String content_suffix = "<p><a target='_blank' href='http://www.wgstart.com'>WGCLOUD</a>æ¬ä¸"; |
| | | |
| | | private static LogInfoService logInfoService = (LogInfoService) ApplicationContextHelper.getBean(LogInfoService.class); |
| | | private static MailConfig mailConfig = (MailConfig) ApplicationContextHelper.getBean(MailConfig.class); |
| | | |
| | | |
| | | /** |
| | | * å¤æç³»ç»å
å使ç¨çæ¯å¦è¶
è¿98%ï¼è¶
è¿ååéåè¦é®ä»¶ |
| | | * |
| | | * @param memState |
| | | * @param toMail |
| | | * @return |
| | | */ |
| | | public static boolean sendWarnInfo(MemState memState) { |
| | | if (StaticKeys.mailSet == null) { |
| | | return false; |
| | | } |
| | | MailSet mailSet = StaticKeys.mailSet; |
| | | if (StaticKeys.NO_SEND_WARN.equals(mailConfig.getAllWarnMail()) || StaticKeys.NO_SEND_WARN.equals(mailConfig.getMemWarnMail())) { |
| | | return false; |
| | | } |
| | | String key = memState.getHostname(); |
| | | if (!StringUtils.isEmpty(WarnPools.MEM_WARN_MAP.get(key))) { |
| | | return false; |
| | | } |
| | | if (memState.getUsePer() != null && memState.getUsePer() >= mailConfig.getMemWarnVal()) { |
| | | try { |
| | | String title = "å
ååè¦ï¼" + memState.getHostname(); |
| | | String commContent = "æå¡å¨ï¼" + memState.getHostname() + ",å
å使ç¨ç为" + Double.valueOf(memState.getUsePer()) + "%ï¼å¯è½åå¨å¼å¸¸ï¼è¯·æ¥ç"; |
| | | //åéé®ä»¶ |
| | | sendMail(mailSet.getToMail(), title, commContent); |
| | | //æ è®°å·²åéè¿åè¦ä¿¡æ¯ |
| | | WarnPools.MEM_WARN_MAP.put(key, "1"); |
| | | //è®°å½åéä¿¡æ¯ |
| | | logInfoService.save(title, commContent, StaticKeys.LOG_ERROR); |
| | | } catch (Exception e) { |
| | | logger.error("åéå
ååè¦é®ä»¶å¤±è´¥ï¼", e); |
| | | logInfoService.save("åéå
ååè¦é®ä»¶é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * å¤æç³»ç»cpu使ç¨çæ¯å¦è¶
è¿98%ï¼è¶
è¿ååéåè¦é®ä»¶ |
| | | * |
| | | * @param cpuState |
| | | * @param toMail |
| | | * @return |
| | | */ |
| | | public static boolean sendCpuWarnInfo(CpuState cpuState) { |
| | | if (StaticKeys.mailSet == null) { |
| | | return false; |
| | | } |
| | | MailSet mailSet = StaticKeys.mailSet; |
| | | if (StaticKeys.NO_SEND_WARN.equals(mailConfig.getAllWarnMail()) || StaticKeys.NO_SEND_WARN.equals(mailConfig.getCpuWarnMail())) { |
| | | return false; |
| | | } |
| | | String key = cpuState.getHostname(); |
| | | if (!StringUtils.isEmpty(WarnPools.MEM_WARN_MAP.get(key))) { |
| | | return false; |
| | | } |
| | | if (cpuState.getSys() != null && cpuState.getSys() >= mailConfig.getCpuWarnVal()) { |
| | | try { |
| | | String title = "CPUåè¦ï¼" + cpuState.getHostname(); |
| | | String commContent = "æå¡å¨ï¼" + cpuState.getHostname() + ",CPU使ç¨ç为" + Double.valueOf(cpuState.getSys()) + "%ï¼å¯è½åå¨å¼å¸¸ï¼è¯·æ¥ç"; |
| | | //åéé®ä»¶ |
| | | sendMail(mailSet.getToMail(), title, commContent); |
| | | //æ è®°å·²åéè¿åè¦ä¿¡æ¯ |
| | | WarnPools.MEM_WARN_MAP.put(key, "1"); |
| | | //è®°å½åéä¿¡æ¯ |
| | | logInfoService.save(title, commContent, StaticKeys.LOG_ERROR); |
| | | } catch (Exception e) { |
| | | logger.error("åéå
ååè¦é®ä»¶å¤±è´¥ï¼", e); |
| | | logInfoService.save("åéå
ååè¦é®ä»¶é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æå¡æ¥å£ä¸éåéåè¦é®ä»¶ |
| | | * |
| | | * @param cpuState |
| | | * @param toMail |
| | | * @return |
| | | */ |
| | | public static boolean sendHeathInfo(HeathMonitor heathMonitor, boolean isDown) { |
| | | if (StaticKeys.mailSet == null) { |
| | | return false; |
| | | } |
| | | MailSet mailSet = StaticKeys.mailSet; |
| | | if (StaticKeys.NO_SEND_WARN.equals(mailConfig.getAllWarnMail()) || StaticKeys.NO_SEND_WARN.equals(mailConfig.getHeathWarnMail())) { |
| | | return false; |
| | | } |
| | | String key = heathMonitor.getId(); |
| | | if (isDown) { |
| | | if (!StringUtils.isEmpty(WarnPools.MEM_WARN_MAP.get(key))) { |
| | | return false; |
| | | } |
| | | try { |
| | | String title = "æå¡æ¥å£æ£æµåè¦ï¼" + heathMonitor.getAppName(); |
| | | String commContent = "æå¡æ¥å£ï¼" + heathMonitor.getHeathUrl() + "ï¼ååºç¶æç 为" + heathMonitor.getHeathStatus() + "ï¼å¯è½åå¨å¼å¸¸ï¼è¯·æ¥ç"; |
| | | //åéé®ä»¶ |
| | | sendMail(mailSet.getToMail(), title, commContent); |
| | | //æ è®°å·²åéè¿åè¦ä¿¡æ¯ |
| | | WarnPools.MEM_WARN_MAP.put(key, "1"); |
| | | //è®°å½åéä¿¡æ¯ |
| | | logInfoService.save(title, commContent, StaticKeys.LOG_ERROR); |
| | | } catch (Exception e) { |
| | | logger.error("åéæå¡å¥åº·æ£æµåè¦é®ä»¶å¤±è´¥ï¼", e); |
| | | logInfoService.save("åéæå¡å¥åº·æ£æµåè¦é®ä»¶é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | } else { |
| | | WarnPools.MEM_WARN_MAP.remove(key); |
| | | try { |
| | | String title = "æå¡æ¥å£æ¢å¤æ£å¸¸éç¥ï¼" + heathMonitor.getAppName(); |
| | | String commContent = "æå¡æ¥å£æ¢å¤æ£å¸¸éç¥ï¼" + heathMonitor.getHeathUrl() + "ï¼ååºç¶æç 为" + heathMonitor.getHeathStatus() + ""; |
| | | //åéé®ä»¶ |
| | | sendMail(mailSet.getToMail(), title, commContent); |
| | | //è®°å½åéä¿¡æ¯ |
| | | logInfoService.save(title, commContent, StaticKeys.LOG_ERROR); |
| | | } catch (Exception e) { |
| | | logger.error("åéæå¡æ¥å£æ¢å¤æ£å¸¸éç¥é®ä»¶å¤±è´¥ï¼", e); |
| | | logInfoService.save("åéæå¡æ¥å£æ¢å¤æ£å¸¸éç¥é®ä»¶é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 主æºä¸çº¿åéåè¦é®ä»¶ |
| | | * |
| | | * @param systemInfo 主æºä¿¡æ¯ |
| | | * @param isDown æ¯å¦æ¯ä¸çº¿åè¦ï¼trueä¸çº¿åè¦ï¼falseä¸çº¿æ¢å¤ |
| | | * @return |
| | | */ |
| | | public static boolean sendHostDown(SystemInfo systemInfo, boolean isDown) { |
| | | if (StaticKeys.mailSet == null) { |
| | | return false; |
| | | } |
| | | MailSet mailSet = StaticKeys.mailSet; |
| | | if (StaticKeys.NO_SEND_WARN.equals(mailConfig.getAllWarnMail()) || StaticKeys.NO_SEND_WARN.equals(mailConfig.getHostDownWarnMail())) { |
| | | return false; |
| | | } |
| | | String key = systemInfo.getId(); |
| | | if (isDown) { |
| | | if (!StringUtils.isEmpty(WarnPools.MEM_WARN_MAP.get(key))) { |
| | | return false; |
| | | } |
| | | try { |
| | | String title = "主æºä¸çº¿åè¦ï¼" + systemInfo.getHostname(); |
| | | String commContent = "主æºå·²ç»è¶
è¿10åéæªä¸æ¥æ°æ®ï¼å¯è½å·²ç»ä¸çº¿ï¼" + systemInfo.getHostname() + "ï¼å¤æ³¨ï¼" + systemInfo.getRemark() |
| | | + "ã妿ä¸åçæ§è¯¥ä¸»æºå¨å表å é¤å³å¯ï¼åæ¶ä¸ä¼åæ¶å°è¯¥ä¸»æºåè¦é®ä»¶"; |
| | | //åéé®ä»¶ |
| | | sendMail(mailSet.getToMail(), title, commContent); |
| | | //æ è®°å·²åéè¿åè¦ä¿¡æ¯ |
| | | WarnPools.MEM_WARN_MAP.put(key, "1"); |
| | | //è®°å½åéä¿¡æ¯ |
| | | logInfoService.save(title, commContent, StaticKeys.LOG_ERROR); |
| | | } catch (Exception e) { |
| | | logger.error("åé主æºä¸çº¿åè¦é®ä»¶å¤±è´¥ï¼", e); |
| | | logInfoService.save("åé主æºä¸çº¿åè¦é®ä»¶é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | } else { |
| | | WarnPools.MEM_WARN_MAP.remove(key); |
| | | try { |
| | | String title = "ä¸»æºæ¢å¤ä¸çº¿éç¥ï¼" + systemInfo.getHostname(); |
| | | String commContent = "主æºå·²ç»æ¢å¤ä¸çº¿ï¼" + systemInfo.getHostname() + "ï¼å¤æ³¨ï¼" + systemInfo.getRemark() |
| | | + "ã"; |
| | | //åéé®ä»¶ |
| | | sendMail(mailSet.getToMail(), title, commContent); |
| | | //è®°å½åéä¿¡æ¯ |
| | | logInfoService.save(title, commContent, StaticKeys.LOG_ERROR); |
| | | } catch (Exception e) { |
| | | logger.error("åéä¸»æºæ¢å¤ä¸çº¿éç¥é®ä»¶å¤±è´¥ï¼", e); |
| | | logInfoService.save("åéä¸»æºæ¢å¤ä¸çº¿éç¥é®ä»¶é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * è¿ç¨ä¸çº¿åéåè¦é®ä»¶ |
| | | * |
| | | * @param AppInfo è¿ç¨ä¿¡æ¯ |
| | | * @param isDown æ¯å¦æ¯ä¸çº¿åè¦ï¼trueä¸çº¿åè¦ï¼falseä¸çº¿æ¢å¤ |
| | | * @return |
| | | */ |
| | | public static boolean sendAppDown(AppInfo appInfo, boolean isDown) { |
| | | if (StaticKeys.mailSet == null) { |
| | | return false; |
| | | } |
| | | MailSet mailSet = StaticKeys.mailSet; |
| | | if (StaticKeys.NO_SEND_WARN.equals(mailConfig.getAllWarnMail()) || StaticKeys.NO_SEND_WARN.equals(mailConfig.getAppDownWarnMail())) { |
| | | return false; |
| | | } |
| | | String key = appInfo.getId(); |
| | | if (isDown) { |
| | | if (!StringUtils.isEmpty(WarnPools.MEM_WARN_MAP.get(key))) { |
| | | return false; |
| | | } |
| | | try { |
| | | String title = "è¿ç¨ä¸çº¿åè¦ï¼" + appInfo.getHostname() + "ï¼" + appInfo.getAppName(); |
| | | String commContent = "è¿ç¨å·²ç»è¶
è¿10åéæªä¸æ¥æ°æ®ï¼å¯è½å·²ç»ä¸çº¿ï¼" + appInfo.getHostname() + "ï¼" + appInfo.getAppName() |
| | | + "ã妿ä¸åçæ§è¯¥è¿ç¨å¨å表å é¤å³å¯ï¼åæ¶ä¸ä¼åæ¶å°è¯¥è¿ç¨åè¦é®ä»¶"; |
| | | //åéé®ä»¶ |
| | | sendMail(mailSet.getToMail(), title, commContent); |
| | | //æ è®°å·²åéè¿åè¦ä¿¡æ¯ |
| | | WarnPools.MEM_WARN_MAP.put(key, "1"); |
| | | //è®°å½åéä¿¡æ¯ |
| | | logInfoService.save(title, commContent, StaticKeys.LOG_ERROR); |
| | | } catch (Exception e) { |
| | | logger.error("åéè¿ç¨ä¸çº¿åè¦é®ä»¶å¤±è´¥ï¼", e); |
| | | logInfoService.save("åéè¿ç¨ä¸çº¿åè¦é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | } else { |
| | | WarnPools.MEM_WARN_MAP.remove(key); |
| | | try { |
| | | String title = "è¿ç¨æ¢å¤ä¸çº¿éç¥ï¼" + appInfo.getHostname() + "ï¼" + appInfo.getAppName(); |
| | | String commContent = "è¿ç¨æ¢å¤ä¸çº¿éç¥ï¼" + appInfo.getHostname() + "ï¼" + appInfo.getAppName(); |
| | | //åéé®ä»¶ |
| | | sendMail(mailSet.getToMail(), title, commContent); |
| | | //è®°å½åéä¿¡æ¯ |
| | | logInfoService.save(title, commContent, StaticKeys.LOG_ERROR); |
| | | } catch (Exception e) { |
| | | logger.error("åéè¿ç¨æ¢å¤ä¸çº¿éç¥é®ä»¶å¤±è´¥ï¼", e); |
| | | logInfoService.save("åéè¿ç¨æ¢å¤ä¸çº¿éç¥é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public static String sendMail(String mails, String mailTitle, String mailContent) { |
| | | try { |
| | | HtmlEmail email = new HtmlEmail(); |
| | | email.setHostName(StaticKeys.mailSet.getSmtpHost()); |
| | | email.setSmtpPort(Integer.valueOf(StaticKeys.mailSet.getSmtpPort())); |
| | | if ("1".equals(StaticKeys.mailSet.getSmtpSSL())) { |
| | | email.setSSL(true); |
| | | } |
| | | email.setAuthenticator(new DefaultAuthenticator(StaticKeys.mailSet.getFromMailName(), StaticKeys.mailSet.getFromPwd())); |
| | | email.setFrom(StaticKeys.mailSet.getFromMailName());//åä¿¡è
|
| | | email.setSubject("[WGCLOUD] " + mailTitle);//æ é¢ |
| | | email.setCharset("UTF-8");//ç¼ç æ ¼å¼ |
| | | email.setHtmlMsg(mailContent + content_suffix);//å
容 |
| | | email.addTo(mails.split(";")); |
| | | email.setSentDate(new Date()); |
| | | email.send();//åé |
| | | return "success"; |
| | | } catch (Exception e) { |
| | | logger.error("åéé®ä»¶é误ï¼", e); |
| | | logInfoService.save("åéé®ä»¶é误", e.toString(), StaticKeys.LOG_ERROR); |
| | | return "error"; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util.msg; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:WarnPools.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: WarnPools.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class WarnPools { |
| | | |
| | | |
| | | /** |
| | | * åè´®æ¯å¤©åéçå
ååè¦ä¿¡æ¯map<ç¨æ·ID+æå¡å¨IPï¼1> |
| | | */ |
| | | public static Map<String, String> MEM_WARN_MAP = new HashMap<String, String>(); |
| | | |
| | | public static void clearOldData() { |
| | | MEM_WARN_MAP.clear(); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util.shorturl; |
| | | |
| | | import java.security.MessageDigest; |
| | | import java.security.NoSuchAlgorithmException; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:MD5.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: MD5.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class MD5 { |
| | | |
| | | // å
¨å±æ°ç» |
| | | private final static String[] strDigits = {"0", "1", "2", "3", "4", "5", |
| | | "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; |
| | | |
| | | public MD5() { |
| | | } |
| | | |
| | | // è¿åå½¢å¼ä¸ºæ°åè·å符串 |
| | | private static String byteToArrayString(byte bByte) { |
| | | int iRet = bByte; |
| | | // System.out.println("iRet="+iRet); |
| | | if (iRet < 0) { |
| | | iRet += 256; |
| | | } |
| | | int iD1 = iRet / 16; |
| | | int iD2 = iRet % 16; |
| | | return strDigits[iD1] + strDigits[iD2]; |
| | | } |
| | | |
| | | // è¿åå½¢å¼åªä¸ºæ°å |
| | | private static String byteToNum(byte bByte) { |
| | | int iRet = bByte; |
| | | System.out.println("iRet1=" + iRet); |
| | | if (iRet < 0) { |
| | | iRet += 256; |
| | | } |
| | | return String.valueOf(iRet); |
| | | } |
| | | |
| | | // 转æ¢åèæ°ç»ä¸º16è¿å¶å串 |
| | | private static String byteToString(byte[] bByte) { |
| | | StringBuffer sBuffer = new StringBuffer(); |
| | | for (int i = 0; i < bByte.length; i++) { |
| | | sBuffer.append(byteToArrayString(bByte[i])); |
| | | } |
| | | return sBuffer.toString(); |
| | | } |
| | | |
| | | public static String GetMD5Code(String strObj) { |
| | | String resultString = null; |
| | | try { |
| | | resultString = new String(strObj); |
| | | MessageDigest md = MessageDigest.getInstance("MD5"); |
| | | // md.digest() è¯¥å½æ°è¿åå¼ä¸ºåæ¾åå¸å¼ç»æçbyteæ°ç» |
| | | resultString = byteToString(md.digest(strObj.getBytes())); |
| | | } catch (NoSuchAlgorithmException ex) { |
| | | ex.printStackTrace(); |
| | | } |
| | | return resultString; |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util.staticvar; |
| | | |
| | | import com.wgcloud.entity.*; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:BatchData.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: 临æ¶åè´®çæ§æ°æ®çéæå·¥å
·ç±» |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class BatchData { |
| | | |
| | | //ç³»ç»ä¿¡æ¯ |
| | | public static List<SystemInfo> SYSTEM_INFO_LIST = Collections.synchronizedList(new ArrayList<SystemInfo>()); |
| | | |
| | | |
| | | //è¿ç¨ä¿¡æ¯ |
| | | public static List<AppInfo> APP_INFO_LIST = Collections.synchronizedList(new ArrayList<AppInfo>()); |
| | | |
| | | |
| | | //è¿ç¨ç¶æ |
| | | public static List<AppState> APP_STATE_LIST = Collections.synchronizedList(new ArrayList<AppState>()); |
| | | |
| | | //cpuçæ§ |
| | | public static List<CpuState> CPU_STATE_LIST = Collections.synchronizedList(new ArrayList<CpuState>()); |
| | | |
| | | //å
åçæ§ |
| | | public static List<MemState> MEM_STATE_LIST = Collections.synchronizedList(new ArrayList<MemState>()); |
| | | |
| | | //ç½ç»ååçæ§ï¼ææ²¡ç¨ |
| | | public static List<NetIoState> NETIO_STATE_LIST = Collections.synchronizedList(new ArrayList<NetIoState>()); |
| | | |
| | | //ç£çå¤§å° |
| | | public static List<DeskState> DESK_STATE_LIST = Collections.synchronizedList(new ArrayList<DeskState>()); |
| | | |
| | | |
| | | //ç³»ç»è´è½½çæ§ |
| | | public static List<SysLoadState> SYSLOAD_STATE_LIST = Collections.synchronizedList(new ArrayList<SysLoadState>()); |
| | | |
| | | //tcpçæ§ï¼ææ²¡ç¨ |
| | | public static List<TcpState> TCP_STATE_LIST = Collections.synchronizedList(new ArrayList<TcpState>()); |
| | | |
| | | //æ¥å¿ä¿¡æ¯ |
| | | public static List<LogInfo> LOG_INFO_LIST = Collections.synchronizedList(new ArrayList<LogInfo>()); |
| | | |
| | | |
| | | // å
¥ä¾µæ£æµä¿¡æ¯ |
| | | public static List<IntrusionInfo> INTRUSION_INFO_LIST = Collections.synchronizedList(new ArrayList<IntrusionInfo>()); |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.wgcloud.util.staticvar; |
| | | |
| | | |
| | | import com.wgcloud.entity.MailSet; |
| | | |
| | | /** |
| | | * @version v2.3 |
| | | * @ClassName:StaticKeys.java |
| | | * @author: http://www.wgstart.com |
| | | * @date: 2019å¹´11æ16æ¥ |
| | | * @Description: StaticKeys.java |
| | | * @Copyright: 2017-2022 wgcloud. All rights reserved. |
| | | */ |
| | | public class StaticKeys { |
| | | |
| | | public static final String ADMIN_ACCOUNT = "admin";//管çåå¸å· |
| | | |
| | | public static final String SEARCH_START_TIME = "startTime";//æ¥ææ¥è¯¢å¼å§æ¶é´æ¡ä»¶ |
| | | |
| | | public static final String SEARCH_END_TIME = "endTime";//æ¥ææ¥è¯¢ç»ææ¶é´æ¡ä»¶ |
| | | |
| | | public static final String SEARCH_EXP_TIME = "expDate";//æ¥ææ¥è¯¢è¿ææ¶é´ |
| | | |
| | | public static String MENU_ACTIVE = "active ";//èåé«äº®æ¾ç¤º |
| | | |
| | | public static String APP_PRO_FILE = "application.properties";//é
ç½®ä¿¡æ¯æä»¶ |
| | | |
| | | //sessionä¸åè´®çéªè¯ç key |
| | | public static final String SESSION_CODE = "valcode"; |
| | | |
| | | //sessionåè´®ç»å½ä¿¡æ¯çæ è¯ |
| | | public static String LOGIN_KEY = "LOGIN_KEY"; |
| | | |
| | | public static String DASH_VIEW_ACCOUNT = "dashView"; |
| | | |
| | | |
| | | //æ¥å¿å¤±è´¥æ è®° |
| | | public static final String LOG_ERROR = "1"; |
| | | |
| | | //ä¸å鿥è¦çä¿¡é®ä»¶æ è¯ |
| | | public static final String NO_SEND_WARN = "false"; |
| | | |
| | | public static String SPLIT_BR = "</br>";//æ¢è¡æ è¯ |
| | | |
| | | public static String SPLIT_KG = " ";//ç©ºæ ¼ |
| | | |
| | | public static String SPLIT_DH = ",";//éå· |
| | | |
| | | public static String SPLIT_SXG = "//";//ååææ |
| | | |
| | | public static String DOWN_STATE = "2"; |
| | | |
| | | public static MailSet mailSet = null; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | server: |
| | | port: 9999 |
| | | servlet: |
| | | session: |
| | | timeout: 120m |
| | | context-path: /wgcloud |
| | | #æ¥å¿æä»¶è¾åºè·¯å¾ |
| | | logging: |
| | | file: |
| | | path: ./log |
| | | # æ°æ®åº ç¸å
³è®¾ç½® |
| | | spring: |
| | | application: |
| | | name: wgcloud-server |
| | | datasource: |
| | | driver-class-name: com.mysql.jdbc.Driver |
| | | url: jdbc:mysql://localhost:3306/wgcloud?characterEncoding=utf-8&characterSetResults=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true |
| | | username: root |
| | | password: 123456 |
| | | # hikariè¿æ¥æ± çåæ° ç¸å
³è®¾ç½® |
| | | hikari: |
| | | # çæè¶
æ¶ |
| | | validationTimeout: 3000 |
| | | # å®ä¹è·åè¿æ¥çè¶
æ¶æ¶é´ãæå°250ms,é»è®¤30s |
| | | connectionTimeout: 60000 |
| | | # å®ä¹è¿æ¥ç©ºé²æ¶é´ãæå°10s,é»è®¤10m |
| | | idleTimeout: 60000 |
| | | # å®ä¹æå°ç空é²è¿æ¥æ°ãæ¨èä¸è®¾ç½®ãæä¸æå¤§è¿æ¥æ°ä¸è´ï¼ä¿æåºå®çè¿æ¥æ°ç® |
| | | minimumIdle: 10 |
| | | # å®ä¹æå¤§çè¿æ¥æ°ãé»è®¤10 |
| | | maximumPoolSize: 10 |
| | | # å®ä¹è¿æ¥çæå¤§çå½å¨æãæ¨èè®¾ç½®è¯¥å±æ§ãæå°30sï¼é»è®¤30m |
| | | maxLifeTime: 60000 |
| | | # ä»è¿æ¥æ± è·åå°è¿æ¥åï¼è¿è¡æ£æ¥çæ¥è¯¢è¯å¥ãæ¨èè®¾ç½®è¯¥å±æ§ãé»è®¤å¼ä¸ºnone |
| | | connectionTestQuery: select 1 |
| | | mvc: |
| | | static-path-pattern: /static/** |
| | | thymeleaf: |
| | | cache: false |
| | | #Mybatisé
ç½® |
| | | mybatis: |
| | | config-location: classpath:mybatis/mybatis-config.xml |
| | | mapper-locations: classpath:mybatis/mapper/*.xml |
| | | |
| | | |
| | | #èªå®ä¹é
ç½®åæ° |
| | | base: |
| | | #ç»éè´¦å·adminçå¯ç |
| | | admindPwd: 111111 |
| | | #éä¿¡tokenï¼agentç«¯åæ¤ä¿æä¸è´ |
| | | wgToken: wgcloud |
| | | #æ¯å¦å¼å¯å
¬ä¼çæ¿ï¼yeså¼å¯ï¼noå
³éï¼å
¬ä¼çæ¿é¡µé¢æ éç»é |
| | | dashView: yes |
| | | #æ°æ®è¡¨çæ§é´é,å使¯«ç§ï¼é»è®¤60åé |
| | | dbTableTimes: 3600000 |
| | | #æå¡æ¥å£çæ§é´éï¼å使¯«ç§ï¼é»è®¤10åé |
| | | heathTimes: 600000 |
| | | |
| | | #åè¦é
ç½® |
| | | mail: |
| | | #åè¦é®ä»¶æ»å¼å
³ï¼yeså¼å¯ï¼noå
³é |
| | | allWarnMail: yes |
| | | #çæ§ä¸»æºå
å使ç¨ç%æ¥è¦å¼ï¼è¶
è¿æ¤å¼å³åéé®ä»¶æ¥è¦ |
| | | memWarnVal: 98 |
| | | #çæ§ä¸»æºcpu使ç¨ç%æ¥è¦å¼ï¼è¶
è¿æ¤å¼å³åéé®ä»¶æ¥è¦ |
| | | cpuWarnVal: 98 |
| | | #å
ååè¦é®ä»¶å¼å
³ï¼yeså¼å¯ï¼noå
³éãæ»å¼å
³å¼å¯åï¼æ¤å¤è®¾ç½®æä¼çæã以ä¸å¼å
³åéµå¾ªæ¤è§åã |
| | | memWarnMail: yes |
| | | #CPUåè¦é®ä»¶å¼å
³ï¼yeså¼å¯ï¼noå
³é |
| | | cpuWarnMail: yes |
| | | #主æºä¸çº¿åè¦é®ä»¶å¼å
³ï¼yeså¼å¯ï¼noå
³é |
| | | hostDownWarnMail: yes |
| | | #è¿ç¨ä¸çº¿åè¦é®ä»¶å¼å
³ï¼yeså¼å¯ï¼noå
³é |
| | | appDownWarnMail: yes |
| | | #æå¡æ¥å£åè¦é®ä»¶å¼å
³ï¼yeså¼å¯ï¼noå
³é |
| | | heathWarnMail: yes |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!--该æ¥å¿å°æ¥å¿çº§å«ä¸åçlogä¿¡æ¯ä¿åå°ä¸åçæä»¶ä¸ --> |
| | | <configuration> |
| | | <include resource="org/springframework/boot/logging/logback/defaults.xml" /> |
| | | |
| | | <springProperty scope="context" name="springAppName" source="spring.application.name" /> |
| | | |
| | | <!-- æ¥å¿å¨å·¥ç¨ä¸çè¾åºä½ç½® --> |
| | | <property name="LOG_FILE" value="${LOG_PATH:-.}" /> |
| | | |
| | | <!-- å½©è²æ¥å¿ --> |
| | | <!-- å½©è²æ¥å¿ä¾èµç渲æç±» --> |
| | | <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> |
| | | <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> |
| | | <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> |
| | | <!-- å½©è²æ¥å¿æ ¼å¼ --> |
| | | <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> |
| | | |
| | | <!-- æ§å¶å°è¾åº --> |
| | | <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> |
| | | <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
| | | <level>INFO</level> |
| | | </filter> |
| | | <!-- æ¥å¿è¾åºç¼ç --> |
| | | <encoder> |
| | | <pattern>${CONSOLE_LOG_PATTERN}</pattern> |
| | | <charset>utf8</charset> |
| | | </encoder> |
| | | </appender> |
| | | |
| | | <!-- æç
§æ¯å¤©çææ¥å¿æä»¶ --> |
| | | <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <!--æ¥å¿æä»¶è¾åºçæä»¶å--> |
| | | <FileNamePattern>${LOG_FILE}/wgcloud.%d{yyyy-MM-dd}.log</FileNamePattern> |
| | | <MaxHistory>30</MaxHistory> |
| | | </rollingPolicy> |
| | | <layout class="ch.qos.logback.classic.PatternLayout"> |
| | | <!--æ ¼å¼åè¾åºï¼%dè¡¨ç¤ºæ¥æï¼%thread表示线ç¨åï¼%-5levelï¼çº§å«ä»å·¦æ¾ç¤º5个å符宽度%msgï¼æ¥å¿æ¶æ¯ï¼%næ¯æ¢è¡ç¬¦--> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n |
| | | </pattern> |
| | | </layout> |
| | | <!--æ¥å¿æä»¶æå¤§ç大å°--> |
| | | <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> |
| | | <MaxFileSize>100MB</MaxFileSize> |
| | | </triggeringPolicy> |
| | | </appender> |
| | | |
| | | |
| | | <!-- æ¥å¿è¾åºçº§å« --> |
| | | <root level="INFO"> |
| | | <appender-ref ref="console" /> |
| | | <appender-ref ref="FILE" /> |
| | | </root> |
| | | </configuration> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.wgcloud.mapper.AppInfoMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.AppInfo"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="HOST_NAME" property="hostname" jdbcType="CHAR" /> |
| | | <result column="APP_PID" property="appPid" jdbcType="CHAR" /> |
| | | <result column="APP_TYPE" property="appType" jdbcType="CHAR" /> |
| | | <result column="APP_NAME" property="appName" jdbcType="CHAR" /> |
| | | <result column="CPU_PER" property="cpuPer" jdbcType="DOUBLE" /> |
| | | <result column="MEM_PER" property="memPer" jdbcType="DOUBLE" /> |
| | | <result column="STATE" property="state" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,HOST_NAME, APP_PID,APP_NAME,CREATE_TIME,CPU_PER,MEM_PER,APP_TYPE,STATE |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="hostname != null"> |
| | | <![CDATA[ AND HOST_NAME LIKE CONCAT('%',#{hostname},'%')]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | <if test="cpuPer != null"> |
| | | <![CDATA[ AND CPU_PER >= #{cpuPer} ]]> |
| | | </if> |
| | | <if test="cpuPerLe != null"> |
| | | <![CDATA[ AND CPU_PER <= #{cpuPerLe} ]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | <select id="selectByAccountId" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM APP_INFO |
| | | </select> |
| | | |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM APP_INFO |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM APP_INFO |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteByDate" parameterType="map"> |
| | | DELETE FROM APP_INFO WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteByHostName" parameterType="map"> |
| | | DELETE FROM APP_INFO WHERE <![CDATA[ APP_PID=#{appPid} AND HOST_NAME =#{hostname}]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | APP_INFO |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.AppInfo"> |
| | | INSERT INTO APP_INFO |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="hostname != null" >HOST_NAME,</if> |
| | | <if test="appPid != null">APP_PID,</if> |
| | | <if test="appName != null">APP_NAME,</if> |
| | | <if test="cpuPer != null">CPU_PER,</if> |
| | | <if test="memPer != null">MEM_PER,</if> |
| | | <if test="appType != null">APP_TYPE,</if> |
| | | <if test="state != null">STATE,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="hostname != null" >#{hostname},</if> |
| | | <if test="appPid != null" >#{appPid},</if> |
| | | <if test="appName != null" >#{appName},</if> |
| | | <if test="cpuPer != null" >#{cpuPer},</if> |
| | | <if test="memPer != null" >#{memPer},</if> |
| | | <if test="appType != null" >#{appType},</if> |
| | | <if test="state != null" >#{state},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO APP_INFO (ID,HOST_NAME, APP_PID,APP_NAME,CREATE_TIME,CPU_PER,MEM_PER,APP_TYPE,STATE) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.hostname},#{item.appPid},#{item.appName},#{item.createTime},#{item.cpuPer},#{item.memPer},#{item.appType},#{item.state}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | <update id="updateList" parameterType="java.util.List" > |
| | | <foreach collection="list" item="item" index="index" separator=";" > |
| | | UPDATE APP_INFO |
| | | <set> |
| | | <if test="item.hostname != null"> |
| | | HOST_NAME = #{item.hostname}, |
| | | </if> |
| | | <if test="item.appPid != null"> |
| | | APP_PID = #{item.appPid}, |
| | | </if> |
| | | <if test="item.appName != null"> |
| | | APP_NAME = #{item.appName}, |
| | | </if> |
| | | <if test="item.cpuPer != null"> |
| | | CPU_PER = #{item.cpuPer}, |
| | | </if> |
| | | <if test="item.memPer != null"> |
| | | MEM_PER = #{item.memPer}, |
| | | </if> |
| | | <if test="item.appType != null"> |
| | | APP_TYPE = #{item.appType}, |
| | | </if> |
| | | <if test="item.state != null"> |
| | | STATE = #{item.state}, |
| | | </if> |
| | | <if test="item.createTime != null" > |
| | | CREATE_TIME= #{item.createTime} |
| | | </if> |
| | | </set> |
| | | WHERE ID = #{item.id} |
| | | </foreach> |
| | | </update> |
| | | |
| | | |
| | | <update id="updateById" parameterType="com.wgcloud.entity.AppInfo"> |
| | | UPDATE APP_INFO |
| | | <set> |
| | | <if test="hostname != null"> |
| | | HOST_NAME = #{hostname}, |
| | | </if> |
| | | <if test="appPid != null"> |
| | | APP_PID = #{appPid}, |
| | | </if> |
| | | <if test="appName != null"> |
| | | APP_NAME = #{appName}, |
| | | </if> |
| | | <if test="cpuPer != null"> |
| | | CPU_PER = #{cpuPer}, |
| | | </if> |
| | | <if test="memPer != null"> |
| | | MEM_PER = #{memPer}, |
| | | </if> |
| | | <if test="appType != null"> |
| | | APP_TYPE = #{appType}, |
| | | </if> |
| | | <if test="state != null"> |
| | | STATE = #{state}, |
| | | </if> |
| | | <if test="createTime != null"> |
| | | CREATE_TIME = #{createTime} |
| | | </if> |
| | | </set> |
| | | WHERE ID = #{id} |
| | | </update> |
| | | |
| | | <select id="countByParams" parameterType="map" resultType="java.lang.Integer"> |
| | | SELECT count(*) FROM APP_INFO t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | </select> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM APP_INFO t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM APP_INFO |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.wgcloud.mapper.AppStateMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.AppState"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="APP_INFO_ID" property="appInfoId" jdbcType="CHAR" /> |
| | | <result column="CPU_PER" property="cpuPer" jdbcType="DOUBLE" /> |
| | | <result column="MEM_PER" property="memPer" jdbcType="DOUBLE" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,APP_INFO_ID, CPU_PER,MEM_PER,CREATE_TIME |
| | | </sql> |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM APP_STATE |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByAppInfoId" parameterType="java.lang.String"> |
| | | DELETE FROM APP_STATE WHERE APP_INFO_ID = #{appInfoId} |
| | | </delete> |
| | | |
| | | <delete id="deleteByDate" parameterType="map"> |
| | | DELETE FROM APP_STATE WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM APP_STATE |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | APP_STATE |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.AppState"> |
| | | INSERT INTO APP_STATE |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="appInfoId != null" >APP_INFO_ID,</if> |
| | | <if test="cpuPer != null" >CPU_PER,</if> |
| | | <if test="memPer != null" >MEM_PER,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="appInfoId != null" >#{appInfoId},</if> |
| | | <if test="cpuPer != null" >#{cpuPer},</if> |
| | | <if test="memPer != null" >#{memPer},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO APP_STATE (ID, APP_INFO_ID, CPU_PER,MEM_PER,CREATE_TIME) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.appInfoId},#{item.cpuPer},#{item.memPer},#{item.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM APP_STATE t |
| | | <where> |
| | | <if test="appInfoId != null"> |
| | | <![CDATA[ AND APP_INFO_ID = #{appInfoId} ]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | </where> |
| | | ORDER BY CREATE_TIME ASC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM APP_STATE |
| | | <where> |
| | | <if test="appInfoId != null"> |
| | | <![CDATA[ AND APP_INFO_ID = #{appInfoId} ]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.wgcloud.mapper.CpuStateMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.CpuState"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="HOST_NAME" property="hostname" jdbcType="CHAR" /> |
| | | <result column="USER" property="user" jdbcType="CHAR" /> |
| | | <result column="SYS" property="sys" jdbcType="DOUBLE" /> |
| | | <result column="IDLE" property="idle" jdbcType="DOUBLE" /> |
| | | <result column="IOWAIT" property="iowait" jdbcType="DOUBLE" /> |
| | | <result column="IRQ" property="irq" jdbcType="CHAR" /> |
| | | <result column="SOFT" property="soft" jdbcType="CHAR" /> |
| | | <result column="DATE_STR" property="dateStr" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,HOST_NAME, USER, SYS, IDLE,IOWAIT,IRQ,SOFT,DATE_STR,CREATE_TIME |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="hostname != null"> |
| | | <![CDATA[ AND HOST_NAME = #{hostname} ]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM CPU_STATE |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByAccountAndDate" parameterType="map"> |
| | | DELETE FROM CPU_STATE WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM CPU_STATE |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | CPU_STATE |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.CpuState"> |
| | | INSERT INTO CPU_STATE |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="hostname != null" > HOST_NAME,</if> |
| | | <if test="user != null">USER,</if> |
| | | <if test="sys != null">SYS,</if> |
| | | <if test="idle != null">IDLE,</if> |
| | | <if test="iowait != null">IOWAIT,</if> |
| | | <if test="irq != null" >IRQ,</if> |
| | | <if test="soft != null" >SOFT,</if> |
| | | <if test="dateStr != null" >DATE_STR,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="hostname != null" >#{hostname},</if> |
| | | <if test="user != null" >#{user},</if> |
| | | <if test="sys != null" >#{sys},</if> |
| | | <if test="idle != null" >#{idle},</if> |
| | | <if test="iowait != null" >#{iowait},</if> |
| | | <if test="irq != null" >#{irq},</if> |
| | | <if test="soft != null" >#{soft},</if> |
| | | <if test="dateStr != null" >#{dateStr},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO CPU_STATE (ID,HOST_NAME,USER,SYS,IDLE,IOWAIT,IRQ,SOFT,DATE_STR,CREATE_TIME) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.hostname},#{item.user},#{item.sys},#{item.idle},#{item.iowait},#{item.irq},#{item.soft},#{item.dateStr},#{item.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM CPU_STATE t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME ASC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM CPU_STATE |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.wgcloud.mapper.DbInfoMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.DbInfo"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="DBTYPE" property="dbType" jdbcType="CHAR" /> |
| | | <result column="USER" property="user" jdbcType="CHAR" /> |
| | | <result column="PASSWD" property="passwd" jdbcType="CHAR" /> |
| | | <result column="IP" property="ip" jdbcType="CHAR" /> |
| | | <result column="DBNAME" property="dbName" jdbcType="CHAR" /> |
| | | <result column="PORT" property="port" jdbcType="CHAR" /> |
| | | <result column="DB_STATE" property="dbState" jdbcType="CHAR" /> |
| | | <result column="ALIAS_NAME" property="aliasName" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,DBTYPE, USER,PASSWD,CREATE_TIME,IP,PORT,DBNAME,DB_STATE,ALIAS_NAME |
| | | </sql> |
| | | |
| | | |
| | | <select id="selectByAccountId" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DB_INFO |
| | | </select> |
| | | |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DB_INFO |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM DB_INFO |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteByDate" parameterType="map"> |
| | | DELETE FROM DB_INFO WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | DB_INFO |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.DbInfo"> |
| | | INSERT INTO DB_INFO |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="dbType != null" >DBTYPE,</if> |
| | | <if test="user != null">USER,</if> |
| | | <if test="passwd != null">PASSWD,</if> |
| | | <if test="ip != null">IP,</if> |
| | | <if test="port != null">PORT,</if> |
| | | <if test="dbName != null">DBNAME,</if> |
| | | <if test="dbState != null">DB_STATE,</if> |
| | | <if test="aliasName != null">ALIAS_NAME,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="dbType != null" >#{dbType},</if> |
| | | <if test="user != null" >#{user},</if> |
| | | <if test="passwd != null" >#{passwd},</if> |
| | | <if test="ip != null" >#{ip},</if> |
| | | <if test="port != null" >#{port},</if> |
| | | <if test="dbName != null" >#{dbName},</if> |
| | | <if test="dbState != null" >#{dbState},</if> |
| | | <if test="aliasName != null" >#{aliasName},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | |
| | | <update id="updateById" parameterType="com.wgcloud.entity.DbInfo"> |
| | | UPDATE DB_INFO |
| | | <set> |
| | | <if test="dbType != null"> |
| | | DBTYPE = #{dbType}, |
| | | </if> |
| | | <if test="user != null"> |
| | | USER = #{user}, |
| | | </if> |
| | | <if test="passwd != null"> |
| | | PASSWD = #{passwd}, |
| | | </if> |
| | | <if test="ip != null"> |
| | | IP = #{ip}, |
| | | </if> |
| | | <if test="port != null"> |
| | | PORT = #{port}, |
| | | </if> |
| | | <if test="dbName != null"> |
| | | DBNAME = #{dbName}, |
| | | </if> |
| | | <if test="dbState != null"> |
| | | DB_STATE = #{dbState}, |
| | | </if> |
| | | <if test="aliasName != null"> |
| | | ALIAS_NAME = #{aliasName}, |
| | | </if> |
| | | <if test="createTime != null"> |
| | | CREATE_TIME = #{createTime} |
| | | </if> |
| | | </set> |
| | | WHERE ID = #{id} |
| | | </update> |
| | | |
| | | <select id="countByParams" parameterType="map" resultType="java.lang.Integer"> |
| | | SELECT count(*) FROM DB_INFO t |
| | | <where> |
| | | <if test="cpuPer != null"> |
| | | <![CDATA[ AND CPU_PER >= #{cpuPer} ]]> |
| | | </if> |
| | | </where> |
| | | </select> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DB_INFO t |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DB_INFO |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.wgcloud.mapper.DbTableCountMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.DbTableCount"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="DB_TABLE_ID" property="dbTableId" jdbcType="CHAR" /> |
| | | <result column="TABLE_COUNT" property="tableCount" jdbcType="BIGINT" /> |
| | | <result column="DATE_STR" property="dateStr" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,DB_TABLE_ID, TABLE_COUNT,DATE_STR,CREATE_TIME |
| | | </sql> |
| | | |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="dbTableId != null"> |
| | | <![CDATA[ AND DB_TABLE_ID = #{dbTableId} ]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DB_TABLE_COUNT |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM DB_TABLE_COUNT |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteByDate" parameterType="map"> |
| | | DELETE FROM DB_TABLE_COUNT WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | DB_TABLE_COUNT |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO DB_TABLE_COUNT (ID,DB_TABLE_ID,TABLE_COUNT,DATE_STR,CREATE_TIME) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.dbTableId},#{item.tableCount},#{item.dateStr},#{item.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.DbTableCount"> |
| | | INSERT INTO DB_TABLE_COUNT |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="dbTableId != null" >DB_TABLE_ID,</if> |
| | | <if test="tableCount != null">TABLE_COUNT,</if> |
| | | <if test="dateStr != null">DATE_STR,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="dbTableId != null" >#{dbTableId},</if> |
| | | <if test="tableCount != null" >#{tableCount},</if> |
| | | <if test="dateStr != null" >#{dateStr},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | |
| | | <update id="updateById" parameterType="com.wgcloud.entity.DbTableCount"> |
| | | UPDATE DB_TABLE_COUNT |
| | | <set> |
| | | <if test="dbTableId != null"> |
| | | DB_TABLE_ID = #{dbTableId}, |
| | | </if> |
| | | <if test="tableCount != null"> |
| | | TABLE_COUNT = #{tableCount}, |
| | | </if> |
| | | <if test="dateStr != null"> |
| | | DATE_STR = #{dateStr}, |
| | | </if> |
| | | <if test="createTime != null"> |
| | | CREATE_TIME = #{createTime} |
| | | </if> |
| | | </set> |
| | | WHERE ID = #{id} |
| | | </update> |
| | | |
| | | <select id="countByParams" parameterType="map" resultType="java.lang.Integer"> |
| | | SELECT count(*) FROM DB_TABLE_COUNT t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | </select> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DB_TABLE_COUNT t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME ASC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DB_TABLE_COUNT |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME ASC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.wgcloud.mapper.DbTableMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.DbTable"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="TABLE_NAME" property="tableName" jdbcType="CHAR" /> |
| | | <result column="WHERE_VAL" property="whereVal" jdbcType="CHAR" /> |
| | | <result column="REMARK" property="remark" jdbcType="CHAR" /> |
| | | <result column="TABLE_COUNT" property="tableCount" jdbcType="BIGINT" /> |
| | | <result column="DATE_STR" property="dateStr" jdbcType="CHAR" /> |
| | | <result column="DBINFO_ID" property="dbInfoId" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,TABLE_NAME, WHERE_VAL,REMARK,CREATE_TIME,TABLE_COUNT,DATE_STR,DBINFO_ID |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="dbInfoId != null"> |
| | | <![CDATA[ AND DBINFO_ID = #{dbInfoId} ]]> |
| | | </if> |
| | | <if test="tableName != null"> |
| | | <![CDATA[ AND TABLE_NAME = #{tableName} ]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DB_TABLE |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM DB_TABLE |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteByDbInfoId" parameterType="java.lang.String"> |
| | | DELETE FROM DB_TABLE |
| | | WHERE DBINFO_ID = #{dbInfoId} |
| | | </delete> |
| | | |
| | | <delete id="deleteByDate" parameterType="map"> |
| | | DELETE FROM DB_TABLE WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | DB_TABLE |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.DbTable"> |
| | | INSERT INTO DB_TABLE |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="tableName != null" >TABLE_NAME,</if> |
| | | <if test="whereVal != null">WHERE_VAL,</if> |
| | | <if test="remark != null">REMARK,</if> |
| | | <if test="dbInfoId != null">DBINFO_ID,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="tableName != null" >#{tableName},</if> |
| | | <if test="whereVal != null" >#{whereVal},</if> |
| | | <if test="remark != null" >#{remark},</if> |
| | | <if test="dbInfoId != null" >#{dbInfoId},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | |
| | | <update id="updateById" parameterType="com.wgcloud.entity.DbTable"> |
| | | UPDATE DB_TABLE |
| | | <set> |
| | | <if test="tableName != null"> |
| | | TABLE_NAME = #{tableName}, |
| | | </if> |
| | | <if test="whereVal != null"> |
| | | WHERE_VAL = #{whereVal}, |
| | | </if> |
| | | <if test="remark != null"> |
| | | REMARK = #{remark}, |
| | | </if> |
| | | <if test="tableCount != null"> |
| | | TABLE_COUNT = #{tableCount}, |
| | | </if> |
| | | <if test="dateStr != null"> |
| | | DATE_STR = #{dateStr}, |
| | | </if> |
| | | <if test="dbInfoId != null"> |
| | | DBINFO_ID = #{dbInfoId}, |
| | | </if> |
| | | <if test="createTime != null"> |
| | | CREATE_TIME = #{createTime} |
| | | </if> |
| | | </set> |
| | | WHERE ID = #{id} |
| | | </update> |
| | | |
| | | <update id="updateList" parameterType="java.util.List" > |
| | | <foreach collection="list" item="item" index="index" separator=";" > |
| | | UPDATE DB_TABLE |
| | | <set> |
| | | <if test="item.tableName != null"> |
| | | TABLE_NAME = #{item.tableName}, |
| | | </if> |
| | | <if test="item.whereVal != null"> |
| | | WHERE_VAL= #{item.whereVal}, |
| | | </if> |
| | | <if test="item.remark != null" > |
| | | REMARK= #{item.remark}, |
| | | </if> |
| | | <if test="item.tableCount != null" > |
| | | TABLE_COUNT= #{item.tableCount}, |
| | | </if> |
| | | <if test="item.dateStr != null" > |
| | | DATE_STR= #{item.dateStr}, |
| | | </if> |
| | | <if test="item.dbInfoId != null" > |
| | | DBINFO_ID= #{item.dbInfoId}, |
| | | </if> |
| | | <if test="item.createTime != null" > |
| | | CREATE_TIME= #{item.createTime} |
| | | </if> |
| | | </set> |
| | | WHERE ID = #{item.id} |
| | | </foreach> |
| | | </update> |
| | | |
| | | |
| | | <select id="countByParams" parameterType="map" resultType="java.lang.Integer"> |
| | | SELECT COUNT(*) FROM DB_TABLE t |
| | | </select> |
| | | |
| | | |
| | | <select id="sumByParams" parameterType="map" resultType="java.lang.Long"> |
| | | SELECT SUM(t.TABLE_COUNT) FROM DB_TABLE t |
| | | </select> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DB_TABLE t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DB_TABLE |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.wgcloud.mapper.DeskStateMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.DeskState"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="HOST_NAME" property="hostname" jdbcType="CHAR" /> |
| | | <result column="FILE_STSTEM" property="fileSystem" jdbcType="CHAR" /> |
| | | <result column="SIZE" property="size" jdbcType="CHAR" /> |
| | | <result column="USED" property="used" jdbcType="CHAR" /> |
| | | <result column="AVAIL" property="avail" jdbcType="CHAR" /> |
| | | <result column="USE_PER" property="usePer" jdbcType="CHAR" /> |
| | | <result column="DATE_STR" property="dateStr" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,HOST_NAME, FILE_STSTEM, SIZE, USED, AVAIL,USE_PER,DATE_STR,CREATE_TIME |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="hostname != null"> |
| | | <![CDATA[ AND HOST_NAME = #{hostname} ]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO DESK_STATE (ID,HOST_NAME, FILE_STSTEM, SIZE, USED, AVAIL,USE_PER,DATE_STR,CREATE_TIME) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.hostname},#{item.fileSystem},#{item.size},#{item.used},#{item.avail},#{item.usePer},#{item.dateStr},#{item.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DESK_STATE |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByAccountAndDate" parameterType="map"> |
| | | DELETE FROM DESK_STATE WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteByAccHname" parameterType="map"> |
| | | DELETE FROM DESK_STATE WHERE |
| | | <![CDATA[ HOST_NAME = #{hostname} ]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM DESK_STATE |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | DESK_STATE |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.DeskState"> |
| | | INSERT INTO DESK_STATE |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="hostname != null" > HOST_NAME,</if> |
| | | <if test="fileSystem != null">FILE_STSTEM,</if> |
| | | <if test="size != null" >SIZE,</if> |
| | | <if test="used != null" >USED,</if> |
| | | <if test="avail != null" >AVAIL,</if> |
| | | <if test="usePer != null" >USE_PER,</if> |
| | | <if test="dateStr != null" >DATE_STR,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="hostname != null" >#{hostname},</if> |
| | | <if test="fileSystem != null" >#{fileSystem},</if> |
| | | <if test="size != null" >#{size},</if> |
| | | <if test="used != null" >#{used},</if> |
| | | <if test="avail != null" >#{avail},</if> |
| | | <if test="usePer != null" >#{usePer},</if> |
| | | <if test="dateStr != null" >#{dateStr},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DESK_STATE t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC,USE_PER DESC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM DESK_STATE |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC,USE_PER DESC |
| | | </select> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.wgcloud.mapper.HeathMonitorMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.HeathMonitor"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="APP_NAME" property="appName" jdbcType="CHAR" /> |
| | | <result column="HEATH_URL" property="heathUrl" jdbcType="CHAR" /> |
| | | <result column="HEATH_STATUS" property="heathStatus" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,APP_NAME, HEATH_URL,HEATH_STATUS,CREATE_TIME |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="heathStatus != null"> |
| | | <![CDATA[ AND HEATH_STATUS = #{heathStatus} ]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM HEATH_MONITOR |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM HEATH_MONITOR |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteByDate" parameterType="map"> |
| | | DELETE FROM HEATH_MONITOR WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | HEATH_MONITOR |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.HeathMonitor"> |
| | | INSERT INTO HEATH_MONITOR |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="appName != null">APP_NAME,</if> |
| | | <if test="heathUrl != null">HEATH_URL,</if> |
| | | <if test="heathStatus != null">HEATH_STATUS,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="appName != null" >#{appName},</if> |
| | | <if test="heathUrl != null" >#{heathUrl},</if> |
| | | <if test="heathStatus != null" >#{heathStatus},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO HEATH_MONITOR (ID,APP_NAME,HEATH_URL,HEATH_STATUS,CREATE_TIME) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.appName},#{item.heathUrl},#{item.heathStatus},#{item.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | |
| | | <update id="updateList" parameterType="java.util.List" > |
| | | <foreach collection="list" item="item" index="index" separator=";"> |
| | | UPDATE HEATH_MONITOR |
| | | <set> |
| | | <if test="item.appName != null"> |
| | | APP_NAME = #{item.appName}, |
| | | </if> |
| | | <if test="item.heathUrl != null"> |
| | | HEATH_URL= #{item.heathUrl}, |
| | | </if> |
| | | <if test="item.heathStatus != null" > |
| | | HEATH_STATUS= #{item.heathStatus}, |
| | | </if> |
| | | <if test="item.createTime != null" > |
| | | CREATE_TIME= #{item.createTime}, |
| | | </if> |
| | | </set> |
| | | WHERE ID = #{item.id} |
| | | </foreach> |
| | | </update> |
| | | |
| | | |
| | | <update id="updateById" parameterType="com.wgcloud.entity.HeathMonitor"> |
| | | UPDATE HEATH_MONITOR |
| | | <set> |
| | | <if test="appName != null"> |
| | | APP_NAME = #{appName}, |
| | | </if> |
| | | <if test="heathUrl != null"> |
| | | HEATH_URL = #{heathUrl}, |
| | | </if> |
| | | <if test="heathStatus != null"> |
| | | HEATH_STATUS = #{heathStatus}, |
| | | </if> |
| | | <if test="createTime != null"> |
| | | CREATE_TIME = #{createTime} |
| | | </if> |
| | | </set> |
| | | WHERE ID = #{id} |
| | | </update> |
| | | |
| | | <select id="countByParams" parameterType="map" resultType="java.lang.Integer"> |
| | | SELECT count(*) FROM HEATH_MONITOR t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | </select> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM HEATH_MONITOR t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM HEATH_MONITOR |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.wgcloud.mapper.HostInfoMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.HostInfo"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="IP" property="ip" jdbcType="CHAR" /> |
| | | <result column="PORT" property="port" jdbcType="CHAR" /> |
| | | <result column="ROOT" property="root" jdbcType="CHAR" /> |
| | | <result column="PASSWD" property="passwd" jdbcType="CHAR" /> |
| | | <result column="REMARK" property="remark" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,IP,PORT,ROOT,PASSWD,REMARK,CREATE_TIME |
| | | </sql> |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM HOST_INFO |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM HOST_INFO |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | HOST_INFO |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <delete id="deleteByIp" parameterType="java.lang.String"> |
| | | DELETE FROM HOST_INFO |
| | | WHERE IP IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.HostInfo"> |
| | | INSERT INTO HOST_INFO |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="ip != null" >IP,</if> |
| | | <if test="port != null" >PORT,</if> |
| | | <if test="passwd != null" >PASSWD,</if> |
| | | <if test="root != null" >ROOT,</if> |
| | | <if test="remark != null" >REMARK,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="ip != null" >#{ip},</if> |
| | | <if test="port != null" >#{port},</if> |
| | | <if test="passwd != null" >#{passwd},</if> |
| | | <if test="root != null" >#{root},</if> |
| | | <if test="remark != null" >#{remark},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | |
| | | <update id="updateById" parameterType="com.wgcloud.entity.HostInfo"> |
| | | UPDATE HOST_INFO |
| | | <set> |
| | | <if test="ip != null"> |
| | | IP = #{ip}, |
| | | </if> |
| | | <if test="port != null"> |
| | | PORT = #{port}, |
| | | </if> |
| | | <if test="passwd != null"> |
| | | PASSWD = #{passwd}, |
| | | </if> |
| | | <if test="root != null"> |
| | | ROOT = #{root}, |
| | | </if> |
| | | <if test="remark != null"> |
| | | REMARK = #{remark}, |
| | | </if> |
| | | |
| | | </set> |
| | | WHERE ID = #{id} |
| | | </update> |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM HOST_INFO t |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | |
| | | <select id="selectByParams" parameterType="com.wgcloud.entity.HostInfo" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM HOST_INFO |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.wgcloud.mapper.IntrusionInfoMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.IntrusionInfo"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="HOST_NAME" property="hostname" jdbcType="CHAR" /> |
| | | <result column="LSMOD" property="lsmod" jdbcType="CHAR" /> |
| | | <result column="PASSWD_INFO" property="passwdInfo" jdbcType="CHAR" /> |
| | | <result column="CRONTAB" property="crontab" jdbcType="CHAR" /> |
| | | <result column="PROMISC" property="promisc" jdbcType="CHAR" /> |
| | | <result column="RPCINFO" property="rpcinfo" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,HOST_NAME, LSMOD, PASSWD_INFO, CRONTAB, PROMISC,RPCINFO,CREATE_TIME |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="hostname != null"> |
| | | <![CDATA[ AND HOST_NAME = #{hostname} ]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM INTRUSION_INFO WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM INTRUSION_INFO WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteByAccountAndDate" parameterType="map"> |
| | | DELETE FROM INTRUSION_INFO WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteByAccHname" parameterType="map"> |
| | | DELETE FROM INTRUSION_INFO WHERE <![CDATA[ HOST_NAME = #{hostname} ]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM INTRUSION_INFO WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO INTRUSION_INFO (ID,HOST_NAME,LSMOD,PASSWD_INFO,CRONTAB,PROMISC,RPCINFO,CREATE_TIME) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.hostname},#{item.lsmod},#{item.passwdInfo},#{item.crontab},#{item.promisc},#{item.rpcinfo},#{item.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.IntrusionInfo"> |
| | | INSERT INTO INTRUSION_INFO |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="hostname != null" > HOST_NAME,</if> |
| | | <if test="lsmod != null">LSMOD,</if> |
| | | <if test="passwdInfo != null" >PASSWD_INFO,</if> |
| | | <if test="crontab != null" >CRONTAB,</if> |
| | | <if test="promisc != null" >PROMISC,</if> |
| | | <if test="rpcinfo != null" >RPCINFO,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="hostname != null" >#{hostname},</if> |
| | | <if test="lsmod != null" >#{lsmod},</if> |
| | | <if test="passwdInfo != null" >#{passwdInfo},</if> |
| | | <if test="crontab != null" >#{crontab},</if> |
| | | <if test="promisc != null" >#{promisc},</if> |
| | | <if test="rpcinfo != null" >#{rpcinfo},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | <select id="selectByAccountId" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | ID,HOST_NAME, PROMISC,RPCINFO,CREATE_TIME |
| | | FROM INTRUSION_INFO |
| | | </select> |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM INTRUSION_INFO t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM INTRUSION_INFO |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.wgcloud.mapper.LogInfoMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.LogInfo"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="HOST_NAME" property="hostname" jdbcType="CHAR" /> |
| | | <result column="INFO_CONTENT" property="infoContent" jdbcType="CHAR" /> |
| | | <result column="STATE" property="state" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,HOST_NAME, INFO_CONTENT, STATE,CREATE_TIME |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="hostname != null"> |
| | | <![CDATA[ AND HOST_NAME LIKE CONCAT('%',#{hostname},'%')]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM LOG_INFO WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM LOG_INFO WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteByDate" parameterType="map"> |
| | | DELETE FROM LOG_INFO WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | |
| | | <delete id="deleteByAccHname" parameterType="map"> |
| | | DELETE FROM LOG_INFO WHERE ACCOUNT = #{account} AND HOST_NAME = #{hostname} |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM LOG_INFO WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO LOG_INFO (ID,HOST_NAME,INFO_CONTENT,STATE,CREATE_TIME) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.hostname},#{item.infoContent},#{item.state},#{item.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.LogInfo"> |
| | | INSERT INTO LOG_INFO |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="hostname != null" > HOST_NAME,</if> |
| | | <if test="infoContent != null">INFO_CONTENT,</if> |
| | | <if test="state != null" >STATE,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="hostname != null" >#{hostname},</if> |
| | | <if test="infoContent != null" >#{infoContent},</if> |
| | | <if test="state != null" >#{state},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | |
| | | <select id="countByParams" parameterType="map" resultType="java.lang.Integer"> |
| | | SELECT count(*) FROM LOG_INFO t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | </select> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM LOG_INFO t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM LOG_INFO |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.wgcloud.mapper.MailSetMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.MailSet"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="SEND_MAIL" property="sendMail" jdbcType="CHAR" /> |
| | | <result column="FROM_MAIL_NAME" property="fromMailName" jdbcType="CHAR" /> |
| | | <result column="FROM_PWD" property="fromPwd" jdbcType="CHAR" /> |
| | | <result column="SMTP_HOST" property="smtpHost" jdbcType="CHAR" /> |
| | | <result column="SMTP_PORT" property="smtpPort" jdbcType="CHAR" /> |
| | | <result column="SMTP_SSL" property="smtpSSL" jdbcType="CHAR" /> |
| | | <result column="TO_MAIL" property="toMail" jdbcType="CHAR" /> |
| | | <result column="CPU_PER" property="cpuPer" jdbcType="CHAR" /> |
| | | <result column="MEM_PER" property="memPer" jdbcType="CHAR" /> |
| | | <result column="HEATH_PER" property="heathPer" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,SEND_MAIL, FROM_MAIL_NAME, FROM_PWD, SMTP_HOST,SMTP_PORT,SMTP_SSL,TO_MAIL,CPU_PER,MEM_PER,CREATE_TIME,HEATH_PER |
| | | </sql> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | MAIL_SET |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.MailSet"> |
| | | INSERT INTO MAIL_SET |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="fromMailName != null" > FROM_MAIL_NAME,</if> |
| | | <if test="fromPwd != null">FROM_PWD,</if> |
| | | <if test="smtpHost != null">SMTP_HOST,</if> |
| | | <if test="smtpPort != null">SMTP_PORT,</if> |
| | | <if test="smtpSSL != null">SMTP_SSL,</if> |
| | | <if test="toMail != null">TO_MAIL,</if> |
| | | <if test="cpuPer != null" >CPU_PER,</if> |
| | | <if test="memPer != null" >MEM_PER,</if> |
| | | <if test="heathPer != null" >HEATH_PER,</if> |
| | | <if test="sendMail != null" >SEND_MAIL,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="fromMailName != null" >#{fromMailName},</if> |
| | | <if test="fromPwd != null" >#{fromPwd},</if> |
| | | <if test="smtpHost != null" >#{smtpHost},</if> |
| | | <if test="smtpPort != null" >#{smtpPort},</if> |
| | | <if test="smtpSSL != null" >#{smtpSSL},</if> |
| | | <if test="toMail != null" >#{toMail},</if> |
| | | <if test="cpuPer != null" >#{cpuPer},</if> |
| | | <if test="memPer != null" >#{memPer},</if> |
| | | <if test="heathPer != null" >#{heathPer},</if> |
| | | <if test="sendMail != null" >#{sendMail},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | <update id="updateById" parameterType="com.wgcloud.entity.MailSet"> |
| | | UPDATE MAIL_SET |
| | | <set> |
| | | <if test="fromMailName != null"> |
| | | FROM_MAIL_NAME = #{fromMailName}, |
| | | </if> |
| | | <if test="fromPwd != null"> |
| | | FROM_PWD= #{fromPwd}, |
| | | </if> |
| | | <if test="smtpHost != null" > |
| | | SMTP_HOST= #{smtpHost}, |
| | | </if> |
| | | <if test="smtpPort != null" > |
| | | SMTP_PORT= #{smtpPort}, |
| | | </if> |
| | | <if test="smtpSSL != null" > |
| | | SMTP_SSL= #{smtpSSL}, |
| | | </if> |
| | | <if test="toMail != null" > |
| | | TO_MAIL= #{toMail}, |
| | | </if> |
| | | CPU_PER= #{cpuPer}, |
| | | MEM_PER= #{memPer}, |
| | | HEATH_PER= #{heathPer}, |
| | | <if test="sendMail != null" > |
| | | SEND_MAIL= #{sendMail}, |
| | | </if> |
| | | </set> |
| | | WHERE ID = #{id} |
| | | </update> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM MAIL_SET t |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM MAIL_SET |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.wgcloud.mapper.MemStateMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.MemState"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="HOST_NAME" property="hostname" jdbcType="CHAR" /> |
| | | <result column="TOTAL" property="total" jdbcType="CHAR" /> |
| | | <result column="USED" property="used" jdbcType="CHAR" /> |
| | | <result column="FREE" property="free" jdbcType="CHAR" /> |
| | | <result column="USE_PER" property="usePer" jdbcType="DOUBLE" /> |
| | | <result column="DATE_STR" property="dateStr" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,HOST_NAME, TOTAL,USED,FREE, USE_PER,DATE_STR,CREATE_TIME |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="hostname != null"> |
| | | <![CDATA[ AND HOST_NAME = #{hostname} ]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM MEM_STATE |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByAccountAndDate" parameterType="map"> |
| | | DELETE FROM MEM_STATE WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM MEM_STATE |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | MEM_STATE |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.MemState"> |
| | | INSERT INTO MEM_STATE |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="hostname != null" > HOST_NAME,</if> |
| | | <if test="total != null">TOTAL,</if> |
| | | <if test="used != null">USED,</if> |
| | | <if test="free != null" >FREE,</if> |
| | | <if test="usePer != null" >USE_PER,</if> |
| | | <if test="dateStr != null" >DATE_STR,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="hostname != null" >#{hostname},</if> |
| | | <if test="total != null" >#{total},</if> |
| | | <if test="used != null" >#{used},</if> |
| | | <if test="free != null" >#{free},</if> |
| | | <if test="usePer != null" >#{usePer},</if> |
| | | <if test="dateStr != null" >#{dateStr},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO MEM_STATE (ID,HOST_NAME,TOTAL,USED,FREE,USE_PER,DATE_STR,CREATE_TIME) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.hostname},#{item.total},#{item.used},#{item.free},#{item.usePer},#{item.dateStr},#{item.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM MEM_STATE t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME ASC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM MEM_STATE |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.wgcloud.mapper.NetIoStateMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.NetIoState"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="HOST_NAME" property="hostname" jdbcType="CHAR" /> |
| | | <result column="RXPCK" property="rxpck" jdbcType="CHAR" /> |
| | | <result column="TXPCK" property="txpck" jdbcType="CHAR" /> |
| | | <result column="RXBYT" property="rxbyt" jdbcType="CHAR" /> |
| | | <result column="TXBYT" property="txbyt" jdbcType="CHAR" /> |
| | | <result column="RXCMP" property="rxcmp" jdbcType="CHAR" /> |
| | | <result column="TXCMP" property="txcmp" jdbcType="CHAR" /> |
| | | <result column="RXMCST" property="rxmcst" jdbcType="CHAR" /> |
| | | <result column="DATE_STR" property="dateStr" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,HOST_NAME, RXPCK,TXPCK,RXBYT, TXBYT, RXCMP, TXCMP, RXMCST,DATE_STR,CREATE_TIME |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="hostname != null"> |
| | | <![CDATA[ AND HOST_NAME = #{hostname} ]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM NETIO_STATE |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByAccountAndDate" parameterType="map"> |
| | | DELETE FROM NETIO_STATE WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM NETIO_STATE |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | NETIO_STATE |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.NetIoState"> |
| | | INSERT INTO NETIO_STATE |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="hostname != null" > HOST_NAME,</if> |
| | | <if test="txpck != null">TXPCK,</if> |
| | | <if test="rxpck != null">RXPCK,</if> |
| | | <if test="rxbyt != null">RXBYT,</if> |
| | | <if test="txbyt != null" >TXBYT,</if> |
| | | <if test="rxcmp != null" >RXCMP,</if> |
| | | <if test="txcmp != null" >TXCMP,</if> |
| | | <if test="rxmcst != null" >RXMCST,</if> |
| | | <if test="dateStr != null" >DATE_STR,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="hostname != null" >#{hostname},</if> |
| | | <if test="txpck != null" >#{txpck},</if> |
| | | <if test="rxpck != null" >#{rxpck},</if> |
| | | <if test="rxbyt != null" >#{rxbyt},</if> |
| | | <if test="txbyt != null" >#{txbyt},</if> |
| | | <if test="rxcmp != null" >#{rxcmp},</if> |
| | | <if test="txcmp != null" >#{txcmp},</if> |
| | | <if test="rxmcst != null" >#{rxmcst},</if> |
| | | <if test="dateStr != null" >#{dateStr},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO NETIO_STATE (ID,HOST_NAME,TXPCK,RXPCK,RXBYT,TXBYT,RXCMP,TXCMP,RXMCST,DATE_STR,CREATE_TIME) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.hostname},#{item.txpck},#{item.rxpck},#{item.rxbyt},#{item.txbyt}, |
| | | #{item.rxcmp},#{item.txcmp},#{item.rxmcst},#{item.dateStr},#{item.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM NETIO_STATE t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME ASC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM NETIO_STATE |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.wgcloud.mapper.SysLoadStateMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.SysLoadState"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="HOST_NAME" property="hostname" jdbcType="CHAR" /> |
| | | <result column="ONE_LOAD" property="oneLoad" jdbcType="DOUBLE" /> |
| | | <result column="FIVE_LOAD" property="fiveLoad" jdbcType="DOUBLE" /> |
| | | <result column="FIFTEEN_LOAD" property="fifteenLoad" jdbcType="DOUBLE" /> |
| | | <result column="USERS" property="users" jdbcType="CHAR" /> |
| | | <result column="DATE_STR" property="dateStr" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,HOST_NAME, ONE_LOAD, FIVE_LOAD, FIFTEEN_LOAD,USERS,DATE_STR,CREATE_TIME |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="hostname != null"> |
| | | <![CDATA[ AND HOST_NAME = #{hostname} ]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM SYS_LOAD_STATE |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM SYS_LOAD_STATE |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | |
| | | <delete id="deleteByAccountAndDate" parameterType="map"> |
| | | DELETE FROM SYS_LOAD_STATE WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | SYS_LOAD_STATE |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.SysLoadState"> |
| | | INSERT INTO SYS_LOAD_STATE |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="hostname != null" > HOST_NAME,</if> |
| | | <if test="oneLoad != null">ONE_LOAD,</if> |
| | | <if test="fiveLoad != null" >FIVE_LOAD,</if> |
| | | <if test="fifteenLoad != null" >FIFTEEN_LOAD,</if> |
| | | <if test="users != null" >USERS,</if> |
| | | <if test="dateStr != null" >DATE_STR,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="hostname != null" >#{hostname},</if> |
| | | <if test="oneLoad != null" >#{oneLoad},</if> |
| | | <if test="fiveLoad != null" >#{fiveLoad},</if> |
| | | <if test="fifteenLoad != null" >#{fifteenLoad},</if> |
| | | <if test="users != null" >#{users},</if> |
| | | <if test="dateStr != null" >#{dateStr},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO SYS_LOAD_STATE (ID,HOST_NAME,ONE_LOAD,FIVE_LOAD,FIFTEEN_LOAD,USERS,DATE_STR,CREATE_TIME) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.hostname},#{item.oneLoad},#{item.fiveLoad},#{item.fifteenLoad},#{item.users}, |
| | | #{item.dateStr},#{item.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM SYS_LOAD_STATE t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME ASC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM SYS_LOAD_STATE |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.wgcloud.mapper.SystemInfoMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.SystemInfo"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="HOST_NAME" property="hostname" jdbcType="CHAR" /> |
| | | <result column="VERSION" property="version" jdbcType="CHAR" /> |
| | | <result column="VERSION_DETAIL" property="versionDetail" jdbcType="CHAR" /> |
| | | <result column="MEM_PER" property="memPer" jdbcType="DOUBLE" /> |
| | | <result column="CPU_PER" property="cpuPer" jdbcType="DOUBLE" /> |
| | | <result column="CPU_CORE_NUM" property="cpuCoreNum" jdbcType="CHAR" /> |
| | | <result column="CPU_XH" property="cpuXh" jdbcType="CHAR" /> |
| | | <result column="STATE" property="state" jdbcType="CHAR" /> |
| | | <result column="REMARK" property="remark" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,HOST_NAME, VERSION, VERSION_DETAIL, MEM_PER, CPU_PER,CPU_CORE_NUM,CPU_XH,CREATE_TIME,STATE,REMARK |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="hostname != null"> |
| | | <![CDATA[ AND HOST_NAME = #{hostname} ]]> |
| | | </if> |
| | | <if test="memPer != null"> |
| | | <![CDATA[ AND MEM_PER >= #{memPer} ]]> |
| | | </if> |
| | | <if test="memPerLe != null"> |
| | | <![CDATA[ AND MEM_PER <= #{memPerLe} ]]> |
| | | </if> |
| | | <if test="cpuPer != null"> |
| | | <![CDATA[ AND CPU_PER >= #{cpuPer} ]]> |
| | | </if> |
| | | <if test="cpuPerLe != null"> |
| | | <![CDATA[ AND CPU_PER <= #{cpuPerLe} ]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM SYSTEM_INFO WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM SYSTEM_INFO WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteByAccountAndDate" parameterType="map"> |
| | | DELETE FROM SYSTEM_INFO WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteByAccHname" parameterType="map"> |
| | | DELETE FROM SYSTEM_INFO WHERE <![CDATA[ HOST_NAME = #{hostname} ]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM SYSTEM_INFO WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO SYSTEM_INFO (ID,HOST_NAME, VERSION, VERSION_DETAIL, MEM_PER, CPU_PER,CPU_CORE_NUM,CPU_XH,CREATE_TIME,STATE) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.hostname},#{item.version},#{item.versionDetail},#{item.memPer},#{item.cpuPer},#{item.cpuCoreNum},#{item.cpuXh},#{item.createTime},#{item.state}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | |
| | | <update id="updateList" parameterType="java.util.List" > |
| | | <foreach collection="list" item="item" index="index" separator=";" > |
| | | UPDATE SYSTEM_INFO |
| | | <set> |
| | | <if test="item.hostname != null"> |
| | | HOST_NAME = #{item.hostname}, |
| | | </if> |
| | | <if test="item.version != null"> |
| | | VERSION= #{item.version}, |
| | | </if> |
| | | <if test="item.versionDetail != null" > |
| | | VERSION_DETAIL= #{item.versionDetail}, |
| | | </if> |
| | | <if test="item.memPer != null" > |
| | | MEM_PER= #{item.memPer}, |
| | | </if> |
| | | <if test="item.cpuPer != null" > |
| | | CPU_PER= #{item.cpuPer}, |
| | | </if> |
| | | <if test="item.cpuCoreNum != null" > |
| | | CPU_CORE_NUM= #{item.cpuCoreNum}, |
| | | </if> |
| | | <if test="item.cpuXh != null" > |
| | | CPU_XH= #{item.cpuXh}, |
| | | </if> |
| | | <if test="item.state != null" > |
| | | STATE= #{item.state}, |
| | | </if> |
| | | <if test="item.createTime != null" > |
| | | CREATE_TIME= #{item.createTime} |
| | | </if> |
| | | </set> |
| | | WHERE ID = #{item.id} |
| | | </foreach> |
| | | </update> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.SystemInfo"> |
| | | INSERT INTO SYSTEM_INFO |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="hostname != null" > HOST_NAME,</if> |
| | | <if test="version != null">VERSION,</if> |
| | | <if test="versionDetail != null" >VERSION_DETAIL,</if> |
| | | <if test="memPer != null" >MEM_PER,</if> |
| | | <if test="cpuPer != null" >CPU_PER,</if> |
| | | <if test="cpuCoreNum != null" >CPU_CORE_NUM,</if> |
| | | <if test="cpuXh != null" >CPU_XH,</if> |
| | | <if test="state != null" >STATE,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="hostname != null" >#{hostname},</if> |
| | | <if test="version != null" >#{version},</if> |
| | | <if test="versionDetail != null" >#{versionDetail},</if> |
| | | <if test="memPer != null" >#{memPer},</if> |
| | | <if test="cpuPer != null" >#{cpuPer},</if> |
| | | <if test="cpuCoreNum != null" >#{cpuCoreNum},</if> |
| | | <if test="cpuXh != null" >#{cpuXh},</if> |
| | | <if test="state != null" >#{state},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | <update id="updateById" parameterType="com.wgcloud.entity.SystemInfo"> |
| | | UPDATE SYSTEM_INFO |
| | | <set> |
| | | <if test="hostname != null"> |
| | | HOST_NAME = #{hostname}, |
| | | </if> |
| | | <if test="version != null"> |
| | | VERSION= #{version}, |
| | | </if> |
| | | <if test="versionDetail != null" > |
| | | VERSION_DETAIL= #{versionDetail}, |
| | | </if> |
| | | <if test="memPer != null" > |
| | | MEM_PER= #{memPer}, |
| | | </if> |
| | | <if test="cpuPer != null" > |
| | | CPU_PER= #{cpuPer}, |
| | | </if> |
| | | <if test="cpuCoreNum != null" > |
| | | CPU_CORE_NUM= #{cpuCoreNum}, |
| | | </if> |
| | | <if test="cpuXh != null" > |
| | | CPU_XH= #{cpuXh}, |
| | | </if> |
| | | <if test="state != null" > |
| | | STATE= #{state}, |
| | | </if> |
| | | <if test="remark != null" > |
| | | REMARK= #{remark}, |
| | | </if> |
| | | <if test="createTime != null" > |
| | | CREATE_TIME= #{createTime} |
| | | </if> |
| | | </set> |
| | | WHERE ID = #{id} |
| | | </update> |
| | | |
| | | <select id="selectByAccountId" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM SYSTEM_INFO |
| | | </select> |
| | | |
| | | |
| | | <select id="countByParams" parameterType="map" resultType="java.lang.Integer"> |
| | | SELECT count(*) FROM SYSTEM_INFO t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | </select> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM SYSTEM_INFO |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY HOST_NAME ASC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM SYSTEM_INFO |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY HOST_NAME ASC |
| | | </select> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.wgcloud.mapper.TcpStateMapper"> |
| | | <resultMap id="resultMap" type="com.wgcloud.entity.TcpState"> |
| | | <id column="ID" property="id" jdbcType="CHAR" /> |
| | | <result column="HOST_NAME" property="hostname" jdbcType="CHAR" /> |
| | | <result column="ACTIVE" property="active" jdbcType="CHAR" /> |
| | | <result column="PASSIVE" property="passive" jdbcType="CHAR" /> |
| | | <result column="RETRANS" property="retrans" jdbcType="CHAR" /> |
| | | <result column="DATE_STR" property="dateStr" jdbcType="CHAR" /> |
| | | <result column="CREATE_TIME" property="createTime" jdbcType="TIMESTAMP" /> |
| | | </resultMap> |
| | | |
| | | <sql id="tableColumnList"> |
| | | ID,HOST_NAME, ACTIVE, PASSIVE, RETRANS,DATE_STR,CREATE_TIME |
| | | </sql> |
| | | |
| | | <sql id="queryByParams"> |
| | | <if test="hostname != null"> |
| | | <![CDATA[ AND HOST_NAME = #{hostname} ]]> |
| | | </if> |
| | | <if test="startTime != null and endTime !=null and startTime !='' and endTime != '' "> |
| | | <![CDATA[ AND CREATE_TIME >= #{startTime} and CREATE_TIME <=#{endTime}]]> |
| | | </if> |
| | | </sql> |
| | | |
| | | <select id="selectById" resultMap="resultMap" parameterType="java.lang.String"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM TCP_STATE |
| | | WHERE ID=#{id} |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByAccountAndDate" parameterType="map"> |
| | | DELETE FROM TCP_STATE WHERE <![CDATA[ CREATE_TIME <=#{endTime}]]> |
| | | </delete> |
| | | |
| | | <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> |
| | | DELETE FROM TCP_STATE |
| | | WHERE ID = #{id} |
| | | </delete> |
| | | |
| | | <delete id="deleteById" parameterType="java.lang.String"> |
| | | DELETE FROM |
| | | TCP_STATE |
| | | WHERE ID IN |
| | | <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <insert id="save" parameterType="com.wgcloud.entity.TcpState"> |
| | | INSERT INTO TCP_STATE |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >ID,</if> |
| | | <if test="hostname != null" >HOST_NAME,</if> |
| | | <if test="active != null">ACTIVE,</if> |
| | | <if test="passive != null" >PASSIVE,</if> |
| | | <if test="retrans != null" >RETRANS,</if> |
| | | <if test="dateStr != null" >DATE_STR,</if> |
| | | <if test="createTime != null" >CREATE_TIME</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides="," > |
| | | <if test="id != null" >#{id},</if> |
| | | <if test="hostname != null" >#{hostname},</if> |
| | | <if test="active != null" >#{active},</if> |
| | | <if test="passive != null" >#{passive},</if> |
| | | <if test="retrans != null" >#{retrans},</if> |
| | | <if test="dateStr != null" >#{dateStr},</if> |
| | | <if test="createTime != null" >#{createTime}</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | |
| | | <insert id="insertList" parameterType="java.util.List" > |
| | | INSERT INTO TCP_STATE (ID,HOST_NAME,ACTIVE,PASSIVE,RETRANS,DATE_STR,CREATE_TIME) VALUES |
| | | <foreach collection="list" item="item" index="index" separator="," > |
| | | (#{item.id},#{item.hostname},#{item.active},#{item.passive},#{item.retrans}, |
| | | #{item.dateStr},#{item.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | |
| | | |
| | | <select id="selectAllByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM TCP_STATE t |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | <select id="selectByParams" parameterType="map" resultMap="resultMap"> |
| | | SELECT |
| | | <include refid="tableColumnList" /> |
| | | FROM TCP_STATE |
| | | <where> |
| | | <include refid="queryByParams" /> |
| | | </where> |
| | | ORDER BY CREATE_TIME DESC |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> |
| | | <configuration> |
| | | |
| | | <mappers> |
| | | </mappers> |
| | | |
| | | |
| | | </configuration> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* cyrillic-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: italic; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2) format('woff2'); |
| | | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; |
| | | } |
| | | /* cyrillic */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: italic; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2) format('woff2'); |
| | | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; |
| | | } |
| | | /* greek-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: italic; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2) format('woff2'); |
| | | unicode-range: U+1F00-1FFF; |
| | | } |
| | | /* greek */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: italic; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2) format('woff2'); |
| | | unicode-range: U+0370-03FF; |
| | | } |
| | | /* vietnamese */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: italic; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2) format('woff2'); |
| | | unicode-range: U+0102-0103, U+0110-0111, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; |
| | | } |
| | | /* latin-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: italic; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2) format('woff2'); |
| | | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; |
| | | } |
| | | /* latin */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: italic; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2) format('woff2'); |
| | | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; |
| | | } |
| | | /* cyrillic-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 300; |
| | | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2) format('woff2'); |
| | | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; |
| | | } |
| | | /* cyrillic */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 300; |
| | | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2) format('woff2'); |
| | | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; |
| | | } |
| | | /* greek-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 300; |
| | | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2) format('woff2'); |
| | | unicode-range: U+1F00-1FFF; |
| | | } |
| | | /* greek */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 300; |
| | | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2) format('woff2'); |
| | | unicode-range: U+0370-03FF; |
| | | } |
| | | /* vietnamese */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 300; |
| | | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2) format('woff2'); |
| | | unicode-range: U+0102-0103, U+0110-0111, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; |
| | | } |
| | | /* latin-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 300; |
| | | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2) format('woff2'); |
| | | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; |
| | | } |
| | | /* latin */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 300; |
| | | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2) format('woff2'); |
| | | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; |
| | | } |
| | | /* cyrillic-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2) format('woff2'); |
| | | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; |
| | | } |
| | | /* cyrillic */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2) format('woff2'); |
| | | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; |
| | | } |
| | | /* greek-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2) format('woff2'); |
| | | unicode-range: U+1F00-1FFF; |
| | | } |
| | | /* greek */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2) format('woff2'); |
| | | unicode-range: U+0370-03FF; |
| | | } |
| | | /* vietnamese */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2) format('woff2'); |
| | | unicode-range: U+0102-0103, U+0110-0111, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; |
| | | } |
| | | /* latin-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2) format('woff2'); |
| | | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; |
| | | } |
| | | /* latin */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 400; |
| | | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2) format('woff2'); |
| | | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; |
| | | } |
| | | /* cyrillic-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 700; |
| | | src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhduz8A.woff2) format('woff2'); |
| | | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; |
| | | } |
| | | /* cyrillic */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 700; |
| | | src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxduz8A.woff2) format('woff2'); |
| | | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; |
| | | } |
| | | /* greek-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 700; |
| | | src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxduz8A.woff2) format('woff2'); |
| | | unicode-range: U+1F00-1FFF; |
| | | } |
| | | /* greek */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 700; |
| | | src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBduz8A.woff2) format('woff2'); |
| | | unicode-range: U+0370-03FF; |
| | | } |
| | | /* vietnamese */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 700; |
| | | src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBduz8A.woff2) format('woff2'); |
| | | unicode-range: U+0102-0103, U+0110-0111, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; |
| | | } |
| | | /* latin-ext */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 700; |
| | | src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2) format('woff2'); |
| | | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; |
| | | } |
| | | /* latin */ |
| | | @font-face { |
| | | font-family: 'Source Sans Pro'; |
| | | font-style: normal; |
| | | font-weight: 700; |
| | | src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(/wgcloud/static/AdminLTE/googleapis/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2) format('woff2'); |
| | | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | * |
| | | !/plugins/flot-old/ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /*! |
| | | * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4. |
| | | * @package bootstrap-colorpicker |
| | | * @version v3.1.2 |
| | | * @license MIT |
| | | * @link https://farbelous.github.io/bootstrap-colorpicker/ |
| | | * @link https://github.com/farbelous/bootstrap-colorpicker.git |
| | | */ |
| | | .colorpicker { |
| | | position: relative; |
| | | display: none; |
| | | font-size: inherit; |
| | | color: inherit; |
| | | text-align: left; |
| | | list-style: none; |
| | | background-color: #ffffff; |
| | | background-clip: padding-box; |
| | | border: 1px solid rgba(0, 0, 0, 0.2); |
| | | padding: .75rem .75rem; |
| | | width: 148px; |
| | | border-radius: 4px; |
| | | -webkit-box-sizing: content-box; |
| | | box-sizing: content-box; } |
| | | |
| | | .colorpicker.colorpicker-disabled, |
| | | .colorpicker.colorpicker-disabled * { |
| | | cursor: default !important; } |
| | | |
| | | .colorpicker div { |
| | | position: relative; } |
| | | |
| | | .colorpicker-popup { |
| | | position: absolute; |
| | | top: 100%; |
| | | left: 0; |
| | | float: left; |
| | | margin-top: 1px; |
| | | z-index: 1060; } |
| | | |
| | | .colorpicker-popup.colorpicker-bs-popover-content { |
| | | position: relative; |
| | | top: auto; |
| | | left: auto; |
| | | float: none; |
| | | margin: 0; |
| | | z-index: initial; |
| | | border: none; |
| | | padding: 0.25rem 0; |
| | | border-radius: 0; |
| | | background: none; |
| | | -webkit-box-shadow: none; |
| | | box-shadow: none; } |
| | | |
| | | .colorpicker:before, |
| | | .colorpicker:after { |
| | | content: ""; |
| | | display: table; |
| | | clear: both; |
| | | line-height: 0; } |
| | | |
| | | .colorpicker-clear { |
| | | clear: both; |
| | | display: block; } |
| | | |
| | | .colorpicker:before { |
| | | content: ''; |
| | | display: inline-block; |
| | | border-left: 7px solid transparent; |
| | | border-right: 7px solid transparent; |
| | | border-bottom: 7px solid #ccc; |
| | | border-bottom-color: rgba(0, 0, 0, 0.2); |
| | | position: absolute; |
| | | top: -7px; |
| | | left: auto; |
| | | right: 6px; } |
| | | |
| | | .colorpicker:after { |
| | | content: ''; |
| | | display: inline-block; |
| | | border-left: 6px solid transparent; |
| | | border-right: 6px solid transparent; |
| | | border-bottom: 6px solid #ffffff; |
| | | position: absolute; |
| | | top: -6px; |
| | | left: auto; |
| | | right: 7px; } |
| | | |
| | | .colorpicker.colorpicker-with-alpha { |
| | | width: 170px; } |
| | | |
| | | .colorpicker.colorpicker-with-alpha .colorpicker-alpha { |
| | | display: block; } |
| | | |
| | | .colorpicker-saturation { |
| | | position: relative; |
| | | width: 126px; |
| | | height: 126px; |
| | | /* FF3.6+ */ |
| | | /* Chrome,Safari4+ */ |
| | | /* Chrome10+,Safari5.1+ */ |
| | | /* Opera 11.10+ */ |
| | | /* IE10+ */ |
| | | background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(black)), -webkit-gradient(linear, left top, right top, from(white), to(rgba(255, 255, 255, 0))); |
| | | background: linear-gradient(to bottom, transparent 0%, black 100%), linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%); |
| | | /* W3C */ |
| | | cursor: crosshair; |
| | | float: left; |
| | | -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); |
| | | box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); |
| | | margin-bottom: 6px; } |
| | | .colorpicker-saturation .colorpicker-guide { |
| | | display: block; |
| | | height: 6px; |
| | | width: 6px; |
| | | border-radius: 6px; |
| | | border: 1px solid #000; |
| | | -webkit-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8); |
| | | box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8); |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | margin: -3px 0 0 -3px; } |
| | | |
| | | .colorpicker-hue, |
| | | .colorpicker-alpha { |
| | | position: relative; |
| | | width: 16px; |
| | | height: 126px; |
| | | float: left; |
| | | cursor: row-resize; |
| | | margin-left: 6px; |
| | | margin-bottom: 6px; } |
| | | |
| | | .colorpicker-alpha-color { |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 100%; } |
| | | |
| | | .colorpicker-hue, |
| | | .colorpicker-alpha-color { |
| | | -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); |
| | | box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); } |
| | | |
| | | .colorpicker-hue .colorpicker-guide, |
| | | .colorpicker-alpha .colorpicker-guide { |
| | | display: block; |
| | | height: 4px; |
| | | background: rgba(255, 255, 255, 0.8); |
| | | border: 1px solid rgba(0, 0, 0, 0.4); |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | margin-left: -2px; |
| | | margin-top: -2px; |
| | | right: -2px; |
| | | z-index: 1; } |
| | | |
| | | .colorpicker-hue { |
| | | /* FF3.6+ */ |
| | | /* Chrome,Safari4+ */ |
| | | /* Chrome10+,Safari5.1+ */ |
| | | /* Opera 11.10+ */ |
| | | /* IE10+ */ |
| | | background: -webkit-gradient(linear, left bottom, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red)); |
| | | background: linear-gradient(to top, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%); |
| | | /* W3C */ } |
| | | |
| | | .colorpicker-alpha { |
| | | background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white; |
| | | background-size: 10px 10px; |
| | | background-position: 0 0, 5px 5px; |
| | | display: none; } |
| | | |
| | | .colorpicker-bar { |
| | | min-height: 16px; |
| | | margin: 6px 0 0 0; |
| | | clear: both; |
| | | text-align: center; |
| | | font-size: 10px; |
| | | line-height: normal; |
| | | max-width: 100%; |
| | | -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); |
| | | box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); } |
| | | .colorpicker-bar:before { |
| | | content: ""; |
| | | display: table; |
| | | clear: both; } |
| | | |
| | | .colorpicker-bar.colorpicker-bar-horizontal { |
| | | height: 126px; |
| | | width: 16px; |
| | | margin: 0 0 6px 0; |
| | | float: left; } |
| | | |
| | | .colorpicker-input-addon { |
| | | position: relative; } |
| | | |
| | | .colorpicker-input-addon i { |
| | | display: inline-block; |
| | | cursor: pointer; |
| | | vertical-align: text-top; |
| | | height: 16px; |
| | | width: 16px; |
| | | position: relative; } |
| | | |
| | | .colorpicker-input-addon:before { |
| | | content: ""; |
| | | position: absolute; |
| | | width: 16px; |
| | | height: 16px; |
| | | display: inline-block; |
| | | vertical-align: text-top; |
| | | background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white; |
| | | background-size: 10px 10px; |
| | | background-position: 0 0, 5px 5px; } |
| | | |
| | | .colorpicker.colorpicker-inline { |
| | | position: relative; |
| | | display: inline-block; |
| | | float: none; |
| | | z-index: auto; |
| | | vertical-align: text-bottom; } |
| | | |
| | | .colorpicker.colorpicker-horizontal { |
| | | width: 126px; |
| | | height: auto; } |
| | | |
| | | .colorpicker.colorpicker-horizontal .colorpicker-bar { |
| | | width: 126px; } |
| | | |
| | | .colorpicker.colorpicker-horizontal .colorpicker-saturation { |
| | | float: none; |
| | | margin-bottom: 0; } |
| | | |
| | | .colorpicker.colorpicker-horizontal .colorpicker-hue, |
| | | .colorpicker.colorpicker-horizontal .colorpicker-alpha { |
| | | float: none; |
| | | width: 126px; |
| | | height: 16px; |
| | | cursor: col-resize; |
| | | margin-left: 0; |
| | | margin-top: 6px; |
| | | margin-bottom: 0; } |
| | | |
| | | .colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide, |
| | | .colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide { |
| | | position: absolute; |
| | | display: block; |
| | | bottom: -2px; |
| | | left: 0; |
| | | right: auto; |
| | | height: auto; |
| | | width: 4px; } |
| | | |
| | | .colorpicker.colorpicker-horizontal .colorpicker-hue { |
| | | /* FF3.6+ */ |
| | | /* Chrome,Safari4+ */ |
| | | /* Chrome10+,Safari5.1+ */ |
| | | /* Opera 11.10+ */ |
| | | /* IE10+ */ |
| | | background: -webkit-gradient(linear, right top, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red)); |
| | | background: linear-gradient(to left, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%); |
| | | /* W3C */ } |
| | | |
| | | .colorpicker.colorpicker-horizontal .colorpicker-alpha { |
| | | background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white; |
| | | background-size: 10px 10px; |
| | | background-position: 0 0, 5px 5px; } |
| | | |
| | | .colorpicker-inline:before, |
| | | .colorpicker-no-arrow:before, |
| | | .colorpicker-popup.colorpicker-bs-popover-content:before { |
| | | content: none; |
| | | display: none; } |
| | | |
| | | .colorpicker-inline:after, |
| | | .colorpicker-no-arrow:after, |
| | | .colorpicker-popup.colorpicker-bs-popover-content:after { |
| | | content: none; |
| | | display: none; } |
| | | |
| | | .colorpicker-alpha, |
| | | .colorpicker-saturation, |
| | | .colorpicker-hue { |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; } |
| | | |
| | | .colorpicker.colorpicker-visible, |
| | | .colorpicker-alpha.colorpicker-visible, |
| | | .colorpicker-saturation.colorpicker-visible, |
| | | .colorpicker-hue.colorpicker-visible, |
| | | .colorpicker-bar.colorpicker-visible { |
| | | display: block; } |
| | | |
| | | .colorpicker.colorpicker-hidden, |
| | | .colorpicker-alpha.colorpicker-hidden, |
| | | .colorpicker-saturation.colorpicker-hidden, |
| | | .colorpicker-hue.colorpicker-hidden, |
| | | .colorpicker-bar.colorpicker-hidden { |
| | | display: none; } |
| | | |
| | | .colorpicker-inline.colorpicker-visible { |
| | | display: inline-block; } |
| | | |
| | | .colorpicker.colorpicker-disabled:after { |
| | | border: none; |
| | | content: ''; |
| | | display: block; |
| | | width: 100%; |
| | | height: 100%; |
| | | background: rgba(233, 236, 239, 0.33); |
| | | top: 0; |
| | | left: 0; |
| | | right: auto; |
| | | z-index: 2; |
| | | position: absolute; } |
| | | |
| | | .colorpicker.colorpicker-disabled .colorpicker-guide { |
| | | display: none; } |
| | | |
| | | /** EXTENSIONS **/ |
| | | .colorpicker-preview { |
| | | background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white; |
| | | background-size: 10px 10px; |
| | | background-position: 0 0, 5px 5px; } |
| | | |
| | | .colorpicker-preview > div { |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | width: 100%; |
| | | height: 100%; } |
| | | |
| | | .colorpicker-bar.colorpicker-swatches { |
| | | -webkit-box-shadow: none; |
| | | box-shadow: none; |
| | | height: auto; } |
| | | |
| | | .colorpicker-swatches--inner { |
| | | clear: both; |
| | | margin-top: -6px; } |
| | | |
| | | .colorpicker-swatch { |
| | | position: relative; |
| | | cursor: pointer; |
| | | float: left; |
| | | height: 16px; |
| | | width: 16px; |
| | | margin-right: 6px; |
| | | margin-top: 6px; |
| | | margin-left: 0; |
| | | display: block; |
| | | -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); |
| | | box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); |
| | | background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white; |
| | | background-size: 10px 10px; |
| | | background-position: 0 0, 5px 5px; } |
| | | |
| | | .colorpicker-swatch--inner { |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 100%; } |
| | | |
| | | .colorpicker-swatch:nth-of-type(7n+0) { |
| | | margin-right: 0; } |
| | | |
| | | .colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0) { |
| | | margin-right: 6px; } |
| | | |
| | | .colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0) { |
| | | margin-right: 0; } |
| | | |
| | | .colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0) { |
| | | margin-right: 0; } |
| | | |
| | | .colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0) { |
| | | margin-right: 6px; } |
| | | |
| | | .colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0) { |
| | | margin-right: 6px; } |
| | | |
| | | .colorpicker-swatch:last-of-type:after { |
| | | content: ""; |
| | | display: table; |
| | | clear: both; } |
| | | |
| | | *[dir='rtl'] .colorpicker-element input, |
| | | .colorpicker-element[dir='rtl'] input, |
| | | .colorpicker-element input[dir='rtl'] { |
| | | direction: ltr; |
| | | text-align: right; } |
| | | |
| | | /*# sourceMappingURL=bootstrap-colorpicker.css.map */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | {"version":3,"sources":["colorpicker.scss"],"names":[],"mappings":"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","file":"bootstrap-colorpicker.css","sourcesContent":["$outline-color: rgba(0, 0, 0, 0.2);\n$box-shadow-outline: 0 0 0 1px $outline-color;\n$bar-size-short: 16px !default;\n$base-margin: 6px !default;\n$columns: 6 !default; // this affects the number of swatches per row and the width of the color picker, saturation, etc.\n$bar-size-large: ($bar-size-short * $columns) + ($base-margin * ($columns - 1));\n\n@mixin bgCheckerBox($size: 10px) {\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0),\n linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0),\n rgb(255, 255, 255);\n background-size: $size $size;\n background-position: 0 0, $size/2 $size/2;\n}\n\n@mixin bgSaturation() {\n background: -moz-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n -moz-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* FF3.6+ */\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 1))),\n -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 1)), color-stop(100%, rgba(255, 255, 255, 0))); /* Chrome,Safari4+ */\n background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n -webkit-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* Chrome10+,Safari5.1+ */\n background: -o-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n -o-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* Opera 11.10+ */\n background: -ms-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n -ms-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* IE10+ */\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* W3C */\n}\n\n@mixin bgHueHorizontal() {\n background: -moz-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* FF3.6+ */\n background: -webkit-gradient(linear, right top, left top, color-stop(0%, rgb(255, 0, 0)), color-stop(8%, rgb(255, 128, 0)), color-stop(17%, rgb(255, 255, 0)), color-stop(25%, rgb(128, 255, 0)), color-stop(33%, rgb(0, 255, 0)), color-stop(42%, rgb(0, 255, 128)), color-stop(50%, rgb(0, 255, 255)), color-stop(58%, rgb(0, 128, 255)), color-stop(67%, rgb(0, 0, 255)), color-stop(75%, rgb(128, 0, 255)), color-stop(83%, rgb(255, 0, 255)), color-stop(92%, rgb(255, 0, 128)), color-stop(100%, rgb(255, 0, 0))); /* Chrome,Safari4+ */\n background: -webkit-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* Chrome10+,Safari5.1+ */\n background: -o-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* Opera 11.10+ */\n background: -ms-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* IE10+ */\n background: linear-gradient(to left, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* W3C */\n\n}\n\n@mixin bgHueVertical() {\n background: -moz-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* FF3.6+ */\n background: -webkit-gradient(linear, left bottom, left top, color-stop(0%, rgba(255, 0, 0, 1)), color-stop(8%, rgba(255, 128, 0, 1)), color-stop(17%, rgba(255, 255, 0, 1)), color-stop(25%, rgba(128, 255, 0, 1)), color-stop(33%, rgba(0, 255, 0, 1)), color-stop(42%, rgba(0, 255, 128, 1)), color-stop(50%, rgba(0, 255, 255, 1)), color-stop(58%, rgba(0, 128, 255, 1)), color-stop(67%, rgba(0, 0, 255, 1)), color-stop(75%, rgba(128, 0, 255, 1)), color-stop(83%, rgba(255, 0, 255, 1)), color-stop(92%, rgba(255, 0, 128, 1)), color-stop(100%, rgba(255, 0, 0, 1))); /* Chrome,Safari4+ */\n background: -webkit-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* Chrome10+,Safari5.1+ */\n background: -o-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* Opera 11.10+ */\n background: -ms-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* IE10+ */\n background: linear-gradient(to top, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* W3C */\n}\n\n.colorpicker {\n position: relative;\n display: none;\n font-size: inherit;\n color: inherit;\n text-align: left;\n list-style: none;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid $outline-color;\n //box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n padding: .75rem .75rem;\n width: ($bar-size-large + $base-margin + $bar-size-short);\n border-radius: 4px;\n box-sizing: content-box;\n}\n\n.colorpicker.colorpicker-disabled,\n.colorpicker.colorpicker-disabled * {\n cursor: default !important;\n}\n\n.colorpicker div {\n position: relative;\n}\n\n.colorpicker-popup {\n position: absolute;\n top: 100%;\n left: 0;\n float: left;\n margin-top: 1px;\n z-index: 1060;\n}\n\n.colorpicker-popup.colorpicker-bs-popover-content {\n position: relative;\n top: auto;\n left: auto;\n float: none;\n margin: 0;\n z-index: initial;\n border: none;\n padding: 0.25rem 0; // popover padding correction\n border-radius: 0;\n background: none;\n box-shadow: none;\n}\n\n.colorpicker:before,\n.colorpicker:after {\n content: \"\";\n display: table;\n clear: both;\n line-height: 0;\n}\n\n.colorpicker-clear {\n clear: both;\n display: block;\n}\n\n.colorpicker:before {\n content: '';\n display: inline-block;\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid #ccc;\n border-bottom-color: $outline-color;\n position: absolute;\n top: -7px;\n left: auto;\n right: 6px;\n}\n\n.colorpicker:after {\n content: '';\n display: inline-block;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #ffffff;\n position: absolute;\n top: -6px;\n left: auto;\n right: 7px;\n}\n\n.colorpicker.colorpicker-with-alpha {\n width: ($bar-size-large + (($base-margin + $bar-size-short) * 2));\n}\n\n.colorpicker.colorpicker-with-alpha .colorpicker-alpha {\n display: block;\n}\n\n.colorpicker-saturation {\n position: relative;\n width: $bar-size-large;\n height: $bar-size-large;\n @include bgSaturation();\n cursor: crosshair;\n float: left;\n box-shadow: $box-shadow-outline;\n margin-bottom: $base-margin;\n\n .colorpicker-guide {\n display: block;\n height: 6px;\n width: 6px;\n border-radius: 6px;\n border: 1px solid #000;\n box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n position: absolute;\n top: 0;\n left: 0;\n margin: -3px 0 0 -3px;\n }\n}\n\n.colorpicker-hue,\n.colorpicker-alpha {\n position: relative;\n width: $bar-size-short;\n height: $bar-size-large;\n float: left;\n cursor: row-resize;\n margin-left: $base-margin;\n margin-bottom: $base-margin;\n}\n\n.colorpicker-alpha-color {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.colorpicker-hue,\n.colorpicker-alpha-color {\n box-shadow: $box-shadow-outline;\n}\n\n.colorpicker-hue .colorpicker-guide,\n.colorpicker-alpha .colorpicker-guide {\n display: block;\n height: 4px;\n background: rgba(255, 255, 255, 0.8);\n border: 1px solid rgba(0, 0, 0, 0.4);\n position: absolute;\n top: 0;\n left: 0;\n margin-left: -2px;\n margin-top: -2px;\n right: -2px;\n z-index: 1;\n}\n\n.colorpicker-hue {\n @include bgHueVertical();\n}\n\n.colorpicker-alpha {\n @include bgCheckerBox();\n display: none;\n}\n\n.colorpicker-bar {\n min-height: $bar-size-short;\n margin: $base-margin 0 0 0;\n clear: both;\n text-align: center;\n font-size: 10px;\n line-height: normal;\n max-width: 100%;\n box-shadow: $box-shadow-outline;\n\n &:before {\n content: \"\";\n display: table;\n clear: both;\n }\n}\n\n.colorpicker-bar.colorpicker-bar-horizontal {\n height: $bar-size-large;\n width: $bar-size-short;\n margin: 0 0 $base-margin 0;\n float: left;\n}\n\n.colorpicker-input-addon {\n position: relative;\n}\n\n.colorpicker-input-addon i {\n display: inline-block;\n cursor: pointer;\n vertical-align: text-top;\n height: 16px;\n width: 16px;\n position: relative;\n}\n\n.colorpicker-input-addon:before {\n content: \"\";\n position: absolute;\n width: 16px;\n height: 16px;\n display: inline-block;\n vertical-align: text-top;\n @include bgCheckerBox();\n}\n\n.colorpicker.colorpicker-inline {\n position: relative;\n display: inline-block;\n float: none;\n z-index: auto;\n vertical-align: text-bottom;\n}\n\n.colorpicker.colorpicker-horizontal {\n width: $bar-size-large;\n height: auto;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-bar {\n width: $bar-size-large;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-saturation {\n float: none;\n margin-bottom: 0;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n float: none;\n width: $bar-size-large;\n height: $bar-size-short;\n cursor: col-resize;\n margin-left: 0;\n margin-top: $base-margin;\n margin-bottom: 0;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {\n position: absolute;\n display: block;\n bottom: -2px;\n left: 0;\n right: auto;\n height: auto;\n width: 4px;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue {\n @include bgHueHorizontal();\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n @include bgCheckerBox();\n}\n\n.colorpicker-inline:before,\n.colorpicker-no-arrow:before,\n.colorpicker-popup.colorpicker-bs-popover-content:before {\n content: none;\n display: none;\n}\n\n.colorpicker-inline:after,\n.colorpicker-no-arrow:after,\n.colorpicker-popup.colorpicker-bs-popover-content:after {\n content: none;\n display: none;\n}\n\n\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue {\n user-select: none;\n}\n\n.colorpicker,\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue,\n.colorpicker-bar {\n &.colorpicker-visible {\n display: block;\n }\n}\n\n.colorpicker,\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue,\n.colorpicker-bar {\n &.colorpicker-hidden {\n display: none;\n }\n}\n\n.colorpicker-inline.colorpicker-visible {\n display: inline-block;\n}\n\n.colorpicker.colorpicker-disabled:after {\n border: none;\n content: '';\n display: block;\n width: 100%;\n height: 100%;\n background: rgba(233, 236, 239, 0.33);\n top: 0;\n left: 0;\n right: auto;\n z-index: 2;\n position: absolute;\n}\n\n.colorpicker.colorpicker-disabled .colorpicker-guide {\n display: none;\n}\n\n/** EXTENSIONS **/\n\n.colorpicker-preview {\n @include bgCheckerBox();\n}\n\n.colorpicker-preview > div {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n\n.colorpicker-bar.colorpicker-swatches {\n box-shadow: none;\n height: auto;\n}\n\n.colorpicker-swatches--inner {\n clear: both;\n margin-top: -$base-margin;\n}\n\n.colorpicker-swatch {\n position: relative;\n cursor: pointer;\n float: left;\n height: $bar-size-short;\n width: $bar-size-short;\n margin-right: $base-margin;\n margin-top: $base-margin;\n margin-left: 0;\n display: block;\n box-shadow: $box-shadow-outline;\n @include bgCheckerBox();\n}\n\n.colorpicker-swatch--inner {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n// saturation + hue vertical (clear margin-right on nth column + 1)\n.colorpicker-swatch:nth-of-type(#{$columns + 1}n+0) {\n margin-right: 0;\n}\n\n// saturation + hue + alpha vertical (clear margin-right on nth column + 2)\n.colorpicker-with-alpha {\n .colorpicker-swatch:nth-of-type(#{$columns + 1}n+0) {\n margin-right: $base-margin;\n }\n\n .colorpicker-swatch:nth-of-type(#{$columns + 2}n+0) {\n margin-right: 0;\n }\n}\n\n// horizontal mode (clear margin-right on nth column)\n.colorpicker-horizontal {\n .colorpicker-swatch:nth-of-type(#{$columns}n+0) {\n margin-right: 0;\n }\n\n .colorpicker-swatch:nth-of-type(#{$columns + 1}n+0) {\n margin-right: $base-margin;\n }\n\n .colorpicker-swatch:nth-of-type(#{$columns + 2}n+0) {\n margin-right: $base-margin;\n }\n}\n\n.colorpicker-swatch:last-of-type:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n// RTL writing mode support\n*[dir='rtl'] .colorpicker-element input,\n.colorpicker-element[dir='rtl'] input,\n.colorpicker-element input[dir='rtl'] {\n direction: ltr;\n text-align: right;\n}\n"]} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /*! |
| | | * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4. |
| | | * @package bootstrap-colorpicker |
| | | * @version v3.1.2 |
| | | * @license MIT |
| | | * @link https://farbelous.github.io/bootstrap-colorpicker/ |
| | | * @link https://github.com/farbelous/bootstrap-colorpicker.git |
| | | */ |
| | | .colorpicker{position:relative;display:none;font-size:inherit;color:inherit;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);padding:.75rem .75rem;width:148px;border-radius:4px;-webkit-box-sizing:content-box;box-sizing:content-box}.colorpicker.colorpicker-disabled,.colorpicker.colorpicker-disabled *{cursor:default!important}.colorpicker div{position:relative}.colorpicker-popup{position:absolute;top:100%;left:0;float:left;margin-top:1px;z-index:1060}.colorpicker-popup.colorpicker-bs-popover-content{position:relative;top:auto;left:auto;float:none;margin:0;z-index:initial;border:none;padding:.25rem 0;border-radius:0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.colorpicker:after,.colorpicker:before{content:"";display:table;clear:both;line-height:0}.colorpicker-clear{clear:both;display:block}.colorpicker:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:auto;right:6px}.colorpicker:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:auto;right:7px}.colorpicker.colorpicker-with-alpha{width:170px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-saturation{position:relative;width:126px;height:126px;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(black)),-webkit-gradient(linear,left top,right top,from(white),to(rgba(255,255,255,0)));background:linear-gradient(to bottom,transparent 0,#000 100%),linear-gradient(to right,#fff 0,rgba(255,255,255,0) 100%);cursor:crosshair;float:left;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2);margin-bottom:6px}.colorpicker-saturation .colorpicker-guide{display:block;height:6px;width:6px;border-radius:6px;border:1px solid #000;-webkit-box-shadow:0 0 0 1px rgba(255,255,255,.8);box-shadow:0 0 0 1px rgba(255,255,255,.8);position:absolute;top:0;left:0;margin:-3px 0 0 -3px}.colorpicker-alpha,.colorpicker-hue{position:relative;width:16px;height:126px;float:left;cursor:row-resize;margin-left:6px;margin-bottom:6px}.colorpicker-alpha-color{position:absolute;top:0;left:0;width:100%;height:100%}.colorpicker-alpha-color,.colorpicker-hue{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.colorpicker-alpha .colorpicker-guide,.colorpicker-hue .colorpicker-guide{display:block;height:4px;background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.4);position:absolute;top:0;left:0;margin-left:-2px;margin-top:-2px;right:-2px;z-index:1}.colorpicker-hue{background:-webkit-gradient(linear,left bottom,left top,from(red),color-stop(8%,#ff8000),color-stop(17%,#ff0),color-stop(25%,#80ff00),color-stop(33%,#0f0),color-stop(42%,#00ff80),color-stop(50%,#0ff),color-stop(58%,#0080ff),color-stop(67%,#00f),color-stop(75%,#8000ff),color-stop(83%,#ff00ff),color-stop(92%,#ff0080),to(red));background:linear-gradient(to top,red 0,#ff8000 8%,#ff0 17%,#80ff00 25%,#0f0 33%,#00ff80 42%,#0ff 50%,#0080ff 58%,#00f 67%,#8000ff 75%,#ff00ff 83%,#ff0080 92%,red 100%)}.colorpicker-alpha{background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px;display:none}.colorpicker-bar{min-height:16px;margin:6px 0 0 0;clear:both;text-align:center;font-size:10px;line-height:normal;max-width:100%;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.colorpicker-bar:before{content:"";display:table;clear:both}.colorpicker-bar.colorpicker-bar-horizontal{height:126px;width:16px;margin:0 0 6px 0;float:left}.colorpicker-input-addon{position:relative}.colorpicker-input-addon i{display:inline-block;cursor:pointer;vertical-align:text-top;height:16px;width:16px;position:relative}.colorpicker-input-addon:before{content:"";position:absolute;width:16px;height:16px;display:inline-block;vertical-align:text-top;background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none;z-index:auto;vertical-align:text-bottom}.colorpicker.colorpicker-horizontal{width:126px;height:auto}.colorpicker.colorpicker-horizontal .colorpicker-bar{width:126px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{float:none;margin-bottom:0}.colorpicker.colorpicker-horizontal .colorpicker-alpha,.colorpicker.colorpicker-horizontal .colorpicker-hue{float:none;width:126px;height:16px;cursor:col-resize;margin-left:0;margin-top:6px;margin-bottom:0}.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide,.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide{position:absolute;display:block;bottom:-2px;left:0;right:auto;height:auto;width:4px}.colorpicker.colorpicker-horizontal .colorpicker-hue{background:-webkit-gradient(linear,right top,left top,from(red),color-stop(8%,#ff8000),color-stop(17%,#ff0),color-stop(25%,#80ff00),color-stop(33%,#0f0),color-stop(42%,#00ff80),color-stop(50%,#0ff),color-stop(58%,#0080ff),color-stop(67%,#00f),color-stop(75%,#8000ff),color-stop(83%,#ff00ff),color-stop(92%,#ff0080),to(red));background:linear-gradient(to left,red 0,#ff8000 8%,#ff0 17%,#80ff00 25%,#0f0 33%,#00ff80 42%,#0ff 50%,#0080ff 58%,#00f 67%,#8000ff 75%,#ff00ff 83%,#ff0080 92%,red 100%)}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker-inline:before,.colorpicker-no-arrow:before,.colorpicker-popup.colorpicker-bs-popover-content:before{content:none;display:none}.colorpicker-inline:after,.colorpicker-no-arrow:after,.colorpicker-popup.colorpicker-bs-popover-content:after{content:none;display:none}.colorpicker-alpha,.colorpicker-hue,.colorpicker-saturation{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.colorpicker-alpha.colorpicker-visible,.colorpicker-bar.colorpicker-visible,.colorpicker-hue.colorpicker-visible,.colorpicker-saturation.colorpicker-visible,.colorpicker.colorpicker-visible{display:block}.colorpicker-alpha.colorpicker-hidden,.colorpicker-bar.colorpicker-hidden,.colorpicker-hue.colorpicker-hidden,.colorpicker-saturation.colorpicker-hidden,.colorpicker.colorpicker-hidden{display:none}.colorpicker-inline.colorpicker-visible{display:inline-block}.colorpicker.colorpicker-disabled:after{border:none;content:'';display:block;width:100%;height:100%;background:rgba(233,236,239,.33);top:0;left:0;right:auto;z-index:2;position:absolute}.colorpicker.colorpicker-disabled .colorpicker-guide{display:none}.colorpicker-preview{background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker-preview>div{position:absolute;left:0;top:0;width:100%;height:100%}.colorpicker-bar.colorpicker-swatches{-webkit-box-shadow:none;box-shadow:none;height:auto}.colorpicker-swatches--inner{clear:both;margin-top:-6px}.colorpicker-swatch{position:relative;cursor:pointer;float:left;height:16px;width:16px;margin-right:6px;margin-top:6px;margin-left:0;display:block;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2);background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker-swatch--inner{position:absolute;top:0;left:0;width:100%;height:100%}.colorpicker-swatch:nth-of-type(7n+0){margin-right:0}.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0){margin-right:6px}.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0){margin-right:0}.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0){margin-right:0}.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0){margin-right:6px}.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0){margin-right:6px}.colorpicker-swatch:last-of-type:after{content:"";display:table;clear:both}.colorpicker-element input[dir=rtl],.colorpicker-element[dir=rtl] input,[dir=rtl] .colorpicker-element input{direction:ltr;text-align:right} |
| | | /*# sourceMappingURL=bootstrap-colorpicker.min.css.map */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | {"version":3,"sources":["bootstrap-colorpicker.css","bootstrap-colorpicker.css"],"names":[],"mappings":"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","file":"bootstrap-colorpicker.min.css","sourcesContent":[".colorpicker {\n position: relative;\n display: none;\n font-size: inherit;\n color: inherit;\n text-align: left;\n list-style: none;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n padding: .75rem .75rem;\n width: 148px;\n border-radius: 4px;\n -webkit-box-sizing: content-box;\n box-sizing: content-box; }\n\n.colorpicker.colorpicker-disabled,\n.colorpicker.colorpicker-disabled * {\n cursor: default !important; }\n\n.colorpicker div {\n position: relative; }\n\n.colorpicker-popup {\n position: absolute;\n top: 100%;\n left: 0;\n float: left;\n margin-top: 1px;\n z-index: 1060; }\n\n.colorpicker-popup.colorpicker-bs-popover-content {\n position: relative;\n top: auto;\n left: auto;\n float: none;\n margin: 0;\n z-index: initial;\n border: none;\n padding: 0.25rem 0;\n border-radius: 0;\n background: none;\n -webkit-box-shadow: none;\n box-shadow: none; }\n\n.colorpicker:before,\n.colorpicker:after {\n content: \"\";\n display: table;\n clear: both;\n line-height: 0; }\n\n.colorpicker-clear {\n clear: both;\n display: block; }\n\n.colorpicker:before {\n content: '';\n display: inline-block;\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid #ccc;\n border-bottom-color: rgba(0, 0, 0, 0.2);\n position: absolute;\n top: -7px;\n left: auto;\n right: 6px; }\n\n.colorpicker:after {\n content: '';\n display: inline-block;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #ffffff;\n position: absolute;\n top: -6px;\n left: auto;\n right: 7px; }\n\n.colorpicker.colorpicker-with-alpha {\n width: 170px; }\n\n.colorpicker.colorpicker-with-alpha .colorpicker-alpha {\n display: block; }\n\n.colorpicker-saturation {\n position: relative;\n width: 126px;\n height: 126px;\n /* FF3.6+ */\n /* Chrome,Safari4+ */\n /* Chrome10+,Safari5.1+ */\n /* Opera 11.10+ */\n /* IE10+ */\n background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(black)), -webkit-gradient(linear, left top, right top, from(white), to(rgba(255, 255, 255, 0)));\n background: linear-gradient(to bottom, transparent 0%, black 100%), linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);\n /* W3C */\n cursor: crosshair;\n float: left;\n -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n margin-bottom: 6px; }\n .colorpicker-saturation .colorpicker-guide {\n display: block;\n height: 6px;\n width: 6px;\n border-radius: 6px;\n border: 1px solid #000;\n -webkit-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n position: absolute;\n top: 0;\n left: 0;\n margin: -3px 0 0 -3px; }\n\n.colorpicker-hue,\n.colorpicker-alpha {\n position: relative;\n width: 16px;\n height: 126px;\n float: left;\n cursor: row-resize;\n margin-left: 6px;\n margin-bottom: 6px; }\n\n.colorpicker-alpha-color {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n\n.colorpicker-hue,\n.colorpicker-alpha-color {\n -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }\n\n.colorpicker-hue .colorpicker-guide,\n.colorpicker-alpha .colorpicker-guide {\n display: block;\n height: 4px;\n background: rgba(255, 255, 255, 0.8);\n border: 1px solid rgba(0, 0, 0, 0.4);\n position: absolute;\n top: 0;\n left: 0;\n margin-left: -2px;\n margin-top: -2px;\n right: -2px;\n z-index: 1; }\n\n.colorpicker-hue {\n /* FF3.6+ */\n /* Chrome,Safari4+ */\n /* Chrome10+,Safari5.1+ */\n /* Opera 11.10+ */\n /* IE10+ */\n background: -webkit-gradient(linear, left bottom, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));\n background: linear-gradient(to top, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);\n /* W3C */ }\n\n.colorpicker-alpha {\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n background-size: 10px 10px;\n background-position: 0 0, 5px 5px;\n display: none; }\n\n.colorpicker-bar {\n min-height: 16px;\n margin: 6px 0 0 0;\n clear: both;\n text-align: center;\n font-size: 10px;\n line-height: normal;\n max-width: 100%;\n -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }\n .colorpicker-bar:before {\n content: \"\";\n display: table;\n clear: both; }\n\n.colorpicker-bar.colorpicker-bar-horizontal {\n height: 126px;\n width: 16px;\n margin: 0 0 6px 0;\n float: left; }\n\n.colorpicker-input-addon {\n position: relative; }\n\n.colorpicker-input-addon i {\n display: inline-block;\n cursor: pointer;\n vertical-align: text-top;\n height: 16px;\n width: 16px;\n position: relative; }\n\n.colorpicker-input-addon:before {\n content: \"\";\n position: absolute;\n width: 16px;\n height: 16px;\n display: inline-block;\n vertical-align: text-top;\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n background-size: 10px 10px;\n background-position: 0 0, 5px 5px; }\n\n.colorpicker.colorpicker-inline {\n position: relative;\n display: inline-block;\n float: none;\n z-index: auto;\n vertical-align: text-bottom; }\n\n.colorpicker.colorpicker-horizontal {\n width: 126px;\n height: auto; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-bar {\n width: 126px; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-saturation {\n float: none;\n margin-bottom: 0; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n float: none;\n width: 126px;\n height: 16px;\n cursor: col-resize;\n margin-left: 0;\n margin-top: 6px;\n margin-bottom: 0; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {\n position: absolute;\n display: block;\n bottom: -2px;\n left: 0;\n right: auto;\n height: auto;\n width: 4px; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue {\n /* FF3.6+ */\n /* Chrome,Safari4+ */\n /* Chrome10+,Safari5.1+ */\n /* Opera 11.10+ */\n /* IE10+ */\n background: -webkit-gradient(linear, right top, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));\n background: linear-gradient(to left, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);\n /* W3C */ }\n\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n background-size: 10px 10px;\n background-position: 0 0, 5px 5px; }\n\n.colorpicker-inline:before,\n.colorpicker-no-arrow:before,\n.colorpicker-popup.colorpicker-bs-popover-content:before {\n content: none;\n display: none; }\n\n.colorpicker-inline:after,\n.colorpicker-no-arrow:after,\n.colorpicker-popup.colorpicker-bs-popover-content:after {\n content: none;\n display: none; }\n\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n\n.colorpicker.colorpicker-visible,\n.colorpicker-alpha.colorpicker-visible,\n.colorpicker-saturation.colorpicker-visible,\n.colorpicker-hue.colorpicker-visible,\n.colorpicker-bar.colorpicker-visible {\n display: block; }\n\n.colorpicker.colorpicker-hidden,\n.colorpicker-alpha.colorpicker-hidden,\n.colorpicker-saturation.colorpicker-hidden,\n.colorpicker-hue.colorpicker-hidden,\n.colorpicker-bar.colorpicker-hidden {\n display: none; }\n\n.colorpicker-inline.colorpicker-visible {\n display: inline-block; }\n\n.colorpicker.colorpicker-disabled:after {\n border: none;\n content: '';\n display: block;\n width: 100%;\n height: 100%;\n background: rgba(233, 236, 239, 0.33);\n top: 0;\n left: 0;\n right: auto;\n z-index: 2;\n position: absolute; }\n\n.colorpicker.colorpicker-disabled .colorpicker-guide {\n display: none; }\n\n/** EXTENSIONS **/\n.colorpicker-preview {\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n background-size: 10px 10px;\n background-position: 0 0, 5px 5px; }\n\n.colorpicker-preview > div {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%; }\n\n.colorpicker-bar.colorpicker-swatches {\n -webkit-box-shadow: none;\n box-shadow: none;\n height: auto; }\n\n.colorpicker-swatches--inner {\n clear: both;\n margin-top: -6px; }\n\n.colorpicker-swatch {\n position: relative;\n cursor: pointer;\n float: left;\n height: 16px;\n width: 16px;\n margin-right: 6px;\n margin-top: 6px;\n margin-left: 0;\n display: block;\n -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n background-size: 10px 10px;\n background-position: 0 0, 5px 5px; }\n\n.colorpicker-swatch--inner {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n\n.colorpicker-swatch:nth-of-type(7n+0) {\n margin-right: 0; }\n\n.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0) {\n margin-right: 6px; }\n\n.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0) {\n margin-right: 0; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0) {\n margin-right: 0; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0) {\n margin-right: 6px; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0) {\n margin-right: 6px; }\n\n.colorpicker-swatch:last-of-type:after {\n content: \"\";\n display: table;\n clear: both; }\n\n*[dir='rtl'] .colorpicker-element input,\n.colorpicker-element[dir='rtl'] input,\n.colorpicker-element input[dir='rtl'] {\n direction: ltr;\n text-align: right; }\n\n/*# sourceMappingURL=bootstrap-colorpicker.css.map */\n",".colorpicker {\n position: relative;\n display: none;\n font-size: inherit;\n color: inherit;\n text-align: left;\n list-style: none;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n padding: .75rem .75rem;\n width: 148px;\n border-radius: 4px;\n -webkit-box-sizing: content-box;\n box-sizing: content-box; }\n\n.colorpicker.colorpicker-disabled,\n.colorpicker.colorpicker-disabled * {\n cursor: default !important; }\n\n.colorpicker div {\n position: relative; }\n\n.colorpicker-popup {\n position: absolute;\n top: 100%;\n left: 0;\n float: left;\n margin-top: 1px;\n z-index: 1060; }\n\n.colorpicker-popup.colorpicker-bs-popover-content {\n position: relative;\n top: auto;\n left: auto;\n float: none;\n margin: 0;\n z-index: initial;\n border: none;\n padding: 0.25rem 0;\n border-radius: 0;\n background: none;\n -webkit-box-shadow: none;\n box-shadow: none; }\n\n.colorpicker:before,\n.colorpicker:after {\n content: \"\";\n display: table;\n clear: both;\n line-height: 0; }\n\n.colorpicker-clear {\n clear: both;\n display: block; }\n\n.colorpicker:before {\n content: '';\n display: inline-block;\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid #ccc;\n border-bottom-color: rgba(0, 0, 0, 0.2);\n position: absolute;\n top: -7px;\n left: auto;\n right: 6px; }\n\n.colorpicker:after {\n content: '';\n display: inline-block;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #ffffff;\n position: absolute;\n top: -6px;\n left: auto;\n right: 7px; }\n\n.colorpicker.colorpicker-with-alpha {\n width: 170px; }\n\n.colorpicker.colorpicker-with-alpha .colorpicker-alpha {\n display: block; }\n\n.colorpicker-saturation {\n position: relative;\n width: 126px;\n height: 126px;\n /* FF3.6+ */\n /* Chrome,Safari4+ */\n /* Chrome10+,Safari5.1+ */\n /* Opera 11.10+ */\n /* IE10+ */\n background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(black)), -webkit-gradient(linear, left top, right top, from(white), to(rgba(255, 255, 255, 0)));\n background: linear-gradient(to bottom, transparent 0%, black 100%), linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);\n /* W3C */\n cursor: crosshair;\n float: left;\n -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n margin-bottom: 6px; }\n .colorpicker-saturation .colorpicker-guide {\n display: block;\n height: 6px;\n width: 6px;\n border-radius: 6px;\n border: 1px solid #000;\n -webkit-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n position: absolute;\n top: 0;\n left: 0;\n margin: -3px 0 0 -3px; }\n\n.colorpicker-hue,\n.colorpicker-alpha {\n position: relative;\n width: 16px;\n height: 126px;\n float: left;\n cursor: row-resize;\n margin-left: 6px;\n margin-bottom: 6px; }\n\n.colorpicker-alpha-color {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n\n.colorpicker-hue,\n.colorpicker-alpha-color {\n -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }\n\n.colorpicker-hue .colorpicker-guide,\n.colorpicker-alpha .colorpicker-guide {\n display: block;\n height: 4px;\n background: rgba(255, 255, 255, 0.8);\n border: 1px solid rgba(0, 0, 0, 0.4);\n position: absolute;\n top: 0;\n left: 0;\n margin-left: -2px;\n margin-top: -2px;\n right: -2px;\n z-index: 1; }\n\n.colorpicker-hue {\n /* FF3.6+ */\n /* Chrome,Safari4+ */\n /* Chrome10+,Safari5.1+ */\n /* Opera 11.10+ */\n /* IE10+ */\n background: -webkit-gradient(linear, left bottom, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));\n background: linear-gradient(to top, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);\n /* W3C */ }\n\n.colorpicker-alpha {\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n background-size: 10px 10px;\n background-position: 0 0, 5px 5px;\n display: none; }\n\n.colorpicker-bar {\n min-height: 16px;\n margin: 6px 0 0 0;\n clear: both;\n text-align: center;\n font-size: 10px;\n line-height: normal;\n max-width: 100%;\n -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }\n .colorpicker-bar:before {\n content: \"\";\n display: table;\n clear: both; }\n\n.colorpicker-bar.colorpicker-bar-horizontal {\n height: 126px;\n width: 16px;\n margin: 0 0 6px 0;\n float: left; }\n\n.colorpicker-input-addon {\n position: relative; }\n\n.colorpicker-input-addon i {\n display: inline-block;\n cursor: pointer;\n vertical-align: text-top;\n height: 16px;\n width: 16px;\n position: relative; }\n\n.colorpicker-input-addon:before {\n content: \"\";\n position: absolute;\n width: 16px;\n height: 16px;\n display: inline-block;\n vertical-align: text-top;\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n background-size: 10px 10px;\n background-position: 0 0, 5px 5px; }\n\n.colorpicker.colorpicker-inline {\n position: relative;\n display: inline-block;\n float: none;\n z-index: auto;\n vertical-align: text-bottom; }\n\n.colorpicker.colorpicker-horizontal {\n width: 126px;\n height: auto; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-bar {\n width: 126px; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-saturation {\n float: none;\n margin-bottom: 0; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n float: none;\n width: 126px;\n height: 16px;\n cursor: col-resize;\n margin-left: 0;\n margin-top: 6px;\n margin-bottom: 0; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {\n position: absolute;\n display: block;\n bottom: -2px;\n left: 0;\n right: auto;\n height: auto;\n width: 4px; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue {\n /* FF3.6+ */\n /* Chrome,Safari4+ */\n /* Chrome10+,Safari5.1+ */\n /* Opera 11.10+ */\n /* IE10+ */\n background: -webkit-gradient(linear, right top, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));\n background: linear-gradient(to left, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);\n /* W3C */ }\n\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n background-size: 10px 10px;\n background-position: 0 0, 5px 5px; }\n\n.colorpicker-inline:before,\n.colorpicker-no-arrow:before,\n.colorpicker-popup.colorpicker-bs-popover-content:before {\n content: none;\n display: none; }\n\n.colorpicker-inline:after,\n.colorpicker-no-arrow:after,\n.colorpicker-popup.colorpicker-bs-popover-content:after {\n content: none;\n display: none; }\n\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n\n.colorpicker.colorpicker-visible,\n.colorpicker-alpha.colorpicker-visible,\n.colorpicker-saturation.colorpicker-visible,\n.colorpicker-hue.colorpicker-visible,\n.colorpicker-bar.colorpicker-visible {\n display: block; }\n\n.colorpicker.colorpicker-hidden,\n.colorpicker-alpha.colorpicker-hidden,\n.colorpicker-saturation.colorpicker-hidden,\n.colorpicker-hue.colorpicker-hidden,\n.colorpicker-bar.colorpicker-hidden {\n display: none; }\n\n.colorpicker-inline.colorpicker-visible {\n display: inline-block; }\n\n.colorpicker.colorpicker-disabled:after {\n border: none;\n content: '';\n display: block;\n width: 100%;\n height: 100%;\n background: rgba(233, 236, 239, 0.33);\n top: 0;\n left: 0;\n right: auto;\n z-index: 2;\n position: absolute; }\n\n.colorpicker.colorpicker-disabled .colorpicker-guide {\n display: none; }\n\n/** EXTENSIONS **/\n.colorpicker-preview {\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n background-size: 10px 10px;\n background-position: 0 0, 5px 5px; }\n\n.colorpicker-preview > div {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%; }\n\n.colorpicker-bar.colorpicker-swatches {\n -webkit-box-shadow: none;\n box-shadow: none;\n height: auto; }\n\n.colorpicker-swatches--inner {\n clear: both;\n margin-top: -6px; }\n\n.colorpicker-swatch {\n position: relative;\n cursor: pointer;\n float: left;\n height: 16px;\n width: 16px;\n margin-right: 6px;\n margin-top: 6px;\n margin-left: 0;\n display: block;\n -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n background-size: 10px 10px;\n background-position: 0 0, 5px 5px; }\n\n.colorpicker-swatch--inner {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n\n.colorpicker-swatch:nth-of-type(7n+0) {\n margin-right: 0; }\n\n.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0) {\n margin-right: 6px; }\n\n.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0) {\n margin-right: 0; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0) {\n margin-right: 0; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0) {\n margin-right: 6px; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0) {\n margin-right: 6px; }\n\n.colorpicker-swatch:last-of-type:after {\n content: \"\";\n display: table;\n clear: both; }\n\n*[dir='rtl'] .colorpicker-element input,\n.colorpicker-element[dir='rtl'] input,\n.colorpicker-element input[dir='rtl'] {\n direction: ltr;\n text-align: right; }\n\n/*# sourceMappingURL=bootstrap-colorpicker.css.map */\n"]} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap e5fc9649974c93b0b79b","webpack:///external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack:///./src/js/Extension.js","webpack:///./src/js/ColorItem.js","webpack:///./src/js/options.js","webpack:///./src/js/extensions/Palette.js","webpack:///./node_modules/color-name/index.js","webpack:///./node_modules/color-convert/conversions.js","webpack:///./src/js/plugin.js","webpack:///./src/js/Colorpicker.js","webpack:///./src/js/extensions/index.js","webpack:///./src/js/extensions/Debugger.js","webpack:///./src/js/extensions/Preview.js","webpack:///./src/js/extensions/Swatches.js","webpack:///./src/js/SliderHandler.js","webpack:///./src/js/PopupHandler.js","webpack:///./src/js/InputHandler.js","webpack:///./node_modules/color/index.js","webpack:///./node_modules/color-string/index.js","webpack:///./node_modules/simple-swizzle/index.js","webpack:///./node_modules/is-arrayish/index.js","webpack:///./node_modules/color-convert/index.js","webpack:///./node_modules/color-convert/route.js","webpack:///./src/js/ColorHandler.js","webpack:///./src/js/PickerHandler.js","webpack:///./src/js/AddonHandler.js"],"names":["Extension","colorpicker","options","element","length","Error","on","$","proxy","onCreate","onDestroy","onUpdate","onChange","onInvalid","onShow","onHide","onEnable","onDisable","color","realColor","event","off","HSVAColor","h","s","v","a","isNaN","ColorItem","fn","args","arguments","_color","result","apply","QixColor","format","_original","replace","sanitizeFormat","valid","parse","_format","isHex","model","hue","saturation","value","alpha","hasAlpha","toObject","string","round","undefined","str","isValid","isDark","isLight","formula","hues","Array","isArray","colorFormulas","hasOwnProperty","colors","mainColor","forEach","levels","saturationv","push","Math","sanitizeString","e","String","match","toLowerCase","complementary","triad","tetrad","splitcomplement","sassVars","sliderSize","bar_size_short","columns","base_margin","customClass","fallbackColor","horizontal","inline","container","popover","animation","placement","fallbackPlacement","debug","input","addon","autoInputFallback","useHashPrefix","useAlpha","template","extensions","name","showText","sliders","selector","maxLeft","maxTop","callLeft","callTop","childSelector","slidersHorz","defaults","namesAsValues","Palette","extend","Object","keys","getLength","indexOf","toUpperCase","getValue","getName","defaultValue","plugin","Colorpicker","option","fnArgs","prototype","slice","call","isSingleElement","returnValue","$elements","each","$this","inst","data","isFunction","constructor","colorPickerIdCounter","root","self","colorHandler","pickerHandler","picker","id","lastEvent","alias","addClass","attr","disabled","inputHandler","InputHandler","ColorHandler","sliderHandler","SliderHandler","popupHandler","PopupHandler","PickerHandler","addonHandler","AddonHandler","init","trigger","bind","initExtensions","attach","update","isDisabled","disable","ext","registerExtension","ExtensionClass","config","unbind","removeClass","removeData","show","hide","toggle","val","ch","hasColor","equals","createColor","assureColor","enable","eventName","type","coreExtensions","Debugger","Preview","Swatches","eventCounter","hasInput","onChangeInput","logMessage","debugger","logArgs","log","elementInner","find","append","css","html","toRgbString","barTemplate","swatchTemplate","isEnabled","load","swatchContainer","isAliased","empty","$swatch","$sw","setValue","currentSlider","mousePointer","left","top","onMove","defaultOnMove","slider","cp","getFallbackColor","getClone","guideStyle","focus","sliderClasses","sliderName","join","pressed","moved","released","pageX","pageY","originalEvent","touches","target","zone","closest","is","parent","guide","get","offset","style","preventDefault","max","min","popoverTarget","popoverTip","clicking","hidding","showing","hasAddon","createPopover","reposition","document","onClickingInside","isOrIsInside","currentTarget","isClickingInside","_defaults","content","tip","fireShow","fireHide","isVisible","stopPropagation","isPopover","isHidden","hasClass","_initValue","onkeyup","onchange","map","item","getFormattedColor","prop","inputVal","getColorString","resolveColorDelegate","isInvalidColor","fallbackOnInvalid","isAlphaEnabled","fallback","console","warn","extResolvedColor","resolveColor","hasTransparency","_supportsAlphaBar","pickerParent","appendTo","remove","vertical","saturationGuide","hueGuide","alphaGuide","hsva","toHsvaRatio","getCloneHueOnly","toHexString","hexColor","alphaBg","colorStr","styles","icn","eq"],"mappings":"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D;AACF;AACD,aAAOqB,YAAP;AACD;;AAED;;;;;;;;;;6BAOSrB,I,EAA4B;AAAA,UAAtBqB,YAAsB,uEAAP,KAAO;;AACnC,UAAI,EAAE,OAAOrB,IAAP,KAAgB,QAAlB,KAA+B,CAAC,KAAKpG,OAAL,CAAa8D,MAAjD,EAAyD;AACvD,eAAO2D,YAAP;AACD;AACD,UAAI,KAAKzH,OAAL,CAAa8D,MAAb,CAAoBD,cAApB,CAAmCuC,IAAnC,CAAJ,EAA8C;AAC5C,eAAO,KAAKpG,OAAL,CAAa8D,MAAb,CAAoBsC,IAApB,CAAP;AACD;AACD,aAAOqB,YAAP;AACD;;;;EAvGmB3H,mB;;kBA0GPkH,O;;;;;;;ACrJH;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvJA;AACA,kBAAkB,mBAAO,CAAC,CAAY;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,QAAQ,4BAA4B;AACpC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,6BAA6B;AACpC,WAAW,iCAAiC;AAC5C,UAAU,gCAAgC;AAC1C,WAAW,iCAAiC;AAC5C,OAAO,qCAAqC;AAC5C,SAAS,2CAA2C;AACpD,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE,mDAAmD,cAAc;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO,QAAQ;AAC/B,gBAAgB,OAAO,QAAQ;AAC/B,iBAAiB,OAAO,OAAO;AAC/B,iBAAiB,OAAO,OAAO;AAC/B,gBAAgB,QAAQ,OAAO;AAC/B,gBAAgB,QAAQ,OAAO;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sEAAsE;;AAEtE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA+C,EAAE,UAAU,EAAE;AAC7D;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA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ACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,iBAAiB,cAAc;AAC/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,qEAAqE,kCAAkC,EAAE;;AAEzG;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACjeA;AACA,iBAAiB,mBAAO,CAAC,CAAY;AACrC,cAAc,mBAAO,CAAC,EAAgB;;AAEtC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,IAAI;AAC7B,wBAAwB,EAAE,WAAW,EAAE;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACzOa;;AAEb,iBAAiB,mBAAO,CAAC,EAAa;;AAEtC;AACA;;AAEA;AACA;;AAEA,mCAAmC,SAAS;AAC5C;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;AC5Ba;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;ACTA,kBAAkB,mBAAO,CAAC,CAAe;AACzC,YAAY,mBAAO,CAAC,EAAS;;AAE7B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wDAAwD,uCAAuC;AAC/F,sDAAsD,qCAAqC;;AAE3F;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF,CAAC;;AAED;;;;;;;AC7EA,kBAAkB,mBAAO,CAAC,CAAe;;AAEzC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,SAAS;AAC9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","file":"bootstrap-colorpicker.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"bootstrap-colorpicker\", [\"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bootstrap-colorpicker\"] = factory(require(\"jquery\"));\n\telse\n\t\troot[\"bootstrap-colorpicker\"] = factory(root[\"jQuery\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap e5fc9649974c93b0b79b","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}\n// module id = 0\n// module chunks = 0 1","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Colorpicker extension class.\n */\nclass Extension {\n /**\n * @param {Colorpicker} colorpicker\n * @param {Object} options\n */\n constructor(colorpicker, options = {}) {\n /**\n * The colorpicker instance\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * Extension options\n *\n * @type {Object}\n */\n this.options = options;\n\n if (!(this.colorpicker.element && this.colorpicker.element.length)) {\n throw new Error('Extension: this.colorpicker.element is not valid');\n }\n\n this.colorpicker.element.on('colorpickerCreate.colorpicker-ext', $.proxy(this.onCreate, this));\n this.colorpicker.element.on('colorpickerDestroy.colorpicker-ext', $.proxy(this.onDestroy, this));\n this.colorpicker.element.on('colorpickerUpdate.colorpicker-ext', $.proxy(this.onUpdate, this));\n this.colorpicker.element.on('colorpickerChange.colorpicker-ext', $.proxy(this.onChange, this));\n this.colorpicker.element.on('colorpickerInvalid.colorpicker-ext', $.proxy(this.onInvalid, this));\n this.colorpicker.element.on('colorpickerShow.colorpicker-ext', $.proxy(this.onShow, this));\n this.colorpicker.element.on('colorpickerHide.colorpicker-ext', $.proxy(this.onHide, this));\n this.colorpicker.element.on('colorpickerEnable.colorpicker-ext', $.proxy(this.onEnable, this));\n this.colorpicker.element.on('colorpickerDisable.colorpicker-ext', $.proxy(this.onDisable, this));\n }\n\n /**\n * Function called every time a new color needs to be created.\n * Return false to skip this resolver and continue with other extensions' ones\n * or return anything else to consider the color resolved.\n *\n * @param {ColorItem|String|*} color\n * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n * @return {ColorItem|String|*}\n */\n resolveColor(color, realColor = true) {\n return false;\n }\n\n /**\n * Method called after the colorpicker is created\n *\n * @listens Colorpicker#colorpickerCreate\n * @param {Event} event\n */\n onCreate(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker is destroyed\n *\n * @listens Colorpicker#colorpickerDestroy\n * @param {Event} event\n */\n onDestroy(event) {\n this.colorpicker.element.off('.colorpicker-ext');\n }\n\n /**\n * Method called after the colorpicker is updated\n *\n * @listens Colorpicker#colorpickerUpdate\n * @param {Event} event\n */\n onUpdate(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker color is changed\n *\n * @listens Colorpicker#colorpickerChange\n * @param {Event} event\n */\n onChange(event) {\n // to be extended\n }\n\n /**\n * Method called when the colorpicker color is invalid\n *\n * @listens Colorpicker#colorpickerInvalid\n * @param {Event} event\n */\n onInvalid(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker is hidden\n *\n * @listens Colorpicker#colorpickerHide\n * @param {Event} event\n */\n onHide(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker is shown\n *\n * @listens Colorpicker#colorpickerShow\n * @param {Event} event\n */\n onShow(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker is disabled\n *\n * @listens Colorpicker#colorpickerDisable\n * @param {Event} event\n */\n onDisable(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker is enabled\n *\n * @listens Colorpicker#colorpickerEnable\n * @param {Event} event\n */\n onEnable(event) {\n // to be extended\n }\n}\n\nexport default Extension;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/Extension.js","/**\n * Color manipulation class, specific for Bootstrap Colorpicker\n */\nimport QixColor from 'color';\n\n/**\n * HSVA color data class, containing the hue, saturation, value and alpha\n * information.\n */\nclass HSVAColor {\n /**\n * @param {number|int} h\n * @param {number|int} s\n * @param {number|int} v\n * @param {number|int} a\n */\n constructor(h, s, v, a) {\n this.h = isNaN(h) ? 0 : h;\n this.s = isNaN(s) ? 0 : s;\n this.v = isNaN(v) ? 0 : v;\n this.a = isNaN(h) ? 1 : a;\n }\n\n toString() {\n return `${this.h}, ${this.s}%, ${this.v}%, ${this.a}`;\n }\n}\n\n/**\n * HSVA color manipulation\n */\nclass ColorItem {\n\n /**\n * Returns the HSVAColor class\n *\n * @static\n * @example let colorData = new ColorItem.HSVAColor(360, 100, 100, 1);\n * @returns {HSVAColor}\n */\n static get HSVAColor() {\n return HSVAColor;\n }\n\n /**\n * Applies a method of the QixColor API and returns a new Color object or\n * the return value of the method call.\n *\n * If no argument is provided, the internal QixColor object is returned.\n *\n * @param {String} fn QixColor function name\n * @param args QixColor function arguments\n * @example let darkerColor = color.api('darken', 0.25);\n * @example let luminosity = color.api('luminosity');\n * @example color = color.api('negate');\n * @example let qColor = color.api().negate();\n * @returns {ColorItem|QixColor|*}\n */\n api(fn, ...args) {\n if (arguments.length === 0) {\n return this._color;\n }\n\n let result = this._color[fn].apply(this._color, args);\n\n if (!(result instanceof QixColor)) {\n // return result of the method call\n return result;\n }\n\n return new ColorItem(result, this.format);\n }\n\n /**\n * Returns the original ColorItem constructor data,\n * plus a 'valid' flag to know if it's valid or not.\n *\n * @returns {{color: *, format: String, valid: boolean}}\n */\n get original() {\n return this._original;\n }\n\n /**\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n */\n constructor(color = null, format = null) {\n this.replace(color, format);\n }\n\n /**\n * Replaces the internal QixColor object with a new one.\n * This also replaces the internal original color data.\n *\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data to be parsed (if needed)\n * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n * @example color.replace('rgb(255,0,0)', 'hsl');\n * @example color.replace(hsvaColorData);\n */\n replace(color, format = null) {\n format = ColorItem.sanitizeFormat(format);\n\n /**\n * @type {{color: *, format: String}}\n * @private\n */\n this._original = {\n color: color,\n format: format,\n valid: true\n };\n /**\n * @type {QixColor}\n * @private\n */\n this._color = ColorItem.parse(color);\n\n if (this._color === null) {\n this._color = QixColor();\n this._original.valid = false;\n return;\n }\n\n /**\n * @type {*|string}\n * @private\n */\n this._format = format ? format :\n (ColorItem.isHex(color) ? 'hex' : this._color.model);\n }\n\n /**\n * Parses the color returning a Qix Color object or null if cannot be\n * parsed.\n *\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n * @example let qColor = ColorItem.parse('rgb(255,0,0)');\n * @static\n * @returns {QixColor|null}\n */\n static parse(color) {\n if (color instanceof QixColor) {\n return color;\n }\n\n if (color instanceof ColorItem) {\n return color._color;\n }\n\n let format = null;\n\n if (color instanceof HSVAColor) {\n color = [color.h, color.s, color.v, isNaN(color.a) ? 1 : color.a];\n } else {\n color = ColorItem.sanitizeString(color);\n }\n\n if (color === null) {\n return null;\n }\n\n if (Array.isArray(color)) {\n format = 'hsv';\n }\n\n try {\n return QixColor(color, format);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Sanitizes a color string, adding missing hash to hexadecimal colors\n * and converting 'transparent' to a color code.\n *\n * @param {String|*} str Color string\n * @example let colorStr = ColorItem.sanitizeString('ffaa00');\n * @static\n * @returns {String|*}\n */\n static sanitizeString(str) {\n if (!(typeof str === 'string' || str instanceof String)) {\n return str;\n }\n\n if (str.match(/^[0-9a-f]{2,}$/i)) {\n return `#${str}`;\n }\n\n if (str.toLowerCase() === 'transparent') {\n return '#FFFFFF00';\n }\n\n return str;\n }\n\n /**\n * Detects if a value is a string and a color in hexadecimal format (in any variant).\n *\n * @param {String} str\n * @example ColorItem.isHex('rgba(0,0,0)'); // false\n * @example ColorItem.isHex('ffaa00'); // true\n * @example ColorItem.isHex('#ffaa00'); // true\n * @static\n * @returns {boolean}\n */\n static isHex(str) {\n if (!(typeof str === 'string' || str instanceof String)) {\n return false;\n }\n\n return !!str.match(/^#?[0-9a-f]{2,}$/i);\n }\n\n /**\n * Sanitizes a color format to one supported by web browsers.\n * Returns an empty string of the format can't be recognised.\n *\n * @param {String|*} format\n * @example ColorItem.sanitizeFormat('rgba'); // 'rgb'\n * @example ColorItem.isHex('hex8'); // 'hex'\n * @example ColorItem.isHex('invalid'); // ''\n * @static\n * @returns {String} 'rgb', 'hsl', 'hex' or ''.\n */\n static sanitizeFormat(format) {\n switch (format) {\n case 'hex':\n case 'hex3':\n case 'hex4':\n case 'hex6':\n case 'hex8':\n return 'hex';\n case 'rgb':\n case 'rgba':\n case 'keyword':\n case 'name':\n return 'rgb';\n case 'hsl':\n case 'hsla':\n case 'hsv':\n case 'hsva':\n case 'hwb': // HWB this is supported by Qix Color, but not by browsers\n case 'hwba':\n return 'hsl';\n default :\n return '';\n }\n }\n\n /**\n * Returns true if the color is valid, false if not.\n *\n * @returns {boolean}\n */\n isValid() {\n return this._original.valid === true;\n }\n\n /**\n * Hue value from 0 to 360\n *\n * @returns {int}\n */\n get hue() {\n return this._color.hue();\n }\n\n /**\n * Saturation value from 0 to 100\n *\n * @returns {int}\n */\n get saturation() {\n return this._color.saturationv();\n }\n\n /**\n * Value channel value from 0 to 100\n *\n * @returns {int}\n */\n get value() {\n return this._color.value();\n }\n\n /**\n * Alpha value from 0.0 to 1.0\n *\n * @returns {number}\n */\n get alpha() {\n let a = this._color.alpha();\n\n return isNaN(a) ? 1 : a;\n }\n\n /**\n * Default color format to convert to when calling toString() or string()\n *\n * @returns {String} 'rgb', 'hsl', 'hex' or ''\n */\n get format() {\n return this._format ? this._format : this._color.model;\n }\n\n /**\n * Sets the hue value\n *\n * @param {int} value Integer from 0 to 360\n */\n set hue(value) {\n this._color = this._color.hue(value);\n }\n\n /**\n * Sets the hue ratio, where 1.0 is 0, 0.5 is 180 and 0.0 is 360.\n *\n * @ignore\n * @param {number} h Ratio from 1.0 to 0.0\n */\n setHueRatio(h) {\n this.hue = ((1 - h) * 360);\n }\n\n /**\n * Sets the saturation value\n *\n * @param {int} value Integer from 0 to 100\n */\n set saturation(value) {\n this._color = this._color.saturationv(value);\n }\n\n /**\n * Sets the saturation ratio, where 1.0 is 100 and 0.0 is 0.\n *\n * @ignore\n * @param {number} s Ratio from 0.0 to 1.0\n */\n setSaturationRatio(s) {\n this.saturation = (s * 100);\n }\n\n /**\n * Sets the 'value' channel value\n *\n * @param {int} value Integer from 0 to 100\n */\n set value(value) {\n this._color = this._color.value(value);\n }\n\n /**\n * Sets the value ratio, where 1.0 is 0 and 0.0 is 100.\n *\n * @ignore\n * @param {number} v Ratio from 1.0 to 0.0\n */\n setValueRatio(v) {\n this.value = ((1 - v) * 100);\n }\n\n /**\n * Sets the alpha value. It will be rounded to 2 decimals.\n *\n * @param {int} value Float from 0.0 to 1.0\n */\n set alpha(value) {\n // 2 decimals max\n this._color = this._color.alpha(Math.round(value * 100) / 100);\n }\n\n /**\n * Sets the alpha ratio, where 1.0 is 0.0 and 0.0 is 1.0.\n *\n * @ignore\n * @param {number} a Ratio from 1.0 to 0.0\n */\n setAlphaRatio(a) {\n this.alpha = 1 - a;\n }\n\n /**\n * Sets the default color format\n *\n * @param {String} value Supported: 'rgb', 'hsl', 'hex'\n */\n set format(value) {\n this._format = ColorItem.sanitizeFormat(value);\n }\n\n /**\n * Returns true if the saturation value is zero, false otherwise\n *\n * @returns {boolean}\n */\n isDesaturated() {\n return this.saturation === 0;\n }\n\n /**\n * Returns true if the alpha value is zero, false otherwise\n *\n * @returns {boolean}\n */\n isTransparent() {\n return this.alpha === 0;\n }\n\n /**\n * Returns true if the alpha value is numeric and less than 1, false otherwise\n *\n * @returns {boolean}\n */\n hasTransparency() {\n return this.hasAlpha() && (this.alpha < 1);\n }\n\n /**\n * Returns true if the alpha value is numeric, false otherwise\n *\n * @returns {boolean}\n */\n hasAlpha() {\n return !isNaN(this.alpha);\n }\n\n /**\n * Returns a new HSVAColor object, based on the current color\n *\n * @returns {HSVAColor}\n */\n toObject() {\n return new HSVAColor(this.hue, this.saturation, this.value, this.alpha);\n }\n\n /**\n * Alias of toObject()\n *\n * @returns {HSVAColor}\n */\n toHsva() {\n return this.toObject();\n }\n\n /**\n * Returns a new HSVAColor object with the ratio values (from 0.0 to 1.0),\n * based on the current color.\n *\n * @ignore\n * @returns {HSVAColor}\n */\n toHsvaRatio() {\n return new HSVAColor(\n this.hue / 360,\n this.saturation / 100,\n this.value / 100,\n this.alpha\n );\n }\n\n /**\n * Converts the current color to its string representation,\n * using the internal format of this instance.\n *\n * @returns {String}\n */\n toString() {\n return this.string();\n }\n\n /**\n * Converts the current color to its string representation,\n * using the given format.\n *\n * @param {String|null} format Format to convert to. If empty or null, the internal format will be used.\n * @returns {String}\n */\n string(format = null) {\n format = ColorItem.sanitizeFormat(format ? format : this.format);\n\n if (!format) {\n return this._color.round().string();\n }\n\n if (this._color[format] === undefined) {\n throw new Error(`Unsupported color format: '${format}'`);\n }\n\n let str = this._color[format]();\n\n return str.round ? str.round().string() : str;\n }\n\n /**\n * Returns true if the given color values equals this one, false otherwise.\n * The format is not compared.\n * If any of the colors is invalid, the result will be false.\n *\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n *\n * @returns {boolean}\n */\n equals(color) {\n color = (color instanceof ColorItem) ? color : new ColorItem(color);\n\n if (!color.isValid() || !this.isValid()) {\n return false;\n }\n\n return (\n this.hue === color.hue &&\n this.saturation === color.saturation &&\n this.value === color.value &&\n this.alpha === color.alpha\n );\n }\n\n /**\n * Creates a copy of this instance\n *\n * @returns {ColorItem}\n */\n getClone() {\n return new ColorItem(this._color, this.format);\n }\n\n /**\n * Creates a copy of this instance, only copying the hue value,\n * and setting the others to its max value.\n *\n * @returns {ColorItem}\n */\n getCloneHueOnly() {\n return new ColorItem([this.hue, 100, 100, 1], this.format);\n }\n\n /**\n * Creates a copy of this instance setting the alpha to the max.\n *\n * @returns {ColorItem}\n */\n getCloneOpaque() {\n return new ColorItem(this._color.alpha(1), this.format);\n }\n\n /**\n * Converts the color to a RGB string\n *\n * @returns {String}\n */\n toRgbString() {\n return this.string('rgb');\n }\n\n /**\n * Converts the color to a Hexadecimal string\n *\n * @returns {String}\n */\n toHexString() {\n return this.string('hex');\n }\n\n /**\n * Converts the color to a HSL string\n *\n * @returns {String}\n */\n toHslString() {\n return this.string('hsl');\n }\n\n /**\n * Returns true if the color is dark, false otherwhise.\n * This is useful to decide a text color.\n *\n * @returns {boolean}\n */\n isDark() {\n return this._color.isDark();\n }\n\n /**\n * Returns true if the color is light, false otherwhise.\n * This is useful to decide a text color.\n *\n * @returns {boolean}\n */\n isLight() {\n return this._color.isLight();\n }\n\n /**\n * Generates a list of colors using the given hue-based formula or the given array of hue values.\n * Hue formulas can be extended using ColorItem.colorFormulas static property.\n *\n * @param {String|Number[]} formula Examples: 'complementary', 'triad', 'tetrad', 'splitcomplement', [180, 270]\n * @example let colors = color.generate('triad');\n * @example let colors = color.generate([45, 80, 112, 200]);\n * @returns {ColorItem[]}\n */\n generate(formula) {\n let hues = [];\n\n if (Array.isArray(formula)) {\n hues = formula;\n } else if (!ColorItem.colorFormulas.hasOwnProperty(formula)) {\n throw new Error(`No color formula found with the name '${formula}'.`);\n } else {\n hues = ColorItem.colorFormulas[formula];\n }\n\n let colors = [], mainColor = this._color, format = this.format;\n\n hues.forEach(function (hue) {\n let levels = [\n hue ? ((mainColor.hue() + hue) % 360) : mainColor.hue(),\n mainColor.saturationv(),\n mainColor.value(),\n mainColor.alpha()\n ];\n\n colors.push(new ColorItem(levels, format));\n });\n\n return colors;\n }\n}\n\n/**\n * List of hue-based color formulas used by ColorItem.prototype.generate()\n *\n * @static\n * @type {{complementary: number[], triad: number[], tetrad: number[], splitcomplement: number[]}}\n */\nColorItem.colorFormulas = {\n complementary: [180],\n triad: [0, 120, 240],\n tetrad: [0, 90, 180, 270],\n splitcomplement: [0, 72, 216]\n};\n\nexport default ColorItem;\n\nexport {\n HSVAColor,\n ColorItem\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/ColorItem.js","'use strict';\n/**\n * @module\n */\n\n// adjust these values accordingly to the sass vars\nlet sassVars = {\n 'bar_size_short': 16,\n 'base_margin': 6,\n 'columns': 6\n};\n\nlet sliderSize = (sassVars.bar_size_short * sassVars.columns) + (sassVars.base_margin * (sassVars.columns - 1));\n\n/**\n * Colorpicker default options\n */\nexport default {\n /**\n * Custom class to be added to the `.colorpicker-element` element\n *\n * @type {String|null}\n * @default null\n */\n customClass: null,\n /**\n * Sets a initial color, ignoring the one from the element/input value or the data-color attribute.\n *\n * @type {(String|ColorItem|boolean)}\n * @default false\n */\n color: false,\n /**\n * Fallback color to use when the given color is invalid.\n * If false, the latest valid color will be used as a fallback.\n *\n * @type {String|ColorItem|boolean}\n * @default false\n */\n fallbackColor: false,\n /**\n * Forces an specific color format. If 'auto', it will be automatically detected the first time only,\n * but if null it will be always recalculated.\n *\n * Note that the ending 'a' of the format meaning \"alpha\" has currently no effect, meaning that rgb is the same as\n * rgba excepting if the alpha channel is disabled (see useAlpha).\n *\n * @type {('rgb'|'hex'|'hsl'|'auto'|null)}\n * @default 'auto'\n */\n format: 'auto',\n /**\n * Horizontal mode layout.\n *\n * If true, the hue and alpha channel bars will be rendered horizontally, above the saturation selector.\n *\n * @type {boolean}\n * @default false\n */\n horizontal: false,\n /**\n * Forces to show the colorpicker as an inline element.\n *\n * Note that if there is no container specified, the inline element\n * will be added to the body, so you may want to set the container option.\n *\n * @type {boolean}\n * @default false\n */\n inline: false,\n /**\n * Container where the colorpicker is appended to in the DOM.\n *\n * If is a string (CSS selector), the colorpicker will be placed inside this container.\n * If true, the `.colorpicker-element` element itself will be used as the container.\n * If false, the document body is used as the container, unless it is a popover (in this case it is appended to the\n * popover body instead).\n *\n * @type {String|boolean}\n * @default false\n */\n container: false,\n /**\n * Bootstrap Popover options.\n * The trigger, content and html options are always ignored.\n *\n * @type {boolean}\n * @default Object\n */\n popover: {\n animation: true,\n placement: 'bottom',\n fallbackPlacement: 'flip'\n },\n /**\n * If true, loads the 'debugger' extension automatically, which logs the events in the console\n * @type {boolean}\n * @default false\n */\n debug: false,\n /**\n * Child CSS selector for the colorpicker input.\n *\n * @type {String}\n * @default 'input'\n */\n input: 'input',\n /**\n * Child CSS selector for the colorpicker addon.\n * If it exists, the child <i> element background will be changed on color change.\n *\n * @type {String}\n * @default '.colorpicker-trigger, .colorpicker-input-addon'\n */\n addon: '.colorpicker-input-addon',\n /**\n * If true, the input content will be replaced always with a valid color,\n * if false, the invalid color will be left in the input,\n * while the internal color object will still resolve into a valid one.\n *\n * @type {boolean}\n * @default true\n */\n autoInputFallback: true,\n /**\n * If true a hash will be prepended to hexadecimal colors.\n * If false, the hash will be removed.\n * This only affects the input values in hexadecimal format.\n *\n * @type {boolean}\n * @default true\n */\n useHashPrefix: true,\n /**\n * If true, the alpha channel bar will be displayed no matter what.\n *\n * If false, it will be always hidden and alpha channel will be disabled also programmatically, meaning that\n * the selected or typed color will be always opaque.\n *\n * If null, the alpha channel will be automatically disabled/enabled depending if the initial color format supports\n * alpha or not.\n *\n * @type {boolean}\n * @default true\n */\n useAlpha: true,\n /**\n * Colorpicker widget template\n * @type {String}\n * @example\n * <!-- This is the default template: -->\n * <div class=\"colorpicker\">\n * <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\n * <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n * <div class=\"colorpicker-alpha\">\n * <div class=\"colorpicker-alpha-color\"></div>\n * <i class=\"colorpicker-guide\"></i>\n * </div>\n * </div>\n */\n template: `<div class=\"colorpicker\">\n <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\n <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n <div class=\"colorpicker-alpha\">\n <div class=\"colorpicker-alpha-color\"></div>\n <i class=\"colorpicker-guide\"></i>\n </div>\n </div>`,\n /**\n *\n * Associative object with the extension class name and its config.\n * Colorpicker comes with many bundled extensions: debugger, palette, preview and swatches (a superset of palette).\n *\n * @type {Object[]}\n * @example\n * extensions: [\n * {\n * name: 'swatches'\n * options: {\n * colors: {\n * 'primary': '#337ab7',\n * 'success': '#5cb85c',\n * 'info': '#5bc0de',\n * 'warning': '#f0ad4e',\n * 'danger': '#d9534f'\n * },\n * namesAsValues: true\n * }\n * }\n * ]\n */\n extensions: [\n {\n name: 'preview',\n options: {\n showText: true\n }\n }\n ],\n /**\n * Vertical sliders configuration\n * @type {Object}\n */\n sliders: {\n saturation: {\n selector: '.colorpicker-saturation',\n maxLeft: sliderSize,\n maxTop: sliderSize,\n callLeft: 'setSaturationRatio',\n callTop: 'setValueRatio'\n },\n hue: {\n selector: '.colorpicker-hue',\n maxLeft: 0,\n maxTop: sliderSize,\n callLeft: false,\n callTop: 'setHueRatio'\n },\n alpha: {\n selector: '.colorpicker-alpha',\n childSelector: '.colorpicker-alpha-color',\n maxLeft: 0,\n maxTop: sliderSize,\n callLeft: false,\n callTop: 'setAlphaRatio'\n }\n },\n /**\n * Horizontal sliders configuration\n * @type {Object}\n */\n slidersHorz: {\n saturation: {\n selector: '.colorpicker-saturation',\n maxLeft: sliderSize,\n maxTop: sliderSize,\n callLeft: 'setSaturationRatio',\n callTop: 'setValueRatio'\n },\n hue: {\n selector: '.colorpicker-hue',\n maxLeft: sliderSize,\n maxTop: 0,\n callLeft: 'setHueRatio',\n callTop: false\n },\n alpha: {\n selector: '.colorpicker-alpha',\n childSelector: '.colorpicker-alpha-color',\n maxLeft: sliderSize,\n maxTop: 0,\n callLeft: 'setAlphaRatio',\n callTop: false\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/options.js","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\nlet defaults = {\n /**\n * Key-value pairs defining a color alias and its CSS color representation.\n *\n * They can also be just an array of values. In that case, no special names are used, only the real colors.\n *\n * @type {Object|Array}\n * @default null\n * @example\n * {\n * 'black': '#000000',\n * 'white': '#ffffff',\n * 'red': '#FF0000',\n * 'default': '#777777',\n * 'primary': '#337ab7',\n * 'success': '#5cb85c',\n * 'info': '#5bc0de',\n * 'warning': '#f0ad4e',\n * 'danger': '#d9534f'\n * }\n *\n * @example ['#f0ad4e', '#337ab7', '#5cb85c']\n */\n colors: null,\n /**\n * If true, when a color swatch is selected the name (alias) will be used as input value,\n * otherwise the swatch real color value will be used.\n *\n * @type {boolean}\n * @default true\n */\n namesAsValues: true\n};\n\n/**\n * Palette extension\n * @ignore\n */\nclass Palette extends Extension {\n\n /**\n * @returns {Object|Array}\n */\n get colors() {\n return this.options.colors;\n }\n\n constructor(colorpicker, options = {}) {\n super(colorpicker, $.extend(true, {}, defaults, options));\n\n if ((!Array.isArray(this.options.colors)) && (typeof this.options.colors !== 'object')) {\n this.options.colors = null;\n }\n }\n\n /**\n * @returns {int}\n */\n getLength() {\n if (!this.options.colors) {\n return 0;\n }\n\n if (Array.isArray(this.options.colors)) {\n return this.options.colors.length;\n }\n\n if (typeof this.options.colors === 'object') {\n return Object.keys(this.options.colors).length;\n }\n\n return 0;\n }\n\n resolveColor(color, realColor = true) {\n if (this.getLength() <= 0) {\n return false;\n }\n\n // Array of colors\n if (Array.isArray(this.options.colors)) {\n if (this.options.colors.indexOf(color) >= 0) {\n return color;\n }\n if (this.options.colors.indexOf(color.toUpperCase()) >= 0) {\n return color.toUpperCase();\n }\n if (this.options.colors.indexOf(color.toLowerCase()) >= 0) {\n return color.toLowerCase();\n }\n return false;\n }\n\n if (typeof this.options.colors !== 'object') {\n return false;\n }\n\n // Map of objects\n if (!this.options.namesAsValues || realColor) {\n return this.getValue(color, false);\n }\n return this.getName(color, this.getName('#' + color));\n }\n\n /**\n * Given a color value, returns the corresponding color name or defaultValue.\n *\n * @param {String} value\n * @param {*} defaultValue\n * @returns {*}\n */\n getName(value, defaultValue = false) {\n if (!(typeof value === 'string') || !this.options.colors) {\n return defaultValue;\n }\n for (let name in this.options.colors) {\n if (!this.options.colors.hasOwnProperty(name)) {\n continue;\n }\n if (this.options.colors[name].toLowerCase() === value.toLowerCase()) {\n return name;\n }\n }\n return defaultValue;\n }\n\n /**\n * Given a color name, returns the corresponding color value or defaultValue.\n *\n * @param {String} name\n * @param {*} defaultValue\n * @returns {*}\n */\n getValue(name, defaultValue = false) {\n if (!(typeof name === 'string') || !this.options.colors) {\n return defaultValue;\n }\n if (this.options.colors.hasOwnProperty(name)) {\n return this.options.colors[name];\n }\n return defaultValue;\n }\n}\n\nexport default Palette;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Palette.js","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color-name/index.js\n// module id = 5\n// module chunks = 0 1","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color-convert/conversions.js\n// module id = 6\n// module chunks = 0 1","'use strict';\n\nimport Colorpicker from './Colorpicker';\nimport $ from 'jquery';\n\nlet plugin = 'colorpicker';\n\n$[plugin] = Colorpicker;\n\n// Colorpicker jQuery Plugin API\n$.fn[plugin] = function (option) {\n let fnArgs = Array.prototype.slice.call(arguments, 1),\n isSingleElement = (this.length === 1),\n returnValue = null;\n\n let $elements = this.each(function () {\n let $this = $(this),\n inst = $this.data(plugin),\n options = ((typeof option === 'object') ? option : {});\n\n // Create instance if does not exist\n if (!inst) {\n inst = new Colorpicker(this, options);\n $this.data(plugin, inst);\n }\n\n if (!isSingleElement) {\n return;\n }\n\n returnValue = $this;\n\n if (typeof option === 'string') {\n if (option === 'colorpicker') {\n // Return colorpicker instance: e.g. .colorpicker('colorpicker')\n returnValue = inst;\n } else if ($.isFunction(inst[option])) {\n // Return method call return value: e.g. .colorpicker('isEnabled')\n returnValue = inst[option].apply(inst, fnArgs);\n } else {\n // Return property value: e.g. .colorpicker('element')\n returnValue = inst[option];\n }\n }\n });\n\n return isSingleElement ? returnValue : $elements;\n};\n\n$.fn[plugin].constructor = Colorpicker;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/plugin.js","'use strict';\n\nimport Extension from './Extension';\nimport defaults from './options';\nimport coreExtensions from 'extensions';\nimport $ from 'jquery';\nimport SliderHandler from './SliderHandler';\nimport PopupHandler from './PopupHandler';\nimport InputHandler from './InputHandler';\nimport ColorHandler from './ColorHandler';\nimport PickerHandler from './PickerHandler';\nimport AddonHandler from './AddonHandler';\nimport ColorItem from './ColorItem';\n\nlet colorPickerIdCounter = 0;\nlet root = (typeof self !== 'undefined' ? self : this); // window\n\n/**\n * Colorpicker widget class\n */\nclass Colorpicker {\n /**\n * Color class\n *\n * @static\n * @type {Color}\n */\n static get Color() {\n return ColorItem;\n }\n\n /**\n * Extension class\n *\n * @static\n * @type {Extension}\n */\n static get Extension() {\n return Extension;\n }\n\n /**\n * Internal color object\n *\n * @type {Color|null}\n */\n get color() {\n return this.colorHandler.color;\n }\n\n /**\n * Internal color format\n *\n * @type {String|null}\n */\n get format() {\n return this.colorHandler.format;\n }\n\n /**\n * Getter of the picker element\n *\n * @returns {jQuery|HTMLElement}\n */\n get picker() {\n return this.pickerHandler.picker;\n }\n\n /**\n * @fires Colorpicker#colorpickerCreate\n * @param {Object|String} element\n * @param {Object} options\n * @constructor\n */\n constructor(element, options) {\n colorPickerIdCounter += 1;\n /**\n * The colorpicker instance number\n * @type {number}\n */\n this.id = colorPickerIdCounter;\n\n /**\n * Latest colorpicker event\n *\n * @type {{name: String, e: *}}\n */\n this.lastEvent = {\n alias: null,\n e: null\n };\n\n /**\n * The element that the colorpicker is bound to\n *\n * @type {*|jQuery}\n */\n this.element = $(element)\n .addClass('colorpicker-element')\n .attr('data-colorpicker-id', this.id);\n\n /**\n * @type {defaults}\n */\n this.options = $.extend(true, {}, defaults, options, this.element.data());\n\n /**\n * @type {boolean}\n * @private\n */\n this.disabled = false;\n\n /**\n * Extensions added to this instance\n *\n * @type {Extension[]}\n */\n this.extensions = [];\n\n /**\n * The element where the\n * @type {*|jQuery}\n */\n this.container = (\n this.options.container === true ||\n (this.options.container !== true && this.options.inline === true)\n ) ? this.element : this.options.container;\n\n this.container = (this.container !== false) ? $(this.container) : false;\n\n /**\n * @type {InputHandler}\n */\n this.inputHandler = new InputHandler(this);\n /**\n * @type {ColorHandler}\n */\n this.colorHandler = new ColorHandler(this);\n /**\n * @type {SliderHandler}\n */\n this.sliderHandler = new SliderHandler(this);\n /**\n * @type {PopupHandler}\n */\n this.popupHandler = new PopupHandler(this, root);\n /**\n * @type {PickerHandler}\n */\n this.pickerHandler = new PickerHandler(this);\n /**\n * @type {AddonHandler}\n */\n this.addonHandler = new AddonHandler(this);\n\n this.init();\n\n // Emit a create event\n $($.proxy(function () {\n /**\n * (Colorpicker) When the Colorpicker instance has been created and the DOM is ready.\n *\n * @event Colorpicker#colorpickerCreate\n */\n this.trigger('colorpickerCreate');\n }, this));\n }\n\n /**\n * Initializes the plugin\n * @private\n */\n init() {\n // Init addon\n this.addonHandler.bind();\n\n // Init input\n this.inputHandler.bind();\n\n // Init extensions (before initializing the color)\n this.initExtensions();\n\n // Init color\n this.colorHandler.bind();\n\n // Init picker\n this.pickerHandler.bind();\n\n // Init sliders and popup\n this.sliderHandler.bind();\n this.popupHandler.bind();\n\n // Inject into the DOM (this may make it visible)\n this.pickerHandler.attach();\n\n // Update all components\n this.update();\n\n if (this.inputHandler.isDisabled()) {\n this.disable();\n }\n }\n\n /**\n * Initializes the plugin extensions\n * @private\n */\n initExtensions() {\n if (!Array.isArray(this.options.extensions)) {\n this.options.extensions = [];\n }\n\n if (this.options.debug) {\n this.options.extensions.push({name: 'debugger'});\n }\n\n // Register and instantiate extensions\n this.options.extensions.forEach((ext) => {\n this.registerExtension(Colorpicker.extensions[ext.name.toLowerCase()], ext.options || {});\n });\n }\n\n /**\n * Creates and registers the given extension\n *\n * @param {Extension} ExtensionClass The extension class to instantiate\n * @param {Object} [config] Extension configuration\n * @returns {Extension}\n */\n registerExtension(ExtensionClass, config = {}) {\n let ext = new ExtensionClass(this, config);\n\n this.extensions.push(ext);\n return ext;\n }\n\n /**\n * Destroys the current instance\n *\n * @fires Colorpicker#colorpickerDestroy\n */\n destroy() {\n let color = this.color;\n\n this.sliderHandler.unbind();\n this.inputHandler.unbind();\n this.popupHandler.unbind();\n this.colorHandler.unbind();\n this.addonHandler.unbind();\n this.pickerHandler.unbind();\n\n this.element\n .removeClass('colorpicker-element')\n .removeData('colorpicker', 'color')\n .off('.colorpicker');\n\n /**\n * (Colorpicker) When the instance is destroyed with all events unbound.\n *\n * @event Colorpicker#colorpickerDestroy\n */\n this.trigger('colorpickerDestroy', color);\n }\n\n /**\n * Shows the colorpicker widget if hidden.\n * If the colorpicker is disabled this call will be ignored.\n *\n * @fires Colorpicker#colorpickerShow\n * @param {Event} [e]\n */\n show(e) {\n this.popupHandler.show(e);\n }\n\n /**\n * Hides the colorpicker widget.\n *\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n hide(e) {\n this.popupHandler.hide(e);\n }\n\n /**\n * Toggles the colorpicker between visible and hidden.\n *\n * @fires Colorpicker#colorpickerShow\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n toggle(e) {\n this.popupHandler.toggle(e);\n }\n\n /**\n * Returns the current color value as string\n *\n * @param {String|*} [defaultValue]\n * @returns {String|*}\n */\n getValue(defaultValue = null) {\n let val = this.colorHandler.color;\n\n val = (val instanceof ColorItem) ? val : defaultValue;\n\n if (val instanceof ColorItem) {\n return val.string(this.format);\n }\n\n return val;\n }\n\n /**\n * Sets the color manually\n *\n * @fires Colorpicker#colorpickerChange\n * @param {String|Color} val\n */\n setValue(val) {\n if (this.isDisabled()) {\n return;\n }\n let ch = this.colorHandler;\n\n if (\n (ch.hasColor() && !!val && ch.color.equals(val)) ||\n (!ch.hasColor() && !val)\n ) {\n // same color or still empty\n return;\n }\n\n ch.color = val ? ch.createColor(val, this.options.autoInputFallback) : null;\n\n /**\n * (Colorpicker) When the color is set programmatically with setValue().\n *\n * @event Colorpicker#colorpickerChange\n */\n this.trigger('colorpickerChange', ch.color, val);\n\n // force update if color has changed to empty\n this.update();\n }\n\n /**\n * Updates the UI and the input color according to the internal color.\n *\n * @fires Colorpicker#colorpickerUpdate\n */\n update() {\n if (this.colorHandler.hasColor()) {\n this.inputHandler.update();\n } else {\n this.colorHandler.assureColor();\n }\n\n this.addonHandler.update();\n this.pickerHandler.update();\n\n /**\n * (Colorpicker) Fired when the widget is updated.\n *\n * @event Colorpicker#colorpickerUpdate\n */\n this.trigger('colorpickerUpdate');\n }\n\n /**\n * Enables the widget and the input if any\n *\n * @fires Colorpicker#colorpickerEnable\n * @returns {boolean}\n */\n enable() {\n this.inputHandler.enable();\n this.disabled = false;\n this.picker.removeClass('colorpicker-disabled');\n\n /**\n * (Colorpicker) When the widget has been enabled.\n *\n * @event Colorpicker#colorpickerEnable\n */\n this.trigger('colorpickerEnable');\n return true;\n }\n\n /**\n * Disables the widget and the input if any\n *\n * @fires Colorpicker#colorpickerDisable\n * @returns {boolean}\n */\n disable() {\n this.inputHandler.disable();\n this.disabled = true;\n this.picker.addClass('colorpicker-disabled');\n\n /**\n * (Colorpicker) When the widget has been disabled.\n *\n * @event Colorpicker#colorpickerDisable\n */\n this.trigger('colorpickerDisable');\n return true;\n }\n\n /**\n * Returns true if this instance is enabled\n * @returns {boolean}\n */\n isEnabled() {\n return !this.isDisabled();\n }\n\n /**\n * Returns true if this instance is disabled\n * @returns {boolean}\n */\n isDisabled() {\n return this.disabled === true;\n }\n\n /**\n * Triggers a Colorpicker event.\n *\n * @param eventName\n * @param color\n * @param value\n */\n trigger(eventName, color = null, value = null) {\n this.element.trigger({\n type: eventName,\n colorpicker: this,\n color: color ? color : this.color,\n value: value ? value : this.getValue()\n });\n }\n}\n\n/**\n * Colorpicker extension classes, indexed by extension name\n *\n * @static\n * @type {Object} a map between the extension name and its class\n */\nColorpicker.extensions = coreExtensions;\n\nexport default Colorpicker;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/Colorpicker.js","import Debugger from './Debugger';\nimport Preview from './Preview';\nimport Swatches from './Swatches';\nimport Palette from './Palette';\n\nexport {\n Debugger, Preview, Swatches, Palette\n};\n\nexport default {\n 'debugger': Debugger,\n 'preview': Preview,\n 'swatches': Swatches,\n 'palette': Palette\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/index.js","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\n/**\n * Debugger extension class\n * @alias DebuggerExtension\n * @ignore\n */\nclass Debugger extends Extension {\n constructor(colorpicker, options = {}) {\n super(colorpicker, options);\n\n /**\n * @type {number}\n */\n this.eventCounter = 0;\n if (this.colorpicker.inputHandler.hasInput()) {\n this.colorpicker.inputHandler.input.on('change.colorpicker-ext', $.proxy(this.onChangeInput, this));\n }\n }\n\n /**\n * @fires DebuggerExtension#colorpickerDebug\n * @param {string} eventName\n * @param {*} args\n */\n log(eventName, ...args) {\n this.eventCounter += 1;\n\n let logMessage = `#${this.eventCounter}: Colorpicker#${this.colorpicker.id} [${eventName}]`;\n\n console.debug(logMessage, ...args);\n\n /**\n * Whenever the debugger logs an event, this other event is emitted.\n *\n * @event DebuggerExtension#colorpickerDebug\n * @type {object} The event object\n * @property {Colorpicker} colorpicker The Colorpicker instance\n * @property {ColorItem} color The color instance\n * @property {{debugger: DebuggerExtension, eventName: String, logArgs: Array, logMessage: String}} debug\n * The debug info\n */\n this.colorpicker.element.trigger({\n type: 'colorpickerDebug',\n colorpicker: this.colorpicker,\n color: this.color,\n value: null,\n debug: {\n debugger: this,\n eventName: eventName,\n logArgs: args,\n logMessage: logMessage\n }\n });\n }\n\n resolveColor(color, realColor = true) {\n this.log('resolveColor()', color, realColor);\n return false;\n }\n\n onCreate(event) {\n this.log('colorpickerCreate');\n return super.onCreate(event);\n }\n\n onDestroy(event) {\n this.log('colorpickerDestroy');\n this.eventCounter = 0;\n\n if (this.colorpicker.inputHandler.hasInput()) {\n this.colorpicker.inputHandler.input.off('.colorpicker-ext');\n }\n\n return super.onDestroy(event);\n }\n\n onUpdate(event) {\n this.log('colorpickerUpdate');\n }\n\n /**\n * @listens Colorpicker#change\n * @param {Event} event\n */\n onChangeInput(event) {\n this.log('input:change.colorpicker', event.value, event.color);\n }\n\n onChange(event) {\n this.log('colorpickerChange', event.value, event.color);\n }\n\n onInvalid(event) {\n this.log('colorpickerInvalid', event.value, event.color);\n }\n\n onHide(event) {\n this.log('colorpickerHide');\n this.eventCounter = 0;\n }\n\n onShow(event) {\n this.log('colorpickerShow');\n }\n\n onDisable(event) {\n this.log('colorpickerDisable');\n }\n\n onEnable(event) {\n this.log('colorpickerEnable');\n }\n}\n\nexport default Debugger;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Debugger.js","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\n/**\n * Color preview extension\n * @ignore\n */\nclass Preview extends Extension {\n constructor(colorpicker, options = {}) {\n super(colorpicker, $.extend(true, {},\n {\n template: '<div class=\"colorpicker-bar colorpicker-preview\"><div /></div>',\n showText: true,\n format: colorpicker.format\n },\n options\n ));\n\n this.element = $(this.options.template);\n this.elementInner = this.element.find('div');\n }\n\n onCreate(event) {\n super.onCreate(event);\n this.colorpicker.picker.append(this.element);\n }\n\n onUpdate(event) {\n super.onUpdate(event);\n\n if (!event.color) {\n this.elementInner\n .css('backgroundColor', null)\n .css('color', null)\n .html('');\n return;\n }\n\n this.elementInner\n .css('backgroundColor', event.color.toRgbString());\n\n if (this.options.showText) {\n this.elementInner\n .html(event.color.string(this.options.format || this.colorpicker.format));\n\n if (event.color.isDark() && (event.color.alpha > 0.5)) {\n this.elementInner.css('color', 'white');\n } else {\n this.elementInner.css('color', 'black');\n }\n }\n }\n}\n\nexport default Preview;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Preview.js","'use strict';\n\nimport Palette from './Palette';\nimport $ from 'jquery';\n\nlet defaults = {\n barTemplate: `<div class=\"colorpicker-bar colorpicker-swatches\">\n <div class=\"colorpicker-swatches--inner\"></div>\n </div>`,\n swatchTemplate: '<i class=\"colorpicker-swatch\"><i class=\"colorpicker-swatch--inner\"></i></i>'\n};\n\n/**\n * Color swatches extension\n * @ignore\n */\nclass Swatches extends Palette {\n constructor(colorpicker, options = {}) {\n super(colorpicker, $.extend(true, {}, defaults, options));\n this.element = null;\n }\n\n isEnabled() {\n return this.getLength() > 0;\n }\n\n onCreate(event) {\n super.onCreate(event);\n\n if (!this.isEnabled()) {\n return;\n }\n\n this.element = $(this.options.barTemplate);\n this.load();\n this.colorpicker.picker.append(this.element);\n }\n\n load() {\n let colorpicker = this.colorpicker,\n swatchContainer = this.element.find('.colorpicker-swatches--inner'),\n isAliased = (this.options.namesAsValues === true) && !Array.isArray(this.colors);\n\n swatchContainer.empty();\n\n $.each(this.colors, (name, value) => {\n let $swatch = $(this.options.swatchTemplate)\n .attr('data-name', name)\n .attr('data-value', value)\n .attr('title', isAliased ? `${name}: ${value}` : value)\n .on('mousedown.colorpicker touchstart.colorpicker',\n function (e) {\n let $sw = $(this);\n\n // e.preventDefault();\n\n colorpicker.setValue(isAliased ? $sw.attr('data-name') : $sw.attr('data-value'));\n }\n );\n\n $swatch.find('.colorpicker-swatch--inner')\n .css('background-color', value);\n\n swatchContainer.append($swatch);\n });\n\n swatchContainer.append($('<i class=\"colorpicker-clear\"></i>'));\n }\n}\n\nexport default Swatches;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Swatches.js","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Class that handles all configured sliders on mouse or touch events.\n * @ignore\n */\nclass SliderHandler {\n /**\n * @param {Colorpicker} colorpicker\n */\n constructor(colorpicker) {\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {*|String}\n * @private\n */\n this.currentSlider = null;\n /**\n * @type {{left: number, top: number}}\n * @private\n */\n this.mousePointer = {\n left: 0,\n top: 0\n };\n\n /**\n * @type {Function}\n */\n this.onMove = $.proxy(this.defaultOnMove, this);\n }\n\n /**\n * This function is called every time a slider guide is moved\n * The scope of \"this\" is the SliderHandler object.\n *\n * @param {int} top\n * @param {int} left\n */\n defaultOnMove(top, left) {\n if (!this.currentSlider) {\n return;\n }\n\n let slider = this.currentSlider, cp = this.colorpicker, ch = cp.colorHandler;\n\n // Create a color object\n let color = !ch.hasColor() ? ch.getFallbackColor() : ch.color.getClone();\n\n // Adjust the guide position\n slider.guideStyle.left = left + 'px';\n slider.guideStyle.top = top + 'px';\n\n // Adjust the color\n if (slider.callLeft) {\n color[slider.callLeft](left / slider.maxLeft);\n }\n if (slider.callTop) {\n color[slider.callTop](top / slider.maxTop);\n }\n\n // Set the new color\n cp.setValue(color);\n cp.popupHandler.focus();\n }\n\n /**\n * Binds the colorpicker sliders to the mouse/touch events\n */\n bind() {\n let sliders = this.colorpicker.options.horizontal ? this.colorpicker\n .options.slidersHorz : this.colorpicker.options.sliders;\n let sliderClasses = [];\n\n for (let sliderName in sliders) {\n if (!sliders.hasOwnProperty(sliderName)) {\n continue;\n }\n\n sliderClasses.push(sliders[sliderName].selector);\n }\n\n this.colorpicker.picker.find(sliderClasses.join(', '))\n .on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.pressed, this));\n }\n\n /**\n * Unbinds any event bound by this handler\n */\n unbind() {\n $(this.colorpicker.picker).off({\n 'mousemove.colorpicker': $.proxy(this.moved, this),\n 'touchmove.colorpicker': $.proxy(this.moved, this),\n 'mouseup.colorpicker': $.proxy(this.released, this),\n 'touchend.colorpicker': $.proxy(this.released, this)\n });\n }\n\n /**\n * Function triggered when clicking in one of the color adjustment bars\n *\n * @private\n * @fires Colorpicker#mousemove\n * @param {Event} e\n */\n pressed(e) {\n if (this.colorpicker.isDisabled()) {\n return;\n }\n this.colorpicker.lastEvent.alias = 'pressed';\n this.colorpicker.lastEvent.e = e;\n\n if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n e.pageX = e.originalEvent.touches[0].pageX;\n e.pageY = e.originalEvent.touches[0].pageY;\n }\n // e.stopPropagation();\n // e.preventDefault();\n\n let target = $(e.target);\n\n // detect the slider and set the limits and callbacks\n let zone = target.closest('div');\n let sliders = this.colorpicker.options.horizontal ? this.colorpicker\n .options.slidersHorz : this.colorpicker.options.sliders;\n\n if (zone.is('.colorpicker')) {\n return;\n }\n\n this.currentSlider = null;\n\n for (let sliderName in sliders) {\n if (!sliders.hasOwnProperty(sliderName)) {\n continue;\n }\n\n let slider = sliders[sliderName];\n\n if (zone.is(slider.selector)) {\n this.currentSlider = $.extend({}, slider, {name: sliderName});\n break;\n } else if (slider.childSelector !== undefined && zone.is(slider.childSelector)) {\n this.currentSlider = $.extend({}, slider, {name: sliderName});\n zone = zone.parent(); // zone.parents(slider.selector).first() ?\n break;\n }\n }\n\n let guide = zone.find('.colorpicker-guide').get(0);\n\n if (this.currentSlider === null || guide === null) {\n return;\n }\n\n let offset = zone.offset();\n\n // reference to guide's style\n this.currentSlider.guideStyle = guide.style;\n this.currentSlider.left = e.pageX - offset.left;\n this.currentSlider.top = e.pageY - offset.top;\n this.mousePointer = {\n left: e.pageX,\n top: e.pageY\n };\n\n // TODO: fix moving outside the picker makes the guides to keep moving. The event needs to be bound to the window.\n /**\n * (window.document) Triggered on mousedown for the document object,\n * so the color adjustment guide is moved to the clicked position.\n *\n * @event Colorpicker#mousemove\n */\n $(this.colorpicker.picker).on({\n 'mousemove.colorpicker': $.proxy(this.moved, this),\n 'touchmove.colorpicker': $.proxy(this.moved, this),\n 'mouseup.colorpicker': $.proxy(this.released, this),\n 'touchend.colorpicker': $.proxy(this.released, this)\n }).trigger('mousemove');\n }\n\n /**\n * Function triggered when dragging a guide inside one of the color adjustment bars.\n *\n * @private\n * @param {Event} e\n */\n moved(e) {\n this.colorpicker.lastEvent.alias = 'moved';\n this.colorpicker.lastEvent.e = e;\n\n if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n e.pageX = e.originalEvent.touches[0].pageX;\n e.pageY = e.originalEvent.touches[0].pageY;\n }\n\n // e.stopPropagation();\n e.preventDefault(); // prevents scrolling on mobile\n\n let left = Math.max(\n 0,\n Math.min(\n this.currentSlider.maxLeft,\n this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left)\n )\n );\n\n let top = Math.max(\n 0,\n Math.min(\n this.currentSlider.maxTop,\n this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top)\n )\n );\n\n this.onMove(top, left);\n }\n\n /**\n * Function triggered when releasing the click in one of the color adjustment bars.\n *\n * @private\n * @param {Event} e\n */\n released(e) {\n this.colorpicker.lastEvent.alias = 'released';\n this.colorpicker.lastEvent.e = e;\n\n // e.stopPropagation();\n // e.preventDefault();\n\n $(this.colorpicker.picker).off({\n 'mousemove.colorpicker': this.moved,\n 'touchmove.colorpicker': this.moved,\n 'mouseup.colorpicker': this.released,\n 'touchend.colorpicker': this.released\n });\n }\n}\n\nexport default SliderHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/SliderHandler.js","'use strict';\n\nimport $ from 'jquery';\nimport _defaults from './options';\n\n/**\n * Handles everything related to the UI of the colorpicker popup: show, hide, position,...\n * @ignore\n */\nclass PopupHandler {\n /**\n * @param {Colorpicker} colorpicker\n * @param {Window} root\n */\n constructor(colorpicker, root) {\n /**\n * @type {Window}\n */\n this.root = root;\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery}\n */\n this.popoverTarget = null;\n /**\n * @type {jQuery}\n */\n this.popoverTip = null;\n\n /**\n * If true, the latest click was inside the popover\n * @type {boolean}\n */\n this.clicking = false;\n /**\n * @type {boolean}\n */\n this.hidding = false;\n /**\n * @type {boolean}\n */\n this.showing = false;\n }\n\n /**\n * @private\n * @returns {jQuery|false}\n */\n get input() {\n return this.colorpicker.inputHandler.input;\n }\n\n /**\n * @private\n * @returns {boolean}\n */\n get hasInput() {\n return this.colorpicker.inputHandler.hasInput();\n }\n\n /**\n * @private\n * @returns {jQuery|false}\n */\n get addon() {\n return this.colorpicker.addonHandler.addon;\n }\n\n /**\n * @private\n * @returns {boolean}\n */\n get hasAddon() {\n return this.colorpicker.addonHandler.hasAddon();\n }\n\n /**\n * @private\n * @returns {boolean}\n */\n get isPopover() {\n return !this.colorpicker.options.inline && !!this.popoverTip;\n }\n\n /**\n * Binds the different colorpicker elements to the focus/mouse/touch events so it reacts in order to show or\n * hide the colorpicker popup accordingly. It also adds the proper classes.\n */\n bind() {\n let cp = this.colorpicker;\n\n if (cp.options.inline) {\n cp.picker.addClass('colorpicker-inline colorpicker-visible');\n return; // no need to bind show/hide events for inline elements\n }\n\n cp.picker.addClass('colorpicker-popup colorpicker-hidden');\n\n // there is no input or addon\n if (!this.hasInput && !this.hasAddon) {\n return;\n }\n\n // create Bootstrap 4 popover\n if (cp.options.popover) {\n this.createPopover();\n }\n\n // bind addon show/hide events\n if (this.hasAddon) {\n // enable focus on addons\n if (!this.addon.attr('tabindex')) {\n this.addon.attr('tabindex', 0);\n }\n\n this.addon.on({\n 'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.toggle, this)\n });\n\n this.addon.on({\n 'focus.colorpicker': $.proxy(this.show, this)\n });\n\n this.addon.on({\n 'focusout.colorpicker': $.proxy(this.hide, this)\n });\n }\n\n // bind input show/hide events\n if (this.hasInput && !this.hasAddon) {\n this.input.on({\n 'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.show, this),\n 'focus.colorpicker': $.proxy(this.show, this)\n });\n\n this.input.on({\n 'focusout.colorpicker': $.proxy(this.hide, this)\n });\n }\n\n // reposition popup on window resize\n $(this.root).on('resize.colorpicker', $.proxy(this.reposition, this));\n }\n\n /**\n * Unbinds any event bound by this handler\n */\n unbind() {\n if (this.hasInput) {\n this.input.off({\n 'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.show, this),\n 'focus.colorpicker': $.proxy(this.show, this)\n });\n this.input.off({\n 'focusout.colorpicker': $.proxy(this.hide, this)\n });\n }\n\n if (this.hasAddon) {\n this.addon.off({\n 'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.toggle, this)\n });\n this.addon.off({\n 'focus.colorpicker': $.proxy(this.show, this)\n });\n this.addon.off({\n 'focusout.colorpicker': $.proxy(this.hide, this)\n });\n }\n\n if (this.popoverTarget) {\n this.popoverTarget.popover('dispose');\n }\n\n $(this.root).off('resize.colorpicker', $.proxy(this.reposition, this));\n $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n }\n\n isClickingInside(e) {\n if (!e) {\n return false;\n }\n\n return (\n this.isOrIsInside(this.popoverTip, e.currentTarget) ||\n this.isOrIsInside(this.popoverTip, e.target) ||\n this.isOrIsInside(this.colorpicker.picker, e.currentTarget) ||\n this.isOrIsInside(this.colorpicker.picker, e.target)\n );\n }\n\n isOrIsInside(container, element) {\n if (!container || !element) {\n return false;\n }\n\n element = $(element);\n\n return (\n element.is(container) ||\n container.find(element).length > 0\n );\n }\n\n onClickingInside(e) {\n this.clicking = this.isClickingInside(e);\n }\n\n createPopover() {\n let cp = this.colorpicker;\n\n this.popoverTarget = this.hasAddon ? this.addon : this.input;\n\n cp.picker.addClass('colorpicker-bs-popover-content');\n\n this.popoverTarget.popover(\n $.extend(\n true,\n {},\n _defaults.popover,\n cp.options.popover,\n {trigger: 'manual', content: cp.picker, html: true}\n )\n );\n\n this.popoverTip = $(this.popoverTarget.popover('getTipElement').data('bs.popover').tip);\n this.popoverTip.addClass('colorpicker-bs-popover');\n\n this.popoverTarget.on('shown.bs.popover', $.proxy(this.fireShow, this));\n this.popoverTarget.on('hidden.bs.popover', $.proxy(this.fireHide, this));\n }\n\n /**\n * If the widget is not inside a container or inline, rearranges its position relative to its element offset.\n *\n * @param {Event} [e]\n * @private\n */\n reposition(e) {\n if (this.popoverTarget && this.isVisible()) {\n this.popoverTarget.popover('update');\n }\n }\n\n /**\n * Toggles the colorpicker between visible or hidden\n *\n * @fires Colorpicker#colorpickerShow\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n toggle(e) {\n if (this.isVisible()) {\n this.hide(e);\n } else {\n this.show(e);\n }\n }\n\n /**\n * Shows the colorpicker widget if hidden.\n *\n * @fires Colorpicker#colorpickerShow\n * @param {Event} [e]\n */\n show(e) {\n if (this.isVisible() || this.showing || this.hidding) {\n return;\n }\n\n this.showing = true;\n this.hidding = false;\n this.clicking = false;\n\n let cp = this.colorpicker;\n\n cp.lastEvent.alias = 'show';\n cp.lastEvent.e = e;\n\n // Prevent showing browser native HTML5 colorpicker\n if (\n (e && (!this.hasInput || this.input.attr('type') === 'color')) &&\n (e && e.preventDefault)\n ) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n // If it's a popover, add event to the document to hide the picker when clicking outside of it\n if (this.isPopover) {\n $(this.root).on('resize.colorpicker', $.proxy(this.reposition, this));\n }\n\n // add visible class before popover is shown\n cp.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden');\n\n if (this.popoverTarget) {\n this.popoverTarget.popover('show');\n } else {\n this.fireShow();\n }\n }\n\n fireShow() {\n this.hidding = false;\n this.showing = false;\n\n if (this.isPopover) {\n // Add event to hide on outside click\n $(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n $(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n }\n\n /**\n * (Colorpicker) When show() is called and the widget can be shown.\n *\n * @event Colorpicker#colorpickerShow\n */\n this.colorpicker.trigger('colorpickerShow');\n }\n\n /**\n * Hides the colorpicker widget.\n * Hide is prevented when it is triggered by an event whose target element has been clicked/touched.\n *\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n hide(e) {\n if (this.isHidden() || this.showing || this.hidding) {\n return;\n }\n\n let cp = this.colorpicker, clicking = (this.clicking || this.isClickingInside(e));\n\n this.hidding = true;\n this.showing = false;\n this.clicking = false;\n\n cp.lastEvent.alias = 'hide';\n cp.lastEvent.e = e;\n\n // TODO: fix having to click twice outside when losing focus and last 2 clicks where inside the colorpicker\n\n // Prevent hide if triggered by an event and an element inside the colorpicker has been clicked/touched\n if (clicking) {\n this.hidding = false;\n return;\n }\n\n if (this.popoverTarget) {\n this.popoverTarget.popover('hide');\n } else {\n this.fireHide();\n }\n }\n\n fireHide() {\n this.hidding = false;\n this.showing = false;\n\n let cp = this.colorpicker;\n\n // add hidden class after popover is hidden\n cp.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible');\n\n // Unbind window and document events, since there is no need to keep them while the popup is hidden\n $(this.root).off('resize.colorpicker', $.proxy(this.reposition, this));\n $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n\n /**\n * (Colorpicker) When hide() is called and the widget can be hidden.\n *\n * @event Colorpicker#colorpickerHide\n */\n cp.trigger('colorpickerHide');\n }\n\n focus() {\n if (this.hasAddon) {\n return this.addon.focus();\n }\n if (this.hasInput) {\n return this.input.focus();\n }\n return false;\n }\n\n /**\n * Returns true if the colorpicker element has the colorpicker-visible class and not the colorpicker-hidden one.\n * False otherwise.\n *\n * @returns {boolean}\n */\n isVisible() {\n return this.colorpicker.picker.hasClass('colorpicker-visible') &&\n !this.colorpicker.picker.hasClass('colorpicker-hidden');\n }\n\n /**\n * Returns true if the colorpicker element has the colorpicker-hidden class and not the colorpicker-visible one.\n * False otherwise.\n *\n * @returns {boolean}\n */\n isHidden() {\n return this.colorpicker.picker.hasClass('colorpicker-hidden') &&\n !this.colorpicker.picker.hasClass('colorpicker-visible');\n }\n}\n\nexport default PopupHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/PopupHandler.js","'use strict';\n\nimport $ from 'jquery';\nimport ColorItem from './ColorItem';\n\n/**\n * Handles everything related to the colorpicker input\n * @ignore\n */\nclass InputHandler {\n /**\n * @param {Colorpicker} colorpicker\n */\n constructor(colorpicker) {\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery|false}\n */\n this.input = this.colorpicker.element.is('input') ? this.colorpicker.element : (this.colorpicker.options.input ?\n this.colorpicker.element.find(this.colorpicker.options.input) : false);\n\n if (this.input && (this.input.length === 0)) {\n this.input = false;\n }\n\n this._initValue();\n }\n\n bind() {\n if (!this.hasInput()) {\n return;\n }\n this.input.on({\n 'keyup.colorpicker': $.proxy(this.onkeyup, this)\n });\n this.input.on({\n 'change.colorpicker': $.proxy(this.onchange, this)\n });\n }\n\n unbind() {\n if (!this.hasInput()) {\n return;\n }\n this.input.off('.colorpicker');\n }\n\n _initValue() {\n if (!this.hasInput()) {\n return;\n }\n\n let val = '';\n\n [\n // candidates:\n this.input.val(),\n this.input.data('color'),\n this.input.attr('data-color')\n ].map((item) => {\n if (item && (val === '')) {\n val = item;\n }\n });\n\n if (val instanceof ColorItem) {\n val = this.getFormattedColor(val.string(this.colorpicker.format));\n } else if (!(typeof val === 'string' || val instanceof String)) {\n val = '';\n }\n\n this.input.prop('value', val);\n }\n\n /**\n * Returns the color string from the input value.\n * If there is no input the return value is false.\n *\n * @returns {String|boolean}\n */\n getValue() {\n if (!this.hasInput()) {\n return false;\n }\n\n return this.input.val();\n }\n\n /**\n * If the input element is present, it updates the value with the current color object color string.\n * If the value is changed, this method fires a \"change\" event on the input element.\n *\n * @param {String} val\n *\n * @fires Colorpicker#change\n */\n setValue(val) {\n if (!this.hasInput()) {\n return;\n }\n\n let inputVal = this.input.prop('value');\n\n val = val ? val : '';\n\n if (val === (inputVal ? inputVal : '')) {\n // No need to set value or trigger any event if nothing changed\n return;\n }\n\n this.input.prop('value', val);\n\n /**\n * (Input) Triggered on the input element when a new color is selected.\n *\n * @event Colorpicker#change\n */\n this.input.trigger({\n type: 'change',\n colorpicker: this.colorpicker,\n color: this.colorpicker.color,\n value: val\n });\n }\n\n /**\n * Returns the formatted color string, with the formatting options applied\n * (e.g. useHashPrefix)\n *\n * @param {String|null} val\n *\n * @returns {String}\n */\n getFormattedColor(val = null) {\n val = val ? val : this.colorpicker.colorHandler.getColorString();\n\n if (!val) {\n return '';\n }\n\n val = this.colorpicker.colorHandler.resolveColorDelegate(val, false);\n\n if (this.colorpicker.options.useHashPrefix === false) {\n val = val.replace(/^#/g, '');\n }\n\n return val;\n }\n\n /**\n * Returns true if the widget has an associated input element, false otherwise\n * @returns {boolean}\n */\n hasInput() {\n return (this.input !== false);\n }\n\n /**\n * Returns true if the input exists and is disabled\n * @returns {boolean}\n */\n isEnabled() {\n return this.hasInput() && !this.isDisabled();\n }\n\n /**\n * Returns true if the input exists and is disabled\n * @returns {boolean}\n */\n isDisabled() {\n return this.hasInput() && (this.input.prop('disabled') === true);\n }\n\n /**\n * Disables the input if any\n *\n * @fires Colorpicker#colorpickerDisable\n * @returns {boolean}\n */\n disable() {\n if (this.hasInput()) {\n this.input.prop('disabled', true);\n }\n }\n\n /**\n * Enables the input if any\n *\n * @fires Colorpicker#colorpickerEnable\n * @returns {boolean}\n */\n enable() {\n if (this.hasInput()) {\n this.input.prop('disabled', false);\n }\n }\n\n /**\n * Calls setValue with the current internal color value\n *\n * @fires Colorpicker#change\n */\n update() {\n if (!this.hasInput()) {\n return;\n }\n\n if (\n (this.colorpicker.options.autoInputFallback === false) &&\n this.colorpicker.colorHandler.isInvalidColor()\n ) {\n // prevent update if color is invalid, autoInputFallback is disabled and the last event is keyup.\n return;\n }\n\n this.setValue(this.getFormattedColor());\n }\n\n /**\n * Function triggered when the input has changed, so the colorpicker gets updated.\n *\n * @private\n * @param {Event} e\n * @returns {boolean}\n */\n onchange(e) {\n this.colorpicker.lastEvent.alias = 'input.change';\n this.colorpicker.lastEvent.e = e;\n\n let val = this.getValue();\n\n if (val !== e.value) {\n this.colorpicker.setValue(val);\n }\n }\n\n /**\n * Function triggered after a keyboard key has been released.\n *\n * @private\n * @param {Event} e\n * @returns {boolean}\n */\n onkeyup(e) {\n this.colorpicker.lastEvent.alias = 'input.keyup';\n this.colorpicker.lastEvent.e = e;\n\n let val = this.getValue();\n\n if (val !== e.value) {\n this.colorpicker.setValue(val);\n }\n }\n}\n\nexport default InputHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/InputHandler.js","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (typeof obj === 'undefined') {\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color/index.js\n// module id = 16\n// module chunks = 0 1","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d*\\.)?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = (parseFloat(match[1]) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d*[\\.]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color-string/index.js\n// module id = 17\n// module chunks = 0 1","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/simple-swizzle/index.js\n// module id = 18\n// module chunks = 0 1","'use strict';\n\nmodule.exports = function isArrayish(obj) {\n\tif (!obj) {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && obj.splice instanceof Function);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/is-arrayish/index.js\n// module id = 19\n// module chunks = 0 1","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color-convert/index.js\n// module id = 20\n// module chunks = 0 1","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color-convert/route.js\n// module id = 21\n// module chunks = 0 1","'use strict';\n\nimport $ from 'jquery';\nimport ColorItem from './ColorItem';\n\n/**\n * Handles everything related to the colorpicker color\n * @ignore\n */\nclass ColorHandler {\n /**\n * @param {Colorpicker} colorpicker\n */\n constructor(colorpicker) {\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n }\n\n /**\n * @returns {*|String|ColorItem}\n */\n get fallback() {\n return this.colorpicker.options.fallbackColor ?\n this.colorpicker.options.fallbackColor : (this.hasColor() ? this.color : null);\n }\n\n /**\n * @returns {String|null}\n */\n get format() {\n if (this.colorpicker.options.format) {\n return this.colorpicker.options.format;\n }\n\n if (this.hasColor() && this.color.hasTransparency() && this.color.format.match(/^hex/)) {\n return this.isAlphaEnabled() ? 'rgba' : 'hex';\n }\n\n if (this.hasColor()) {\n return this.color.format;\n }\n\n return 'rgb';\n }\n\n /**\n * Internal color getter\n *\n * @type {ColorItem|null}\n */\n get color() {\n return this.colorpicker.element.data('color');\n }\n\n /**\n * Internal color setter\n *\n * @ignore\n * @param {ColorItem|null} value\n */\n set color(value) {\n this.colorpicker.element.data('color', value);\n\n if ((value instanceof ColorItem) && (this.colorpicker.options.format === 'auto')) {\n // If format is 'auto', use the first parsed one from now on\n this.colorpicker.options.format = this.color.format;\n }\n }\n\n bind() {\n // if the color option is set\n if (this.colorpicker.options.color) {\n this.color = this.createColor(this.colorpicker.options.color);\n return;\n }\n\n // if element[color] is empty and the input has a value\n if (!this.color && !!this.colorpicker.inputHandler.getValue()) {\n this.color = this.createColor(\n this.colorpicker.inputHandler.getValue(), this.colorpicker.options.autoInputFallback\n );\n }\n }\n\n unbind() {\n this.colorpicker.element.removeData('color');\n }\n\n /**\n * Returns the color string from the input value or the 'data-color' attribute of the input or element.\n * If empty, it returns the defaultValue parameter.\n *\n * @returns {String|*}\n */\n getColorString() {\n if (!this.hasColor()) {\n return '';\n }\n\n return this.color.string(this.format);\n }\n\n /**\n * Sets the color value\n *\n * @param {String|ColorItem} val\n */\n setColorString(val) {\n let color = val ? this.createColor(val) : null;\n\n this.color = color ? color : null;\n }\n\n /**\n * Creates a new color using the widget instance options (fallbackColor, format).\n *\n * @fires Colorpicker#colorpickerInvalid\n * @param {*} val\n * @param {boolean} fallbackOnInvalid\n * @returns {ColorItem}\n */\n createColor(val, fallbackOnInvalid = true) {\n let color = new ColorItem(this.resolveColorDelegate(val), this.format);\n\n if (!color.isValid()) {\n if (fallbackOnInvalid) {\n color = this.getFallbackColor();\n }\n\n /**\n * (Colorpicker) Fired when the color is invalid and the fallback color is going to be used.\n *\n * @event Colorpicker#colorpickerInvalid\n */\n this.colorpicker.trigger('colorpickerInvalid', color, val);\n }\n\n if (!this.isAlphaEnabled()) {\n // Alpha is disabled\n color.alpha = 1;\n }\n\n return color;\n }\n\n getFallbackColor() {\n if (this.fallback && (this.fallback === this.color)) {\n return this.color;\n }\n\n let fallback = this.resolveColorDelegate(this.fallback);\n let color = new ColorItem(fallback, this.format);\n\n if (!color.isValid()) {\n console.warn('The fallback color is invalid. Falling back to the previous color or black if any.');\n return this.color ? this.color : new ColorItem('#000000', this.format);\n }\n\n return color;\n }\n\n /**\n * @returns {ColorItem}\n */\n assureColor() {\n if (!this.hasColor()) {\n this.color = this.getFallbackColor();\n }\n\n return this.color;\n }\n\n /**\n * Delegates the color resolution to the colorpicker extensions.\n *\n * @param {String|*} color\n * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n * @returns {ColorItem|String|*|null}\n */\n resolveColorDelegate(color, realColor = true) {\n let extResolvedColor = false;\n\n $.each(this.colorpicker.extensions, function (name, ext) {\n if (extResolvedColor !== false) {\n // skip if resolved\n return;\n }\n extResolvedColor = ext.resolveColor(color, realColor);\n });\n\n return extResolvedColor ? extResolvedColor : color;\n }\n\n /**\n * Checks if there is a color object, that it is valid and it is not a fallback\n * @returns {boolean}\n */\n isInvalidColor() {\n return !this.hasColor() || !this.color.isValid();\n }\n\n /**\n * Returns true if the useAlpha option is exactly true, false otherwise\n * @returns {boolean}\n */\n isAlphaEnabled() {\n return (this.colorpicker.options.useAlpha !== false);\n }\n\n /**\n * Returns true if the current color object is an instance of Color, false otherwise.\n * @returns {boolean}\n */\n hasColor() {\n return this.color instanceof ColorItem;\n }\n}\n\nexport default ColorHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/ColorHandler.js","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Handles everything related to the colorpicker UI\n * @ignore\n */\nclass PickerHandler {\n /**\n * @param {Colorpicker} colorpicker\n */\n constructor(colorpicker) {\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery}\n */\n this.picker = null;\n }\n\n get options() {\n return this.colorpicker.options;\n }\n\n get color() {\n return this.colorpicker.colorHandler.color;\n }\n\n bind() {\n /**\n * @type {jQuery|HTMLElement}\n */\n let picker = this.picker = $(this.options.template);\n\n if (this.options.customClass) {\n picker.addClass(this.options.customClass);\n }\n\n if (this.options.horizontal) {\n picker.addClass('colorpicker-horizontal');\n }\n\n if (this._supportsAlphaBar()) {\n this.options.useAlpha = true;\n picker.addClass('colorpicker-with-alpha');\n } else {\n this.options.useAlpha = false;\n }\n }\n\n attach() {\n // Inject the colorpicker element into the DOM\n let pickerParent = this.colorpicker.container ? this.colorpicker.container : null;\n\n if (pickerParent) {\n this.picker.appendTo(pickerParent);\n }\n }\n\n unbind() {\n this.picker.remove();\n }\n\n _supportsAlphaBar() {\n return (\n (this.options.useAlpha || (this.colorpicker.colorHandler.hasColor() && this.color.hasTransparency())) &&\n (this.options.useAlpha !== false) &&\n (!this.options.format || (this.options.format && !this.options.format.match(/^hex([36])?$/i)))\n );\n }\n\n /**\n * Changes the color adjustment bars using the current color object information.\n */\n update() {\n if (!this.colorpicker.colorHandler.hasColor()) {\n return;\n }\n\n let vertical = (this.options.horizontal !== true),\n slider = vertical ? this.options.sliders : this.options.slidersHorz;\n\n let saturationGuide = this.picker.find('.colorpicker-saturation .colorpicker-guide'),\n hueGuide = this.picker.find('.colorpicker-hue .colorpicker-guide'),\n alphaGuide = this.picker.find('.colorpicker-alpha .colorpicker-guide');\n\n let hsva = this.color.toHsvaRatio();\n\n // Set guides position\n if (hueGuide.length) {\n hueGuide.css(vertical ? 'top' : 'left', (vertical ? slider.hue.maxTop : slider.hue.maxLeft) * (1 - hsva.h));\n }\n if (alphaGuide.length) {\n alphaGuide.css(vertical ? 'top' : 'left', (vertical ? slider.alpha.maxTop : slider.alpha.maxLeft) * (1 - hsva.a));\n }\n if (saturationGuide.length) {\n saturationGuide.css({\n 'top': slider.saturation.maxTop - hsva.v * slider.saturation.maxTop,\n 'left': hsva.s * slider.saturation.maxLeft\n });\n }\n\n // Set saturation hue background\n this.picker.find('.colorpicker-saturation')\n .css('backgroundColor', this.color.getCloneHueOnly().toHexString()); // we only need hue\n\n // Set alpha color gradient\n let hexColor = this.color.toHexString();\n let alphaBg = '';\n\n if (this.options.horizontal) {\n alphaBg = `linear-gradient(to right, ${hexColor} 0%, transparent 100%)`;\n } else {\n alphaBg = `linear-gradient(to bottom, ${hexColor} 0%, transparent 100%)`;\n }\n\n this.picker.find('.colorpicker-alpha-color').css('background', alphaBg);\n }\n}\n\nexport default PickerHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/PickerHandler.js","'use strict';\n\n/**\n * Handles everything related to the colorpicker addon\n * @ignore\n */\nclass AddonHandler {\n /**\n * @param {Colorpicker} colorpicker\n */\n constructor(colorpicker) {\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery}\n */\n this.addon = null;\n }\n\n hasAddon() {\n return !!this.addon;\n }\n\n bind() {\n /**\n * @type {*|jQuery}\n */\n this.addon = this.colorpicker.options.addon ?\n this.colorpicker.element.find(this.colorpicker.options.addon) : null;\n\n if (this.addon && (this.addon.length === 0)) {\n // not found\n this.addon = null;\n }\n }\n\n unbind() {\n if (this.hasAddon()) {\n this.addon.off('.colorpicker');\n }\n }\n\n /**\n * If the addon element is present, its background color is updated\n */\n update() {\n if (!this.colorpicker.colorHandler.hasColor() || !this.hasAddon()) {\n return;\n }\n\n let colorStr = this.colorpicker.colorHandler.getColorString();\n let styles = {'background': colorStr};\n\n let icn = this.addon.find('i').eq(0);\n\n if (icn.length > 0) {\n icn.css(styles);\n } else {\n this.addon.css(styles);\n }\n }\n}\n\nexport default AddonHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/AddonHandler.js"],"sourceRoot":""} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /*! |
| | | * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4. |
| | | * @package bootstrap-colorpicker |
| | | * @version v3.1.2 |
| | | * @license MIT |
| | | * @link https://farbelous.github.io/bootstrap-colorpicker/ |
| | | * @link https://github.com/farbelous/bootstrap-colorpicker.git |
| | | */ |
| | | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define("bootstrap-colorpicker",["jquery"],t):"object"==typeof exports?exports["bootstrap-colorpicker"]=t(require("jquery")):e["bootstrap-colorpicker"]=t(e.jQuery)}("undefined"!=typeof self?self:this,function(e){return function(e){function t(r){if(o[r])return o[r].exports;var n=o[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,r){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,"a",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=7)}([function(t,o){t.exports=e},function(e,t,o){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),i=o(0),a=function(e){return e&&e.__esModule?e:{default:e}}(i),l=function(){function e(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(r(this,e),this.colorpicker=t,this.options=o,!this.colorpicker.element||!this.colorpicker.element.length)throw new Error("Extension: this.colorpicker.element is not valid");this.colorpicker.element.on("colorpickerCreate.colorpicker-ext",a.default.proxy(this.onCreate,this)),this.colorpicker.element.on("colorpickerDestroy.colorpicker-ext",a.default.proxy(this.onDestroy,this)),this.colorpicker.element.on("colorpickerUpdate.colorpicker-ext",a.default.proxy(this.onUpdate,this)),this.colorpicker.element.on("colorpickerChange.colorpicker-ext",a.default.proxy(this.onChange,this)),this.colorpicker.element.on("colorpickerInvalid.colorpicker-ext",a.default.proxy(this.onInvalid,this)),this.colorpicker.element.on("colorpickerShow.colorpicker-ext",a.default.proxy(this.onShow,this)),this.colorpicker.element.on("colorpickerHide.colorpicker-ext",a.default.proxy(this.onHide,this)),this.colorpicker.element.on("colorpickerEnable.colorpicker-ext",a.default.proxy(this.onEnable,this)),this.colorpicker.element.on("colorpickerDisable.colorpicker-ext",a.default.proxy(this.onDisable,this))}return n(e,[{key:"resolveColor",value:function(e){!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1}},{key:"onCreate",value:function(e){}},{key:"onDestroy",value:function(e){this.colorpicker.element.off(".colorpicker-ext")}},{key:"onUpdate",value:function(e){}},{key:"onChange",value:function(e){}},{key:"onInvalid",value:function(e){}},{key:"onHide",value:function(e){}},{key:"onShow",value:function(e){}},{key:"onDisable",value:function(e){}},{key:"onEnable",value:function(e){}}]),e}();t.default=l},function(e,t,o){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.ColorItem=t.HSVAColor=void 0;var n=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),i=o(16),a=function(e){return e&&e.__esModule?e:{default:e}}(i),l=function(){function e(t,o,n,i){r(this,e),this.h=isNaN(t)?0:t,this.s=isNaN(o)?0:o,this.v=isNaN(n)?0:n,this.a=isNaN(t)?1:i}return n(e,[{key:"toString",value:function(){return this.h+", "+this.s+"%, "+this.v+"%, "+this.a}}]),e}(),s=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;r(this,e),this.replace(t,o)}return n(e,[{key:"api",value:function(t){for(var o=arguments.length,r=Array(o>1?o-1:0),n=1;n<o;n++)r[n-1]=arguments[n];if(0===arguments.length)return this._color;var i=this._color[t].apply(this._color,r);return i instanceof a.default?new e(i,this.format):i}},{key:"original",get:function(){return this._original}}],[{key:"HSVAColor",get:function(){return l}}]),n(e,[{key:"replace",value:function(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(o=e.sanitizeFormat(o),this._original={color:t,format:o,valid:!0},this._color=e.parse(t),null===this._color)return this._color=(0,a.default)(),void(this._original.valid=!1);this._format=o||(e.isHex(t)?"hex":this._color.model)}},{key:"isValid",value:function(){return!0===this._original.valid}},{key:"setHueRatio",value:function(e){this.hue=360*(1-e)}},{key:"setSaturationRatio",value:function(e){this.saturation=100*e}},{key:"setValueRatio",value:function(e){this.value=100*(1-e)}},{key:"setAlphaRatio",value:function(e){this.alpha=1-e}},{key:"isDesaturated",value:function(){return 0===this.saturation}},{key:"isTransparent",value:function(){return 0===this.alpha}},{key:"hasTransparency",value:function(){return this.hasAlpha()&&this.alpha<1}},{key:"hasAlpha",value:function(){return!isNaN(this.alpha)}},{key:"toObject",value:function(){return new l(this.hue,this.saturation,this.value,this.alpha)}},{key:"toHsva",value:function(){return this.toObject()}},{key:"toHsvaRatio",value:function(){return new l(this.hue/360,this.saturation/100,this.value/100,this.alpha)}},{key:"toString",value:function(){return this.string()}},{key:"string",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!(t=e.sanitizeFormat(t||this.format)))return this._color.round().string();if(void 0===this._color[t])throw new Error("Unsupported color format: '"+t+"'");var o=this._color[t]();return o.round?o.round().string():o}},{key:"equals",value:function(t){return t=t instanceof e?t:new e(t),!(!t.isValid()||!this.isValid())&&(this.hue===t.hue&&this.saturation===t.saturation&&this.value===t.value&&this.alpha===t.alpha)}},{key:"getClone",value:function(){return new e(this._color,this.format)}},{key:"getCloneHueOnly",value:function(){return new e([this.hue,100,100,1],this.format)}},{key:"getCloneOpaque",value:function(){return new e(this._color.alpha(1),this.format)}},{key:"toRgbString",value:function(){return this.string("rgb")}},{key:"toHexString",value:function(){return this.string("hex")}},{key:"toHslString",value:function(){return this.string("hsl")}},{key:"isDark",value:function(){return this._color.isDark()}},{key:"isLight",value:function(){return this._color.isLight()}},{key:"generate",value:function(t){var o=[];if(Array.isArray(t))o=t;else{if(!e.colorFormulas.hasOwnProperty(t))throw new Error("No color formula found with the name '"+t+"'.");o=e.colorFormulas[t]}var r=[],n=this._color,i=this.format;return o.forEach(function(t){var o=[t?(n.hue()+t)%360:n.hue(),n.saturationv(),n.value(),n.alpha()];r.push(new e(o,i))}),r}},{key:"hue",get:function(){return this._color.hue()},set:function(e){this._color=this._color.hue(e)}},{key:"saturation",get:function(){return this._color.saturationv()},set:function(e){this._color=this._color.saturationv(e)}},{key:"value",get:function(){return this._color.value()},set:function(e){this._color=this._color.value(e)}},{key:"alpha",get:function(){var e=this._color.alpha();return isNaN(e)?1:e},set:function(e){this._color=this._color.alpha(Math.round(100*e)/100)}},{key:"format",get:function(){return this._format?this._format:this._color.model},set:function(t){this._format=e.sanitizeFormat(t)}}],[{key:"parse",value:function(t){if(t instanceof a.default)return t;if(t instanceof e)return t._color;var o=null;if(null===(t=t instanceof l?[t.h,t.s,t.v,isNaN(t.a)?1:t.a]:e.sanitizeString(t)))return null;Array.isArray(t)&&(o="hsv");try{return(0,a.default)(t,o)}catch(e){return null}}},{key:"sanitizeString",value:function(e){return"string"==typeof e||e instanceof String?e.match(/^[0-9a-f]{2,}$/i)?"#"+e:"transparent"===e.toLowerCase()?"#FFFFFF00":e:e}},{key:"isHex",value:function(e){return("string"==typeof e||e instanceof String)&&!!e.match(/^#?[0-9a-f]{2,}$/i)}},{key:"sanitizeFormat",value:function(e){switch(e){case"hex":case"hex3":case"hex4":case"hex6":case"hex8":return"hex";case"rgb":case"rgba":case"keyword":case"name":return"rgb";case"hsl":case"hsla":case"hsv":case"hsva":case"hwb":case"hwba":return"hsl";default:return""}}}]),e}();s.colorFormulas={complementary:[180],triad:[0,120,240],tetrad:[0,90,180,270],splitcomplement:[0,72,216]},t.default=s,t.HSVAColor=l,t.ColorItem=s},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={bar_size_short:16,base_margin:6,columns:6},n=r.bar_size_short*r.columns+r.base_margin*(r.columns-1);t.default={customClass:null,color:!1,fallbackColor:!1,format:"auto",horizontal:!1,inline:!1,container:!1,popover:{animation:!0,placement:"bottom",fallbackPlacement:"flip"},debug:!1,input:"input",addon:".colorpicker-input-addon",autoInputFallback:!0,useHashPrefix:!0,useAlpha:!0,template:'<div class="colorpicker">\n <div class="colorpicker-saturation"><i class="colorpicker-guide"></i></div>\n <div class="colorpicker-hue"><i class="colorpicker-guide"></i></div>\n <div class="colorpicker-alpha">\n <div class="colorpicker-alpha-color"></div>\n <i class="colorpicker-guide"></i>\n </div>\n </div>',extensions:[{name:"preview",options:{showText:!0}}],sliders:{saturation:{selector:".colorpicker-saturation",maxLeft:n,maxTop:n,callLeft:"setSaturationRatio",callTop:"setValueRatio"},hue:{selector:".colorpicker-hue",maxLeft:0,maxTop:n,callLeft:!1,callTop:"setHueRatio"},alpha:{selector:".colorpicker-alpha",childSelector:".colorpicker-alpha-color",maxLeft:0,maxTop:n,callLeft:!1,callTop:"setAlphaRatio"}},slidersHorz:{saturation:{selector:".colorpicker-saturation",maxLeft:n,maxTop:n,callLeft:"setSaturationRatio",callTop:"setValueRatio"},hue:{selector:".colorpicker-hue",maxLeft:n,maxTop:0,callLeft:"setHueRatio",callTop:!1},alpha:{selector:".colorpicker-alpha",childSelector:".colorpicker-alpha-color",maxLeft:n,maxTop:0,callLeft:"setAlphaRatio",callTop:!1}}}},function(e,t,o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),c=o(1),u=r(c),h=o(0),p=r(h),f={colors:null,namesAsValues:!0},d=function(e){function t(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n(this,t);var r=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,p.default.extend(!0,{},f,o)));return Array.isArray(r.options.colors)||"object"===l(r.options.colors)||(r.options.colors=null),r}return a(t,e),s(t,[{key:"colors",get:function(){return this.options.colors}}]),s(t,[{key:"getLength",value:function(){return this.options.colors?Array.isArray(this.options.colors)?this.options.colors.length:"object"===l(this.options.colors)?Object.keys(this.options.colors).length:0:0}},{key:"resolveColor",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!(this.getLength()<=0)&&(Array.isArray(this.options.colors)?this.options.colors.indexOf(e)>=0?e:this.options.colors.indexOf(e.toUpperCase())>=0?e.toUpperCase():this.options.colors.indexOf(e.toLowerCase())>=0&&e.toLowerCase():"object"===l(this.options.colors)&&(!this.options.namesAsValues||t?this.getValue(e,!1):this.getName(e,this.getName("#"+e))))}},{key:"getName",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("string"!=typeof e||!this.options.colors)return t;for(var o in this.options.colors)if(this.options.colors.hasOwnProperty(o)&&this.options.colors[o].toLowerCase()===e.toLowerCase())return o;return t}},{key:"getValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return"string"==typeof e&&this.options.colors&&this.options.colors.hasOwnProperty(e)?this.options.colors[e]:t}}]),t}(u.default);t.default=d},function(e,t,o){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(e,t,o){function r(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2)}var n=o(5),i={};for(var a in n)n.hasOwnProperty(a)&&(i[n[a]]=a);var l=e.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var s in l)if(l.hasOwnProperty(s)){if(!("channels"in l[s]))throw new Error("missing channels property: "+s);if(!("labels"in l[s]))throw new Error("missing channel labels property: "+s);if(l[s].labels.length!==l[s].channels)throw new Error("channel and label counts mismatch: "+s);var c=l[s].channels,u=l[s].labels;delete l[s].channels,delete l[s].labels,Object.defineProperty(l[s],"channels",{value:c}),Object.defineProperty(l[s],"labels",{value:u})}l.rgb.hsl=function(e){var t,o,r,n=e[0]/255,i=e[1]/255,a=e[2]/255,l=Math.min(n,i,a),s=Math.max(n,i,a),c=s-l;return s===l?t=0:n===s?t=(i-a)/c:i===s?t=2+(a-n)/c:a===s&&(t=4+(n-i)/c),t=Math.min(60*t,360),t<0&&(t+=360),r=(l+s)/2,o=s===l?0:r<=.5?c/(s+l):c/(2-s-l),[t,100*o,100*r]},l.rgb.hsv=function(e){var t,o,r,n,i,a=e[0]/255,l=e[1]/255,s=e[2]/255,c=Math.max(a,l,s),u=c-Math.min(a,l,s),h=function(e){return(c-e)/6/u+.5};return 0===u?n=i=0:(i=u/c,t=h(a),o=h(l),r=h(s),a===c?n=r-o:l===c?n=1/3+t-r:s===c&&(n=2/3+o-t),n<0?n+=1:n>1&&(n-=1)),[360*n,100*i,100*c]},l.rgb.hwb=function(e){var t=e[0],o=e[1],r=e[2],n=l.rgb.hsl(e)[0],i=1/255*Math.min(t,Math.min(o,r));return r=1-1/255*Math.max(t,Math.max(o,r)),[n,100*i,100*r]},l.rgb.cmyk=function(e){var t,o,r,n,i=e[0]/255,a=e[1]/255,l=e[2]/255;return n=Math.min(1-i,1-a,1-l),t=(1-i-n)/(1-n)||0,o=(1-a-n)/(1-n)||0,r=(1-l-n)/(1-n)||0,[100*t,100*o,100*r,100*n]},l.rgb.keyword=function(e){var t=i[e];if(t)return t;var o,a=1/0;for(var l in n)if(n.hasOwnProperty(l)){var s=n[l],c=r(e,s);c<a&&(a=c,o=l)}return o},l.keyword.rgb=function(e){return n[e]},l.rgb.xyz=function(e){var t=e[0]/255,o=e[1]/255,r=e[2]/255;return t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,o=o>.04045?Math.pow((o+.055)/1.055,2.4):o/12.92,r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,[100*(.4124*t+.3576*o+.1805*r),100*(.2126*t+.7152*o+.0722*r),100*(.0193*t+.1192*o+.9505*r)]},l.rgb.lab=function(e){var t,o,r,n=l.rgb.xyz(e),i=n[0],a=n[1],s=n[2];return i/=95.047,a/=100,s/=108.883,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,s=s>.008856?Math.pow(s,1/3):7.787*s+16/116,t=116*a-16,o=500*(i-a),r=200*(a-s),[t,o,r]},l.hsl.rgb=function(e){var t,o,r,n,i,a=e[0]/360,l=e[1]/100,s=e[2]/100;if(0===l)return i=255*s,[i,i,i];o=s<.5?s*(1+l):s+l-s*l,t=2*s-o,n=[0,0,0];for(var c=0;c<3;c++)r=a+1/3*-(c-1),r<0&&r++,r>1&&r--,i=6*r<1?t+6*(o-t)*r:2*r<1?o:3*r<2?t+(o-t)*(2/3-r)*6:t,n[c]=255*i;return n},l.hsl.hsv=function(e){var t,o,r=e[0],n=e[1]/100,i=e[2]/100,a=n,l=Math.max(i,.01);return i*=2,n*=i<=1?i:2-i,a*=l<=1?l:2-l,o=(i+n)/2,t=0===i?2*a/(l+a):2*n/(i+n),[r,100*t,100*o]},l.hsv.rgb=function(e){var t=e[0]/60,o=e[1]/100,r=e[2]/100,n=Math.floor(t)%6,i=t-Math.floor(t),a=255*r*(1-o),l=255*r*(1-o*i),s=255*r*(1-o*(1-i));switch(r*=255,n){case 0:return[r,s,a];case 1:return[l,r,a];case 2:return[a,r,s];case 3:return[a,l,r];case 4:return[s,a,r];case 5:return[r,a,l]}},l.hsv.hsl=function(e){var t,o,r,n=e[0],i=e[1]/100,a=e[2]/100,l=Math.max(a,.01);return r=(2-i)*a,t=(2-i)*l,o=i*l,o/=t<=1?t:2-t,o=o||0,r/=2,[n,100*o,100*r]},l.hwb.rgb=function(e){var t,o,r,n,i=e[0]/360,a=e[1]/100,l=e[2]/100,s=a+l;s>1&&(a/=s,l/=s),t=Math.floor(6*i),o=1-l,r=6*i-t,0!=(1&t)&&(r=1-r),n=a+r*(o-a);var c,u,h;switch(t){default:case 6:case 0:c=o,u=n,h=a;break;case 1:c=n,u=o,h=a;break;case 2:c=a,u=o,h=n;break;case 3:c=a,u=n,h=o;break;case 4:c=n,u=a,h=o;break;case 5:c=o,u=a,h=n}return[255*c,255*u,255*h]},l.cmyk.rgb=function(e){var t,o,r,n=e[0]/100,i=e[1]/100,a=e[2]/100,l=e[3]/100;return t=1-Math.min(1,n*(1-l)+l),o=1-Math.min(1,i*(1-l)+l),r=1-Math.min(1,a*(1-l)+l),[255*t,255*o,255*r]},l.xyz.rgb=function(e){var t,o,r,n=e[0]/100,i=e[1]/100,a=e[2]/100;return t=3.2406*n+-1.5372*i+-.4986*a,o=-.9689*n+1.8758*i+.0415*a,r=.0557*n+-.204*i+1.057*a,t=t>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:12.92*o,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,t=Math.min(Math.max(0,t),1),o=Math.min(Math.max(0,o),1),r=Math.min(Math.max(0,r),1),[255*t,255*o,255*r]},l.xyz.lab=function(e){var t,o,r,n=e[0],i=e[1],a=e[2];return n/=95.047,i/=100,a/=108.883,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,t=116*i-16,o=500*(n-i),r=200*(i-a),[t,o,r]},l.lab.xyz=function(e){var t,o,r,n=e[0],i=e[1],a=e[2];o=(n+16)/116,t=i/500+o,r=o-a/200;var l=Math.pow(o,3),s=Math.pow(t,3),c=Math.pow(r,3);return o=l>.008856?l:(o-16/116)/7.787,t=s>.008856?s:(t-16/116)/7.787,r=c>.008856?c:(r-16/116)/7.787,t*=95.047,o*=100,r*=108.883,[t,o,r]},l.lab.lch=function(e){var t,o,r,n=e[0],i=e[1],a=e[2];return t=Math.atan2(a,i),o=360*t/2/Math.PI,o<0&&(o+=360),r=Math.sqrt(i*i+a*a),[n,r,o]},l.lch.lab=function(e){var t,o,r,n=e[0],i=e[1],a=e[2];return r=a/360*2*Math.PI,t=i*Math.cos(r),o=i*Math.sin(r),[n,t,o]},l.rgb.ansi16=function(e){var t=e[0],o=e[1],r=e[2],n=1 in arguments?arguments[1]:l.rgb.hsv(e)[2];if(0===(n=Math.round(n/50)))return 30;var i=30+(Math.round(r/255)<<2|Math.round(o/255)<<1|Math.round(t/255));return 2===n&&(i+=60),i},l.hsv.ansi16=function(e){return l.rgb.ansi16(l.hsv.rgb(e),e[2])},l.rgb.ansi256=function(e){var t=e[0],o=e[1],r=e[2];return t===o&&o===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(o/255*5)+Math.round(r/255*5)},l.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];var o=.5*(1+~~(e>50));return[(1&t)*o*255,(t>>1&1)*o*255,(t>>2&1)*o*255]},l.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}e-=16;var o;return[Math.floor(e/36)/5*255,Math.floor((o=e%36)/6)/5*255,o%6/5*255]},l.rgb.hex=function(e){var t=((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2])),o=t.toString(16).toUpperCase();return"000000".substring(o.length)+o},l.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var o=t[0];3===t[0].length&&(o=o.split("").map(function(e){return e+e}).join(""));var r=parseInt(o,16);return[r>>16&255,r>>8&255,255&r]},l.rgb.hcg=function(e){var t,o,r=e[0]/255,n=e[1]/255,i=e[2]/255,a=Math.max(Math.max(r,n),i),l=Math.min(Math.min(r,n),i),s=a-l;return t=s<1?l/(1-s):0,o=s<=0?0:a===r?(n-i)/s%6:a===n?2+(i-r)/s:4+(r-n)/s+4,o/=6,o%=1,[360*o,100*s,100*t]},l.hsl.hcg=function(e){var t=e[1]/100,o=e[2]/100,r=1,n=0;return r=o<.5?2*t*o:2*t*(1-o),r<1&&(n=(o-.5*r)/(1-r)),[e[0],100*r,100*n]},l.hsv.hcg=function(e){var t=e[1]/100,o=e[2]/100,r=t*o,n=0;return r<1&&(n=(o-r)/(1-r)),[e[0],100*r,100*n]},l.hcg.rgb=function(e){var t=e[0]/360,o=e[1]/100,r=e[2]/100;if(0===o)return[255*r,255*r,255*r];var n=[0,0,0],i=t%1*6,a=i%1,l=1-a,s=0;switch(Math.floor(i)){case 0:n[0]=1,n[1]=a,n[2]=0;break;case 1:n[0]=l,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=a;break;case 3:n[0]=0,n[1]=l,n[2]=1;break;case 4:n[0]=a,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=l}return s=(1-o)*r,[255*(o*n[0]+s),255*(o*n[1]+s),255*(o*n[2]+s)]},l.hcg.hsv=function(e){var t=e[1]/100,o=e[2]/100,r=t+o*(1-t),n=0;return r>0&&(n=t/r),[e[0],100*n,100*r]},l.hcg.hsl=function(e){var t=e[1]/100,o=e[2]/100,r=o*(1-t)+.5*t,n=0;return r>0&&r<.5?n=t/(2*r):r>=.5&&r<1&&(n=t/(2*(1-r))),[e[0],100*n,100*r]},l.hcg.hwb=function(e){var t=e[1]/100,o=e[2]/100,r=t+o*(1-t);return[e[0],100*(r-t),100*(1-r)]},l.hwb.hcg=function(e){var t=e[1]/100,o=e[2]/100,r=1-o,n=r-t,i=0;return n<1&&(i=(r-n)/(1-n)),[e[0],100*n,100*i]},l.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},l.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},l.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},l.gray.hsl=l.gray.hsv=function(e){return[0,0,e[0]]},l.gray.hwb=function(e){return[0,100,e[0]]},l.gray.cmyk=function(e){return[0,0,0,e[0]]},l.gray.lab=function(e){return[e[0],0,0]},l.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),o=(t<<16)+(t<<8)+t,r=o.toString(16).toUpperCase();return"000000".substring(r.length)+r},l.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},function(e,t,o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=o(8),a=r(i),l=o(0),s=r(l),c="colorpicker";s.default[c]=a.default,s.default.fn[c]=function(e){var t=Array.prototype.slice.call(arguments,1),o=1===this.length,r=null,i=this.each(function(){var i=(0,s.default)(this),l=i.data(c),u="object"===(void 0===e?"undefined":n(e))?e:{};l||(l=new a.default(this,u),i.data(c,l)),o&&(r=i,"string"==typeof e&&(r="colorpicker"===e?l:s.default.isFunction(l[e])?l[e].apply(l,t):l[e]))});return o?r:i},s.default.fn[c].constructor=a.default},function(e,t,o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),a=o(1),l=r(a),s=o(3),c=r(s),u=o(9),h=r(u),p=o(0),f=r(p),d=o(13),v=r(d),k=o(14),g=r(k),y=o(15),b=r(y),m=o(22),w=r(m),x=o(23),_=r(x),C=o(24),M=r(C),O=o(2),j=r(O),H=0,P="undefined"!=typeof self?self:void 0,E=function(){function e(t,o){n(this,e),H+=1,this.id=H,this.lastEvent={alias:null,e:null},this.element=(0,f.default)(t).addClass("colorpicker-element").attr("data-colorpicker-id",this.id),this.options=f.default.extend(!0,{},c.default,o,this.element.data()),this.disabled=!1,this.extensions=[],this.container=!0===this.options.container||!0!==this.options.container&&!0===this.options.inline?this.element:this.options.container,this.container=!1!==this.container&&(0,f.default)(this.container),this.inputHandler=new b.default(this),this.colorHandler=new w.default(this),this.sliderHandler=new v.default(this),this.popupHandler=new g.default(this,P),this.pickerHandler=new _.default(this),this.addonHandler=new M.default(this),this.init(),(0,f.default)(f.default.proxy(function(){this.trigger("colorpickerCreate")},this))}return i(e,[{key:"color",get:function(){return this.colorHandler.color}},{key:"format",get:function(){return this.colorHandler.format}},{key:"picker",get:function(){return this.pickerHandler.picker}}],[{key:"Color",get:function(){return j.default}},{key:"Extension",get:function(){return l.default}}]),i(e,[{key:"init",value:function(){this.addonHandler.bind(),this.inputHandler.bind(),this.initExtensions(),this.colorHandler.bind(),this.pickerHandler.bind(),this.sliderHandler.bind(),this.popupHandler.bind(),this.pickerHandler.attach(),this.update(),this.inputHandler.isDisabled()&&this.disable()}},{key:"initExtensions",value:function(){var t=this;Array.isArray(this.options.extensions)||(this.options.extensions=[]),this.options.debug&&this.options.extensions.push({name:"debugger"}),this.options.extensions.forEach(function(o){t.registerExtension(e.extensions[o.name.toLowerCase()],o.options||{})})}},{key:"registerExtension",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=new e(this,t);return this.extensions.push(o),o}},{key:"destroy",value:function(){var e=this.color;this.sliderHandler.unbind(),this.inputHandler.unbind(),this.popupHandler.unbind(),this.colorHandler.unbind(),this.addonHandler.unbind(),this.pickerHandler.unbind(),this.element.removeClass("colorpicker-element").removeData("colorpicker","color").off(".colorpicker"),this.trigger("colorpickerDestroy",e)}},{key:"show",value:function(e){this.popupHandler.show(e)}},{key:"hide",value:function(e){this.popupHandler.hide(e)}},{key:"toggle",value:function(e){this.popupHandler.toggle(e)}},{key:"getValue",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this.colorHandler.color;return t=t instanceof j.default?t:e,t instanceof j.default?t.string(this.format):t}},{key:"setValue",value:function(e){if(!this.isDisabled()){var t=this.colorHandler;t.hasColor()&&e&&t.color.equals(e)||!t.hasColor()&&!e||(t.color=e?t.createColor(e,this.options.autoInputFallback):null,this.trigger("colorpickerChange",t.color,e),this.update())}}},{key:"update",value:function(){this.colorHandler.hasColor()?this.inputHandler.update():this.colorHandler.assureColor(),this.addonHandler.update(),this.pickerHandler.update(),this.trigger("colorpickerUpdate")}},{key:"enable",value:function(){return this.inputHandler.enable(),this.disabled=!1,this.picker.removeClass("colorpicker-disabled"),this.trigger("colorpickerEnable"),!0}},{key:"disable",value:function(){return this.inputHandler.disable(),this.disabled=!0,this.picker.addClass("colorpicker-disabled"),this.trigger("colorpickerDisable"),!0}},{key:"isEnabled",value:function(){return!this.isDisabled()}},{key:"isDisabled",value:function(){return!0===this.disabled}},{key:"trigger",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this.element.trigger({type:e,colorpicker:this,color:t||this.color,value:o||this.getValue()})}}]),e}();E.extensions=h.default,t.default=E},function(e,t,o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.Palette=t.Swatches=t.Preview=t.Debugger=void 0;var n=o(10),i=r(n),a=o(11),l=r(a),s=o(12),c=r(s),u=o(4),h=r(u);t.Debugger=i.default,t.Preview=l.default,t.Swatches=c.default,t.Palette=h.default,t.default={debugger:i.default,preview:l.default,swatches:c.default,palette:h.default}},function(e,t,o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),s=function e(t,o,r){null===t&&(t=Function.prototype);var n=Object.getOwnPropertyDescriptor(t,o);if(void 0===n){var i=Object.getPrototypeOf(t);return null===i?void 0:e(i,o,r)}if("value"in n)return n.value;var a=n.get;if(void 0!==a)return a.call(r)},c=o(1),u=r(c),h=o(0),p=r(h),f=function(e){function t(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n(this,t);var r=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,o));return r.eventCounter=0,r.colorpicker.inputHandler.hasInput()&&r.colorpicker.inputHandler.input.on("change.colorpicker-ext",p.default.proxy(r.onChangeInput,r)),r}return a(t,e),l(t,[{key:"log",value:function(e){for(var t,o=arguments.length,r=Array(o>1?o-1:0),n=1;n<o;n++)r[n-1]=arguments[n];this.eventCounter+=1;var i="#"+this.eventCounter+": Colorpicker#"+this.colorpicker.id+" ["+e+"]";(t=console).debug.apply(t,[i].concat(r)),this.colorpicker.element.trigger({type:"colorpickerDebug",colorpicker:this.colorpicker,color:this.color,value:null,debug:{debugger:this,eventName:e,logArgs:r,logMessage:i}})}},{key:"resolveColor",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.log("resolveColor()",e,t),!1}},{key:"onCreate",value:function(e){return this.log("colorpickerCreate"),s(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"onCreate",this).call(this,e)}},{key:"onDestroy",value:function(e){return this.log("colorpickerDestroy"),this.eventCounter=0,this.colorpicker.inputHandler.hasInput()&&this.colorpicker.inputHandler.input.off(".colorpicker-ext"),s(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"onDestroy",this).call(this,e)}},{key:"onUpdate",value:function(e){this.log("colorpickerUpdate")}},{key:"onChangeInput",value:function(e){this.log("input:change.colorpicker",e.value,e.color)}},{key:"onChange",value:function(e){this.log("colorpickerChange",e.value,e.color)}},{key:"onInvalid",value:function(e){this.log("colorpickerInvalid",e.value,e.color)}},{key:"onHide",value:function(e){this.log("colorpickerHide"),this.eventCounter=0}},{key:"onShow",value:function(e){this.log("colorpickerShow")}},{key:"onDisable",value:function(e){this.log("colorpickerDisable")}},{key:"onEnable",value:function(e){this.log("colorpickerEnable")}}]),t}(u.default);t.default=f},function(e,t,o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),s=function e(t,o,r){null===t&&(t=Function.prototype);var n=Object.getOwnPropertyDescriptor(t,o);if(void 0===n){var i=Object.getPrototypeOf(t);return null===i?void 0:e(i,o,r)}if("value"in n)return n.value;var a=n.get;if(void 0!==a)return a.call(r)},c=o(1),u=r(c),h=o(0),p=r(h),f=function(e){function t(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n(this,t);var r=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,p.default.extend(!0,{},{template:'<div class="colorpicker-bar colorpicker-preview"><div /></div>',showText:!0,format:e.format},o)));return r.element=(0,p.default)(r.options.template),r.elementInner=r.element.find("div"),r}return a(t,e),l(t,[{key:"onCreate",value:function(e){s(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"onCreate",this).call(this,e),this.colorpicker.picker.append(this.element)}},{key:"onUpdate",value:function(e){if(s(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"onUpdate",this).call(this,e),!e.color)return void this.elementInner.css("backgroundColor",null).css("color",null).html("");this.elementInner.css("backgroundColor",e.color.toRgbString()),this.options.showText&&(this.elementInner.html(e.color.string(this.options.format||this.colorpicker.format)),e.color.isDark()&&e.color.alpha>.5?this.elementInner.css("color","white"):this.elementInner.css("color","black"))}}]),t}(u.default);t.default=f},function(e,t,o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),s=function e(t,o,r){null===t&&(t=Function.prototype);var n=Object.getOwnPropertyDescriptor(t,o);if(void 0===n){var i=Object.getPrototypeOf(t);return null===i?void 0:e(i,o,r)}if("value"in n)return n.value;var a=n.get;if(void 0!==a)return a.call(r)},c=o(4),u=r(c),h=o(0),p=r(h),f={barTemplate:'<div class="colorpicker-bar colorpicker-swatches">\n <div class="colorpicker-swatches--inner"></div>\n </div>',swatchTemplate:'<i class="colorpicker-swatch"><i class="colorpicker-swatch--inner"></i></i>'},d=function(e){function t(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n(this,t);var r=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,p.default.extend(!0,{},f,o)));return r.element=null,r}return a(t,e),l(t,[{key:"isEnabled",value:function(){return this.getLength()>0}},{key:"onCreate",value:function(e){s(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"onCreate",this).call(this,e),this.isEnabled()&&(this.element=(0,p.default)(this.options.barTemplate),this.load(),this.colorpicker.picker.append(this.element))}},{key:"load",value:function(){var e=this,t=this.colorpicker,o=this.element.find(".colorpicker-swatches--inner"),r=!0===this.options.namesAsValues&&!Array.isArray(this.colors);o.empty(),p.default.each(this.colors,function(n,i){var a=(0,p.default)(e.options.swatchTemplate).attr("data-name",n).attr("data-value",i).attr("title",r?n+": "+i:i).on("mousedown.colorpicker touchstart.colorpicker",function(e){var o=(0,p.default)(this);t.setValue(r?o.attr("data-name"):o.attr("data-value"))});a.find(".colorpicker-swatch--inner").css("background-color",i),o.append(a)}),o.append((0,p.default)('<i class="colorpicker-clear"></i>'))}}]),t}(u.default);t.default=d},function(e,t,o){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),i=o(0),a=function(e){return e&&e.__esModule?e:{default:e}}(i),l=function(){function e(t){r(this,e),this.colorpicker=t,this.currentSlider=null,this.mousePointer={left:0,top:0},this.onMove=a.default.proxy(this.defaultOnMove,this)}return n(e,[{key:"defaultOnMove",value:function(e,t){if(this.currentSlider){var o=this.currentSlider,r=this.colorpicker,n=r.colorHandler,i=n.hasColor()?n.color.getClone():n.getFallbackColor();o.guideStyle.left=t+"px",o.guideStyle.top=e+"px",o.callLeft&&i[o.callLeft](t/o.maxLeft),o.callTop&&i[o.callTop](e/o.maxTop),r.setValue(i),r.popupHandler.focus()}}},{key:"bind",value:function(){var e=this.colorpicker.options.horizontal?this.colorpicker.options.slidersHorz:this.colorpicker.options.sliders,t=[];for(var o in e)e.hasOwnProperty(o)&&t.push(e[o].selector);this.colorpicker.picker.find(t.join(", ")).on("mousedown.colorpicker touchstart.colorpicker",a.default.proxy(this.pressed,this))}},{key:"unbind",value:function(){(0,a.default)(this.colorpicker.picker).off({"mousemove.colorpicker":a.default.proxy(this.moved,this),"touchmove.colorpicker":a.default.proxy(this.moved,this),"mouseup.colorpicker":a.default.proxy(this.released,this),"touchend.colorpicker":a.default.proxy(this.released,this)})}},{key:"pressed",value:function(e){if(!this.colorpicker.isDisabled()){this.colorpicker.lastEvent.alias="pressed",this.colorpicker.lastEvent.e=e,!e.pageX&&!e.pageY&&e.originalEvent&&e.originalEvent.touches&&(e.pageX=e.originalEvent.touches[0].pageX,e.pageY=e.originalEvent.touches[0].pageY);var t=(0,a.default)(e.target),o=t.closest("div"),r=this.colorpicker.options.horizontal?this.colorpicker.options.slidersHorz:this.colorpicker.options.sliders;if(!o.is(".colorpicker")){this.currentSlider=null;for(var n in r)if(r.hasOwnProperty(n)){var i=r[n];if(o.is(i.selector)){this.currentSlider=a.default.extend({},i,{name:n});break}if(void 0!==i.childSelector&&o.is(i.childSelector)){this.currentSlider=a.default.extend({},i,{name:n}),o=o.parent();break}}var l=o.find(".colorpicker-guide").get(0);if(null!==this.currentSlider&&null!==l){var s=o.offset();this.currentSlider.guideStyle=l.style,this.currentSlider.left=e.pageX-s.left,this.currentSlider.top=e.pageY-s.top,this.mousePointer={left:e.pageX,top:e.pageY},(0,a.default)(this.colorpicker.picker).on({"mousemove.colorpicker":a.default.proxy(this.moved,this),"touchmove.colorpicker":a.default.proxy(this.moved,this),"mouseup.colorpicker":a.default.proxy(this.released,this),"touchend.colorpicker":a.default.proxy(this.released,this)}).trigger("mousemove")}}}}},{key:"moved",value:function(e){this.colorpicker.lastEvent.alias="moved",this.colorpicker.lastEvent.e=e,!e.pageX&&!e.pageY&&e.originalEvent&&e.originalEvent.touches&&(e.pageX=e.originalEvent.touches[0].pageX,e.pageY=e.originalEvent.touches[0].pageY),e.preventDefault();var t=Math.max(0,Math.min(this.currentSlider.maxLeft,this.currentSlider.left+((e.pageX||this.mousePointer.left)-this.mousePointer.left))),o=Math.max(0,Math.min(this.currentSlider.maxTop,this.currentSlider.top+((e.pageY||this.mousePointer.top)-this.mousePointer.top)));this.onMove(o,t)}},{key:"released",value:function(e){this.colorpicker.lastEvent.alias="released",this.colorpicker.lastEvent.e=e,(0,a.default)(this.colorpicker.picker).off({"mousemove.colorpicker":this.moved,"touchmove.colorpicker":this.moved,"mouseup.colorpicker":this.released,"touchend.colorpicker":this.released})}}]),e}();t.default=l},function(e,t,o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),a=o(0),l=r(a),s=o(3),c=r(s),u=function(){function e(t,o){n(this,e),this.root=o,this.colorpicker=t,this.popoverTarget=null,this.popoverTip=null,this.clicking=!1,this.hidding=!1,this.showing=!1}return i(e,[{key:"bind",value:function(){var e=this.colorpicker;if(e.options.inline)return void e.picker.addClass("colorpicker-inline colorpicker-visible");e.picker.addClass("colorpicker-popup colorpicker-hidden"),(this.hasInput||this.hasAddon)&&(e.options.popover&&this.createPopover(),this.hasAddon&&(this.addon.attr("tabindex")||this.addon.attr("tabindex",0),this.addon.on({"mousedown.colorpicker touchstart.colorpicker":l.default.proxy(this.toggle,this)}),this.addon.on({"focus.colorpicker":l.default.proxy(this.show,this)}),this.addon.on({"focusout.colorpicker":l.default.proxy(this.hide,this)})),this.hasInput&&!this.hasAddon&&(this.input.on({"mousedown.colorpicker touchstart.colorpicker":l.default.proxy(this.show,this),"focus.colorpicker":l.default.proxy(this.show,this)}),this.input.on({"focusout.colorpicker":l.default.proxy(this.hide,this)})),(0,l.default)(this.root).on("resize.colorpicker",l.default.proxy(this.reposition,this)))}},{key:"unbind",value:function(){this.hasInput&&(this.input.off({"mousedown.colorpicker touchstart.colorpicker":l.default.proxy(this.show,this),"focus.colorpicker":l.default.proxy(this.show,this)}),this.input.off({"focusout.colorpicker":l.default.proxy(this.hide,this)})),this.hasAddon&&(this.addon.off({"mousedown.colorpicker touchstart.colorpicker":l.default.proxy(this.toggle,this)}),this.addon.off({"focus.colorpicker":l.default.proxy(this.show,this)}),this.addon.off({"focusout.colorpicker":l.default.proxy(this.hide,this)})),this.popoverTarget&&this.popoverTarget.popover("dispose"),(0,l.default)(this.root).off("resize.colorpicker",l.default.proxy(this.reposition,this)),(0,l.default)(this.root.document).off("mousedown.colorpicker touchstart.colorpicker",l.default.proxy(this.hide,this)),(0,l.default)(this.root.document).off("mousedown.colorpicker touchstart.colorpicker",l.default.proxy(this.onClickingInside,this))}},{key:"isClickingInside",value:function(e){return!!e&&(this.isOrIsInside(this.popoverTip,e.currentTarget)||this.isOrIsInside(this.popoverTip,e.target)||this.isOrIsInside(this.colorpicker.picker,e.currentTarget)||this.isOrIsInside(this.colorpicker.picker,e.target))}},{key:"isOrIsInside",value:function(e,t){return!(!e||!t)&&(t=(0,l.default)(t),t.is(e)||e.find(t).length>0)}},{key:"onClickingInside",value:function(e){this.clicking=this.isClickingInside(e)}},{key:"createPopover",value:function(){var e=this.colorpicker;this.popoverTarget=this.hasAddon?this.addon:this.input,e.picker.addClass("colorpicker-bs-popover-content"),this.popoverTarget.popover(l.default.extend(!0,{},c.default.popover,e.options.popover,{trigger:"manual",content:e.picker,html:!0})),this.popoverTip=(0,l.default)(this.popoverTarget.popover("getTipElement").data("bs.popover").tip),this.popoverTip.addClass("colorpicker-bs-popover"),this.popoverTarget.on("shown.bs.popover",l.default.proxy(this.fireShow,this)),this.popoverTarget.on("hidden.bs.popover",l.default.proxy(this.fireHide,this))}},{key:"reposition",value:function(e){this.popoverTarget&&this.isVisible()&&this.popoverTarget.popover("update")}},{key:"toggle",value:function(e){this.isVisible()?this.hide(e):this.show(e)}},{key:"show",value:function(e){if(!(this.isVisible()||this.showing||this.hidding)){this.showing=!0,this.hidding=!1,this.clicking=!1;var t=this.colorpicker;t.lastEvent.alias="show",t.lastEvent.e=e,e&&(!this.hasInput||"color"===this.input.attr("type"))&&e&&e.preventDefault&&(e.stopPropagation(),e.preventDefault()),this.isPopover&&(0,l.default)(this.root).on("resize.colorpicker",l.default.proxy(this.reposition,this)),t.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden"),this.popoverTarget?this.popoverTarget.popover("show"):this.fireShow()}}},{key:"fireShow",value:function(){this.hidding=!1,this.showing=!1,this.isPopover&&((0,l.default)(this.root.document).on("mousedown.colorpicker touchstart.colorpicker",l.default.proxy(this.hide,this)),(0,l.default)(this.root.document).on("mousedown.colorpicker touchstart.colorpicker",l.default.proxy(this.onClickingInside,this))),this.colorpicker.trigger("colorpickerShow")}},{key:"hide",value:function(e){if(!(this.isHidden()||this.showing||this.hidding)){var t=this.colorpicker,o=this.clicking||this.isClickingInside(e);if(this.hidding=!0,this.showing=!1,this.clicking=!1,t.lastEvent.alias="hide",t.lastEvent.e=e,o)return void(this.hidding=!1);this.popoverTarget?this.popoverTarget.popover("hide"):this.fireHide()}}},{key:"fireHide",value:function(){this.hidding=!1,this.showing=!1;var e=this.colorpicker;e.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible"),(0,l.default)(this.root).off("resize.colorpicker",l.default.proxy(this.reposition,this)),(0,l.default)(this.root.document).off("mousedown.colorpicker touchstart.colorpicker",l.default.proxy(this.hide,this)),(0,l.default)(this.root.document).off("mousedown.colorpicker touchstart.colorpicker",l.default.proxy(this.onClickingInside,this)),e.trigger("colorpickerHide")}},{key:"focus",value:function(){return this.hasAddon?this.addon.focus():!!this.hasInput&&this.input.focus()}},{key:"isVisible",value:function(){return this.colorpicker.picker.hasClass("colorpicker-visible")&&!this.colorpicker.picker.hasClass("colorpicker-hidden")}},{key:"isHidden",value:function(){return this.colorpicker.picker.hasClass("colorpicker-hidden")&&!this.colorpicker.picker.hasClass("colorpicker-visible")}},{key:"input",get:function(){return this.colorpicker.inputHandler.input}},{key:"hasInput",get:function(){return this.colorpicker.inputHandler.hasInput()}},{key:"addon",get:function(){return this.colorpicker.addonHandler.addon}},{key:"hasAddon",get:function(){return this.colorpicker.addonHandler.hasAddon()}},{key:"isPopover",get:function(){return!this.colorpicker.options.inline&&!!this.popoverTip}}]),e}();t.default=u},function(e,t,o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),a=o(0),l=r(a),s=o(2),c=r(s),u=function(){function e(t){n(this,e),this.colorpicker=t,this.input=this.colorpicker.element.is("input")?this.colorpicker.element:!!this.colorpicker.options.input&&this.colorpicker.element.find(this.colorpicker.options.input),this.input&&0===this.input.length&&(this.input=!1),this._initValue()}return i(e,[{key:"bind",value:function(){this.hasInput()&&(this.input.on({"keyup.colorpicker":l.default.proxy(this.onkeyup,this)}),this.input.on({"change.colorpicker":l.default.proxy(this.onchange,this)}))}},{key:"unbind",value:function(){this.hasInput()&&this.input.off(".colorpicker")}},{key:"_initValue",value:function(){if(this.hasInput()){var e="";[this.input.val(),this.input.data("color"),this.input.attr("data-color")].map(function(t){t&&""===e&&(e=t)}),e instanceof c.default?e=this.getFormattedColor(e.string(this.colorpicker.format)):"string"==typeof e||e instanceof String||(e=""),this.input.prop("value",e)}}},{key:"getValue",value:function(){return!!this.hasInput()&&this.input.val()}},{key:"setValue",value:function(e){if(this.hasInput()){var t=this.input.prop("value");e=e||"",e!==(t||"")&&(this.input.prop("value",e),this.input.trigger({type:"change",colorpicker:this.colorpicker,color:this.colorpicker.color,value:e}))}}},{key:"getFormattedColor",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return(e=e||this.colorpicker.colorHandler.getColorString())?(e=this.colorpicker.colorHandler.resolveColorDelegate(e,!1),!1===this.colorpicker.options.useHashPrefix&&(e=e.replace(/^#/g,"")),e):""}},{key:"hasInput",value:function(){return!1!==this.input}},{key:"isEnabled",value:function(){return this.hasInput()&&!this.isDisabled()}},{key:"isDisabled",value:function(){return this.hasInput()&&!0===this.input.prop("disabled")}},{key:"disable",value:function(){this.hasInput()&&this.input.prop("disabled",!0)}},{key:"enable",value:function(){this.hasInput()&&this.input.prop("disabled",!1)}},{key:"update",value:function(){this.hasInput()&&(!1===this.colorpicker.options.autoInputFallback&&this.colorpicker.colorHandler.isInvalidColor()||this.setValue(this.getFormattedColor()))}},{key:"onchange",value:function(e){this.colorpicker.lastEvent.alias="input.change",this.colorpicker.lastEvent.e=e;var t=this.getValue();t!==e.value&&this.colorpicker.setValue(t)}},{key:"onkeyup",value:function(e){this.colorpicker.lastEvent.alias="input.keyup",this.colorpicker.lastEvent.e=e;var t=this.getValue();t!==e.value&&this.colorpicker.setValue(t)}}]),e}();t.default=u},function(e,t,o){"use strict";function r(e,t){if(!(this instanceof r))return new r(e,t);if(t&&t in f&&(t=null),t&&!(t in h))throw new Error("Unknown model: "+t);var o,n;if(void 0===e)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof r)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if("string"==typeof e){var i=u.get(e);if(null===i)throw new Error("Unable to parse color from string: "+e);this.model=i.model,n=h[this.model].channels,this.color=i.value.slice(0,n),this.valpha="number"==typeof i.value[n]?i.value[n]:1}else if(e.length){this.model=t||"rgb",n=h[this.model].channels;var a=p.call(e,0,n);this.color=c(a,n),this.valpha="number"==typeof e[n]?e[n]:1}else if("number"==typeof e)e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;var l=Object.keys(e);"alpha"in e&&(l.splice(l.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);var s=l.sort().join("");if(!(s in d))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=d[s];var k=h[this.model].labels,g=[];for(o=0;o<k.length;o++)g.push(e[k[o]]);this.color=c(g)}if(v[this.model])for(n=h[this.model].channels,o=0;o<n;o++){var y=v[this.model][o];y&&(this.color[o]=y(this.color[o]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}function n(e,t){return Number(e.toFixed(t))}function i(e){return function(t){return n(t,e)}}function a(e,t,o){return e=Array.isArray(e)?e:[e],e.forEach(function(e){(v[e]||(v[e]=[]))[t]=o}),e=e[0],function(r){var n;return arguments.length?(o&&(r=o(r)),n=this[e](),n.color[t]=r,n):(n=this[e]().color[t],o&&(n=o(n)),n)}}function l(e){return function(t){return Math.max(0,Math.min(e,t))}}function s(e){return Array.isArray(e)?e:[e]}function c(e,t){for(var o=0;o<t;o++)"number"!=typeof e[o]&&(e[o]=0);return e}var u=o(17),h=o(20),p=[].slice,f=["keyword","gray","hex"],d={};Object.keys(h).forEach(function(e){d[p.call(h[e].labels).sort().join("")]=e});var v={};r.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(e){var t=this.model in u.to?this:this.rgb();t=t.round("number"==typeof e?e:1);var o=1===t.valpha?t.color:t.color.concat(this.valpha);return u.to[t.model](o)},percentString:function(e){var t=this.rgb().round("number"==typeof e?e:1),o=1===t.valpha?t.color:t.color.concat(this.valpha);return u.to.rgb.percent(o)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var e={},t=h[this.model].channels,o=h[this.model].labels,r=0;r<t;r++)e[o[r]]=this.color[r];return 1!==this.valpha&&(e.alpha=this.valpha),e},unitArray:function(){var e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,1!==this.valpha&&e.push(this.valpha),e},unitObject:function(){var e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,1!==this.valpha&&(e.alpha=this.valpha),e},round:function(e){return e=Math.max(e||0,0),new r(this.color.map(i(e)).concat(this.valpha),this.model)},alpha:function(e){return arguments.length?new r(this.color.concat(Math.max(0,Math.min(1,e))),this.model):this.valpha},red:a("rgb",0,l(255)),green:a("rgb",1,l(255)),blue:a("rgb",2,l(255)),hue:a(["hsl","hsv","hsl","hwb","hcg"],0,function(e){return(e%360+360)%360}),saturationl:a("hsl",1,l(100)),lightness:a("hsl",2,l(100)),saturationv:a("hsv",1,l(100)),value:a("hsv",2,l(100)),chroma:a("hcg",1,l(100)),gray:a("hcg",2,l(100)),white:a("hwb",1,l(100)),wblack:a("hwb",2,l(100)),cyan:a("cmyk",0,l(100)),magenta:a("cmyk",1,l(100)),yellow:a("cmyk",2,l(100)),black:a("cmyk",3,l(100)),x:a("xyz",0,l(100)),y:a("xyz",1,l(100)),z:a("xyz",2,l(100)),l:a("lab",0,l(100)),a:a("lab",1),b:a("lab",2),keyword:function(e){return arguments.length?new r(e):h[this.model].keyword(this.color)},hex:function(e){return arguments.length?new r(e):u.to.hex(this.rgb().round().color)},rgbNumber:function(){var e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity:function(){for(var e=this.rgb().color,t=[],o=0;o<e.length;o++){var r=e[o]/255;t[o]=r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4)}return.2126*t[0]+.7152*t[1]+.0722*t[2]},contrast:function(e){var t=this.luminosity(),o=e.luminosity();return t>o?(t+.05)/(o+.05):(o+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return r.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),o=t.color[0];return o=(o+e)%360,o=o<0?360+o:o,t.color[0]=o,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var o=e.rgb(),n=this.rgb(),i=void 0===t?.5:t,a=2*i-1,l=o.alpha()-n.alpha(),s=((a*l==-1?a:(a+l)/(1+a*l))+1)/2,c=1-s;return r.rgb(s*o.red()+c*n.red(),s*o.green()+c*n.green(),s*o.blue()+c*n.blue(),o.alpha()*i+n.alpha()*(1-i))}},Object.keys(h).forEach(function(e){if(-1===f.indexOf(e)){var t=h[e].channels;r.prototype[e]=function(){if(this.model===e)return new r(this);if(arguments.length)return new r(arguments,e);var o="number"==typeof arguments[t]?t:this.valpha;return new r(s(h[this.model][e].raw(this.color)).concat(o),e)},r[e]=function(o){return"number"==typeof o&&(o=c(p.call(arguments),t)),new r(o,e)}}}),e.exports=r},function(e,t,o){function r(e,t,o){return Math.min(Math.max(t,e),o)}function n(e){var t=e.toString(16).toUpperCase();return t.length<2?"0"+t:t}var i=o(5),a=o(18),l={};for(var s in i)i.hasOwnProperty(s)&&(l[i[s]]=s);var c=e.exports={to:{},get:{}};c.get=function(e){var t,o,r=e.substring(0,3).toLowerCase();switch(r){case"hsl":t=c.get.hsl(e),o="hsl";break;case"hwb":t=c.get.hwb(e),o="hwb";break;default:t=c.get.rgb(e),o="rgb"}return t?{model:o,value:t}:null},c.get.rgb=function(e){if(!e)return null;var t,o,n,a=/^#([a-f0-9]{3,4})$/i,l=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,s=/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,c=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,u=/(\D+)/,h=[0,0,0,1];if(t=e.match(l)){for(n=t[2],t=t[1],o=0;o<3;o++){var p=2*o;h[o]=parseInt(t.slice(p,p+2),16)}n&&(h[3]=Math.round(parseInt(n,16)/255*100)/100)}else if(t=e.match(a)){for(t=t[1],n=t[3],o=0;o<3;o++)h[o]=parseInt(t[o]+t[o],16);n&&(h[3]=Math.round(parseInt(n+n,16)/255*100)/100)}else if(t=e.match(s)){for(o=0;o<3;o++)h[o]=parseInt(t[o+1],0);t[4]&&(h[3]=parseFloat(t[4]))}else{if(!(t=e.match(c)))return(t=e.match(u))?"transparent"===t[1]?[0,0,0,0]:(h=i[t[1]])?(h[3]=1,h):null:null;for(o=0;o<3;o++)h[o]=Math.round(2.55*parseFloat(t[o+1]));t[4]&&(h[3]=parseFloat(t[4]))}for(o=0;o<3;o++)h[o]=r(h[o],0,255);return h[3]=r(h[3],0,1),h},c.get.hsl=function(e){if(!e)return null;var t=/^hsla?\(\s*([+-]?(?:\d*\.)?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,o=e.match(t);if(o){var n=parseFloat(o[4]);return[(parseFloat(o[1])+360)%360,r(parseFloat(o[2]),0,100),r(parseFloat(o[3]),0,100),r(isNaN(n)?1:n,0,1)]}return null},c.get.hwb=function(e){if(!e)return null;var t=/^hwb\(\s*([+-]?\d*[\.]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,o=e.match(t);if(o){var n=parseFloat(o[4]);return[(parseFloat(o[1])%360+360)%360,r(parseFloat(o[2]),0,100),r(parseFloat(o[3]),0,100),r(isNaN(n)?1:n,0,1)]}return null},c.to.hex=function(){var e=a(arguments);return"#"+n(e[0])+n(e[1])+n(e[2])+(e[3]<1?n(Math.round(255*e[3])):"")},c.to.rgb=function(){var e=a(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},c.to.rgb.percent=function(){var e=a(arguments),t=Math.round(e[0]/255*100),o=Math.round(e[1]/255*100),r=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+o+"%, "+r+"%)":"rgba("+t+"%, "+o+"%, "+r+"%, "+e[3]+")"},c.to.hsl=function(){var e=a(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},c.to.hwb=function(){var e=a(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},c.to.keyword=function(e){return l[e.slice(0,3)]}},function(e,t,o){"use strict";var r=o(19),n=Array.prototype.concat,i=Array.prototype.slice,a=e.exports=function(e){for(var t=[],o=0,a=e.length;o<a;o++){var l=e[o];r(l)?t=n.call(t,i.call(l)):t.push(l)}return t};a.wrap=function(e){return function(){return e(a(arguments))}}},function(e,t,o){"use strict";e.exports=function(e){return!!e&&(e instanceof Array||Array.isArray(e)||e.length>=0&&e.splice instanceof Function)}},function(e,t,o){function r(e){var t=function(t){return void 0===t||null===t?t:(arguments.length>1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}function n(e){var t=function(t){if(void 0===t||null===t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var o=e(t);if("object"==typeof o)for(var r=o.length,n=0;n<r;n++)o[n]=Math.round(o[n]);return o};return"conversion"in e&&(t.conversion=e.conversion),t}var i=o(6),a=o(21),l={};Object.keys(i).forEach(function(e){l[e]={},Object.defineProperty(l[e],"channels",{value:i[e].channels}),Object.defineProperty(l[e],"labels",{value:i[e].labels});var t=a(e);Object.keys(t).forEach(function(o){var i=t[o];l[e][o]=n(i),l[e][o].raw=r(i)})}),e.exports=l},function(e,t,o){function r(){for(var e={},t=Object.keys(l),o=t.length,r=0;r<o;r++)e[t[r]]={distance:-1,parent:null};return e}function n(e){var t=r(),o=[e];for(t[e].distance=0;o.length;)for(var n=o.pop(),i=Object.keys(l[n]),a=i.length,s=0;s<a;s++){var c=i[s],u=t[c];-1===u.distance&&(u.distance=t[n].distance+1,u.parent=n,o.unshift(c))}return t}function i(e,t){return function(o){return t(e(o))}}function a(e,t){for(var o=[t[e].parent,e],r=l[t[e].parent][e],n=t[e].parent;t[n].parent;)o.unshift(t[n].parent),r=i(l[t[n].parent][n],r),n=t[n].parent;return r.conversion=o,r}var l=o(6);e.exports=function(e){for(var t=n(e),o={},r=Object.keys(t),i=r.length,l=0;l<i;l++){var s=r[l];null!==t[s].parent&&(o[s]=a(s,t))}return o}},function(e,t,o){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),a=o(0),l=r(a),s=o(2),c=r(s),u=function(){function e(t){n(this,e),this.colorpicker=t}return i(e,[{key:"bind",value:function(){if(this.colorpicker.options.color)return void(this.color=this.createColor(this.colorpicker.options.color));!this.color&&this.colorpicker.inputHandler.getValue()&&(this.color=this.createColor(this.colorpicker.inputHandler.getValue(),this.colorpicker.options.autoInputFallback))}},{key:"unbind",value:function(){this.colorpicker.element.removeData("color")}},{key:"getColorString",value:function(){return this.hasColor()?this.color.string(this.format):""}},{key:"setColorString",value:function(e){var t=e?this.createColor(e):null;this.color=t||null}},{key:"createColor",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],o=new c.default(this.resolveColorDelegate(e),this.format);return o.isValid()||(t&&(o=this.getFallbackColor()),this.colorpicker.trigger("colorpickerInvalid",o,e)),this.isAlphaEnabled()||(o.alpha=1),o}},{key:"getFallbackColor",value:function(){if(this.fallback&&this.fallback===this.color)return this.color;var e=this.resolveColorDelegate(this.fallback),t=new c.default(e,this.format);return t.isValid()?t:(console.warn("The fallback color is invalid. Falling back to the previous color or black if any."),this.color?this.color:new c.default("#000000",this.format))}},{key:"assureColor",value:function(){return this.hasColor()||(this.color=this.getFallbackColor()),this.color}},{key:"resolveColorDelegate",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],o=!1;return l.default.each(this.colorpicker.extensions,function(r,n){!1===o&&(o=n.resolveColor(e,t))}),o||e}},{key:"isInvalidColor",value:function(){return!this.hasColor()||!this.color.isValid()}},{key:"isAlphaEnabled",value:function(){return!1!==this.colorpicker.options.useAlpha}},{key:"hasColor",value:function(){return this.color instanceof c.default}},{key:"fallback",get:function(){return this.colorpicker.options.fallbackColor?this.colorpicker.options.fallbackColor:this.hasColor()?this.color:null}},{key:"format",get:function(){return this.colorpicker.options.format?this.colorpicker.options.format:this.hasColor()&&this.color.hasTransparency()&&this.color.format.match(/^hex/)?this.isAlphaEnabled()?"rgba":"hex":this.hasColor()?this.color.format:"rgb"}},{key:"color",get:function(){return this.colorpicker.element.data("color")},set:function(e){this.colorpicker.element.data("color",e),e instanceof c.default&&"auto"===this.colorpicker.options.format&&(this.colorpicker.options.format=this.color.format)}}]),e}();t.default=u},function(e,t,o){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),i=o(0),a=function(e){return e&&e.__esModule?e:{default:e}}(i),l=function(){function e(t){r(this,e),this.colorpicker=t,this.picker=null}return n(e,[{key:"bind",value:function(){var e=this.picker=(0,a.default)(this.options.template);this.options.customClass&&e.addClass(this.options.customClass),this.options.horizontal&&e.addClass("colorpicker-horizontal"),this._supportsAlphaBar()?(this.options.useAlpha=!0,e.addClass("colorpicker-with-alpha")):this.options.useAlpha=!1}},{key:"attach",value:function(){var e=this.colorpicker.container?this.colorpicker.container:null;e&&this.picker.appendTo(e)}},{key:"unbind",value:function(){this.picker.remove()}},{key:"_supportsAlphaBar",value:function(){return(this.options.useAlpha||this.colorpicker.colorHandler.hasColor()&&this.color.hasTransparency())&&!1!==this.options.useAlpha&&(!this.options.format||this.options.format&&!this.options.format.match(/^hex([36])?$/i))}},{key:"update",value:function(){if(this.colorpicker.colorHandler.hasColor()){var e=!0!==this.options.horizontal,t=e?this.options.sliders:this.options.slidersHorz,o=this.picker.find(".colorpicker-saturation .colorpicker-guide"),r=this.picker.find(".colorpicker-hue .colorpicker-guide"),n=this.picker.find(".colorpicker-alpha .colorpicker-guide"),i=this.color.toHsvaRatio();r.length&&r.css(e?"top":"left",(e?t.hue.maxTop:t.hue.maxLeft)*(1-i.h)),n.length&&n.css(e?"top":"left",(e?t.alpha.maxTop:t.alpha.maxLeft)*(1-i.a)),o.length&&o.css({top:t.saturation.maxTop-i.v*t.saturation.maxTop,left:i.s*t.saturation.maxLeft}),this.picker.find(".colorpicker-saturation").css("backgroundColor",this.color.getCloneHueOnly().toHexString());var a=this.color.toHexString(),l="";l=this.options.horizontal?"linear-gradient(to right, "+a+" 0%, transparent 100%)":"linear-gradient(to bottom, "+a+" 0%, transparent 100%)",this.picker.find(".colorpicker-alpha-color").css("background",l)}}},{key:"options",get:function(){return this.colorpicker.options}},{key:"color",get:function(){return this.colorpicker.colorHandler.color}}]),e}();t.default=l},function(e,t,o){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),i=function(){function e(t){r(this,e),this.colorpicker=t,this.addon=null}return n(e,[{key:"hasAddon",value:function(){return!!this.addon}},{key:"bind",value:function(){this.addon=this.colorpicker.options.addon?this.colorpicker.element.find(this.colorpicker.options.addon):null,this.addon&&0===this.addon.length&&(this.addon=null)}},{key:"unbind",value:function(){this.hasAddon()&&this.addon.off(".colorpicker")}},{key:"update",value:function(){if(this.colorpicker.colorHandler.hasColor()&&this.hasAddon()){var e=this.colorpicker.colorHandler.getColorString(),t={background:e},o=this.addon.find("i").eq(0);o.length>0?o.css(t):this.addon.css(t)}}}]),e}();t.default=i}])}); |
| | | //# sourceMappingURL=bootstrap-colorpicker.min.js.map |
¶Ô±ÈÐÂÎļþ |
| | |
| | | {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///bootstrap-colorpicker.min.js","webpack:///webpack/bootstrap e5fc9649974c93b0b79b","webpack:///external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack:///./src/js/Extension.js","webpack:///./src/js/ColorItem.js","webpack:///./src/js/options.js","webpack:///./src/js/extensions/Palette.js","webpack:///./node_modules/color-name/index.js","webpack:///./node_modules/color-convert/conversions.js","webpack:///./src/js/plugin.js","webpack:///./src/js/Colorpicker.js","webpack:///./src/js/extensions/index.js","webpack:///./src/js/extensions/Debugger.js","webpack:///./src/js/extensions/Preview.js","webpack:///./src/js/extensions/Swatches.js","webpack:///./src/js/SliderHandler.js","webpack:///./src/js/PopupHandler.js","webpack:///./src/js/InputHandler.js","webpack:///./node_modules/color/index.js","webpack:///./node_modules/color-string/index.js","webpack:///./node_modules/simple-swizzle/index.js","webpack:///./node_modules/is-arrayish/index.js","webpack:///./node_modules/color-convert/index.js","webpack:///./node_modules/color-convert/route.js","webpack:///./src/js/ColorHandler.js","webpack:///./src/js/PickerHandler.js","webpack:///./src/js/AddonHandler.js"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE_0__","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_classCallCheck","instance","Constructor","TypeError","value","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","_jquery","_jquery2","obj","default","Extension","colorpicker","options","arguments","undefined","element","Error","on","$","proxy","onCreate","onDestroy","onUpdate","onChange","onInvalid","onShow","onHide","onEnable","onDisable","color","event","off","ColorItem","HSVAColor","_color","_color2","h","v","a","isNaN","format","replace","fn","_len","args","Array","_key","result","apply","QixColor","_original","sanitizeFormat","valid","parse","_format","isHex","model","hue","saturation","alpha","hasAlpha","toObject","string","round","str","isValid","isDark","isLight","formula","hues","isArray","colorFormulas","colors","mainColor","forEach","levels","saturationv","push","set","Math","sanitizeString","e","String","match","toLowerCase","complementary","triad","tetrad","splitcomplement","sassVars","bar_size_short","base_margin","columns","sliderSize","customClass","fallbackColor","horizontal","inline","container","popover","animation","placement","fallbackPlacement","debug","input","addon","autoInputFallback","useHashPrefix","useAlpha","template","extensions","showText","sliders","selector","maxLeft","maxTop","callLeft","callTop","childSelector","slidersHorz","_interopRequireDefault","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","constructor","setPrototypeOf","__proto__","_typeof","Symbol","iterator","_Extension2","_Extension3","defaults","namesAsValues","Palette","_Extension","_this","getPrototypeOf","extend","keys","realColor","getLength","indexOf","toUpperCase","getValue","getName","defaultValue","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","comparativeDistance","x","y","pow","cssKeywords","reverseKeywords","convert","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","r","g","b","min","max","delta","rdif","gdif","bdif","diff","diffc","w","k","reversed","currentClosestKeyword","currentClosestDistance","Infinity","distance","z","t1","t2","t3","val","sv","smin","lmin","hi","floor","f","q","t","sl","vmin","wh","bl","ratio","y2","x2","z2","hr","atan2","PI","sqrt","cos","sin","ansi","mult","rem","integer","toString","substring","colorString","split","map","char","join","parseInt","grayscale","chroma","pure","mg","_Colorpicker","_Colorpicker2","plugin","Colorpicker","option","fnArgs","slice","isSingleElement","returnValue","$elements","each","$this","inst","data","isFunction","_options","_options2","_extensions","_extensions2","_SliderHandler","_SliderHandler2","_PopupHandler","_PopupHandler2","_InputHandler","_InputHandler2","_ColorHandler","_ColorHandler2","_PickerHandler","_PickerHandler2","_AddonHandler","_AddonHandler2","_ColorItem","_ColorItem2","colorPickerIdCounter","id","lastEvent","alias","addClass","attr","disabled","inputHandler","InputHandler","colorHandler","ColorHandler","sliderHandler","SliderHandler","popupHandler","PopupHandler","pickerHandler","PickerHandler","addonHandler","AddonHandler","init","trigger","picker","bind","initExtensions","attach","update","isDisabled","disable","ext","registerExtension","ExtensionClass","config","unbind","removeClass","removeData","show","hide","toggle","ch","hasColor","equals","createColor","assureColor","enable","eventName","type","coreExtensions","Swatches","Preview","Debugger","_Debugger","_Debugger2","_Preview","_Preview2","_Swatches","_Swatches2","_Palette","_Palette2","debugger","preview","swatches","palette","_get","receiver","Function","desc","getOwnPropertyDescriptor","parent","eventCounter","hasInput","onChangeInput","_console","logMessage","console","concat","logArgs","log","elementInner","find","append","css","html","toRgbString","_Palette3","barTemplate","swatchTemplate","isEnabled","load","_this2","swatchContainer","isAliased","empty","$swatch","$sw","setValue","currentSlider","mousePointer","left","top","onMove","defaultOnMove","slider","cp","getClone","getFallbackColor","guideStyle","focus","sliderClasses","sliderName","pressed","mousemove.colorpicker","moved","touchmove.colorpicker","mouseup.colorpicker","released","touchend.colorpicker","pageX","pageY","originalEvent","touches","zone","closest","is","guide","offset","style","preventDefault","popoverTarget","popoverTip","clicking","hidding","showing","hasAddon","createPopover","mousedown.colorpicker touchstart.colorpicker","focus.colorpicker","focusout.colorpicker","reposition","document","onClickingInside","isOrIsInside","currentTarget","isClickingInside","_defaults","content","tip","fireShow","fireHide","isVisible","stopPropagation","isPopover","isHidden","hasClass","_initValue","keyup.colorpicker","onkeyup","change.colorpicker","onchange","item","getFormattedColor","prop","inputVal","getColorString","resolveColorDelegate","isInvalidColor","Color","skippedModels","valpha","newArr","_slice","zeroArray","splice","hashedKeys","sort","hashedModelKeys","JSON","stringify","limiters","limit","freeze","roundTo","num","places","Number","toFixed","roundToPlace","getset","channel","modifier","maxfn","assertArray","arr","toJSON","to","percentString","percent","array","unitArray","unitObject","saturationl","lightness","wblack","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","negate","lighten","darken","saturate","desaturate","whiten","blacken","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","newAlpha","raw","clamp","hexDouble","colorNames","swizzle","reverseNames","cs","prefix","hexAlpha","abbr","rgba","per","i2","parseFloat","hsla","hwba","isArrayish","results","len","arg","wrap","wrapRaw","wrappedFn","conversion","wrapRounded","conversions","route","fromModel","routes","toModel","buildGraph","graph","models","deriveBFS","queue","current","pop","adjacents","adjacent","node","unshift","link","from","wrapConversion","path","cur","fallbackOnInvalid","isAlphaEnabled","fallback","warn","extResolvedColor","resolveColor","hasTransparency","_supportsAlphaBar","pickerParent","appendTo","remove","vertical","saturationGuide","hueGuide","alphaGuide","hsva","toHsvaRatio","getCloneHueOnly","toHexString","hexColor","alphaBg","colorStr","styles","background","icn","eq"],"mappings":"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","file":"bootstrap-colorpicker.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"bootstrap-colorpicker\", [\"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bootstrap-colorpicker\"] = factory(require(\"jquery\"));\n\telse\n\t\troot[\"bootstrap-colorpicker\"] = factory(root[\"jQuery\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"bootstrap-colorpicker\", [\"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bootstrap-colorpicker\"] = factory(require(\"jquery\"));\n\telse\n\t\troot[\"bootstrap-colorpicker\"] = factory(root[\"jQuery\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Colorpicker extension class.\n */\nvar Extension = function () {\n /**\n * @param {Colorpicker} colorpicker\n * @param {Object} options\n */\n function Extension(colorpicker) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Extension);\n\n /**\n * The colorpicker instance\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * Extension options\n *\n * @type {Object}\n */\n this.options = options;\n\n if (!(this.colorpicker.element && this.colorpicker.element.length)) {\n throw new Error('Extension: this.colorpicker.element is not valid');\n }\n\n this.colorpicker.element.on('colorpickerCreate.colorpicker-ext', _jquery2.default.proxy(this.onCreate, this));\n this.colorpicker.element.on('colorpickerDestroy.colorpicker-ext', _jquery2.default.proxy(this.onDestroy, this));\n this.colorpicker.element.on('colorpickerUpdate.colorpicker-ext', _jquery2.default.proxy(this.onUpdate, this));\n this.colorpicker.element.on('colorpickerChange.colorpicker-ext', _jquery2.default.proxy(this.onChange, this));\n this.colorpicker.element.on('colorpickerInvalid.colorpicker-ext', _jquery2.default.proxy(this.onInvalid, this));\n this.colorpicker.element.on('colorpickerShow.colorpicker-ext', _jquery2.default.proxy(this.onShow, this));\n this.colorpicker.element.on('colorpickerHide.colorpicker-ext', _jquery2.default.proxy(this.onHide, this));\n this.colorpicker.element.on('colorpickerEnable.colorpicker-ext', _jquery2.default.proxy(this.onEnable, this));\n this.colorpicker.element.on('colorpickerDisable.colorpicker-ext', _jquery2.default.proxy(this.onDisable, this));\n }\n\n /**\n * Function called every time a new color needs to be created.\n * Return false to skip this resolver and continue with other extensions' ones\n * or return anything else to consider the color resolved.\n *\n * @param {ColorItem|String|*} color\n * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n * @return {ColorItem|String|*}\n */\n\n\n _createClass(Extension, [{\n key: 'resolveColor',\n value: function resolveColor(color) {\n var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n return false;\n }\n\n /**\n * Method called after the colorpicker is created\n *\n * @listens Colorpicker#colorpickerCreate\n * @param {Event} event\n */\n\n }, {\n key: 'onCreate',\n value: function onCreate(event) {}\n // to be extended\n\n\n /**\n * Method called after the colorpicker is destroyed\n *\n * @listens Colorpicker#colorpickerDestroy\n * @param {Event} event\n */\n\n }, {\n key: 'onDestroy',\n value: function onDestroy(event) {\n this.colorpicker.element.off('.colorpicker-ext');\n }\n\n /**\n * Method called after the colorpicker is updated\n *\n * @listens Colorpicker#colorpickerUpdate\n * @param {Event} event\n */\n\n }, {\n key: 'onUpdate',\n value: function onUpdate(event) {}\n // to be extended\n\n\n /**\n * Method called after the colorpicker color is changed\n *\n * @listens Colorpicker#colorpickerChange\n * @param {Event} event\n */\n\n }, {\n key: 'onChange',\n value: function onChange(event) {}\n // to be extended\n\n\n /**\n * Method called when the colorpicker color is invalid\n *\n * @listens Colorpicker#colorpickerInvalid\n * @param {Event} event\n */\n\n }, {\n key: 'onInvalid',\n value: function onInvalid(event) {}\n // to be extended\n\n\n /**\n * Method called after the colorpicker is hidden\n *\n * @listens Colorpicker#colorpickerHide\n * @param {Event} event\n */\n\n }, {\n key: 'onHide',\n value: function onHide(event) {}\n // to be extended\n\n\n /**\n * Method called after the colorpicker is shown\n *\n * @listens Colorpicker#colorpickerShow\n * @param {Event} event\n */\n\n }, {\n key: 'onShow',\n value: function onShow(event) {}\n // to be extended\n\n\n /**\n * Method called after the colorpicker is disabled\n *\n * @listens Colorpicker#colorpickerDisable\n * @param {Event} event\n */\n\n }, {\n key: 'onDisable',\n value: function onDisable(event) {}\n // to be extended\n\n\n /**\n * Method called after the colorpicker is enabled\n *\n * @listens Colorpicker#colorpickerEnable\n * @param {Event} event\n */\n\n }, {\n key: 'onEnable',\n value: function onEnable(event) {\n // to be extended\n }\n }]);\n\n return Extension;\n}();\n\nexports.default = Extension;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorItem = exports.HSVAColor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n * Color manipulation class, specific for Bootstrap Colorpicker\n */\n\n\nvar _color = __webpack_require__(16);\n\nvar _color2 = _interopRequireDefault(_color);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * HSVA color data class, containing the hue, saturation, value and alpha\n * information.\n */\nvar HSVAColor = function () {\n /**\n * @param {number|int} h\n * @param {number|int} s\n * @param {number|int} v\n * @param {number|int} a\n */\n function HSVAColor(h, s, v, a) {\n _classCallCheck(this, HSVAColor);\n\n this.h = isNaN(h) ? 0 : h;\n this.s = isNaN(s) ? 0 : s;\n this.v = isNaN(v) ? 0 : v;\n this.a = isNaN(h) ? 1 : a;\n }\n\n _createClass(HSVAColor, [{\n key: 'toString',\n value: function toString() {\n return this.h + ', ' + this.s + '%, ' + this.v + '%, ' + this.a;\n }\n }]);\n\n return HSVAColor;\n}();\n\n/**\n * HSVA color manipulation\n */\n\n\nvar ColorItem = function () {\n _createClass(ColorItem, [{\n key: 'api',\n\n\n /**\n * Applies a method of the QixColor API and returns a new Color object or\n * the return value of the method call.\n *\n * If no argument is provided, the internal QixColor object is returned.\n *\n * @param {String} fn QixColor function name\n * @param args QixColor function arguments\n * @example let darkerColor = color.api('darken', 0.25);\n * @example let luminosity = color.api('luminosity');\n * @example color = color.api('negate');\n * @example let qColor = color.api().negate();\n * @returns {ColorItem|QixColor|*}\n */\n value: function api(fn) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (arguments.length === 0) {\n return this._color;\n }\n\n var result = this._color[fn].apply(this._color, args);\n\n if (!(result instanceof _color2.default)) {\n // return result of the method call\n return result;\n }\n\n return new ColorItem(result, this.format);\n }\n\n /**\n * Returns the original ColorItem constructor data,\n * plus a 'valid' flag to know if it's valid or not.\n *\n * @returns {{color: *, format: String, valid: boolean}}\n */\n\n }, {\n key: 'original',\n get: function get() {\n return this._original;\n }\n\n /**\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n */\n\n }], [{\n key: 'HSVAColor',\n\n\n /**\n * Returns the HSVAColor class\n *\n * @static\n * @example let colorData = new ColorItem.HSVAColor(360, 100, 100, 1);\n * @returns {HSVAColor}\n */\n get: function get() {\n return HSVAColor;\n }\n }]);\n\n function ColorItem() {\n var color = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n _classCallCheck(this, ColorItem);\n\n this.replace(color, format);\n }\n\n /**\n * Replaces the internal QixColor object with a new one.\n * This also replaces the internal original color data.\n *\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data to be parsed (if needed)\n * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n * @example color.replace('rgb(255,0,0)', 'hsl');\n * @example color.replace(hsvaColorData);\n */\n\n\n _createClass(ColorItem, [{\n key: 'replace',\n value: function replace(color) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n format = ColorItem.sanitizeFormat(format);\n\n /**\n * @type {{color: *, format: String}}\n * @private\n */\n this._original = {\n color: color,\n format: format,\n valid: true\n };\n /**\n * @type {QixColor}\n * @private\n */\n this._color = ColorItem.parse(color);\n\n if (this._color === null) {\n this._color = (0, _color2.default)();\n this._original.valid = false;\n return;\n }\n\n /**\n * @type {*|string}\n * @private\n */\n this._format = format ? format : ColorItem.isHex(color) ? 'hex' : this._color.model;\n }\n\n /**\n * Parses the color returning a Qix Color object or null if cannot be\n * parsed.\n *\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n * @example let qColor = ColorItem.parse('rgb(255,0,0)');\n * @static\n * @returns {QixColor|null}\n */\n\n }, {\n key: 'isValid',\n\n\n /**\n * Returns true if the color is valid, false if not.\n *\n * @returns {boolean}\n */\n value: function isValid() {\n return this._original.valid === true;\n }\n\n /**\n * Hue value from 0 to 360\n *\n * @returns {int}\n */\n\n }, {\n key: 'setHueRatio',\n\n\n /**\n * Sets the hue ratio, where 1.0 is 0, 0.5 is 180 and 0.0 is 360.\n *\n * @ignore\n * @param {number} h Ratio from 1.0 to 0.0\n */\n value: function setHueRatio(h) {\n this.hue = (1 - h) * 360;\n }\n\n /**\n * Sets the saturation value\n *\n * @param {int} value Integer from 0 to 100\n */\n\n }, {\n key: 'setSaturationRatio',\n\n\n /**\n * Sets the saturation ratio, where 1.0 is 100 and 0.0 is 0.\n *\n * @ignore\n * @param {number} s Ratio from 0.0 to 1.0\n */\n value: function setSaturationRatio(s) {\n this.saturation = s * 100;\n }\n\n /**\n * Sets the 'value' channel value\n *\n * @param {int} value Integer from 0 to 100\n */\n\n }, {\n key: 'setValueRatio',\n\n\n /**\n * Sets the value ratio, where 1.0 is 0 and 0.0 is 100.\n *\n * @ignore\n * @param {number} v Ratio from 1.0 to 0.0\n */\n value: function setValueRatio(v) {\n this.value = (1 - v) * 100;\n }\n\n /**\n * Sets the alpha value. It will be rounded to 2 decimals.\n *\n * @param {int} value Float from 0.0 to 1.0\n */\n\n }, {\n key: 'setAlphaRatio',\n\n\n /**\n * Sets the alpha ratio, where 1.0 is 0.0 and 0.0 is 1.0.\n *\n * @ignore\n * @param {number} a Ratio from 1.0 to 0.0\n */\n value: function setAlphaRatio(a) {\n this.alpha = 1 - a;\n }\n\n /**\n * Sets the default color format\n *\n * @param {String} value Supported: 'rgb', 'hsl', 'hex'\n */\n\n }, {\n key: 'isDesaturated',\n\n\n /**\n * Returns true if the saturation value is zero, false otherwise\n *\n * @returns {boolean}\n */\n value: function isDesaturated() {\n return this.saturation === 0;\n }\n\n /**\n * Returns true if the alpha value is zero, false otherwise\n *\n * @returns {boolean}\n */\n\n }, {\n key: 'isTransparent',\n value: function isTransparent() {\n return this.alpha === 0;\n }\n\n /**\n * Returns true if the alpha value is numeric and less than 1, false otherwise\n *\n * @returns {boolean}\n */\n\n }, {\n key: 'hasTransparency',\n value: function hasTransparency() {\n return this.hasAlpha() && this.alpha < 1;\n }\n\n /**\n * Returns true if the alpha value is numeric, false otherwise\n *\n * @returns {boolean}\n */\n\n }, {\n key: 'hasAlpha',\n value: function hasAlpha() {\n return !isNaN(this.alpha);\n }\n\n /**\n * Returns a new HSVAColor object, based on the current color\n *\n * @returns {HSVAColor}\n */\n\n }, {\n key: 'toObject',\n value: function toObject() {\n return new HSVAColor(this.hue, this.saturation, this.value, this.alpha);\n }\n\n /**\n * Alias of toObject()\n *\n * @returns {HSVAColor}\n */\n\n }, {\n key: 'toHsva',\n value: function toHsva() {\n return this.toObject();\n }\n\n /**\n * Returns a new HSVAColor object with the ratio values (from 0.0 to 1.0),\n * based on the current color.\n *\n * @ignore\n * @returns {HSVAColor}\n */\n\n }, {\n key: 'toHsvaRatio',\n value: function toHsvaRatio() {\n return new HSVAColor(this.hue / 360, this.saturation / 100, this.value / 100, this.alpha);\n }\n\n /**\n * Converts the current color to its string representation,\n * using the internal format of this instance.\n *\n * @returns {String}\n */\n\n }, {\n key: 'toString',\n value: function toString() {\n return this.string();\n }\n\n /**\n * Converts the current color to its string representation,\n * using the given format.\n *\n * @param {String|null} format Format to convert to. If empty or null, the internal format will be used.\n * @returns {String}\n */\n\n }, {\n key: 'string',\n value: function string() {\n var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n format = ColorItem.sanitizeFormat(format ? format : this.format);\n\n if (!format) {\n return this._color.round().string();\n }\n\n if (this._color[format] === undefined) {\n throw new Error('Unsupported color format: \\'' + format + '\\'');\n }\n\n var str = this._color[format]();\n\n return str.round ? str.round().string() : str;\n }\n\n /**\n * Returns true if the given color values equals this one, false otherwise.\n * The format is not compared.\n * If any of the colors is invalid, the result will be false.\n *\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n *\n * @returns {boolean}\n */\n\n }, {\n key: 'equals',\n value: function equals(color) {\n color = color instanceof ColorItem ? color : new ColorItem(color);\n\n if (!color.isValid() || !this.isValid()) {\n return false;\n }\n\n return this.hue === color.hue && this.saturation === color.saturation && this.value === color.value && this.alpha === color.alpha;\n }\n\n /**\n * Creates a copy of this instance\n *\n * @returns {ColorItem}\n */\n\n }, {\n key: 'getClone',\n value: function getClone() {\n return new ColorItem(this._color, this.format);\n }\n\n /**\n * Creates a copy of this instance, only copying the hue value,\n * and setting the others to its max value.\n *\n * @returns {ColorItem}\n */\n\n }, {\n key: 'getCloneHueOnly',\n value: function getCloneHueOnly() {\n return new ColorItem([this.hue, 100, 100, 1], this.format);\n }\n\n /**\n * Creates a copy of this instance setting the alpha to the max.\n *\n * @returns {ColorItem}\n */\n\n }, {\n key: 'getCloneOpaque',\n value: function getCloneOpaque() {\n return new ColorItem(this._color.alpha(1), this.format);\n }\n\n /**\n * Converts the color to a RGB string\n *\n * @returns {String}\n */\n\n }, {\n key: 'toRgbString',\n value: function toRgbString() {\n return this.string('rgb');\n }\n\n /**\n * Converts the color to a Hexadecimal string\n *\n * @returns {String}\n */\n\n }, {\n key: 'toHexString',\n value: function toHexString() {\n return this.string('hex');\n }\n\n /**\n * Converts the color to a HSL string\n *\n * @returns {String}\n */\n\n }, {\n key: 'toHslString',\n value: function toHslString() {\n return this.string('hsl');\n }\n\n /**\n * Returns true if the color is dark, false otherwhise.\n * This is useful to decide a text color.\n *\n * @returns {boolean}\n */\n\n }, {\n key: 'isDark',\n value: function isDark() {\n return this._color.isDark();\n }\n\n /**\n * Returns true if the color is light, false otherwhise.\n * This is useful to decide a text color.\n *\n * @returns {boolean}\n */\n\n }, {\n key: 'isLight',\n value: function isLight() {\n return this._color.isLight();\n }\n\n /**\n * Generates a list of colors using the given hue-based formula or the given array of hue values.\n * Hue formulas can be extended using ColorItem.colorFormulas static property.\n *\n * @param {String|Number[]} formula Examples: 'complementary', 'triad', 'tetrad', 'splitcomplement', [180, 270]\n * @example let colors = color.generate('triad');\n * @example let colors = color.generate([45, 80, 112, 200]);\n * @returns {ColorItem[]}\n */\n\n }, {\n key: 'generate',\n value: function generate(formula) {\n var hues = [];\n\n if (Array.isArray(formula)) {\n hues = formula;\n } else if (!ColorItem.colorFormulas.hasOwnProperty(formula)) {\n throw new Error('No color formula found with the name \\'' + formula + '\\'.');\n } else {\n hues = ColorItem.colorFormulas[formula];\n }\n\n var colors = [],\n mainColor = this._color,\n format = this.format;\n\n hues.forEach(function (hue) {\n var levels = [hue ? (mainColor.hue() + hue) % 360 : mainColor.hue(), mainColor.saturationv(), mainColor.value(), mainColor.alpha()];\n\n colors.push(new ColorItem(levels, format));\n });\n\n return colors;\n }\n }, {\n key: 'hue',\n get: function get() {\n return this._color.hue();\n }\n\n /**\n * Saturation value from 0 to 100\n *\n * @returns {int}\n */\n ,\n\n\n /**\n * Sets the hue value\n *\n * @param {int} value Integer from 0 to 360\n */\n set: function set(value) {\n this._color = this._color.hue(value);\n }\n }, {\n key: 'saturation',\n get: function get() {\n return this._color.saturationv();\n }\n\n /**\n * Value channel value from 0 to 100\n *\n * @returns {int}\n */\n ,\n set: function set(value) {\n this._color = this._color.saturationv(value);\n }\n }, {\n key: 'value',\n get: function get() {\n return this._color.value();\n }\n\n /**\n * Alpha value from 0.0 to 1.0\n *\n * @returns {number}\n */\n ,\n set: function set(value) {\n this._color = this._color.value(value);\n }\n }, {\n key: 'alpha',\n get: function get() {\n var a = this._color.alpha();\n\n return isNaN(a) ? 1 : a;\n }\n\n /**\n * Default color format to convert to when calling toString() or string()\n *\n * @returns {String} 'rgb', 'hsl', 'hex' or ''\n */\n ,\n set: function set(value) {\n // 2 decimals max\n this._color = this._color.alpha(Math.round(value * 100) / 100);\n }\n }, {\n key: 'format',\n get: function get() {\n return this._format ? this._format : this._color.model;\n },\n set: function set(value) {\n this._format = ColorItem.sanitizeFormat(value);\n }\n }], [{\n key: 'parse',\n value: function parse(color) {\n if (color instanceof _color2.default) {\n return color;\n }\n\n if (color instanceof ColorItem) {\n return color._color;\n }\n\n var format = null;\n\n if (color instanceof HSVAColor) {\n color = [color.h, color.s, color.v, isNaN(color.a) ? 1 : color.a];\n } else {\n color = ColorItem.sanitizeString(color);\n }\n\n if (color === null) {\n return null;\n }\n\n if (Array.isArray(color)) {\n format = 'hsv';\n }\n\n try {\n return (0, _color2.default)(color, format);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Sanitizes a color string, adding missing hash to hexadecimal colors\n * and converting 'transparent' to a color code.\n *\n * @param {String|*} str Color string\n * @example let colorStr = ColorItem.sanitizeString('ffaa00');\n * @static\n * @returns {String|*}\n */\n\n }, {\n key: 'sanitizeString',\n value: function sanitizeString(str) {\n if (!(typeof str === 'string' || str instanceof String)) {\n return str;\n }\n\n if (str.match(/^[0-9a-f]{2,}$/i)) {\n return '#' + str;\n }\n\n if (str.toLowerCase() === 'transparent') {\n return '#FFFFFF00';\n }\n\n return str;\n }\n\n /**\n * Detects if a value is a string and a color in hexadecimal format (in any variant).\n *\n * @param {String} str\n * @example ColorItem.isHex('rgba(0,0,0)'); // false\n * @example ColorItem.isHex('ffaa00'); // true\n * @example ColorItem.isHex('#ffaa00'); // true\n * @static\n * @returns {boolean}\n */\n\n }, {\n key: 'isHex',\n value: function isHex(str) {\n if (!(typeof str === 'string' || str instanceof String)) {\n return false;\n }\n\n return !!str.match(/^#?[0-9a-f]{2,}$/i);\n }\n\n /**\n * Sanitizes a color format to one supported by web browsers.\n * Returns an empty string of the format can't be recognised.\n *\n * @param {String|*} format\n * @example ColorItem.sanitizeFormat('rgba'); // 'rgb'\n * @example ColorItem.isHex('hex8'); // 'hex'\n * @example ColorItem.isHex('invalid'); // ''\n * @static\n * @returns {String} 'rgb', 'hsl', 'hex' or ''.\n */\n\n }, {\n key: 'sanitizeFormat',\n value: function sanitizeFormat(format) {\n switch (format) {\n case 'hex':\n case 'hex3':\n case 'hex4':\n case 'hex6':\n case 'hex8':\n return 'hex';\n case 'rgb':\n case 'rgba':\n case 'keyword':\n case 'name':\n return 'rgb';\n case 'hsl':\n case 'hsla':\n case 'hsv':\n case 'hsva':\n case 'hwb': // HWB this is supported by Qix Color, but not by browsers\n case 'hwba':\n return 'hsl';\n default:\n return '';\n }\n }\n }]);\n\n return ColorItem;\n}();\n\n/**\n * List of hue-based color formulas used by ColorItem.prototype.generate()\n *\n * @static\n * @type {{complementary: number[], triad: number[], tetrad: number[], splitcomplement: number[]}}\n */\n\n\nColorItem.colorFormulas = {\n complementary: [180],\n triad: [0, 120, 240],\n tetrad: [0, 90, 180, 270],\n splitcomplement: [0, 72, 216]\n};\n\nexports.default = ColorItem;\nexports.HSVAColor = HSVAColor;\nexports.ColorItem = ColorItem;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @module\n */\n\n// adjust these values accordingly to the sass vars\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar sassVars = {\n 'bar_size_short': 16,\n 'base_margin': 6,\n 'columns': 6\n};\n\nvar sliderSize = sassVars.bar_size_short * sassVars.columns + sassVars.base_margin * (sassVars.columns - 1);\n\n/**\n * Colorpicker default options\n */\nexports.default = {\n /**\n * Custom class to be added to the `.colorpicker-element` element\n *\n * @type {String|null}\n * @default null\n */\n customClass: null,\n /**\n * Sets a initial color, ignoring the one from the element/input value or the data-color attribute.\n *\n * @type {(String|ColorItem|boolean)}\n * @default false\n */\n color: false,\n /**\n * Fallback color to use when the given color is invalid.\n * If false, the latest valid color will be used as a fallback.\n *\n * @type {String|ColorItem|boolean}\n * @default false\n */\n fallbackColor: false,\n /**\n * Forces an specific color format. If 'auto', it will be automatically detected the first time only,\n * but if null it will be always recalculated.\n *\n * Note that the ending 'a' of the format meaning \"alpha\" has currently no effect, meaning that rgb is the same as\n * rgba excepting if the alpha channel is disabled (see useAlpha).\n *\n * @type {('rgb'|'hex'|'hsl'|'auto'|null)}\n * @default 'auto'\n */\n format: 'auto',\n /**\n * Horizontal mode layout.\n *\n * If true, the hue and alpha channel bars will be rendered horizontally, above the saturation selector.\n *\n * @type {boolean}\n * @default false\n */\n horizontal: false,\n /**\n * Forces to show the colorpicker as an inline element.\n *\n * Note that if there is no container specified, the inline element\n * will be added to the body, so you may want to set the container option.\n *\n * @type {boolean}\n * @default false\n */\n inline: false,\n /**\n * Container where the colorpicker is appended to in the DOM.\n *\n * If is a string (CSS selector), the colorpicker will be placed inside this container.\n * If true, the `.colorpicker-element` element itself will be used as the container.\n * If false, the document body is used as the container, unless it is a popover (in this case it is appended to the\n * popover body instead).\n *\n * @type {String|boolean}\n * @default false\n */\n container: false,\n /**\n * Bootstrap Popover options.\n * The trigger, content and html options are always ignored.\n *\n * @type {boolean}\n * @default Object\n */\n popover: {\n animation: true,\n placement: 'bottom',\n fallbackPlacement: 'flip'\n },\n /**\n * If true, loads the 'debugger' extension automatically, which logs the events in the console\n * @type {boolean}\n * @default false\n */\n debug: false,\n /**\n * Child CSS selector for the colorpicker input.\n *\n * @type {String}\n * @default 'input'\n */\n input: 'input',\n /**\n * Child CSS selector for the colorpicker addon.\n * If it exists, the child <i> element background will be changed on color change.\n *\n * @type {String}\n * @default '.colorpicker-trigger, .colorpicker-input-addon'\n */\n addon: '.colorpicker-input-addon',\n /**\n * If true, the input content will be replaced always with a valid color,\n * if false, the invalid color will be left in the input,\n * while the internal color object will still resolve into a valid one.\n *\n * @type {boolean}\n * @default true\n */\n autoInputFallback: true,\n /**\n * If true a hash will be prepended to hexadecimal colors.\n * If false, the hash will be removed.\n * This only affects the input values in hexadecimal format.\n *\n * @type {boolean}\n * @default true\n */\n useHashPrefix: true,\n /**\n * If true, the alpha channel bar will be displayed no matter what.\n *\n * If false, it will be always hidden and alpha channel will be disabled also programmatically, meaning that\n * the selected or typed color will be always opaque.\n *\n * If null, the alpha channel will be automatically disabled/enabled depending if the initial color format supports\n * alpha or not.\n *\n * @type {boolean}\n * @default true\n */\n useAlpha: true,\n /**\n * Colorpicker widget template\n * @type {String}\n * @example\n * <!-- This is the default template: -->\n * <div class=\"colorpicker\">\n * <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\n * <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n * <div class=\"colorpicker-alpha\">\n * <div class=\"colorpicker-alpha-color\"></div>\n * <i class=\"colorpicker-guide\"></i>\n * </div>\n * </div>\n */\n template: '<div class=\"colorpicker\">\\n <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\\n <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\\n <div class=\"colorpicker-alpha\">\\n <div class=\"colorpicker-alpha-color\"></div>\\n <i class=\"colorpicker-guide\"></i>\\n </div>\\n </div>',\n /**\n *\n * Associative object with the extension class name and its config.\n * Colorpicker comes with many bundled extensions: debugger, palette, preview and swatches (a superset of palette).\n *\n * @type {Object[]}\n * @example\n * extensions: [\n * {\n * name: 'swatches'\n * options: {\n * colors: {\n * 'primary': '#337ab7',\n * 'success': '#5cb85c',\n * 'info': '#5bc0de',\n * 'warning': '#f0ad4e',\n * 'danger': '#d9534f'\n * },\n * namesAsValues: true\n * }\n * }\n * ]\n */\n extensions: [{\n name: 'preview',\n options: {\n showText: true\n }\n }],\n /**\n * Vertical sliders configuration\n * @type {Object}\n */\n sliders: {\n saturation: {\n selector: '.colorpicker-saturation',\n maxLeft: sliderSize,\n maxTop: sliderSize,\n callLeft: 'setSaturationRatio',\n callTop: 'setValueRatio'\n },\n hue: {\n selector: '.colorpicker-hue',\n maxLeft: 0,\n maxTop: sliderSize,\n callLeft: false,\n callTop: 'setHueRatio'\n },\n alpha: {\n selector: '.colorpicker-alpha',\n childSelector: '.colorpicker-alpha-color',\n maxLeft: 0,\n maxTop: sliderSize,\n callLeft: false,\n callTop: 'setAlphaRatio'\n }\n },\n /**\n * Horizontal sliders configuration\n * @type {Object}\n */\n slidersHorz: {\n saturation: {\n selector: '.colorpicker-saturation',\n maxLeft: sliderSize,\n maxTop: sliderSize,\n callLeft: 'setSaturationRatio',\n callTop: 'setValueRatio'\n },\n hue: {\n selector: '.colorpicker-hue',\n maxLeft: sliderSize,\n maxTop: 0,\n callLeft: 'setHueRatio',\n callTop: false\n },\n alpha: {\n selector: '.colorpicker-alpha',\n childSelector: '.colorpicker-alpha-color',\n maxLeft: sliderSize,\n maxTop: 0,\n callLeft: 'setAlphaRatio',\n callTop: false\n }\n }\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Extension2 = __webpack_require__(1);\n\nvar _Extension3 = _interopRequireDefault(_Extension2);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaults = {\n /**\n * Key-value pairs defining a color alias and its CSS color representation.\n *\n * They can also be just an array of values. In that case, no special names are used, only the real colors.\n *\n * @type {Object|Array}\n * @default null\n * @example\n * {\n * 'black': '#000000',\n * 'white': '#ffffff',\n * 'red': '#FF0000',\n * 'default': '#777777',\n * 'primary': '#337ab7',\n * 'success': '#5cb85c',\n * 'info': '#5bc0de',\n * 'warning': '#f0ad4e',\n * 'danger': '#d9534f'\n * }\n *\n * @example ['#f0ad4e', '#337ab7', '#5cb85c']\n */\n colors: null,\n /**\n * If true, when a color swatch is selected the name (alias) will be used as input value,\n * otherwise the swatch real color value will be used.\n *\n * @type {boolean}\n * @default true\n */\n namesAsValues: true\n};\n\n/**\n * Palette extension\n * @ignore\n */\n\nvar Palette = function (_Extension) {\n _inherits(Palette, _Extension);\n\n _createClass(Palette, [{\n key: 'colors',\n\n\n /**\n * @returns {Object|Array}\n */\n get: function get() {\n return this.options.colors;\n }\n }]);\n\n function Palette(colorpicker) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Palette);\n\n var _this = _possibleConstructorReturn(this, (Palette.__proto__ || Object.getPrototypeOf(Palette)).call(this, colorpicker, _jquery2.default.extend(true, {}, defaults, options)));\n\n if (!Array.isArray(_this.options.colors) && _typeof(_this.options.colors) !== 'object') {\n _this.options.colors = null;\n }\n return _this;\n }\n\n /**\n * @returns {int}\n */\n\n\n _createClass(Palette, [{\n key: 'getLength',\n value: function getLength() {\n if (!this.options.colors) {\n return 0;\n }\n\n if (Array.isArray(this.options.colors)) {\n return this.options.colors.length;\n }\n\n if (_typeof(this.options.colors) === 'object') {\n return Object.keys(this.options.colors).length;\n }\n\n return 0;\n }\n }, {\n key: 'resolveColor',\n value: function resolveColor(color) {\n var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (this.getLength() <= 0) {\n return false;\n }\n\n // Array of colors\n if (Array.isArray(this.options.colors)) {\n if (this.options.colors.indexOf(color) >= 0) {\n return color;\n }\n if (this.options.colors.indexOf(color.toUpperCase()) >= 0) {\n return color.toUpperCase();\n }\n if (this.options.colors.indexOf(color.toLowerCase()) >= 0) {\n return color.toLowerCase();\n }\n return false;\n }\n\n if (_typeof(this.options.colors) !== 'object') {\n return false;\n }\n\n // Map of objects\n if (!this.options.namesAsValues || realColor) {\n return this.getValue(color, false);\n }\n return this.getName(color, this.getName('#' + color));\n }\n\n /**\n * Given a color value, returns the corresponding color name or defaultValue.\n *\n * @param {String} value\n * @param {*} defaultValue\n * @returns {*}\n */\n\n }, {\n key: 'getName',\n value: function getName(value) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!(typeof value === 'string') || !this.options.colors) {\n return defaultValue;\n }\n for (var name in this.options.colors) {\n if (!this.options.colors.hasOwnProperty(name)) {\n continue;\n }\n if (this.options.colors[name].toLowerCase() === value.toLowerCase()) {\n return name;\n }\n }\n return defaultValue;\n }\n\n /**\n * Given a color name, returns the corresponding color value or defaultValue.\n *\n * @param {String} name\n * @param {*} defaultValue\n * @returns {*}\n */\n\n }, {\n key: 'getValue',\n value: function getValue(name) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!(typeof name === 'string') || !this.options.colors) {\n return defaultValue;\n }\n if (this.options.colors.hasOwnProperty(name)) {\n return this.options.colors[name];\n }\n return defaultValue;\n }\n }]);\n\n return Palette;\n}(_Extension3.default);\n\nexports.default = Palette;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* MIT license */\nvar cssKeywords = __webpack_require__(5);\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _Colorpicker = __webpack_require__(8);\n\nvar _Colorpicker2 = _interopRequireDefault(_Colorpicker);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar plugin = 'colorpicker';\n\n_jquery2.default[plugin] = _Colorpicker2.default;\n\n// Colorpicker jQuery Plugin API\n_jquery2.default.fn[plugin] = function (option) {\n var fnArgs = Array.prototype.slice.call(arguments, 1),\n isSingleElement = this.length === 1,\n returnValue = null;\n\n var $elements = this.each(function () {\n var $this = (0, _jquery2.default)(this),\n inst = $this.data(plugin),\n options = (typeof option === 'undefined' ? 'undefined' : _typeof(option)) === 'object' ? option : {};\n\n // Create instance if does not exist\n if (!inst) {\n inst = new _Colorpicker2.default(this, options);\n $this.data(plugin, inst);\n }\n\n if (!isSingleElement) {\n return;\n }\n\n returnValue = $this;\n\n if (typeof option === 'string') {\n if (option === 'colorpicker') {\n // Return colorpicker instance: e.g. .colorpicker('colorpicker')\n returnValue = inst;\n } else if (_jquery2.default.isFunction(inst[option])) {\n // Return method call return value: e.g. .colorpicker('isEnabled')\n returnValue = inst[option].apply(inst, fnArgs);\n } else {\n // Return property value: e.g. .colorpicker('element')\n returnValue = inst[option];\n }\n }\n });\n\n return isSingleElement ? returnValue : $elements;\n};\n\n_jquery2.default.fn[plugin].constructor = _Colorpicker2.default;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Extension = __webpack_require__(1);\n\nvar _Extension2 = _interopRequireDefault(_Extension);\n\nvar _options = __webpack_require__(3);\n\nvar _options2 = _interopRequireDefault(_options);\n\nvar _extensions = __webpack_require__(9);\n\nvar _extensions2 = _interopRequireDefault(_extensions);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _SliderHandler = __webpack_require__(13);\n\nvar _SliderHandler2 = _interopRequireDefault(_SliderHandler);\n\nvar _PopupHandler = __webpack_require__(14);\n\nvar _PopupHandler2 = _interopRequireDefault(_PopupHandler);\n\nvar _InputHandler = __webpack_require__(15);\n\nvar _InputHandler2 = _interopRequireDefault(_InputHandler);\n\nvar _ColorHandler = __webpack_require__(22);\n\nvar _ColorHandler2 = _interopRequireDefault(_ColorHandler);\n\nvar _PickerHandler = __webpack_require__(23);\n\nvar _PickerHandler2 = _interopRequireDefault(_PickerHandler);\n\nvar _AddonHandler = __webpack_require__(24);\n\nvar _AddonHandler2 = _interopRequireDefault(_AddonHandler);\n\nvar _ColorItem = __webpack_require__(2);\n\nvar _ColorItem2 = _interopRequireDefault(_ColorItem);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar colorPickerIdCounter = 0;\nvar root = typeof self !== 'undefined' ? self : undefined; // window\n\n/**\n * Colorpicker widget class\n */\n\nvar Colorpicker = function () {\n _createClass(Colorpicker, [{\n key: 'color',\n\n\n /**\n * Internal color object\n *\n * @type {Color|null}\n */\n get: function get() {\n return this.colorHandler.color;\n }\n\n /**\n * Internal color format\n *\n * @type {String|null}\n */\n\n }, {\n key: 'format',\n get: function get() {\n return this.colorHandler.format;\n }\n\n /**\n * Getter of the picker element\n *\n * @returns {jQuery|HTMLElement}\n */\n\n }, {\n key: 'picker',\n get: function get() {\n return this.pickerHandler.picker;\n }\n\n /**\n * @fires Colorpicker#colorpickerCreate\n * @param {Object|String} element\n * @param {Object} options\n * @constructor\n */\n\n }], [{\n key: 'Color',\n\n /**\n * Color class\n *\n * @static\n * @type {Color}\n */\n get: function get() {\n return _ColorItem2.default;\n }\n\n /**\n * Extension class\n *\n * @static\n * @type {Extension}\n */\n\n }, {\n key: 'Extension',\n get: function get() {\n return _Extension2.default;\n }\n }]);\n\n function Colorpicker(element, options) {\n _classCallCheck(this, Colorpicker);\n\n colorPickerIdCounter += 1;\n /**\n * The colorpicker instance number\n * @type {number}\n */\n this.id = colorPickerIdCounter;\n\n /**\n * Latest colorpicker event\n *\n * @type {{name: String, e: *}}\n */\n this.lastEvent = {\n alias: null,\n e: null\n };\n\n /**\n * The element that the colorpicker is bound to\n *\n * @type {*|jQuery}\n */\n this.element = (0, _jquery2.default)(element).addClass('colorpicker-element').attr('data-colorpicker-id', this.id);\n\n /**\n * @type {defaults}\n */\n this.options = _jquery2.default.extend(true, {}, _options2.default, options, this.element.data());\n\n /**\n * @type {boolean}\n * @private\n */\n this.disabled = false;\n\n /**\n * Extensions added to this instance\n *\n * @type {Extension[]}\n */\n this.extensions = [];\n\n /**\n * The element where the\n * @type {*|jQuery}\n */\n this.container = this.options.container === true || this.options.container !== true && this.options.inline === true ? this.element : this.options.container;\n\n this.container = this.container !== false ? (0, _jquery2.default)(this.container) : false;\n\n /**\n * @type {InputHandler}\n */\n this.inputHandler = new _InputHandler2.default(this);\n /**\n * @type {ColorHandler}\n */\n this.colorHandler = new _ColorHandler2.default(this);\n /**\n * @type {SliderHandler}\n */\n this.sliderHandler = new _SliderHandler2.default(this);\n /**\n * @type {PopupHandler}\n */\n this.popupHandler = new _PopupHandler2.default(this, root);\n /**\n * @type {PickerHandler}\n */\n this.pickerHandler = new _PickerHandler2.default(this);\n /**\n * @type {AddonHandler}\n */\n this.addonHandler = new _AddonHandler2.default(this);\n\n this.init();\n\n // Emit a create event\n (0, _jquery2.default)(_jquery2.default.proxy(function () {\n /**\n * (Colorpicker) When the Colorpicker instance has been created and the DOM is ready.\n *\n * @event Colorpicker#colorpickerCreate\n */\n this.trigger('colorpickerCreate');\n }, this));\n }\n\n /**\n * Initializes the plugin\n * @private\n */\n\n\n _createClass(Colorpicker, [{\n key: 'init',\n value: function init() {\n // Init addon\n this.addonHandler.bind();\n\n // Init input\n this.inputHandler.bind();\n\n // Init extensions (before initializing the color)\n this.initExtensions();\n\n // Init color\n this.colorHandler.bind();\n\n // Init picker\n this.pickerHandler.bind();\n\n // Init sliders and popup\n this.sliderHandler.bind();\n this.popupHandler.bind();\n\n // Inject into the DOM (this may make it visible)\n this.pickerHandler.attach();\n\n // Update all components\n this.update();\n\n if (this.inputHandler.isDisabled()) {\n this.disable();\n }\n }\n\n /**\n * Initializes the plugin extensions\n * @private\n */\n\n }, {\n key: 'initExtensions',\n value: function initExtensions() {\n var _this = this;\n\n if (!Array.isArray(this.options.extensions)) {\n this.options.extensions = [];\n }\n\n if (this.options.debug) {\n this.options.extensions.push({ name: 'debugger' });\n }\n\n // Register and instantiate extensions\n this.options.extensions.forEach(function (ext) {\n _this.registerExtension(Colorpicker.extensions[ext.name.toLowerCase()], ext.options || {});\n });\n }\n\n /**\n * Creates and registers the given extension\n *\n * @param {Extension} ExtensionClass The extension class to instantiate\n * @param {Object} [config] Extension configuration\n * @returns {Extension}\n */\n\n }, {\n key: 'registerExtension',\n value: function registerExtension(ExtensionClass) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var ext = new ExtensionClass(this, config);\n\n this.extensions.push(ext);\n return ext;\n }\n\n /**\n * Destroys the current instance\n *\n * @fires Colorpicker#colorpickerDestroy\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var color = this.color;\n\n this.sliderHandler.unbind();\n this.inputHandler.unbind();\n this.popupHandler.unbind();\n this.colorHandler.unbind();\n this.addonHandler.unbind();\n this.pickerHandler.unbind();\n\n this.element.removeClass('colorpicker-element').removeData('colorpicker', 'color').off('.colorpicker');\n\n /**\n * (Colorpicker) When the instance is destroyed with all events unbound.\n *\n * @event Colorpicker#colorpickerDestroy\n */\n this.trigger('colorpickerDestroy', color);\n }\n\n /**\n * Shows the colorpicker widget if hidden.\n * If the colorpicker is disabled this call will be ignored.\n *\n * @fires Colorpicker#colorpickerShow\n * @param {Event} [e]\n */\n\n }, {\n key: 'show',\n value: function show(e) {\n this.popupHandler.show(e);\n }\n\n /**\n * Hides the colorpicker widget.\n *\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n\n }, {\n key: 'hide',\n value: function hide(e) {\n this.popupHandler.hide(e);\n }\n\n /**\n * Toggles the colorpicker between visible and hidden.\n *\n * @fires Colorpicker#colorpickerShow\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n\n }, {\n key: 'toggle',\n value: function toggle(e) {\n this.popupHandler.toggle(e);\n }\n\n /**\n * Returns the current color value as string\n *\n * @param {String|*} [defaultValue]\n * @returns {String|*}\n */\n\n }, {\n key: 'getValue',\n value: function getValue() {\n var defaultValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n var val = this.colorHandler.color;\n\n val = val instanceof _ColorItem2.default ? val : defaultValue;\n\n if (val instanceof _ColorItem2.default) {\n return val.string(this.format);\n }\n\n return val;\n }\n\n /**\n * Sets the color manually\n *\n * @fires Colorpicker#colorpickerChange\n * @param {String|Color} val\n */\n\n }, {\n key: 'setValue',\n value: function setValue(val) {\n if (this.isDisabled()) {\n return;\n }\n var ch = this.colorHandler;\n\n if (ch.hasColor() && !!val && ch.color.equals(val) || !ch.hasColor() && !val) {\n // same color or still empty\n return;\n }\n\n ch.color = val ? ch.createColor(val, this.options.autoInputFallback) : null;\n\n /**\n * (Colorpicker) When the color is set programmatically with setValue().\n *\n * @event Colorpicker#colorpickerChange\n */\n this.trigger('colorpickerChange', ch.color, val);\n\n // force update if color has changed to empty\n this.update();\n }\n\n /**\n * Updates the UI and the input color according to the internal color.\n *\n * @fires Colorpicker#colorpickerUpdate\n */\n\n }, {\n key: 'update',\n value: function update() {\n if (this.colorHandler.hasColor()) {\n this.inputHandler.update();\n } else {\n this.colorHandler.assureColor();\n }\n\n this.addonHandler.update();\n this.pickerHandler.update();\n\n /**\n * (Colorpicker) Fired when the widget is updated.\n *\n * @event Colorpicker#colorpickerUpdate\n */\n this.trigger('colorpickerUpdate');\n }\n\n /**\n * Enables the widget and the input if any\n *\n * @fires Colorpicker#colorpickerEnable\n * @returns {boolean}\n */\n\n }, {\n key: 'enable',\n value: function enable() {\n this.inputHandler.enable();\n this.disabled = false;\n this.picker.removeClass('colorpicker-disabled');\n\n /**\n * (Colorpicker) When the widget has been enabled.\n *\n * @event Colorpicker#colorpickerEnable\n */\n this.trigger('colorpickerEnable');\n return true;\n }\n\n /**\n * Disables the widget and the input if any\n *\n * @fires Colorpicker#colorpickerDisable\n * @returns {boolean}\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.inputHandler.disable();\n this.disabled = true;\n this.picker.addClass('colorpicker-disabled');\n\n /**\n * (Colorpicker) When the widget has been disabled.\n *\n * @event Colorpicker#colorpickerDisable\n */\n this.trigger('colorpickerDisable');\n return true;\n }\n\n /**\n * Returns true if this instance is enabled\n * @returns {boolean}\n */\n\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return !this.isDisabled();\n }\n\n /**\n * Returns true if this instance is disabled\n * @returns {boolean}\n */\n\n }, {\n key: 'isDisabled',\n value: function isDisabled() {\n return this.disabled === true;\n }\n\n /**\n * Triggers a Colorpicker event.\n *\n * @param eventName\n * @param color\n * @param value\n */\n\n }, {\n key: 'trigger',\n value: function trigger(eventName) {\n var color = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n this.element.trigger({\n type: eventName,\n colorpicker: this,\n color: color ? color : this.color,\n value: value ? value : this.getValue()\n });\n }\n }]);\n\n return Colorpicker;\n}();\n\n/**\n * Colorpicker extension classes, indexed by extension name\n *\n * @static\n * @type {Object} a map between the extension name and its class\n */\n\n\nColorpicker.extensions = _extensions2.default;\n\nexports.default = Colorpicker;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Palette = exports.Swatches = exports.Preview = exports.Debugger = undefined;\n\nvar _Debugger = __webpack_require__(10);\n\nvar _Debugger2 = _interopRequireDefault(_Debugger);\n\nvar _Preview = __webpack_require__(11);\n\nvar _Preview2 = _interopRequireDefault(_Preview);\n\nvar _Swatches = __webpack_require__(12);\n\nvar _Swatches2 = _interopRequireDefault(_Swatches);\n\nvar _Palette = __webpack_require__(4);\n\nvar _Palette2 = _interopRequireDefault(_Palette);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Debugger = _Debugger2.default;\nexports.Preview = _Preview2.default;\nexports.Swatches = _Swatches2.default;\nexports.Palette = _Palette2.default;\nexports.default = {\n 'debugger': _Debugger2.default,\n 'preview': _Preview2.default,\n 'swatches': _Swatches2.default,\n 'palette': _Palette2.default\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _Extension2 = __webpack_require__(1);\n\nvar _Extension3 = _interopRequireDefault(_Extension2);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Debugger extension class\n * @alias DebuggerExtension\n * @ignore\n */\nvar Debugger = function (_Extension) {\n _inherits(Debugger, _Extension);\n\n function Debugger(colorpicker) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Debugger);\n\n /**\n * @type {number}\n */\n var _this = _possibleConstructorReturn(this, (Debugger.__proto__ || Object.getPrototypeOf(Debugger)).call(this, colorpicker, options));\n\n _this.eventCounter = 0;\n if (_this.colorpicker.inputHandler.hasInput()) {\n _this.colorpicker.inputHandler.input.on('change.colorpicker-ext', _jquery2.default.proxy(_this.onChangeInput, _this));\n }\n return _this;\n }\n\n /**\n * @fires DebuggerExtension#colorpickerDebug\n * @param {string} eventName\n * @param {*} args\n */\n\n\n _createClass(Debugger, [{\n key: 'log',\n value: function log(eventName) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n this.eventCounter += 1;\n\n var logMessage = '#' + this.eventCounter + ': Colorpicker#' + this.colorpicker.id + ' [' + eventName + ']';\n\n (_console = console).debug.apply(_console, [logMessage].concat(args));\n\n /**\n * Whenever the debugger logs an event, this other event is emitted.\n *\n * @event DebuggerExtension#colorpickerDebug\n * @type {object} The event object\n * @property {Colorpicker} colorpicker The Colorpicker instance\n * @property {ColorItem} color The color instance\n * @property {{debugger: DebuggerExtension, eventName: String, logArgs: Array, logMessage: String}} debug\n * The debug info\n */\n this.colorpicker.element.trigger({\n type: 'colorpickerDebug',\n colorpicker: this.colorpicker,\n color: this.color,\n value: null,\n debug: {\n debugger: this,\n eventName: eventName,\n logArgs: args,\n logMessage: logMessage\n }\n });\n }\n }, {\n key: 'resolveColor',\n value: function resolveColor(color) {\n var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n this.log('resolveColor()', color, realColor);\n return false;\n }\n }, {\n key: 'onCreate',\n value: function onCreate(event) {\n this.log('colorpickerCreate');\n return _get(Debugger.prototype.__proto__ || Object.getPrototypeOf(Debugger.prototype), 'onCreate', this).call(this, event);\n }\n }, {\n key: 'onDestroy',\n value: function onDestroy(event) {\n this.log('colorpickerDestroy');\n this.eventCounter = 0;\n\n if (this.colorpicker.inputHandler.hasInput()) {\n this.colorpicker.inputHandler.input.off('.colorpicker-ext');\n }\n\n return _get(Debugger.prototype.__proto__ || Object.getPrototypeOf(Debugger.prototype), 'onDestroy', this).call(this, event);\n }\n }, {\n key: 'onUpdate',\n value: function onUpdate(event) {\n this.log('colorpickerUpdate');\n }\n\n /**\n * @listens Colorpicker#change\n * @param {Event} event\n */\n\n }, {\n key: 'onChangeInput',\n value: function onChangeInput(event) {\n this.log('input:change.colorpicker', event.value, event.color);\n }\n }, {\n key: 'onChange',\n value: function onChange(event) {\n this.log('colorpickerChange', event.value, event.color);\n }\n }, {\n key: 'onInvalid',\n value: function onInvalid(event) {\n this.log('colorpickerInvalid', event.value, event.color);\n }\n }, {\n key: 'onHide',\n value: function onHide(event) {\n this.log('colorpickerHide');\n this.eventCounter = 0;\n }\n }, {\n key: 'onShow',\n value: function onShow(event) {\n this.log('colorpickerShow');\n }\n }, {\n key: 'onDisable',\n value: function onDisable(event) {\n this.log('colorpickerDisable');\n }\n }, {\n key: 'onEnable',\n value: function onEnable(event) {\n this.log('colorpickerEnable');\n }\n }]);\n\n return Debugger;\n}(_Extension3.default);\n\nexports.default = Debugger;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _Extension2 = __webpack_require__(1);\n\nvar _Extension3 = _interopRequireDefault(_Extension2);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Color preview extension\n * @ignore\n */\nvar Preview = function (_Extension) {\n _inherits(Preview, _Extension);\n\n function Preview(colorpicker) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Preview);\n\n var _this = _possibleConstructorReturn(this, (Preview.__proto__ || Object.getPrototypeOf(Preview)).call(this, colorpicker, _jquery2.default.extend(true, {}, {\n template: '<div class=\"colorpicker-bar colorpicker-preview\"><div /></div>',\n showText: true,\n format: colorpicker.format\n }, options)));\n\n _this.element = (0, _jquery2.default)(_this.options.template);\n _this.elementInner = _this.element.find('div');\n return _this;\n }\n\n _createClass(Preview, [{\n key: 'onCreate',\n value: function onCreate(event) {\n _get(Preview.prototype.__proto__ || Object.getPrototypeOf(Preview.prototype), 'onCreate', this).call(this, event);\n this.colorpicker.picker.append(this.element);\n }\n }, {\n key: 'onUpdate',\n value: function onUpdate(event) {\n _get(Preview.prototype.__proto__ || Object.getPrototypeOf(Preview.prototype), 'onUpdate', this).call(this, event);\n\n if (!event.color) {\n this.elementInner.css('backgroundColor', null).css('color', null).html('');\n return;\n }\n\n this.elementInner.css('backgroundColor', event.color.toRgbString());\n\n if (this.options.showText) {\n this.elementInner.html(event.color.string(this.options.format || this.colorpicker.format));\n\n if (event.color.isDark() && event.color.alpha > 0.5) {\n this.elementInner.css('color', 'white');\n } else {\n this.elementInner.css('color', 'black');\n }\n }\n }\n }]);\n\n return Preview;\n}(_Extension3.default);\n\nexports.default = Preview;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _Palette2 = __webpack_require__(4);\n\nvar _Palette3 = _interopRequireDefault(_Palette2);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaults = {\n barTemplate: '<div class=\"colorpicker-bar colorpicker-swatches\">\\n <div class=\"colorpicker-swatches--inner\"></div>\\n </div>',\n swatchTemplate: '<i class=\"colorpicker-swatch\"><i class=\"colorpicker-swatch--inner\"></i></i>'\n};\n\n/**\n * Color swatches extension\n * @ignore\n */\n\nvar Swatches = function (_Palette) {\n _inherits(Swatches, _Palette);\n\n function Swatches(colorpicker) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Swatches);\n\n var _this = _possibleConstructorReturn(this, (Swatches.__proto__ || Object.getPrototypeOf(Swatches)).call(this, colorpicker, _jquery2.default.extend(true, {}, defaults, options)));\n\n _this.element = null;\n return _this;\n }\n\n _createClass(Swatches, [{\n key: 'isEnabled',\n value: function isEnabled() {\n return this.getLength() > 0;\n }\n }, {\n key: 'onCreate',\n value: function onCreate(event) {\n _get(Swatches.prototype.__proto__ || Object.getPrototypeOf(Swatches.prototype), 'onCreate', this).call(this, event);\n\n if (!this.isEnabled()) {\n return;\n }\n\n this.element = (0, _jquery2.default)(this.options.barTemplate);\n this.load();\n this.colorpicker.picker.append(this.element);\n }\n }, {\n key: 'load',\n value: function load() {\n var _this2 = this;\n\n var colorpicker = this.colorpicker,\n swatchContainer = this.element.find('.colorpicker-swatches--inner'),\n isAliased = this.options.namesAsValues === true && !Array.isArray(this.colors);\n\n swatchContainer.empty();\n\n _jquery2.default.each(this.colors, function (name, value) {\n var $swatch = (0, _jquery2.default)(_this2.options.swatchTemplate).attr('data-name', name).attr('data-value', value).attr('title', isAliased ? name + ': ' + value : value).on('mousedown.colorpicker touchstart.colorpicker', function (e) {\n var $sw = (0, _jquery2.default)(this);\n\n // e.preventDefault();\n\n colorpicker.setValue(isAliased ? $sw.attr('data-name') : $sw.attr('data-value'));\n });\n\n $swatch.find('.colorpicker-swatch--inner').css('background-color', value);\n\n swatchContainer.append($swatch);\n });\n\n swatchContainer.append((0, _jquery2.default)('<i class=\"colorpicker-clear\"></i>'));\n }\n }]);\n\n return Swatches;\n}(_Palette3.default);\n\nexports.default = Swatches;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Class that handles all configured sliders on mouse or touch events.\n * @ignore\n */\nvar SliderHandler = function () {\n /**\n * @param {Colorpicker} colorpicker\n */\n function SliderHandler(colorpicker) {\n _classCallCheck(this, SliderHandler);\n\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {*|String}\n * @private\n */\n this.currentSlider = null;\n /**\n * @type {{left: number, top: number}}\n * @private\n */\n this.mousePointer = {\n left: 0,\n top: 0\n };\n\n /**\n * @type {Function}\n */\n this.onMove = _jquery2.default.proxy(this.defaultOnMove, this);\n }\n\n /**\n * This function is called every time a slider guide is moved\n * The scope of \"this\" is the SliderHandler object.\n *\n * @param {int} top\n * @param {int} left\n */\n\n\n _createClass(SliderHandler, [{\n key: 'defaultOnMove',\n value: function defaultOnMove(top, left) {\n if (!this.currentSlider) {\n return;\n }\n\n var slider = this.currentSlider,\n cp = this.colorpicker,\n ch = cp.colorHandler;\n\n // Create a color object\n var color = !ch.hasColor() ? ch.getFallbackColor() : ch.color.getClone();\n\n // Adjust the guide position\n slider.guideStyle.left = left + 'px';\n slider.guideStyle.top = top + 'px';\n\n // Adjust the color\n if (slider.callLeft) {\n color[slider.callLeft](left / slider.maxLeft);\n }\n if (slider.callTop) {\n color[slider.callTop](top / slider.maxTop);\n }\n\n // Set the new color\n cp.setValue(color);\n cp.popupHandler.focus();\n }\n\n /**\n * Binds the colorpicker sliders to the mouse/touch events\n */\n\n }, {\n key: 'bind',\n value: function bind() {\n var sliders = this.colorpicker.options.horizontal ? this.colorpicker.options.slidersHorz : this.colorpicker.options.sliders;\n var sliderClasses = [];\n\n for (var sliderName in sliders) {\n if (!sliders.hasOwnProperty(sliderName)) {\n continue;\n }\n\n sliderClasses.push(sliders[sliderName].selector);\n }\n\n this.colorpicker.picker.find(sliderClasses.join(', ')).on('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.pressed, this));\n }\n\n /**\n * Unbinds any event bound by this handler\n */\n\n }, {\n key: 'unbind',\n value: function unbind() {\n (0, _jquery2.default)(this.colorpicker.picker).off({\n 'mousemove.colorpicker': _jquery2.default.proxy(this.moved, this),\n 'touchmove.colorpicker': _jquery2.default.proxy(this.moved, this),\n 'mouseup.colorpicker': _jquery2.default.proxy(this.released, this),\n 'touchend.colorpicker': _jquery2.default.proxy(this.released, this)\n });\n }\n\n /**\n * Function triggered when clicking in one of the color adjustment bars\n *\n * @private\n * @fires Colorpicker#mousemove\n * @param {Event} e\n */\n\n }, {\n key: 'pressed',\n value: function pressed(e) {\n if (this.colorpicker.isDisabled()) {\n return;\n }\n this.colorpicker.lastEvent.alias = 'pressed';\n this.colorpicker.lastEvent.e = e;\n\n if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n e.pageX = e.originalEvent.touches[0].pageX;\n e.pageY = e.originalEvent.touches[0].pageY;\n }\n // e.stopPropagation();\n // e.preventDefault();\n\n var target = (0, _jquery2.default)(e.target);\n\n // detect the slider and set the limits and callbacks\n var zone = target.closest('div');\n var sliders = this.colorpicker.options.horizontal ? this.colorpicker.options.slidersHorz : this.colorpicker.options.sliders;\n\n if (zone.is('.colorpicker')) {\n return;\n }\n\n this.currentSlider = null;\n\n for (var sliderName in sliders) {\n if (!sliders.hasOwnProperty(sliderName)) {\n continue;\n }\n\n var slider = sliders[sliderName];\n\n if (zone.is(slider.selector)) {\n this.currentSlider = _jquery2.default.extend({}, slider, { name: sliderName });\n break;\n } else if (slider.childSelector !== undefined && zone.is(slider.childSelector)) {\n this.currentSlider = _jquery2.default.extend({}, slider, { name: sliderName });\n zone = zone.parent(); // zone.parents(slider.selector).first() ?\n break;\n }\n }\n\n var guide = zone.find('.colorpicker-guide').get(0);\n\n if (this.currentSlider === null || guide === null) {\n return;\n }\n\n var offset = zone.offset();\n\n // reference to guide's style\n this.currentSlider.guideStyle = guide.style;\n this.currentSlider.left = e.pageX - offset.left;\n this.currentSlider.top = e.pageY - offset.top;\n this.mousePointer = {\n left: e.pageX,\n top: e.pageY\n };\n\n // TODO: fix moving outside the picker makes the guides to keep moving. The event needs to be bound to the window.\n /**\n * (window.document) Triggered on mousedown for the document object,\n * so the color adjustment guide is moved to the clicked position.\n *\n * @event Colorpicker#mousemove\n */\n (0, _jquery2.default)(this.colorpicker.picker).on({\n 'mousemove.colorpicker': _jquery2.default.proxy(this.moved, this),\n 'touchmove.colorpicker': _jquery2.default.proxy(this.moved, this),\n 'mouseup.colorpicker': _jquery2.default.proxy(this.released, this),\n 'touchend.colorpicker': _jquery2.default.proxy(this.released, this)\n }).trigger('mousemove');\n }\n\n /**\n * Function triggered when dragging a guide inside one of the color adjustment bars.\n *\n * @private\n * @param {Event} e\n */\n\n }, {\n key: 'moved',\n value: function moved(e) {\n this.colorpicker.lastEvent.alias = 'moved';\n this.colorpicker.lastEvent.e = e;\n\n if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n e.pageX = e.originalEvent.touches[0].pageX;\n e.pageY = e.originalEvent.touches[0].pageY;\n }\n\n // e.stopPropagation();\n e.preventDefault(); // prevents scrolling on mobile\n\n var left = Math.max(0, Math.min(this.currentSlider.maxLeft, this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left)));\n\n var top = Math.max(0, Math.min(this.currentSlider.maxTop, this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top)));\n\n this.onMove(top, left);\n }\n\n /**\n * Function triggered when releasing the click in one of the color adjustment bars.\n *\n * @private\n * @param {Event} e\n */\n\n }, {\n key: 'released',\n value: function released(e) {\n this.colorpicker.lastEvent.alias = 'released';\n this.colorpicker.lastEvent.e = e;\n\n // e.stopPropagation();\n // e.preventDefault();\n\n (0, _jquery2.default)(this.colorpicker.picker).off({\n 'mousemove.colorpicker': this.moved,\n 'touchmove.colorpicker': this.moved,\n 'mouseup.colorpicker': this.released,\n 'touchend.colorpicker': this.released\n });\n }\n }]);\n\n return SliderHandler;\n}();\n\nexports.default = SliderHandler;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _options = __webpack_require__(3);\n\nvar _options2 = _interopRequireDefault(_options);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Handles everything related to the UI of the colorpicker popup: show, hide, position,...\n * @ignore\n */\nvar PopupHandler = function () {\n /**\n * @param {Colorpicker} colorpicker\n * @param {Window} root\n */\n function PopupHandler(colorpicker, root) {\n _classCallCheck(this, PopupHandler);\n\n /**\n * @type {Window}\n */\n this.root = root;\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery}\n */\n this.popoverTarget = null;\n /**\n * @type {jQuery}\n */\n this.popoverTip = null;\n\n /**\n * If true, the latest click was inside the popover\n * @type {boolean}\n */\n this.clicking = false;\n /**\n * @type {boolean}\n */\n this.hidding = false;\n /**\n * @type {boolean}\n */\n this.showing = false;\n }\n\n /**\n * @private\n * @returns {jQuery|false}\n */\n\n\n _createClass(PopupHandler, [{\n key: 'bind',\n\n\n /**\n * Binds the different colorpicker elements to the focus/mouse/touch events so it reacts in order to show or\n * hide the colorpicker popup accordingly. It also adds the proper classes.\n */\n value: function bind() {\n var cp = this.colorpicker;\n\n if (cp.options.inline) {\n cp.picker.addClass('colorpicker-inline colorpicker-visible');\n return; // no need to bind show/hide events for inline elements\n }\n\n cp.picker.addClass('colorpicker-popup colorpicker-hidden');\n\n // there is no input or addon\n if (!this.hasInput && !this.hasAddon) {\n return;\n }\n\n // create Bootstrap 4 popover\n if (cp.options.popover) {\n this.createPopover();\n }\n\n // bind addon show/hide events\n if (this.hasAddon) {\n // enable focus on addons\n if (!this.addon.attr('tabindex')) {\n this.addon.attr('tabindex', 0);\n }\n\n this.addon.on({\n 'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.toggle, this)\n });\n\n this.addon.on({\n 'focus.colorpicker': _jquery2.default.proxy(this.show, this)\n });\n\n this.addon.on({\n 'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)\n });\n }\n\n // bind input show/hide events\n if (this.hasInput && !this.hasAddon) {\n this.input.on({\n 'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.show, this),\n 'focus.colorpicker': _jquery2.default.proxy(this.show, this)\n });\n\n this.input.on({\n 'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)\n });\n }\n\n // reposition popup on window resize\n (0, _jquery2.default)(this.root).on('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));\n }\n\n /**\n * Unbinds any event bound by this handler\n */\n\n }, {\n key: 'unbind',\n value: function unbind() {\n if (this.hasInput) {\n this.input.off({\n 'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.show, this),\n 'focus.colorpicker': _jquery2.default.proxy(this.show, this)\n });\n this.input.off({\n 'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)\n });\n }\n\n if (this.hasAddon) {\n this.addon.off({\n 'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.toggle, this)\n });\n this.addon.off({\n 'focus.colorpicker': _jquery2.default.proxy(this.show, this)\n });\n this.addon.off({\n 'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)\n });\n }\n\n if (this.popoverTarget) {\n this.popoverTarget.popover('dispose');\n }\n\n (0, _jquery2.default)(this.root).off('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));\n (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.hide, this));\n (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.onClickingInside, this));\n }\n }, {\n key: 'isClickingInside',\n value: function isClickingInside(e) {\n if (!e) {\n return false;\n }\n\n return this.isOrIsInside(this.popoverTip, e.currentTarget) || this.isOrIsInside(this.popoverTip, e.target) || this.isOrIsInside(this.colorpicker.picker, e.currentTarget) || this.isOrIsInside(this.colorpicker.picker, e.target);\n }\n }, {\n key: 'isOrIsInside',\n value: function isOrIsInside(container, element) {\n if (!container || !element) {\n return false;\n }\n\n element = (0, _jquery2.default)(element);\n\n return element.is(container) || container.find(element).length > 0;\n }\n }, {\n key: 'onClickingInside',\n value: function onClickingInside(e) {\n this.clicking = this.isClickingInside(e);\n }\n }, {\n key: 'createPopover',\n value: function createPopover() {\n var cp = this.colorpicker;\n\n this.popoverTarget = this.hasAddon ? this.addon : this.input;\n\n cp.picker.addClass('colorpicker-bs-popover-content');\n\n this.popoverTarget.popover(_jquery2.default.extend(true, {}, _options2.default.popover, cp.options.popover, { trigger: 'manual', content: cp.picker, html: true }));\n\n this.popoverTip = (0, _jquery2.default)(this.popoverTarget.popover('getTipElement').data('bs.popover').tip);\n this.popoverTip.addClass('colorpicker-bs-popover');\n\n this.popoverTarget.on('shown.bs.popover', _jquery2.default.proxy(this.fireShow, this));\n this.popoverTarget.on('hidden.bs.popover', _jquery2.default.proxy(this.fireHide, this));\n }\n\n /**\n * If the widget is not inside a container or inline, rearranges its position relative to its element offset.\n *\n * @param {Event} [e]\n * @private\n */\n\n }, {\n key: 'reposition',\n value: function reposition(e) {\n if (this.popoverTarget && this.isVisible()) {\n this.popoverTarget.popover('update');\n }\n }\n\n /**\n * Toggles the colorpicker between visible or hidden\n *\n * @fires Colorpicker#colorpickerShow\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n\n }, {\n key: 'toggle',\n value: function toggle(e) {\n if (this.isVisible()) {\n this.hide(e);\n } else {\n this.show(e);\n }\n }\n\n /**\n * Shows the colorpicker widget if hidden.\n *\n * @fires Colorpicker#colorpickerShow\n * @param {Event} [e]\n */\n\n }, {\n key: 'show',\n value: function show(e) {\n if (this.isVisible() || this.showing || this.hidding) {\n return;\n }\n\n this.showing = true;\n this.hidding = false;\n this.clicking = false;\n\n var cp = this.colorpicker;\n\n cp.lastEvent.alias = 'show';\n cp.lastEvent.e = e;\n\n // Prevent showing browser native HTML5 colorpicker\n if (e && (!this.hasInput || this.input.attr('type') === 'color') && e && e.preventDefault) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n // If it's a popover, add event to the document to hide the picker when clicking outside of it\n if (this.isPopover) {\n (0, _jquery2.default)(this.root).on('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));\n }\n\n // add visible class before popover is shown\n cp.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden');\n\n if (this.popoverTarget) {\n this.popoverTarget.popover('show');\n } else {\n this.fireShow();\n }\n }\n }, {\n key: 'fireShow',\n value: function fireShow() {\n this.hidding = false;\n this.showing = false;\n\n if (this.isPopover) {\n // Add event to hide on outside click\n (0, _jquery2.default)(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.hide, this));\n (0, _jquery2.default)(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.onClickingInside, this));\n }\n\n /**\n * (Colorpicker) When show() is called and the widget can be shown.\n *\n * @event Colorpicker#colorpickerShow\n */\n this.colorpicker.trigger('colorpickerShow');\n }\n\n /**\n * Hides the colorpicker widget.\n * Hide is prevented when it is triggered by an event whose target element has been clicked/touched.\n *\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n\n }, {\n key: 'hide',\n value: function hide(e) {\n if (this.isHidden() || this.showing || this.hidding) {\n return;\n }\n\n var cp = this.colorpicker,\n clicking = this.clicking || this.isClickingInside(e);\n\n this.hidding = true;\n this.showing = false;\n this.clicking = false;\n\n cp.lastEvent.alias = 'hide';\n cp.lastEvent.e = e;\n\n // TODO: fix having to click twice outside when losing focus and last 2 clicks where inside the colorpicker\n\n // Prevent hide if triggered by an event and an element inside the colorpicker has been clicked/touched\n if (clicking) {\n this.hidding = false;\n return;\n }\n\n if (this.popoverTarget) {\n this.popoverTarget.popover('hide');\n } else {\n this.fireHide();\n }\n }\n }, {\n key: 'fireHide',\n value: function fireHide() {\n this.hidding = false;\n this.showing = false;\n\n var cp = this.colorpicker;\n\n // add hidden class after popover is hidden\n cp.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible');\n\n // Unbind window and document events, since there is no need to keep them while the popup is hidden\n (0, _jquery2.default)(this.root).off('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));\n (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.hide, this));\n (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.onClickingInside, this));\n\n /**\n * (Colorpicker) When hide() is called and the widget can be hidden.\n *\n * @event Colorpicker#colorpickerHide\n */\n cp.trigger('colorpickerHide');\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.hasAddon) {\n return this.addon.focus();\n }\n if (this.hasInput) {\n return this.input.focus();\n }\n return false;\n }\n\n /**\n * Returns true if the colorpicker element has the colorpicker-visible class and not the colorpicker-hidden one.\n * False otherwise.\n *\n * @returns {boolean}\n */\n\n }, {\n key: 'isVisible',\n value: function isVisible() {\n return this.colorpicker.picker.hasClass('colorpicker-visible') && !this.colorpicker.picker.hasClass('colorpicker-hidden');\n }\n\n /**\n * Returns true if the colorpicker element has the colorpicker-hidden class and not the colorpicker-visible one.\n * False otherwise.\n *\n * @returns {boolean}\n */\n\n }, {\n key: 'isHidden',\n value: function isHidden() {\n return this.colorpicker.picker.hasClass('colorpicker-hidden') && !this.colorpicker.picker.hasClass('colorpicker-visible');\n }\n }, {\n key: 'input',\n get: function get() {\n return this.colorpicker.inputHandler.input;\n }\n\n /**\n * @private\n * @returns {boolean}\n */\n\n }, {\n key: 'hasInput',\n get: function get() {\n return this.colorpicker.inputHandler.hasInput();\n }\n\n /**\n * @private\n * @returns {jQuery|false}\n */\n\n }, {\n key: 'addon',\n get: function get() {\n return this.colorpicker.addonHandler.addon;\n }\n\n /**\n * @private\n * @returns {boolean}\n */\n\n }, {\n key: 'hasAddon',\n get: function get() {\n return this.colorpicker.addonHandler.hasAddon();\n }\n\n /**\n * @private\n * @returns {boolean}\n */\n\n }, {\n key: 'isPopover',\n get: function get() {\n return !this.colorpicker.options.inline && !!this.popoverTip;\n }\n }]);\n\n return PopupHandler;\n}();\n\nexports.default = PopupHandler;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _ColorItem = __webpack_require__(2);\n\nvar _ColorItem2 = _interopRequireDefault(_ColorItem);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Handles everything related to the colorpicker input\n * @ignore\n */\nvar InputHandler = function () {\n /**\n * @param {Colorpicker} colorpicker\n */\n function InputHandler(colorpicker) {\n _classCallCheck(this, InputHandler);\n\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery|false}\n */\n this.input = this.colorpicker.element.is('input') ? this.colorpicker.element : this.colorpicker.options.input ? this.colorpicker.element.find(this.colorpicker.options.input) : false;\n\n if (this.input && this.input.length === 0) {\n this.input = false;\n }\n\n this._initValue();\n }\n\n _createClass(InputHandler, [{\n key: 'bind',\n value: function bind() {\n if (!this.hasInput()) {\n return;\n }\n this.input.on({\n 'keyup.colorpicker': _jquery2.default.proxy(this.onkeyup, this)\n });\n this.input.on({\n 'change.colorpicker': _jquery2.default.proxy(this.onchange, this)\n });\n }\n }, {\n key: 'unbind',\n value: function unbind() {\n if (!this.hasInput()) {\n return;\n }\n this.input.off('.colorpicker');\n }\n }, {\n key: '_initValue',\n value: function _initValue() {\n if (!this.hasInput()) {\n return;\n }\n\n var val = '';\n\n [\n // candidates:\n this.input.val(), this.input.data('color'), this.input.attr('data-color')].map(function (item) {\n if (item && val === '') {\n val = item;\n }\n });\n\n if (val instanceof _ColorItem2.default) {\n val = this.getFormattedColor(val.string(this.colorpicker.format));\n } else if (!(typeof val === 'string' || val instanceof String)) {\n val = '';\n }\n\n this.input.prop('value', val);\n }\n\n /**\n * Returns the color string from the input value.\n * If there is no input the return value is false.\n *\n * @returns {String|boolean}\n */\n\n }, {\n key: 'getValue',\n value: function getValue() {\n if (!this.hasInput()) {\n return false;\n }\n\n return this.input.val();\n }\n\n /**\n * If the input element is present, it updates the value with the current color object color string.\n * If the value is changed, this method fires a \"change\" event on the input element.\n *\n * @param {String} val\n *\n * @fires Colorpicker#change\n */\n\n }, {\n key: 'setValue',\n value: function setValue(val) {\n if (!this.hasInput()) {\n return;\n }\n\n var inputVal = this.input.prop('value');\n\n val = val ? val : '';\n\n if (val === (inputVal ? inputVal : '')) {\n // No need to set value or trigger any event if nothing changed\n return;\n }\n\n this.input.prop('value', val);\n\n /**\n * (Input) Triggered on the input element when a new color is selected.\n *\n * @event Colorpicker#change\n */\n this.input.trigger({\n type: 'change',\n colorpicker: this.colorpicker,\n color: this.colorpicker.color,\n value: val\n });\n }\n\n /**\n * Returns the formatted color string, with the formatting options applied\n * (e.g. useHashPrefix)\n *\n * @param {String|null} val\n *\n * @returns {String}\n */\n\n }, {\n key: 'getFormattedColor',\n value: function getFormattedColor() {\n var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n val = val ? val : this.colorpicker.colorHandler.getColorString();\n\n if (!val) {\n return '';\n }\n\n val = this.colorpicker.colorHandler.resolveColorDelegate(val, false);\n\n if (this.colorpicker.options.useHashPrefix === false) {\n val = val.replace(/^#/g, '');\n }\n\n return val;\n }\n\n /**\n * Returns true if the widget has an associated input element, false otherwise\n * @returns {boolean}\n */\n\n }, {\n key: 'hasInput',\n value: function hasInput() {\n return this.input !== false;\n }\n\n /**\n * Returns true if the input exists and is disabled\n * @returns {boolean}\n */\n\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return this.hasInput() && !this.isDisabled();\n }\n\n /**\n * Returns true if the input exists and is disabled\n * @returns {boolean}\n */\n\n }, {\n key: 'isDisabled',\n value: function isDisabled() {\n return this.hasInput() && this.input.prop('disabled') === true;\n }\n\n /**\n * Disables the input if any\n *\n * @fires Colorpicker#colorpickerDisable\n * @returns {boolean}\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n if (this.hasInput()) {\n this.input.prop('disabled', true);\n }\n }\n\n /**\n * Enables the input if any\n *\n * @fires Colorpicker#colorpickerEnable\n * @returns {boolean}\n */\n\n }, {\n key: 'enable',\n value: function enable() {\n if (this.hasInput()) {\n this.input.prop('disabled', false);\n }\n }\n\n /**\n * Calls setValue with the current internal color value\n *\n * @fires Colorpicker#change\n */\n\n }, {\n key: 'update',\n value: function update() {\n if (!this.hasInput()) {\n return;\n }\n\n if (this.colorpicker.options.autoInputFallback === false && this.colorpicker.colorHandler.isInvalidColor()) {\n // prevent update if color is invalid, autoInputFallback is disabled and the last event is keyup.\n return;\n }\n\n this.setValue(this.getFormattedColor());\n }\n\n /**\n * Function triggered when the input has changed, so the colorpicker gets updated.\n *\n * @private\n * @param {Event} e\n * @returns {boolean}\n */\n\n }, {\n key: 'onchange',\n value: function onchange(e) {\n this.colorpicker.lastEvent.alias = 'input.change';\n this.colorpicker.lastEvent.e = e;\n\n var val = this.getValue();\n\n if (val !== e.value) {\n this.colorpicker.setValue(val);\n }\n }\n\n /**\n * Function triggered after a keyboard key has been released.\n *\n * @private\n * @param {Event} e\n * @returns {boolean}\n */\n\n }, {\n key: 'onkeyup',\n value: function onkeyup(e) {\n this.colorpicker.lastEvent.alias = 'input.keyup';\n this.colorpicker.lastEvent.e = e;\n\n var val = this.getValue();\n\n if (val !== e.value) {\n this.colorpicker.setValue(val);\n }\n }\n }]);\n\n return InputHandler;\n}();\n\nexports.default = InputHandler;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar colorString = __webpack_require__(17);\nvar convert = __webpack_require__(20);\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (typeof obj === 'undefined') {\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* MIT license */\nvar colorNames = __webpack_require__(5);\nvar swizzle = __webpack_require__(18);\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d*\\.)?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = (parseFloat(match[1]) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d*[\\.]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isArrayish = __webpack_require__(19);\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function isArrayish(obj) {\n\tif (!obj) {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && obj.splice instanceof Function);\n};\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar conversions = __webpack_require__(6);\nvar route = __webpack_require__(21);\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar conversions = __webpack_require__(6);\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _ColorItem = __webpack_require__(2);\n\nvar _ColorItem2 = _interopRequireDefault(_ColorItem);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Handles everything related to the colorpicker color\n * @ignore\n */\nvar ColorHandler = function () {\n /**\n * @param {Colorpicker} colorpicker\n */\n function ColorHandler(colorpicker) {\n _classCallCheck(this, ColorHandler);\n\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n }\n\n /**\n * @returns {*|String|ColorItem}\n */\n\n\n _createClass(ColorHandler, [{\n key: 'bind',\n value: function bind() {\n // if the color option is set\n if (this.colorpicker.options.color) {\n this.color = this.createColor(this.colorpicker.options.color);\n return;\n }\n\n // if element[color] is empty and the input has a value\n if (!this.color && !!this.colorpicker.inputHandler.getValue()) {\n this.color = this.createColor(this.colorpicker.inputHandler.getValue(), this.colorpicker.options.autoInputFallback);\n }\n }\n }, {\n key: 'unbind',\n value: function unbind() {\n this.colorpicker.element.removeData('color');\n }\n\n /**\n * Returns the color string from the input value or the 'data-color' attribute of the input or element.\n * If empty, it returns the defaultValue parameter.\n *\n * @returns {String|*}\n */\n\n }, {\n key: 'getColorString',\n value: function getColorString() {\n if (!this.hasColor()) {\n return '';\n }\n\n return this.color.string(this.format);\n }\n\n /**\n * Sets the color value\n *\n * @param {String|ColorItem} val\n */\n\n }, {\n key: 'setColorString',\n value: function setColorString(val) {\n var color = val ? this.createColor(val) : null;\n\n this.color = color ? color : null;\n }\n\n /**\n * Creates a new color using the widget instance options (fallbackColor, format).\n *\n * @fires Colorpicker#colorpickerInvalid\n * @param {*} val\n * @param {boolean} fallbackOnInvalid\n * @returns {ColorItem}\n */\n\n }, {\n key: 'createColor',\n value: function createColor(val) {\n var fallbackOnInvalid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var color = new _ColorItem2.default(this.resolveColorDelegate(val), this.format);\n\n if (!color.isValid()) {\n if (fallbackOnInvalid) {\n color = this.getFallbackColor();\n }\n\n /**\n * (Colorpicker) Fired when the color is invalid and the fallback color is going to be used.\n *\n * @event Colorpicker#colorpickerInvalid\n */\n this.colorpicker.trigger('colorpickerInvalid', color, val);\n }\n\n if (!this.isAlphaEnabled()) {\n // Alpha is disabled\n color.alpha = 1;\n }\n\n return color;\n }\n }, {\n key: 'getFallbackColor',\n value: function getFallbackColor() {\n if (this.fallback && this.fallback === this.color) {\n return this.color;\n }\n\n var fallback = this.resolveColorDelegate(this.fallback);\n var color = new _ColorItem2.default(fallback, this.format);\n\n if (!color.isValid()) {\n console.warn('The fallback color is invalid. Falling back to the previous color or black if any.');\n return this.color ? this.color : new _ColorItem2.default('#000000', this.format);\n }\n\n return color;\n }\n\n /**\n * @returns {ColorItem}\n */\n\n }, {\n key: 'assureColor',\n value: function assureColor() {\n if (!this.hasColor()) {\n this.color = this.getFallbackColor();\n }\n\n return this.color;\n }\n\n /**\n * Delegates the color resolution to the colorpicker extensions.\n *\n * @param {String|*} color\n * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n * @returns {ColorItem|String|*|null}\n */\n\n }, {\n key: 'resolveColorDelegate',\n value: function resolveColorDelegate(color) {\n var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var extResolvedColor = false;\n\n _jquery2.default.each(this.colorpicker.extensions, function (name, ext) {\n if (extResolvedColor !== false) {\n // skip if resolved\n return;\n }\n extResolvedColor = ext.resolveColor(color, realColor);\n });\n\n return extResolvedColor ? extResolvedColor : color;\n }\n\n /**\n * Checks if there is a color object, that it is valid and it is not a fallback\n * @returns {boolean}\n */\n\n }, {\n key: 'isInvalidColor',\n value: function isInvalidColor() {\n return !this.hasColor() || !this.color.isValid();\n }\n\n /**\n * Returns true if the useAlpha option is exactly true, false otherwise\n * @returns {boolean}\n */\n\n }, {\n key: 'isAlphaEnabled',\n value: function isAlphaEnabled() {\n return this.colorpicker.options.useAlpha !== false;\n }\n\n /**\n * Returns true if the current color object is an instance of Color, false otherwise.\n * @returns {boolean}\n */\n\n }, {\n key: 'hasColor',\n value: function hasColor() {\n return this.color instanceof _ColorItem2.default;\n }\n }, {\n key: 'fallback',\n get: function get() {\n return this.colorpicker.options.fallbackColor ? this.colorpicker.options.fallbackColor : this.hasColor() ? this.color : null;\n }\n\n /**\n * @returns {String|null}\n */\n\n }, {\n key: 'format',\n get: function get() {\n if (this.colorpicker.options.format) {\n return this.colorpicker.options.format;\n }\n\n if (this.hasColor() && this.color.hasTransparency() && this.color.format.match(/^hex/)) {\n return this.isAlphaEnabled() ? 'rgba' : 'hex';\n }\n\n if (this.hasColor()) {\n return this.color.format;\n }\n\n return 'rgb';\n }\n\n /**\n * Internal color getter\n *\n * @type {ColorItem|null}\n */\n\n }, {\n key: 'color',\n get: function get() {\n return this.colorpicker.element.data('color');\n }\n\n /**\n * Internal color setter\n *\n * @ignore\n * @param {ColorItem|null} value\n */\n ,\n set: function set(value) {\n this.colorpicker.element.data('color', value);\n\n if (value instanceof _ColorItem2.default && this.colorpicker.options.format === 'auto') {\n // If format is 'auto', use the first parsed one from now on\n this.colorpicker.options.format = this.color.format;\n }\n }\n }]);\n\n return ColorHandler;\n}();\n\nexports.default = ColorHandler;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Handles everything related to the colorpicker UI\n * @ignore\n */\nvar PickerHandler = function () {\n /**\n * @param {Colorpicker} colorpicker\n */\n function PickerHandler(colorpicker) {\n _classCallCheck(this, PickerHandler);\n\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery}\n */\n this.picker = null;\n }\n\n _createClass(PickerHandler, [{\n key: 'bind',\n value: function bind() {\n /**\n * @type {jQuery|HTMLElement}\n */\n var picker = this.picker = (0, _jquery2.default)(this.options.template);\n\n if (this.options.customClass) {\n picker.addClass(this.options.customClass);\n }\n\n if (this.options.horizontal) {\n picker.addClass('colorpicker-horizontal');\n }\n\n if (this._supportsAlphaBar()) {\n this.options.useAlpha = true;\n picker.addClass('colorpicker-with-alpha');\n } else {\n this.options.useAlpha = false;\n }\n }\n }, {\n key: 'attach',\n value: function attach() {\n // Inject the colorpicker element into the DOM\n var pickerParent = this.colorpicker.container ? this.colorpicker.container : null;\n\n if (pickerParent) {\n this.picker.appendTo(pickerParent);\n }\n }\n }, {\n key: 'unbind',\n value: function unbind() {\n this.picker.remove();\n }\n }, {\n key: '_supportsAlphaBar',\n value: function _supportsAlphaBar() {\n return (this.options.useAlpha || this.colorpicker.colorHandler.hasColor() && this.color.hasTransparency()) && this.options.useAlpha !== false && (!this.options.format || this.options.format && !this.options.format.match(/^hex([36])?$/i));\n }\n\n /**\n * Changes the color adjustment bars using the current color object information.\n */\n\n }, {\n key: 'update',\n value: function update() {\n if (!this.colorpicker.colorHandler.hasColor()) {\n return;\n }\n\n var vertical = this.options.horizontal !== true,\n slider = vertical ? this.options.sliders : this.options.slidersHorz;\n\n var saturationGuide = this.picker.find('.colorpicker-saturation .colorpicker-guide'),\n hueGuide = this.picker.find('.colorpicker-hue .colorpicker-guide'),\n alphaGuide = this.picker.find('.colorpicker-alpha .colorpicker-guide');\n\n var hsva = this.color.toHsvaRatio();\n\n // Set guides position\n if (hueGuide.length) {\n hueGuide.css(vertical ? 'top' : 'left', (vertical ? slider.hue.maxTop : slider.hue.maxLeft) * (1 - hsva.h));\n }\n if (alphaGuide.length) {\n alphaGuide.css(vertical ? 'top' : 'left', (vertical ? slider.alpha.maxTop : slider.alpha.maxLeft) * (1 - hsva.a));\n }\n if (saturationGuide.length) {\n saturationGuide.css({\n 'top': slider.saturation.maxTop - hsva.v * slider.saturation.maxTop,\n 'left': hsva.s * slider.saturation.maxLeft\n });\n }\n\n // Set saturation hue background\n this.picker.find('.colorpicker-saturation').css('backgroundColor', this.color.getCloneHueOnly().toHexString()); // we only need hue\n\n // Set alpha color gradient\n var hexColor = this.color.toHexString();\n var alphaBg = '';\n\n if (this.options.horizontal) {\n alphaBg = 'linear-gradient(to right, ' + hexColor + ' 0%, transparent 100%)';\n } else {\n alphaBg = 'linear-gradient(to bottom, ' + hexColor + ' 0%, transparent 100%)';\n }\n\n this.picker.find('.colorpicker-alpha-color').css('background', alphaBg);\n }\n }, {\n key: 'options',\n get: function get() {\n return this.colorpicker.options;\n }\n }, {\n key: 'color',\n get: function get() {\n return this.colorpicker.colorHandler.color;\n }\n }]);\n\n return PickerHandler;\n}();\n\nexports.default = PickerHandler;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Handles everything related to the colorpicker addon\n * @ignore\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar AddonHandler = function () {\n /**\n * @param {Colorpicker} colorpicker\n */\n function AddonHandler(colorpicker) {\n _classCallCheck(this, AddonHandler);\n\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery}\n */\n this.addon = null;\n }\n\n _createClass(AddonHandler, [{\n key: 'hasAddon',\n value: function hasAddon() {\n return !!this.addon;\n }\n }, {\n key: 'bind',\n value: function bind() {\n /**\n * @type {*|jQuery}\n */\n this.addon = this.colorpicker.options.addon ? this.colorpicker.element.find(this.colorpicker.options.addon) : null;\n\n if (this.addon && this.addon.length === 0) {\n // not found\n this.addon = null;\n }\n }\n }, {\n key: 'unbind',\n value: function unbind() {\n if (this.hasAddon()) {\n this.addon.off('.colorpicker');\n }\n }\n\n /**\n * If the addon element is present, its background color is updated\n */\n\n }, {\n key: 'update',\n value: function update() {\n if (!this.colorpicker.colorHandler.hasColor() || !this.hasAddon()) {\n return;\n }\n\n var colorStr = this.colorpicker.colorHandler.getColorString();\n var styles = { 'background': colorStr };\n\n var icn = this.addon.find('i').eq(0);\n\n if (icn.length > 0) {\n icn.css(styles);\n } else {\n this.addon.css(styles);\n }\n }\n }]);\n\n return AddonHandler;\n}();\n\nexports.default = AddonHandler;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// bootstrap-colorpicker.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap e5fc9649974c93b0b79b","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}\n// module id = 0\n// module chunks = 0 1","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Colorpicker extension class.\n */\nclass Extension {\n /**\n * @param {Colorpicker} colorpicker\n * @param {Object} options\n */\n constructor(colorpicker, options = {}) {\n /**\n * The colorpicker instance\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * Extension options\n *\n * @type {Object}\n */\n this.options = options;\n\n if (!(this.colorpicker.element && this.colorpicker.element.length)) {\n throw new Error('Extension: this.colorpicker.element is not valid');\n }\n\n this.colorpicker.element.on('colorpickerCreate.colorpicker-ext', $.proxy(this.onCreate, this));\n this.colorpicker.element.on('colorpickerDestroy.colorpicker-ext', $.proxy(this.onDestroy, this));\n this.colorpicker.element.on('colorpickerUpdate.colorpicker-ext', $.proxy(this.onUpdate, this));\n this.colorpicker.element.on('colorpickerChange.colorpicker-ext', $.proxy(this.onChange, this));\n this.colorpicker.element.on('colorpickerInvalid.colorpicker-ext', $.proxy(this.onInvalid, this));\n this.colorpicker.element.on('colorpickerShow.colorpicker-ext', $.proxy(this.onShow, this));\n this.colorpicker.element.on('colorpickerHide.colorpicker-ext', $.proxy(this.onHide, this));\n this.colorpicker.element.on('colorpickerEnable.colorpicker-ext', $.proxy(this.onEnable, this));\n this.colorpicker.element.on('colorpickerDisable.colorpicker-ext', $.proxy(this.onDisable, this));\n }\n\n /**\n * Function called every time a new color needs to be created.\n * Return false to skip this resolver and continue with other extensions' ones\n * or return anything else to consider the color resolved.\n *\n * @param {ColorItem|String|*} color\n * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n * @return {ColorItem|String|*}\n */\n resolveColor(color, realColor = true) {\n return false;\n }\n\n /**\n * Method called after the colorpicker is created\n *\n * @listens Colorpicker#colorpickerCreate\n * @param {Event} event\n */\n onCreate(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker is destroyed\n *\n * @listens Colorpicker#colorpickerDestroy\n * @param {Event} event\n */\n onDestroy(event) {\n this.colorpicker.element.off('.colorpicker-ext');\n }\n\n /**\n * Method called after the colorpicker is updated\n *\n * @listens Colorpicker#colorpickerUpdate\n * @param {Event} event\n */\n onUpdate(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker color is changed\n *\n * @listens Colorpicker#colorpickerChange\n * @param {Event} event\n */\n onChange(event) {\n // to be extended\n }\n\n /**\n * Method called when the colorpicker color is invalid\n *\n * @listens Colorpicker#colorpickerInvalid\n * @param {Event} event\n */\n onInvalid(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker is hidden\n *\n * @listens Colorpicker#colorpickerHide\n * @param {Event} event\n */\n onHide(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker is shown\n *\n * @listens Colorpicker#colorpickerShow\n * @param {Event} event\n */\n onShow(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker is disabled\n *\n * @listens Colorpicker#colorpickerDisable\n * @param {Event} event\n */\n onDisable(event) {\n // to be extended\n }\n\n /**\n * Method called after the colorpicker is enabled\n *\n * @listens Colorpicker#colorpickerEnable\n * @param {Event} event\n */\n onEnable(event) {\n // to be extended\n }\n}\n\nexport default Extension;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/Extension.js","/**\n * Color manipulation class, specific for Bootstrap Colorpicker\n */\nimport QixColor from 'color';\n\n/**\n * HSVA color data class, containing the hue, saturation, value and alpha\n * information.\n */\nclass HSVAColor {\n /**\n * @param {number|int} h\n * @param {number|int} s\n * @param {number|int} v\n * @param {number|int} a\n */\n constructor(h, s, v, a) {\n this.h = isNaN(h) ? 0 : h;\n this.s = isNaN(s) ? 0 : s;\n this.v = isNaN(v) ? 0 : v;\n this.a = isNaN(h) ? 1 : a;\n }\n\n toString() {\n return `${this.h}, ${this.s}%, ${this.v}%, ${this.a}`;\n }\n}\n\n/**\n * HSVA color manipulation\n */\nclass ColorItem {\n\n /**\n * Returns the HSVAColor class\n *\n * @static\n * @example let colorData = new ColorItem.HSVAColor(360, 100, 100, 1);\n * @returns {HSVAColor}\n */\n static get HSVAColor() {\n return HSVAColor;\n }\n\n /**\n * Applies a method of the QixColor API and returns a new Color object or\n * the return value of the method call.\n *\n * If no argument is provided, the internal QixColor object is returned.\n *\n * @param {String} fn QixColor function name\n * @param args QixColor function arguments\n * @example let darkerColor = color.api('darken', 0.25);\n * @example let luminosity = color.api('luminosity');\n * @example color = color.api('negate');\n * @example let qColor = color.api().negate();\n * @returns {ColorItem|QixColor|*}\n */\n api(fn, ...args) {\n if (arguments.length === 0) {\n return this._color;\n }\n\n let result = this._color[fn].apply(this._color, args);\n\n if (!(result instanceof QixColor)) {\n // return result of the method call\n return result;\n }\n\n return new ColorItem(result, this.format);\n }\n\n /**\n * Returns the original ColorItem constructor data,\n * plus a 'valid' flag to know if it's valid or not.\n *\n * @returns {{color: *, format: String, valid: boolean}}\n */\n get original() {\n return this._original;\n }\n\n /**\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n */\n constructor(color = null, format = null) {\n this.replace(color, format);\n }\n\n /**\n * Replaces the internal QixColor object with a new one.\n * This also replaces the internal original color data.\n *\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data to be parsed (if needed)\n * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n * @example color.replace('rgb(255,0,0)', 'hsl');\n * @example color.replace(hsvaColorData);\n */\n replace(color, format = null) {\n format = ColorItem.sanitizeFormat(format);\n\n /**\n * @type {{color: *, format: String}}\n * @private\n */\n this._original = {\n color: color,\n format: format,\n valid: true\n };\n /**\n * @type {QixColor}\n * @private\n */\n this._color = ColorItem.parse(color);\n\n if (this._color === null) {\n this._color = QixColor();\n this._original.valid = false;\n return;\n }\n\n /**\n * @type {*|string}\n * @private\n */\n this._format = format ? format :\n (ColorItem.isHex(color) ? 'hex' : this._color.model);\n }\n\n /**\n * Parses the color returning a Qix Color object or null if cannot be\n * parsed.\n *\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n * @example let qColor = ColorItem.parse('rgb(255,0,0)');\n * @static\n * @returns {QixColor|null}\n */\n static parse(color) {\n if (color instanceof QixColor) {\n return color;\n }\n\n if (color instanceof ColorItem) {\n return color._color;\n }\n\n let format = null;\n\n if (color instanceof HSVAColor) {\n color = [color.h, color.s, color.v, isNaN(color.a) ? 1 : color.a];\n } else {\n color = ColorItem.sanitizeString(color);\n }\n\n if (color === null) {\n return null;\n }\n\n if (Array.isArray(color)) {\n format = 'hsv';\n }\n\n try {\n return QixColor(color, format);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Sanitizes a color string, adding missing hash to hexadecimal colors\n * and converting 'transparent' to a color code.\n *\n * @param {String|*} str Color string\n * @example let colorStr = ColorItem.sanitizeString('ffaa00');\n * @static\n * @returns {String|*}\n */\n static sanitizeString(str) {\n if (!(typeof str === 'string' || str instanceof String)) {\n return str;\n }\n\n if (str.match(/^[0-9a-f]{2,}$/i)) {\n return `#${str}`;\n }\n\n if (str.toLowerCase() === 'transparent') {\n return '#FFFFFF00';\n }\n\n return str;\n }\n\n /**\n * Detects if a value is a string and a color in hexadecimal format (in any variant).\n *\n * @param {String} str\n * @example ColorItem.isHex('rgba(0,0,0)'); // false\n * @example ColorItem.isHex('ffaa00'); // true\n * @example ColorItem.isHex('#ffaa00'); // true\n * @static\n * @returns {boolean}\n */\n static isHex(str) {\n if (!(typeof str === 'string' || str instanceof String)) {\n return false;\n }\n\n return !!str.match(/^#?[0-9a-f]{2,}$/i);\n }\n\n /**\n * Sanitizes a color format to one supported by web browsers.\n * Returns an empty string of the format can't be recognised.\n *\n * @param {String|*} format\n * @example ColorItem.sanitizeFormat('rgba'); // 'rgb'\n * @example ColorItem.isHex('hex8'); // 'hex'\n * @example ColorItem.isHex('invalid'); // ''\n * @static\n * @returns {String} 'rgb', 'hsl', 'hex' or ''.\n */\n static sanitizeFormat(format) {\n switch (format) {\n case 'hex':\n case 'hex3':\n case 'hex4':\n case 'hex6':\n case 'hex8':\n return 'hex';\n case 'rgb':\n case 'rgba':\n case 'keyword':\n case 'name':\n return 'rgb';\n case 'hsl':\n case 'hsla':\n case 'hsv':\n case 'hsva':\n case 'hwb': // HWB this is supported by Qix Color, but not by browsers\n case 'hwba':\n return 'hsl';\n default :\n return '';\n }\n }\n\n /**\n * Returns true if the color is valid, false if not.\n *\n * @returns {boolean}\n */\n isValid() {\n return this._original.valid === true;\n }\n\n /**\n * Hue value from 0 to 360\n *\n * @returns {int}\n */\n get hue() {\n return this._color.hue();\n }\n\n /**\n * Saturation value from 0 to 100\n *\n * @returns {int}\n */\n get saturation() {\n return this._color.saturationv();\n }\n\n /**\n * Value channel value from 0 to 100\n *\n * @returns {int}\n */\n get value() {\n return this._color.value();\n }\n\n /**\n * Alpha value from 0.0 to 1.0\n *\n * @returns {number}\n */\n get alpha() {\n let a = this._color.alpha();\n\n return isNaN(a) ? 1 : a;\n }\n\n /**\n * Default color format to convert to when calling toString() or string()\n *\n * @returns {String} 'rgb', 'hsl', 'hex' or ''\n */\n get format() {\n return this._format ? this._format : this._color.model;\n }\n\n /**\n * Sets the hue value\n *\n * @param {int} value Integer from 0 to 360\n */\n set hue(value) {\n this._color = this._color.hue(value);\n }\n\n /**\n * Sets the hue ratio, where 1.0 is 0, 0.5 is 180 and 0.0 is 360.\n *\n * @ignore\n * @param {number} h Ratio from 1.0 to 0.0\n */\n setHueRatio(h) {\n this.hue = ((1 - h) * 360);\n }\n\n /**\n * Sets the saturation value\n *\n * @param {int} value Integer from 0 to 100\n */\n set saturation(value) {\n this._color = this._color.saturationv(value);\n }\n\n /**\n * Sets the saturation ratio, where 1.0 is 100 and 0.0 is 0.\n *\n * @ignore\n * @param {number} s Ratio from 0.0 to 1.0\n */\n setSaturationRatio(s) {\n this.saturation = (s * 100);\n }\n\n /**\n * Sets the 'value' channel value\n *\n * @param {int} value Integer from 0 to 100\n */\n set value(value) {\n this._color = this._color.value(value);\n }\n\n /**\n * Sets the value ratio, where 1.0 is 0 and 0.0 is 100.\n *\n * @ignore\n * @param {number} v Ratio from 1.0 to 0.0\n */\n setValueRatio(v) {\n this.value = ((1 - v) * 100);\n }\n\n /**\n * Sets the alpha value. It will be rounded to 2 decimals.\n *\n * @param {int} value Float from 0.0 to 1.0\n */\n set alpha(value) {\n // 2 decimals max\n this._color = this._color.alpha(Math.round(value * 100) / 100);\n }\n\n /**\n * Sets the alpha ratio, where 1.0 is 0.0 and 0.0 is 1.0.\n *\n * @ignore\n * @param {number} a Ratio from 1.0 to 0.0\n */\n setAlphaRatio(a) {\n this.alpha = 1 - a;\n }\n\n /**\n * Sets the default color format\n *\n * @param {String} value Supported: 'rgb', 'hsl', 'hex'\n */\n set format(value) {\n this._format = ColorItem.sanitizeFormat(value);\n }\n\n /**\n * Returns true if the saturation value is zero, false otherwise\n *\n * @returns {boolean}\n */\n isDesaturated() {\n return this.saturation === 0;\n }\n\n /**\n * Returns true if the alpha value is zero, false otherwise\n *\n * @returns {boolean}\n */\n isTransparent() {\n return this.alpha === 0;\n }\n\n /**\n * Returns true if the alpha value is numeric and less than 1, false otherwise\n *\n * @returns {boolean}\n */\n hasTransparency() {\n return this.hasAlpha() && (this.alpha < 1);\n }\n\n /**\n * Returns true if the alpha value is numeric, false otherwise\n *\n * @returns {boolean}\n */\n hasAlpha() {\n return !isNaN(this.alpha);\n }\n\n /**\n * Returns a new HSVAColor object, based on the current color\n *\n * @returns {HSVAColor}\n */\n toObject() {\n return new HSVAColor(this.hue, this.saturation, this.value, this.alpha);\n }\n\n /**\n * Alias of toObject()\n *\n * @returns {HSVAColor}\n */\n toHsva() {\n return this.toObject();\n }\n\n /**\n * Returns a new HSVAColor object with the ratio values (from 0.0 to 1.0),\n * based on the current color.\n *\n * @ignore\n * @returns {HSVAColor}\n */\n toHsvaRatio() {\n return new HSVAColor(\n this.hue / 360,\n this.saturation / 100,\n this.value / 100,\n this.alpha\n );\n }\n\n /**\n * Converts the current color to its string representation,\n * using the internal format of this instance.\n *\n * @returns {String}\n */\n toString() {\n return this.string();\n }\n\n /**\n * Converts the current color to its string representation,\n * using the given format.\n *\n * @param {String|null} format Format to convert to. If empty or null, the internal format will be used.\n * @returns {String}\n */\n string(format = null) {\n format = ColorItem.sanitizeFormat(format ? format : this.format);\n\n if (!format) {\n return this._color.round().string();\n }\n\n if (this._color[format] === undefined) {\n throw new Error(`Unsupported color format: '${format}'`);\n }\n\n let str = this._color[format]();\n\n return str.round ? str.round().string() : str;\n }\n\n /**\n * Returns true if the given color values equals this one, false otherwise.\n * The format is not compared.\n * If any of the colors is invalid, the result will be false.\n *\n * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n *\n * @returns {boolean}\n */\n equals(color) {\n color = (color instanceof ColorItem) ? color : new ColorItem(color);\n\n if (!color.isValid() || !this.isValid()) {\n return false;\n }\n\n return (\n this.hue === color.hue &&\n this.saturation === color.saturation &&\n this.value === color.value &&\n this.alpha === color.alpha\n );\n }\n\n /**\n * Creates a copy of this instance\n *\n * @returns {ColorItem}\n */\n getClone() {\n return new ColorItem(this._color, this.format);\n }\n\n /**\n * Creates a copy of this instance, only copying the hue value,\n * and setting the others to its max value.\n *\n * @returns {ColorItem}\n */\n getCloneHueOnly() {\n return new ColorItem([this.hue, 100, 100, 1], this.format);\n }\n\n /**\n * Creates a copy of this instance setting the alpha to the max.\n *\n * @returns {ColorItem}\n */\n getCloneOpaque() {\n return new ColorItem(this._color.alpha(1), this.format);\n }\n\n /**\n * Converts the color to a RGB string\n *\n * @returns {String}\n */\n toRgbString() {\n return this.string('rgb');\n }\n\n /**\n * Converts the color to a Hexadecimal string\n *\n * @returns {String}\n */\n toHexString() {\n return this.string('hex');\n }\n\n /**\n * Converts the color to a HSL string\n *\n * @returns {String}\n */\n toHslString() {\n return this.string('hsl');\n }\n\n /**\n * Returns true if the color is dark, false otherwhise.\n * This is useful to decide a text color.\n *\n * @returns {boolean}\n */\n isDark() {\n return this._color.isDark();\n }\n\n /**\n * Returns true if the color is light, false otherwhise.\n * This is useful to decide a text color.\n *\n * @returns {boolean}\n */\n isLight() {\n return this._color.isLight();\n }\n\n /**\n * Generates a list of colors using the given hue-based formula or the given array of hue values.\n * Hue formulas can be extended using ColorItem.colorFormulas static property.\n *\n * @param {String|Number[]} formula Examples: 'complementary', 'triad', 'tetrad', 'splitcomplement', [180, 270]\n * @example let colors = color.generate('triad');\n * @example let colors = color.generate([45, 80, 112, 200]);\n * @returns {ColorItem[]}\n */\n generate(formula) {\n let hues = [];\n\n if (Array.isArray(formula)) {\n hues = formula;\n } else if (!ColorItem.colorFormulas.hasOwnProperty(formula)) {\n throw new Error(`No color formula found with the name '${formula}'.`);\n } else {\n hues = ColorItem.colorFormulas[formula];\n }\n\n let colors = [], mainColor = this._color, format = this.format;\n\n hues.forEach(function (hue) {\n let levels = [\n hue ? ((mainColor.hue() + hue) % 360) : mainColor.hue(),\n mainColor.saturationv(),\n mainColor.value(),\n mainColor.alpha()\n ];\n\n colors.push(new ColorItem(levels, format));\n });\n\n return colors;\n }\n}\n\n/**\n * List of hue-based color formulas used by ColorItem.prototype.generate()\n *\n * @static\n * @type {{complementary: number[], triad: number[], tetrad: number[], splitcomplement: number[]}}\n */\nColorItem.colorFormulas = {\n complementary: [180],\n triad: [0, 120, 240],\n tetrad: [0, 90, 180, 270],\n splitcomplement: [0, 72, 216]\n};\n\nexport default ColorItem;\n\nexport {\n HSVAColor,\n ColorItem\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/ColorItem.js","'use strict';\n/**\n * @module\n */\n\n// adjust these values accordingly to the sass vars\nlet sassVars = {\n 'bar_size_short': 16,\n 'base_margin': 6,\n 'columns': 6\n};\n\nlet sliderSize = (sassVars.bar_size_short * sassVars.columns) + (sassVars.base_margin * (sassVars.columns - 1));\n\n/**\n * Colorpicker default options\n */\nexport default {\n /**\n * Custom class to be added to the `.colorpicker-element` element\n *\n * @type {String|null}\n * @default null\n */\n customClass: null,\n /**\n * Sets a initial color, ignoring the one from the element/input value or the data-color attribute.\n *\n * @type {(String|ColorItem|boolean)}\n * @default false\n */\n color: false,\n /**\n * Fallback color to use when the given color is invalid.\n * If false, the latest valid color will be used as a fallback.\n *\n * @type {String|ColorItem|boolean}\n * @default false\n */\n fallbackColor: false,\n /**\n * Forces an specific color format. If 'auto', it will be automatically detected the first time only,\n * but if null it will be always recalculated.\n *\n * Note that the ending 'a' of the format meaning \"alpha\" has currently no effect, meaning that rgb is the same as\n * rgba excepting if the alpha channel is disabled (see useAlpha).\n *\n * @type {('rgb'|'hex'|'hsl'|'auto'|null)}\n * @default 'auto'\n */\n format: 'auto',\n /**\n * Horizontal mode layout.\n *\n * If true, the hue and alpha channel bars will be rendered horizontally, above the saturation selector.\n *\n * @type {boolean}\n * @default false\n */\n horizontal: false,\n /**\n * Forces to show the colorpicker as an inline element.\n *\n * Note that if there is no container specified, the inline element\n * will be added to the body, so you may want to set the container option.\n *\n * @type {boolean}\n * @default false\n */\n inline: false,\n /**\n * Container where the colorpicker is appended to in the DOM.\n *\n * If is a string (CSS selector), the colorpicker will be placed inside this container.\n * If true, the `.colorpicker-element` element itself will be used as the container.\n * If false, the document body is used as the container, unless it is a popover (in this case it is appended to the\n * popover body instead).\n *\n * @type {String|boolean}\n * @default false\n */\n container: false,\n /**\n * Bootstrap Popover options.\n * The trigger, content and html options are always ignored.\n *\n * @type {boolean}\n * @default Object\n */\n popover: {\n animation: true,\n placement: 'bottom',\n fallbackPlacement: 'flip'\n },\n /**\n * If true, loads the 'debugger' extension automatically, which logs the events in the console\n * @type {boolean}\n * @default false\n */\n debug: false,\n /**\n * Child CSS selector for the colorpicker input.\n *\n * @type {String}\n * @default 'input'\n */\n input: 'input',\n /**\n * Child CSS selector for the colorpicker addon.\n * If it exists, the child <i> element background will be changed on color change.\n *\n * @type {String}\n * @default '.colorpicker-trigger, .colorpicker-input-addon'\n */\n addon: '.colorpicker-input-addon',\n /**\n * If true, the input content will be replaced always with a valid color,\n * if false, the invalid color will be left in the input,\n * while the internal color object will still resolve into a valid one.\n *\n * @type {boolean}\n * @default true\n */\n autoInputFallback: true,\n /**\n * If true a hash will be prepended to hexadecimal colors.\n * If false, the hash will be removed.\n * This only affects the input values in hexadecimal format.\n *\n * @type {boolean}\n * @default true\n */\n useHashPrefix: true,\n /**\n * If true, the alpha channel bar will be displayed no matter what.\n *\n * If false, it will be always hidden and alpha channel will be disabled also programmatically, meaning that\n * the selected or typed color will be always opaque.\n *\n * If null, the alpha channel will be automatically disabled/enabled depending if the initial color format supports\n * alpha or not.\n *\n * @type {boolean}\n * @default true\n */\n useAlpha: true,\n /**\n * Colorpicker widget template\n * @type {String}\n * @example\n * <!-- This is the default template: -->\n * <div class=\"colorpicker\">\n * <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\n * <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n * <div class=\"colorpicker-alpha\">\n * <div class=\"colorpicker-alpha-color\"></div>\n * <i class=\"colorpicker-guide\"></i>\n * </div>\n * </div>\n */\n template: `<div class=\"colorpicker\">\n <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\n <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n <div class=\"colorpicker-alpha\">\n <div class=\"colorpicker-alpha-color\"></div>\n <i class=\"colorpicker-guide\"></i>\n </div>\n </div>`,\n /**\n *\n * Associative object with the extension class name and its config.\n * Colorpicker comes with many bundled extensions: debugger, palette, preview and swatches (a superset of palette).\n *\n * @type {Object[]}\n * @example\n * extensions: [\n * {\n * name: 'swatches'\n * options: {\n * colors: {\n * 'primary': '#337ab7',\n * 'success': '#5cb85c',\n * 'info': '#5bc0de',\n * 'warning': '#f0ad4e',\n * 'danger': '#d9534f'\n * },\n * namesAsValues: true\n * }\n * }\n * ]\n */\n extensions: [\n {\n name: 'preview',\n options: {\n showText: true\n }\n }\n ],\n /**\n * Vertical sliders configuration\n * @type {Object}\n */\n sliders: {\n saturation: {\n selector: '.colorpicker-saturation',\n maxLeft: sliderSize,\n maxTop: sliderSize,\n callLeft: 'setSaturationRatio',\n callTop: 'setValueRatio'\n },\n hue: {\n selector: '.colorpicker-hue',\n maxLeft: 0,\n maxTop: sliderSize,\n callLeft: false,\n callTop: 'setHueRatio'\n },\n alpha: {\n selector: '.colorpicker-alpha',\n childSelector: '.colorpicker-alpha-color',\n maxLeft: 0,\n maxTop: sliderSize,\n callLeft: false,\n callTop: 'setAlphaRatio'\n }\n },\n /**\n * Horizontal sliders configuration\n * @type {Object}\n */\n slidersHorz: {\n saturation: {\n selector: '.colorpicker-saturation',\n maxLeft: sliderSize,\n maxTop: sliderSize,\n callLeft: 'setSaturationRatio',\n callTop: 'setValueRatio'\n },\n hue: {\n selector: '.colorpicker-hue',\n maxLeft: sliderSize,\n maxTop: 0,\n callLeft: 'setHueRatio',\n callTop: false\n },\n alpha: {\n selector: '.colorpicker-alpha',\n childSelector: '.colorpicker-alpha-color',\n maxLeft: sliderSize,\n maxTop: 0,\n callLeft: 'setAlphaRatio',\n callTop: false\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/options.js","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\nlet defaults = {\n /**\n * Key-value pairs defining a color alias and its CSS color representation.\n *\n * They can also be just an array of values. In that case, no special names are used, only the real colors.\n *\n * @type {Object|Array}\n * @default null\n * @example\n * {\n * 'black': '#000000',\n * 'white': '#ffffff',\n * 'red': '#FF0000',\n * 'default': '#777777',\n * 'primary': '#337ab7',\n * 'success': '#5cb85c',\n * 'info': '#5bc0de',\n * 'warning': '#f0ad4e',\n * 'danger': '#d9534f'\n * }\n *\n * @example ['#f0ad4e', '#337ab7', '#5cb85c']\n */\n colors: null,\n /**\n * If true, when a color swatch is selected the name (alias) will be used as input value,\n * otherwise the swatch real color value will be used.\n *\n * @type {boolean}\n * @default true\n */\n namesAsValues: true\n};\n\n/**\n * Palette extension\n * @ignore\n */\nclass Palette extends Extension {\n\n /**\n * @returns {Object|Array}\n */\n get colors() {\n return this.options.colors;\n }\n\n constructor(colorpicker, options = {}) {\n super(colorpicker, $.extend(true, {}, defaults, options));\n\n if ((!Array.isArray(this.options.colors)) && (typeof this.options.colors !== 'object')) {\n this.options.colors = null;\n }\n }\n\n /**\n * @returns {int}\n */\n getLength() {\n if (!this.options.colors) {\n return 0;\n }\n\n if (Array.isArray(this.options.colors)) {\n return this.options.colors.length;\n }\n\n if (typeof this.options.colors === 'object') {\n return Object.keys(this.options.colors).length;\n }\n\n return 0;\n }\n\n resolveColor(color, realColor = true) {\n if (this.getLength() <= 0) {\n return false;\n }\n\n // Array of colors\n if (Array.isArray(this.options.colors)) {\n if (this.options.colors.indexOf(color) >= 0) {\n return color;\n }\n if (this.options.colors.indexOf(color.toUpperCase()) >= 0) {\n return color.toUpperCase();\n }\n if (this.options.colors.indexOf(color.toLowerCase()) >= 0) {\n return color.toLowerCase();\n }\n return false;\n }\n\n if (typeof this.options.colors !== 'object') {\n return false;\n }\n\n // Map of objects\n if (!this.options.namesAsValues || realColor) {\n return this.getValue(color, false);\n }\n return this.getName(color, this.getName('#' + color));\n }\n\n /**\n * Given a color value, returns the corresponding color name or defaultValue.\n *\n * @param {String} value\n * @param {*} defaultValue\n * @returns {*}\n */\n getName(value, defaultValue = false) {\n if (!(typeof value === 'string') || !this.options.colors) {\n return defaultValue;\n }\n for (let name in this.options.colors) {\n if (!this.options.colors.hasOwnProperty(name)) {\n continue;\n }\n if (this.options.colors[name].toLowerCase() === value.toLowerCase()) {\n return name;\n }\n }\n return defaultValue;\n }\n\n /**\n * Given a color name, returns the corresponding color value or defaultValue.\n *\n * @param {String} name\n * @param {*} defaultValue\n * @returns {*}\n */\n getValue(name, defaultValue = false) {\n if (!(typeof name === 'string') || !this.options.colors) {\n return defaultValue;\n }\n if (this.options.colors.hasOwnProperty(name)) {\n return this.options.colors[name];\n }\n return defaultValue;\n }\n}\n\nexport default Palette;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Palette.js","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color-name/index.js\n// module id = 5\n// module chunks = 0 1","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color-convert/conversions.js\n// module id = 6\n// module chunks = 0 1","'use strict';\n\nimport Colorpicker from './Colorpicker';\nimport $ from 'jquery';\n\nlet plugin = 'colorpicker';\n\n$[plugin] = Colorpicker;\n\n// Colorpicker jQuery Plugin API\n$.fn[plugin] = function (option) {\n let fnArgs = Array.prototype.slice.call(arguments, 1),\n isSingleElement = (this.length === 1),\n returnValue = null;\n\n let $elements = this.each(function () {\n let $this = $(this),\n inst = $this.data(plugin),\n options = ((typeof option === 'object') ? option : {});\n\n // Create instance if does not exist\n if (!inst) {\n inst = new Colorpicker(this, options);\n $this.data(plugin, inst);\n }\n\n if (!isSingleElement) {\n return;\n }\n\n returnValue = $this;\n\n if (typeof option === 'string') {\n if (option === 'colorpicker') {\n // Return colorpicker instance: e.g. .colorpicker('colorpicker')\n returnValue = inst;\n } else if ($.isFunction(inst[option])) {\n // Return method call return value: e.g. .colorpicker('isEnabled')\n returnValue = inst[option].apply(inst, fnArgs);\n } else {\n // Return property value: e.g. .colorpicker('element')\n returnValue = inst[option];\n }\n }\n });\n\n return isSingleElement ? returnValue : $elements;\n};\n\n$.fn[plugin].constructor = Colorpicker;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/plugin.js","'use strict';\n\nimport Extension from './Extension';\nimport defaults from './options';\nimport coreExtensions from 'extensions';\nimport $ from 'jquery';\nimport SliderHandler from './SliderHandler';\nimport PopupHandler from './PopupHandler';\nimport InputHandler from './InputHandler';\nimport ColorHandler from './ColorHandler';\nimport PickerHandler from './PickerHandler';\nimport AddonHandler from './AddonHandler';\nimport ColorItem from './ColorItem';\n\nlet colorPickerIdCounter = 0;\nlet root = (typeof self !== 'undefined' ? self : this); // window\n\n/**\n * Colorpicker widget class\n */\nclass Colorpicker {\n /**\n * Color class\n *\n * @static\n * @type {Color}\n */\n static get Color() {\n return ColorItem;\n }\n\n /**\n * Extension class\n *\n * @static\n * @type {Extension}\n */\n static get Extension() {\n return Extension;\n }\n\n /**\n * Internal color object\n *\n * @type {Color|null}\n */\n get color() {\n return this.colorHandler.color;\n }\n\n /**\n * Internal color format\n *\n * @type {String|null}\n */\n get format() {\n return this.colorHandler.format;\n }\n\n /**\n * Getter of the picker element\n *\n * @returns {jQuery|HTMLElement}\n */\n get picker() {\n return this.pickerHandler.picker;\n }\n\n /**\n * @fires Colorpicker#colorpickerCreate\n * @param {Object|String} element\n * @param {Object} options\n * @constructor\n */\n constructor(element, options) {\n colorPickerIdCounter += 1;\n /**\n * The colorpicker instance number\n * @type {number}\n */\n this.id = colorPickerIdCounter;\n\n /**\n * Latest colorpicker event\n *\n * @type {{name: String, e: *}}\n */\n this.lastEvent = {\n alias: null,\n e: null\n };\n\n /**\n * The element that the colorpicker is bound to\n *\n * @type {*|jQuery}\n */\n this.element = $(element)\n .addClass('colorpicker-element')\n .attr('data-colorpicker-id', this.id);\n\n /**\n * @type {defaults}\n */\n this.options = $.extend(true, {}, defaults, options, this.element.data());\n\n /**\n * @type {boolean}\n * @private\n */\n this.disabled = false;\n\n /**\n * Extensions added to this instance\n *\n * @type {Extension[]}\n */\n this.extensions = [];\n\n /**\n * The element where the\n * @type {*|jQuery}\n */\n this.container = (\n this.options.container === true ||\n (this.options.container !== true && this.options.inline === true)\n ) ? this.element : this.options.container;\n\n this.container = (this.container !== false) ? $(this.container) : false;\n\n /**\n * @type {InputHandler}\n */\n this.inputHandler = new InputHandler(this);\n /**\n * @type {ColorHandler}\n */\n this.colorHandler = new ColorHandler(this);\n /**\n * @type {SliderHandler}\n */\n this.sliderHandler = new SliderHandler(this);\n /**\n * @type {PopupHandler}\n */\n this.popupHandler = new PopupHandler(this, root);\n /**\n * @type {PickerHandler}\n */\n this.pickerHandler = new PickerHandler(this);\n /**\n * @type {AddonHandler}\n */\n this.addonHandler = new AddonHandler(this);\n\n this.init();\n\n // Emit a create event\n $($.proxy(function () {\n /**\n * (Colorpicker) When the Colorpicker instance has been created and the DOM is ready.\n *\n * @event Colorpicker#colorpickerCreate\n */\n this.trigger('colorpickerCreate');\n }, this));\n }\n\n /**\n * Initializes the plugin\n * @private\n */\n init() {\n // Init addon\n this.addonHandler.bind();\n\n // Init input\n this.inputHandler.bind();\n\n // Init extensions (before initializing the color)\n this.initExtensions();\n\n // Init color\n this.colorHandler.bind();\n\n // Init picker\n this.pickerHandler.bind();\n\n // Init sliders and popup\n this.sliderHandler.bind();\n this.popupHandler.bind();\n\n // Inject into the DOM (this may make it visible)\n this.pickerHandler.attach();\n\n // Update all components\n this.update();\n\n if (this.inputHandler.isDisabled()) {\n this.disable();\n }\n }\n\n /**\n * Initializes the plugin extensions\n * @private\n */\n initExtensions() {\n if (!Array.isArray(this.options.extensions)) {\n this.options.extensions = [];\n }\n\n if (this.options.debug) {\n this.options.extensions.push({name: 'debugger'});\n }\n\n // Register and instantiate extensions\n this.options.extensions.forEach((ext) => {\n this.registerExtension(Colorpicker.extensions[ext.name.toLowerCase()], ext.options || {});\n });\n }\n\n /**\n * Creates and registers the given extension\n *\n * @param {Extension} ExtensionClass The extension class to instantiate\n * @param {Object} [config] Extension configuration\n * @returns {Extension}\n */\n registerExtension(ExtensionClass, config = {}) {\n let ext = new ExtensionClass(this, config);\n\n this.extensions.push(ext);\n return ext;\n }\n\n /**\n * Destroys the current instance\n *\n * @fires Colorpicker#colorpickerDestroy\n */\n destroy() {\n let color = this.color;\n\n this.sliderHandler.unbind();\n this.inputHandler.unbind();\n this.popupHandler.unbind();\n this.colorHandler.unbind();\n this.addonHandler.unbind();\n this.pickerHandler.unbind();\n\n this.element\n .removeClass('colorpicker-element')\n .removeData('colorpicker', 'color')\n .off('.colorpicker');\n\n /**\n * (Colorpicker) When the instance is destroyed with all events unbound.\n *\n * @event Colorpicker#colorpickerDestroy\n */\n this.trigger('colorpickerDestroy', color);\n }\n\n /**\n * Shows the colorpicker widget if hidden.\n * If the colorpicker is disabled this call will be ignored.\n *\n * @fires Colorpicker#colorpickerShow\n * @param {Event} [e]\n */\n show(e) {\n this.popupHandler.show(e);\n }\n\n /**\n * Hides the colorpicker widget.\n *\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n hide(e) {\n this.popupHandler.hide(e);\n }\n\n /**\n * Toggles the colorpicker between visible and hidden.\n *\n * @fires Colorpicker#colorpickerShow\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n toggle(e) {\n this.popupHandler.toggle(e);\n }\n\n /**\n * Returns the current color value as string\n *\n * @param {String|*} [defaultValue]\n * @returns {String|*}\n */\n getValue(defaultValue = null) {\n let val = this.colorHandler.color;\n\n val = (val instanceof ColorItem) ? val : defaultValue;\n\n if (val instanceof ColorItem) {\n return val.string(this.format);\n }\n\n return val;\n }\n\n /**\n * Sets the color manually\n *\n * @fires Colorpicker#colorpickerChange\n * @param {String|Color} val\n */\n setValue(val) {\n if (this.isDisabled()) {\n return;\n }\n let ch = this.colorHandler;\n\n if (\n (ch.hasColor() && !!val && ch.color.equals(val)) ||\n (!ch.hasColor() && !val)\n ) {\n // same color or still empty\n return;\n }\n\n ch.color = val ? ch.createColor(val, this.options.autoInputFallback) : null;\n\n /**\n * (Colorpicker) When the color is set programmatically with setValue().\n *\n * @event Colorpicker#colorpickerChange\n */\n this.trigger('colorpickerChange', ch.color, val);\n\n // force update if color has changed to empty\n this.update();\n }\n\n /**\n * Updates the UI and the input color according to the internal color.\n *\n * @fires Colorpicker#colorpickerUpdate\n */\n update() {\n if (this.colorHandler.hasColor()) {\n this.inputHandler.update();\n } else {\n this.colorHandler.assureColor();\n }\n\n this.addonHandler.update();\n this.pickerHandler.update();\n\n /**\n * (Colorpicker) Fired when the widget is updated.\n *\n * @event Colorpicker#colorpickerUpdate\n */\n this.trigger('colorpickerUpdate');\n }\n\n /**\n * Enables the widget and the input if any\n *\n * @fires Colorpicker#colorpickerEnable\n * @returns {boolean}\n */\n enable() {\n this.inputHandler.enable();\n this.disabled = false;\n this.picker.removeClass('colorpicker-disabled');\n\n /**\n * (Colorpicker) When the widget has been enabled.\n *\n * @event Colorpicker#colorpickerEnable\n */\n this.trigger('colorpickerEnable');\n return true;\n }\n\n /**\n * Disables the widget and the input if any\n *\n * @fires Colorpicker#colorpickerDisable\n * @returns {boolean}\n */\n disable() {\n this.inputHandler.disable();\n this.disabled = true;\n this.picker.addClass('colorpicker-disabled');\n\n /**\n * (Colorpicker) When the widget has been disabled.\n *\n * @event Colorpicker#colorpickerDisable\n */\n this.trigger('colorpickerDisable');\n return true;\n }\n\n /**\n * Returns true if this instance is enabled\n * @returns {boolean}\n */\n isEnabled() {\n return !this.isDisabled();\n }\n\n /**\n * Returns true if this instance is disabled\n * @returns {boolean}\n */\n isDisabled() {\n return this.disabled === true;\n }\n\n /**\n * Triggers a Colorpicker event.\n *\n * @param eventName\n * @param color\n * @param value\n */\n trigger(eventName, color = null, value = null) {\n this.element.trigger({\n type: eventName,\n colorpicker: this,\n color: color ? color : this.color,\n value: value ? value : this.getValue()\n });\n }\n}\n\n/**\n * Colorpicker extension classes, indexed by extension name\n *\n * @static\n * @type {Object} a map between the extension name and its class\n */\nColorpicker.extensions = coreExtensions;\n\nexport default Colorpicker;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/Colorpicker.js","import Debugger from './Debugger';\nimport Preview from './Preview';\nimport Swatches from './Swatches';\nimport Palette from './Palette';\n\nexport {\n Debugger, Preview, Swatches, Palette\n};\n\nexport default {\n 'debugger': Debugger,\n 'preview': Preview,\n 'swatches': Swatches,\n 'palette': Palette\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/index.js","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\n/**\n * Debugger extension class\n * @alias DebuggerExtension\n * @ignore\n */\nclass Debugger extends Extension {\n constructor(colorpicker, options = {}) {\n super(colorpicker, options);\n\n /**\n * @type {number}\n */\n this.eventCounter = 0;\n if (this.colorpicker.inputHandler.hasInput()) {\n this.colorpicker.inputHandler.input.on('change.colorpicker-ext', $.proxy(this.onChangeInput, this));\n }\n }\n\n /**\n * @fires DebuggerExtension#colorpickerDebug\n * @param {string} eventName\n * @param {*} args\n */\n log(eventName, ...args) {\n this.eventCounter += 1;\n\n let logMessage = `#${this.eventCounter}: Colorpicker#${this.colorpicker.id} [${eventName}]`;\n\n console.debug(logMessage, ...args);\n\n /**\n * Whenever the debugger logs an event, this other event is emitted.\n *\n * @event DebuggerExtension#colorpickerDebug\n * @type {object} The event object\n * @property {Colorpicker} colorpicker The Colorpicker instance\n * @property {ColorItem} color The color instance\n * @property {{debugger: DebuggerExtension, eventName: String, logArgs: Array, logMessage: String}} debug\n * The debug info\n */\n this.colorpicker.element.trigger({\n type: 'colorpickerDebug',\n colorpicker: this.colorpicker,\n color: this.color,\n value: null,\n debug: {\n debugger: this,\n eventName: eventName,\n logArgs: args,\n logMessage: logMessage\n }\n });\n }\n\n resolveColor(color, realColor = true) {\n this.log('resolveColor()', color, realColor);\n return false;\n }\n\n onCreate(event) {\n this.log('colorpickerCreate');\n return super.onCreate(event);\n }\n\n onDestroy(event) {\n this.log('colorpickerDestroy');\n this.eventCounter = 0;\n\n if (this.colorpicker.inputHandler.hasInput()) {\n this.colorpicker.inputHandler.input.off('.colorpicker-ext');\n }\n\n return super.onDestroy(event);\n }\n\n onUpdate(event) {\n this.log('colorpickerUpdate');\n }\n\n /**\n * @listens Colorpicker#change\n * @param {Event} event\n */\n onChangeInput(event) {\n this.log('input:change.colorpicker', event.value, event.color);\n }\n\n onChange(event) {\n this.log('colorpickerChange', event.value, event.color);\n }\n\n onInvalid(event) {\n this.log('colorpickerInvalid', event.value, event.color);\n }\n\n onHide(event) {\n this.log('colorpickerHide');\n this.eventCounter = 0;\n }\n\n onShow(event) {\n this.log('colorpickerShow');\n }\n\n onDisable(event) {\n this.log('colorpickerDisable');\n }\n\n onEnable(event) {\n this.log('colorpickerEnable');\n }\n}\n\nexport default Debugger;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Debugger.js","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\n/**\n * Color preview extension\n * @ignore\n */\nclass Preview extends Extension {\n constructor(colorpicker, options = {}) {\n super(colorpicker, $.extend(true, {},\n {\n template: '<div class=\"colorpicker-bar colorpicker-preview\"><div /></div>',\n showText: true,\n format: colorpicker.format\n },\n options\n ));\n\n this.element = $(this.options.template);\n this.elementInner = this.element.find('div');\n }\n\n onCreate(event) {\n super.onCreate(event);\n this.colorpicker.picker.append(this.element);\n }\n\n onUpdate(event) {\n super.onUpdate(event);\n\n if (!event.color) {\n this.elementInner\n .css('backgroundColor', null)\n .css('color', null)\n .html('');\n return;\n }\n\n this.elementInner\n .css('backgroundColor', event.color.toRgbString());\n\n if (this.options.showText) {\n this.elementInner\n .html(event.color.string(this.options.format || this.colorpicker.format));\n\n if (event.color.isDark() && (event.color.alpha > 0.5)) {\n this.elementInner.css('color', 'white');\n } else {\n this.elementInner.css('color', 'black');\n }\n }\n }\n}\n\nexport default Preview;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Preview.js","'use strict';\n\nimport Palette from './Palette';\nimport $ from 'jquery';\n\nlet defaults = {\n barTemplate: `<div class=\"colorpicker-bar colorpicker-swatches\">\n <div class=\"colorpicker-swatches--inner\"></div>\n </div>`,\n swatchTemplate: '<i class=\"colorpicker-swatch\"><i class=\"colorpicker-swatch--inner\"></i></i>'\n};\n\n/**\n * Color swatches extension\n * @ignore\n */\nclass Swatches extends Palette {\n constructor(colorpicker, options = {}) {\n super(colorpicker, $.extend(true, {}, defaults, options));\n this.element = null;\n }\n\n isEnabled() {\n return this.getLength() > 0;\n }\n\n onCreate(event) {\n super.onCreate(event);\n\n if (!this.isEnabled()) {\n return;\n }\n\n this.element = $(this.options.barTemplate);\n this.load();\n this.colorpicker.picker.append(this.element);\n }\n\n load() {\n let colorpicker = this.colorpicker,\n swatchContainer = this.element.find('.colorpicker-swatches--inner'),\n isAliased = (this.options.namesAsValues === true) && !Array.isArray(this.colors);\n\n swatchContainer.empty();\n\n $.each(this.colors, (name, value) => {\n let $swatch = $(this.options.swatchTemplate)\n .attr('data-name', name)\n .attr('data-value', value)\n .attr('title', isAliased ? `${name}: ${value}` : value)\n .on('mousedown.colorpicker touchstart.colorpicker',\n function (e) {\n let $sw = $(this);\n\n // e.preventDefault();\n\n colorpicker.setValue(isAliased ? $sw.attr('data-name') : $sw.attr('data-value'));\n }\n );\n\n $swatch.find('.colorpicker-swatch--inner')\n .css('background-color', value);\n\n swatchContainer.append($swatch);\n });\n\n swatchContainer.append($('<i class=\"colorpicker-clear\"></i>'));\n }\n}\n\nexport default Swatches;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/extensions/Swatches.js","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Class that handles all configured sliders on mouse or touch events.\n * @ignore\n */\nclass SliderHandler {\n /**\n * @param {Colorpicker} colorpicker\n */\n constructor(colorpicker) {\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {*|String}\n * @private\n */\n this.currentSlider = null;\n /**\n * @type {{left: number, top: number}}\n * @private\n */\n this.mousePointer = {\n left: 0,\n top: 0\n };\n\n /**\n * @type {Function}\n */\n this.onMove = $.proxy(this.defaultOnMove, this);\n }\n\n /**\n * This function is called every time a slider guide is moved\n * The scope of \"this\" is the SliderHandler object.\n *\n * @param {int} top\n * @param {int} left\n */\n defaultOnMove(top, left) {\n if (!this.currentSlider) {\n return;\n }\n\n let slider = this.currentSlider, cp = this.colorpicker, ch = cp.colorHandler;\n\n // Create a color object\n let color = !ch.hasColor() ? ch.getFallbackColor() : ch.color.getClone();\n\n // Adjust the guide position\n slider.guideStyle.left = left + 'px';\n slider.guideStyle.top = top + 'px';\n\n // Adjust the color\n if (slider.callLeft) {\n color[slider.callLeft](left / slider.maxLeft);\n }\n if (slider.callTop) {\n color[slider.callTop](top / slider.maxTop);\n }\n\n // Set the new color\n cp.setValue(color);\n cp.popupHandler.focus();\n }\n\n /**\n * Binds the colorpicker sliders to the mouse/touch events\n */\n bind() {\n let sliders = this.colorpicker.options.horizontal ? this.colorpicker\n .options.slidersHorz : this.colorpicker.options.sliders;\n let sliderClasses = [];\n\n for (let sliderName in sliders) {\n if (!sliders.hasOwnProperty(sliderName)) {\n continue;\n }\n\n sliderClasses.push(sliders[sliderName].selector);\n }\n\n this.colorpicker.picker.find(sliderClasses.join(', '))\n .on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.pressed, this));\n }\n\n /**\n * Unbinds any event bound by this handler\n */\n unbind() {\n $(this.colorpicker.picker).off({\n 'mousemove.colorpicker': $.proxy(this.moved, this),\n 'touchmove.colorpicker': $.proxy(this.moved, this),\n 'mouseup.colorpicker': $.proxy(this.released, this),\n 'touchend.colorpicker': $.proxy(this.released, this)\n });\n }\n\n /**\n * Function triggered when clicking in one of the color adjustment bars\n *\n * @private\n * @fires Colorpicker#mousemove\n * @param {Event} e\n */\n pressed(e) {\n if (this.colorpicker.isDisabled()) {\n return;\n }\n this.colorpicker.lastEvent.alias = 'pressed';\n this.colorpicker.lastEvent.e = e;\n\n if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n e.pageX = e.originalEvent.touches[0].pageX;\n e.pageY = e.originalEvent.touches[0].pageY;\n }\n // e.stopPropagation();\n // e.preventDefault();\n\n let target = $(e.target);\n\n // detect the slider and set the limits and callbacks\n let zone = target.closest('div');\n let sliders = this.colorpicker.options.horizontal ? this.colorpicker\n .options.slidersHorz : this.colorpicker.options.sliders;\n\n if (zone.is('.colorpicker')) {\n return;\n }\n\n this.currentSlider = null;\n\n for (let sliderName in sliders) {\n if (!sliders.hasOwnProperty(sliderName)) {\n continue;\n }\n\n let slider = sliders[sliderName];\n\n if (zone.is(slider.selector)) {\n this.currentSlider = $.extend({}, slider, {name: sliderName});\n break;\n } else if (slider.childSelector !== undefined && zone.is(slider.childSelector)) {\n this.currentSlider = $.extend({}, slider, {name: sliderName});\n zone = zone.parent(); // zone.parents(slider.selector).first() ?\n break;\n }\n }\n\n let guide = zone.find('.colorpicker-guide').get(0);\n\n if (this.currentSlider === null || guide === null) {\n return;\n }\n\n let offset = zone.offset();\n\n // reference to guide's style\n this.currentSlider.guideStyle = guide.style;\n this.currentSlider.left = e.pageX - offset.left;\n this.currentSlider.top = e.pageY - offset.top;\n this.mousePointer = {\n left: e.pageX,\n top: e.pageY\n };\n\n // TODO: fix moving outside the picker makes the guides to keep moving. The event needs to be bound to the window.\n /**\n * (window.document) Triggered on mousedown for the document object,\n * so the color adjustment guide is moved to the clicked position.\n *\n * @event Colorpicker#mousemove\n */\n $(this.colorpicker.picker).on({\n 'mousemove.colorpicker': $.proxy(this.moved, this),\n 'touchmove.colorpicker': $.proxy(this.moved, this),\n 'mouseup.colorpicker': $.proxy(this.released, this),\n 'touchend.colorpicker': $.proxy(this.released, this)\n }).trigger('mousemove');\n }\n\n /**\n * Function triggered when dragging a guide inside one of the color adjustment bars.\n *\n * @private\n * @param {Event} e\n */\n moved(e) {\n this.colorpicker.lastEvent.alias = 'moved';\n this.colorpicker.lastEvent.e = e;\n\n if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n e.pageX = e.originalEvent.touches[0].pageX;\n e.pageY = e.originalEvent.touches[0].pageY;\n }\n\n // e.stopPropagation();\n e.preventDefault(); // prevents scrolling on mobile\n\n let left = Math.max(\n 0,\n Math.min(\n this.currentSlider.maxLeft,\n this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left)\n )\n );\n\n let top = Math.max(\n 0,\n Math.min(\n this.currentSlider.maxTop,\n this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top)\n )\n );\n\n this.onMove(top, left);\n }\n\n /**\n * Function triggered when releasing the click in one of the color adjustment bars.\n *\n * @private\n * @param {Event} e\n */\n released(e) {\n this.colorpicker.lastEvent.alias = 'released';\n this.colorpicker.lastEvent.e = e;\n\n // e.stopPropagation();\n // e.preventDefault();\n\n $(this.colorpicker.picker).off({\n 'mousemove.colorpicker': this.moved,\n 'touchmove.colorpicker': this.moved,\n 'mouseup.colorpicker': this.released,\n 'touchend.colorpicker': this.released\n });\n }\n}\n\nexport default SliderHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/SliderHandler.js","'use strict';\n\nimport $ from 'jquery';\nimport _defaults from './options';\n\n/**\n * Handles everything related to the UI of the colorpicker popup: show, hide, position,...\n * @ignore\n */\nclass PopupHandler {\n /**\n * @param {Colorpicker} colorpicker\n * @param {Window} root\n */\n constructor(colorpicker, root) {\n /**\n * @type {Window}\n */\n this.root = root;\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery}\n */\n this.popoverTarget = null;\n /**\n * @type {jQuery}\n */\n this.popoverTip = null;\n\n /**\n * If true, the latest click was inside the popover\n * @type {boolean}\n */\n this.clicking = false;\n /**\n * @type {boolean}\n */\n this.hidding = false;\n /**\n * @type {boolean}\n */\n this.showing = false;\n }\n\n /**\n * @private\n * @returns {jQuery|false}\n */\n get input() {\n return this.colorpicker.inputHandler.input;\n }\n\n /**\n * @private\n * @returns {boolean}\n */\n get hasInput() {\n return this.colorpicker.inputHandler.hasInput();\n }\n\n /**\n * @private\n * @returns {jQuery|false}\n */\n get addon() {\n return this.colorpicker.addonHandler.addon;\n }\n\n /**\n * @private\n * @returns {boolean}\n */\n get hasAddon() {\n return this.colorpicker.addonHandler.hasAddon();\n }\n\n /**\n * @private\n * @returns {boolean}\n */\n get isPopover() {\n return !this.colorpicker.options.inline && !!this.popoverTip;\n }\n\n /**\n * Binds the different colorpicker elements to the focus/mouse/touch events so it reacts in order to show or\n * hide the colorpicker popup accordingly. It also adds the proper classes.\n */\n bind() {\n let cp = this.colorpicker;\n\n if (cp.options.inline) {\n cp.picker.addClass('colorpicker-inline colorpicker-visible');\n return; // no need to bind show/hide events for inline elements\n }\n\n cp.picker.addClass('colorpicker-popup colorpicker-hidden');\n\n // there is no input or addon\n if (!this.hasInput && !this.hasAddon) {\n return;\n }\n\n // create Bootstrap 4 popover\n if (cp.options.popover) {\n this.createPopover();\n }\n\n // bind addon show/hide events\n if (this.hasAddon) {\n // enable focus on addons\n if (!this.addon.attr('tabindex')) {\n this.addon.attr('tabindex', 0);\n }\n\n this.addon.on({\n 'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.toggle, this)\n });\n\n this.addon.on({\n 'focus.colorpicker': $.proxy(this.show, this)\n });\n\n this.addon.on({\n 'focusout.colorpicker': $.proxy(this.hide, this)\n });\n }\n\n // bind input show/hide events\n if (this.hasInput && !this.hasAddon) {\n this.input.on({\n 'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.show, this),\n 'focus.colorpicker': $.proxy(this.show, this)\n });\n\n this.input.on({\n 'focusout.colorpicker': $.proxy(this.hide, this)\n });\n }\n\n // reposition popup on window resize\n $(this.root).on('resize.colorpicker', $.proxy(this.reposition, this));\n }\n\n /**\n * Unbinds any event bound by this handler\n */\n unbind() {\n if (this.hasInput) {\n this.input.off({\n 'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.show, this),\n 'focus.colorpicker': $.proxy(this.show, this)\n });\n this.input.off({\n 'focusout.colorpicker': $.proxy(this.hide, this)\n });\n }\n\n if (this.hasAddon) {\n this.addon.off({\n 'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.toggle, this)\n });\n this.addon.off({\n 'focus.colorpicker': $.proxy(this.show, this)\n });\n this.addon.off({\n 'focusout.colorpicker': $.proxy(this.hide, this)\n });\n }\n\n if (this.popoverTarget) {\n this.popoverTarget.popover('dispose');\n }\n\n $(this.root).off('resize.colorpicker', $.proxy(this.reposition, this));\n $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n }\n\n isClickingInside(e) {\n if (!e) {\n return false;\n }\n\n return (\n this.isOrIsInside(this.popoverTip, e.currentTarget) ||\n this.isOrIsInside(this.popoverTip, e.target) ||\n this.isOrIsInside(this.colorpicker.picker, e.currentTarget) ||\n this.isOrIsInside(this.colorpicker.picker, e.target)\n );\n }\n\n isOrIsInside(container, element) {\n if (!container || !element) {\n return false;\n }\n\n element = $(element);\n\n return (\n element.is(container) ||\n container.find(element).length > 0\n );\n }\n\n onClickingInside(e) {\n this.clicking = this.isClickingInside(e);\n }\n\n createPopover() {\n let cp = this.colorpicker;\n\n this.popoverTarget = this.hasAddon ? this.addon : this.input;\n\n cp.picker.addClass('colorpicker-bs-popover-content');\n\n this.popoverTarget.popover(\n $.extend(\n true,\n {},\n _defaults.popover,\n cp.options.popover,\n {trigger: 'manual', content: cp.picker, html: true}\n )\n );\n\n this.popoverTip = $(this.popoverTarget.popover('getTipElement').data('bs.popover').tip);\n this.popoverTip.addClass('colorpicker-bs-popover');\n\n this.popoverTarget.on('shown.bs.popover', $.proxy(this.fireShow, this));\n this.popoverTarget.on('hidden.bs.popover', $.proxy(this.fireHide, this));\n }\n\n /**\n * If the widget is not inside a container or inline, rearranges its position relative to its element offset.\n *\n * @param {Event} [e]\n * @private\n */\n reposition(e) {\n if (this.popoverTarget && this.isVisible()) {\n this.popoverTarget.popover('update');\n }\n }\n\n /**\n * Toggles the colorpicker between visible or hidden\n *\n * @fires Colorpicker#colorpickerShow\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n toggle(e) {\n if (this.isVisible()) {\n this.hide(e);\n } else {\n this.show(e);\n }\n }\n\n /**\n * Shows the colorpicker widget if hidden.\n *\n * @fires Colorpicker#colorpickerShow\n * @param {Event} [e]\n */\n show(e) {\n if (this.isVisible() || this.showing || this.hidding) {\n return;\n }\n\n this.showing = true;\n this.hidding = false;\n this.clicking = false;\n\n let cp = this.colorpicker;\n\n cp.lastEvent.alias = 'show';\n cp.lastEvent.e = e;\n\n // Prevent showing browser native HTML5 colorpicker\n if (\n (e && (!this.hasInput || this.input.attr('type') === 'color')) &&\n (e && e.preventDefault)\n ) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n // If it's a popover, add event to the document to hide the picker when clicking outside of it\n if (this.isPopover) {\n $(this.root).on('resize.colorpicker', $.proxy(this.reposition, this));\n }\n\n // add visible class before popover is shown\n cp.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden');\n\n if (this.popoverTarget) {\n this.popoverTarget.popover('show');\n } else {\n this.fireShow();\n }\n }\n\n fireShow() {\n this.hidding = false;\n this.showing = false;\n\n if (this.isPopover) {\n // Add event to hide on outside click\n $(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n $(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n }\n\n /**\n * (Colorpicker) When show() is called and the widget can be shown.\n *\n * @event Colorpicker#colorpickerShow\n */\n this.colorpicker.trigger('colorpickerShow');\n }\n\n /**\n * Hides the colorpicker widget.\n * Hide is prevented when it is triggered by an event whose target element has been clicked/touched.\n *\n * @fires Colorpicker#colorpickerHide\n * @param {Event} [e]\n */\n hide(e) {\n if (this.isHidden() || this.showing || this.hidding) {\n return;\n }\n\n let cp = this.colorpicker, clicking = (this.clicking || this.isClickingInside(e));\n\n this.hidding = true;\n this.showing = false;\n this.clicking = false;\n\n cp.lastEvent.alias = 'hide';\n cp.lastEvent.e = e;\n\n // TODO: fix having to click twice outside when losing focus and last 2 clicks where inside the colorpicker\n\n // Prevent hide if triggered by an event and an element inside the colorpicker has been clicked/touched\n if (clicking) {\n this.hidding = false;\n return;\n }\n\n if (this.popoverTarget) {\n this.popoverTarget.popover('hide');\n } else {\n this.fireHide();\n }\n }\n\n fireHide() {\n this.hidding = false;\n this.showing = false;\n\n let cp = this.colorpicker;\n\n // add hidden class after popover is hidden\n cp.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible');\n\n // Unbind window and document events, since there is no need to keep them while the popup is hidden\n $(this.root).off('resize.colorpicker', $.proxy(this.reposition, this));\n $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n\n /**\n * (Colorpicker) When hide() is called and the widget can be hidden.\n *\n * @event Colorpicker#colorpickerHide\n */\n cp.trigger('colorpickerHide');\n }\n\n focus() {\n if (this.hasAddon) {\n return this.addon.focus();\n }\n if (this.hasInput) {\n return this.input.focus();\n }\n return false;\n }\n\n /**\n * Returns true if the colorpicker element has the colorpicker-visible class and not the colorpicker-hidden one.\n * False otherwise.\n *\n * @returns {boolean}\n */\n isVisible() {\n return this.colorpicker.picker.hasClass('colorpicker-visible') &&\n !this.colorpicker.picker.hasClass('colorpicker-hidden');\n }\n\n /**\n * Returns true if the colorpicker element has the colorpicker-hidden class and not the colorpicker-visible one.\n * False otherwise.\n *\n * @returns {boolean}\n */\n isHidden() {\n return this.colorpicker.picker.hasClass('colorpicker-hidden') &&\n !this.colorpicker.picker.hasClass('colorpicker-visible');\n }\n}\n\nexport default PopupHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/PopupHandler.js","'use strict';\n\nimport $ from 'jquery';\nimport ColorItem from './ColorItem';\n\n/**\n * Handles everything related to the colorpicker input\n * @ignore\n */\nclass InputHandler {\n /**\n * @param {Colorpicker} colorpicker\n */\n constructor(colorpicker) {\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery|false}\n */\n this.input = this.colorpicker.element.is('input') ? this.colorpicker.element : (this.colorpicker.options.input ?\n this.colorpicker.element.find(this.colorpicker.options.input) : false);\n\n if (this.input && (this.input.length === 0)) {\n this.input = false;\n }\n\n this._initValue();\n }\n\n bind() {\n if (!this.hasInput()) {\n return;\n }\n this.input.on({\n 'keyup.colorpicker': $.proxy(this.onkeyup, this)\n });\n this.input.on({\n 'change.colorpicker': $.proxy(this.onchange, this)\n });\n }\n\n unbind() {\n if (!this.hasInput()) {\n return;\n }\n this.input.off('.colorpicker');\n }\n\n _initValue() {\n if (!this.hasInput()) {\n return;\n }\n\n let val = '';\n\n [\n // candidates:\n this.input.val(),\n this.input.data('color'),\n this.input.attr('data-color')\n ].map((item) => {\n if (item && (val === '')) {\n val = item;\n }\n });\n\n if (val instanceof ColorItem) {\n val = this.getFormattedColor(val.string(this.colorpicker.format));\n } else if (!(typeof val === 'string' || val instanceof String)) {\n val = '';\n }\n\n this.input.prop('value', val);\n }\n\n /**\n * Returns the color string from the input value.\n * If there is no input the return value is false.\n *\n * @returns {String|boolean}\n */\n getValue() {\n if (!this.hasInput()) {\n return false;\n }\n\n return this.input.val();\n }\n\n /**\n * If the input element is present, it updates the value with the current color object color string.\n * If the value is changed, this method fires a \"change\" event on the input element.\n *\n * @param {String} val\n *\n * @fires Colorpicker#change\n */\n setValue(val) {\n if (!this.hasInput()) {\n return;\n }\n\n let inputVal = this.input.prop('value');\n\n val = val ? val : '';\n\n if (val === (inputVal ? inputVal : '')) {\n // No need to set value or trigger any event if nothing changed\n return;\n }\n\n this.input.prop('value', val);\n\n /**\n * (Input) Triggered on the input element when a new color is selected.\n *\n * @event Colorpicker#change\n */\n this.input.trigger({\n type: 'change',\n colorpicker: this.colorpicker,\n color: this.colorpicker.color,\n value: val\n });\n }\n\n /**\n * Returns the formatted color string, with the formatting options applied\n * (e.g. useHashPrefix)\n *\n * @param {String|null} val\n *\n * @returns {String}\n */\n getFormattedColor(val = null) {\n val = val ? val : this.colorpicker.colorHandler.getColorString();\n\n if (!val) {\n return '';\n }\n\n val = this.colorpicker.colorHandler.resolveColorDelegate(val, false);\n\n if (this.colorpicker.options.useHashPrefix === false) {\n val = val.replace(/^#/g, '');\n }\n\n return val;\n }\n\n /**\n * Returns true if the widget has an associated input element, false otherwise\n * @returns {boolean}\n */\n hasInput() {\n return (this.input !== false);\n }\n\n /**\n * Returns true if the input exists and is disabled\n * @returns {boolean}\n */\n isEnabled() {\n return this.hasInput() && !this.isDisabled();\n }\n\n /**\n * Returns true if the input exists and is disabled\n * @returns {boolean}\n */\n isDisabled() {\n return this.hasInput() && (this.input.prop('disabled') === true);\n }\n\n /**\n * Disables the input if any\n *\n * @fires Colorpicker#colorpickerDisable\n * @returns {boolean}\n */\n disable() {\n if (this.hasInput()) {\n this.input.prop('disabled', true);\n }\n }\n\n /**\n * Enables the input if any\n *\n * @fires Colorpicker#colorpickerEnable\n * @returns {boolean}\n */\n enable() {\n if (this.hasInput()) {\n this.input.prop('disabled', false);\n }\n }\n\n /**\n * Calls setValue with the current internal color value\n *\n * @fires Colorpicker#change\n */\n update() {\n if (!this.hasInput()) {\n return;\n }\n\n if (\n (this.colorpicker.options.autoInputFallback === false) &&\n this.colorpicker.colorHandler.isInvalidColor()\n ) {\n // prevent update if color is invalid, autoInputFallback is disabled and the last event is keyup.\n return;\n }\n\n this.setValue(this.getFormattedColor());\n }\n\n /**\n * Function triggered when the input has changed, so the colorpicker gets updated.\n *\n * @private\n * @param {Event} e\n * @returns {boolean}\n */\n onchange(e) {\n this.colorpicker.lastEvent.alias = 'input.change';\n this.colorpicker.lastEvent.e = e;\n\n let val = this.getValue();\n\n if (val !== e.value) {\n this.colorpicker.setValue(val);\n }\n }\n\n /**\n * Function triggered after a keyboard key has been released.\n *\n * @private\n * @param {Event} e\n * @returns {boolean}\n */\n onkeyup(e) {\n this.colorpicker.lastEvent.alias = 'input.keyup';\n this.colorpicker.lastEvent.e = e;\n\n let val = this.getValue();\n\n if (val !== e.value) {\n this.colorpicker.setValue(val);\n }\n }\n}\n\nexport default InputHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/InputHandler.js","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (typeof obj === 'undefined') {\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color/index.js\n// module id = 16\n// module chunks = 0 1","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d*\\.)?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = (parseFloat(match[1]) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d*[\\.]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color-string/index.js\n// module id = 17\n// module chunks = 0 1","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/simple-swizzle/index.js\n// module id = 18\n// module chunks = 0 1","'use strict';\n\nmodule.exports = function isArrayish(obj) {\n\tif (!obj) {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && obj.splice instanceof Function);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/is-arrayish/index.js\n// module id = 19\n// module chunks = 0 1","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color-convert/index.js\n// module id = 20\n// module chunks = 0 1","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/color-convert/route.js\n// module id = 21\n// module chunks = 0 1","'use strict';\n\nimport $ from 'jquery';\nimport ColorItem from './ColorItem';\n\n/**\n * Handles everything related to the colorpicker color\n * @ignore\n */\nclass ColorHandler {\n /**\n * @param {Colorpicker} colorpicker\n */\n constructor(colorpicker) {\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n }\n\n /**\n * @returns {*|String|ColorItem}\n */\n get fallback() {\n return this.colorpicker.options.fallbackColor ?\n this.colorpicker.options.fallbackColor : (this.hasColor() ? this.color : null);\n }\n\n /**\n * @returns {String|null}\n */\n get format() {\n if (this.colorpicker.options.format) {\n return this.colorpicker.options.format;\n }\n\n if (this.hasColor() && this.color.hasTransparency() && this.color.format.match(/^hex/)) {\n return this.isAlphaEnabled() ? 'rgba' : 'hex';\n }\n\n if (this.hasColor()) {\n return this.color.format;\n }\n\n return 'rgb';\n }\n\n /**\n * Internal color getter\n *\n * @type {ColorItem|null}\n */\n get color() {\n return this.colorpicker.element.data('color');\n }\n\n /**\n * Internal color setter\n *\n * @ignore\n * @param {ColorItem|null} value\n */\n set color(value) {\n this.colorpicker.element.data('color', value);\n\n if ((value instanceof ColorItem) && (this.colorpicker.options.format === 'auto')) {\n // If format is 'auto', use the first parsed one from now on\n this.colorpicker.options.format = this.color.format;\n }\n }\n\n bind() {\n // if the color option is set\n if (this.colorpicker.options.color) {\n this.color = this.createColor(this.colorpicker.options.color);\n return;\n }\n\n // if element[color] is empty and the input has a value\n if (!this.color && !!this.colorpicker.inputHandler.getValue()) {\n this.color = this.createColor(\n this.colorpicker.inputHandler.getValue(), this.colorpicker.options.autoInputFallback\n );\n }\n }\n\n unbind() {\n this.colorpicker.element.removeData('color');\n }\n\n /**\n * Returns the color string from the input value or the 'data-color' attribute of the input or element.\n * If empty, it returns the defaultValue parameter.\n *\n * @returns {String|*}\n */\n getColorString() {\n if (!this.hasColor()) {\n return '';\n }\n\n return this.color.string(this.format);\n }\n\n /**\n * Sets the color value\n *\n * @param {String|ColorItem} val\n */\n setColorString(val) {\n let color = val ? this.createColor(val) : null;\n\n this.color = color ? color : null;\n }\n\n /**\n * Creates a new color using the widget instance options (fallbackColor, format).\n *\n * @fires Colorpicker#colorpickerInvalid\n * @param {*} val\n * @param {boolean} fallbackOnInvalid\n * @returns {ColorItem}\n */\n createColor(val, fallbackOnInvalid = true) {\n let color = new ColorItem(this.resolveColorDelegate(val), this.format);\n\n if (!color.isValid()) {\n if (fallbackOnInvalid) {\n color = this.getFallbackColor();\n }\n\n /**\n * (Colorpicker) Fired when the color is invalid and the fallback color is going to be used.\n *\n * @event Colorpicker#colorpickerInvalid\n */\n this.colorpicker.trigger('colorpickerInvalid', color, val);\n }\n\n if (!this.isAlphaEnabled()) {\n // Alpha is disabled\n color.alpha = 1;\n }\n\n return color;\n }\n\n getFallbackColor() {\n if (this.fallback && (this.fallback === this.color)) {\n return this.color;\n }\n\n let fallback = this.resolveColorDelegate(this.fallback);\n let color = new ColorItem(fallback, this.format);\n\n if (!color.isValid()) {\n console.warn('The fallback color is invalid. Falling back to the previous color or black if any.');\n return this.color ? this.color : new ColorItem('#000000', this.format);\n }\n\n return color;\n }\n\n /**\n * @returns {ColorItem}\n */\n assureColor() {\n if (!this.hasColor()) {\n this.color = this.getFallbackColor();\n }\n\n return this.color;\n }\n\n /**\n * Delegates the color resolution to the colorpicker extensions.\n *\n * @param {String|*} color\n * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n * @returns {ColorItem|String|*|null}\n */\n resolveColorDelegate(color, realColor = true) {\n let extResolvedColor = false;\n\n $.each(this.colorpicker.extensions, function (name, ext) {\n if (extResolvedColor !== false) {\n // skip if resolved\n return;\n }\n extResolvedColor = ext.resolveColor(color, realColor);\n });\n\n return extResolvedColor ? extResolvedColor : color;\n }\n\n /**\n * Checks if there is a color object, that it is valid and it is not a fallback\n * @returns {boolean}\n */\n isInvalidColor() {\n return !this.hasColor() || !this.color.isValid();\n }\n\n /**\n * Returns true if the useAlpha option is exactly true, false otherwise\n * @returns {boolean}\n */\n isAlphaEnabled() {\n return (this.colorpicker.options.useAlpha !== false);\n }\n\n /**\n * Returns true if the current color object is an instance of Color, false otherwise.\n * @returns {boolean}\n */\n hasColor() {\n return this.color instanceof ColorItem;\n }\n}\n\nexport default ColorHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/ColorHandler.js","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Handles everything related to the colorpicker UI\n * @ignore\n */\nclass PickerHandler {\n /**\n * @param {Colorpicker} colorpicker\n */\n constructor(colorpicker) {\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery}\n */\n this.picker = null;\n }\n\n get options() {\n return this.colorpicker.options;\n }\n\n get color() {\n return this.colorpicker.colorHandler.color;\n }\n\n bind() {\n /**\n * @type {jQuery|HTMLElement}\n */\n let picker = this.picker = $(this.options.template);\n\n if (this.options.customClass) {\n picker.addClass(this.options.customClass);\n }\n\n if (this.options.horizontal) {\n picker.addClass('colorpicker-horizontal');\n }\n\n if (this._supportsAlphaBar()) {\n this.options.useAlpha = true;\n picker.addClass('colorpicker-with-alpha');\n } else {\n this.options.useAlpha = false;\n }\n }\n\n attach() {\n // Inject the colorpicker element into the DOM\n let pickerParent = this.colorpicker.container ? this.colorpicker.container : null;\n\n if (pickerParent) {\n this.picker.appendTo(pickerParent);\n }\n }\n\n unbind() {\n this.picker.remove();\n }\n\n _supportsAlphaBar() {\n return (\n (this.options.useAlpha || (this.colorpicker.colorHandler.hasColor() && this.color.hasTransparency())) &&\n (this.options.useAlpha !== false) &&\n (!this.options.format || (this.options.format && !this.options.format.match(/^hex([36])?$/i)))\n );\n }\n\n /**\n * Changes the color adjustment bars using the current color object information.\n */\n update() {\n if (!this.colorpicker.colorHandler.hasColor()) {\n return;\n }\n\n let vertical = (this.options.horizontal !== true),\n slider = vertical ? this.options.sliders : this.options.slidersHorz;\n\n let saturationGuide = this.picker.find('.colorpicker-saturation .colorpicker-guide'),\n hueGuide = this.picker.find('.colorpicker-hue .colorpicker-guide'),\n alphaGuide = this.picker.find('.colorpicker-alpha .colorpicker-guide');\n\n let hsva = this.color.toHsvaRatio();\n\n // Set guides position\n if (hueGuide.length) {\n hueGuide.css(vertical ? 'top' : 'left', (vertical ? slider.hue.maxTop : slider.hue.maxLeft) * (1 - hsva.h));\n }\n if (alphaGuide.length) {\n alphaGuide.css(vertical ? 'top' : 'left', (vertical ? slider.alpha.maxTop : slider.alpha.maxLeft) * (1 - hsva.a));\n }\n if (saturationGuide.length) {\n saturationGuide.css({\n 'top': slider.saturation.maxTop - hsva.v * slider.saturation.maxTop,\n 'left': hsva.s * slider.saturation.maxLeft\n });\n }\n\n // Set saturation hue background\n this.picker.find('.colorpicker-saturation')\n .css('backgroundColor', this.color.getCloneHueOnly().toHexString()); // we only need hue\n\n // Set alpha color gradient\n let hexColor = this.color.toHexString();\n let alphaBg = '';\n\n if (this.options.horizontal) {\n alphaBg = `linear-gradient(to right, ${hexColor} 0%, transparent 100%)`;\n } else {\n alphaBg = `linear-gradient(to bottom, ${hexColor} 0%, transparent 100%)`;\n }\n\n this.picker.find('.colorpicker-alpha-color').css('background', alphaBg);\n }\n}\n\nexport default PickerHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/PickerHandler.js","'use strict';\n\n/**\n * Handles everything related to the colorpicker addon\n * @ignore\n */\nclass AddonHandler {\n /**\n * @param {Colorpicker} colorpicker\n */\n constructor(colorpicker) {\n /**\n * @type {Colorpicker}\n */\n this.colorpicker = colorpicker;\n /**\n * @type {jQuery}\n */\n this.addon = null;\n }\n\n hasAddon() {\n return !!this.addon;\n }\n\n bind() {\n /**\n * @type {*|jQuery}\n */\n this.addon = this.colorpicker.options.addon ?\n this.colorpicker.element.find(this.colorpicker.options.addon) : null;\n\n if (this.addon && (this.addon.length === 0)) {\n // not found\n this.addon = null;\n }\n }\n\n unbind() {\n if (this.hasAddon()) {\n this.addon.off('.colorpicker');\n }\n }\n\n /**\n * If the addon element is present, its background color is updated\n */\n update() {\n if (!this.colorpicker.colorHandler.hasColor() || !this.hasAddon()) {\n return;\n }\n\n let colorStr = this.colorpicker.colorHandler.getColorString();\n let styles = {'background': colorStr};\n\n let icn = this.addon.find('i').eq(0);\n\n if (icn.length > 0) {\n icn.css(styles);\n } else {\n this.addon.css(styles);\n }\n }\n}\n\nexport default AddonHandler;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/AddonHandler.js"],"sourceRoot":""} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /*! ======================================================= |
| | | VERSION 10.6.2 |
| | | ========================================================= */ |
| | | "use strict"; |
| | | |
| | | var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; |
| | | |
| | | /*! ========================================================= |
| | | * bootstrap-slider.js |
| | | * |
| | | * Maintainers: |
| | | * Kyle Kemp |
| | | * - Twitter: @seiyria |
| | | * - Github: seiyria |
| | | * Rohit Kalkur |
| | | * - Twitter: @Rovolutionary |
| | | * - Github: rovolution |
| | | * |
| | | * ========================================================= |
| | | * |
| | | * bootstrap-slider is released under the MIT License |
| | | * Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors |
| | | * |
| | | * Permission is hereby granted, free of charge, to any person |
| | | * obtaining a copy of this software and associated documentation |
| | | * files (the "Software"), to deal in the Software without |
| | | * restriction, including without limitation the rights to use, |
| | | * copy, modify, merge, publish, distribute, sublicense, and/or sell |
| | | * copies of the Software, and to permit persons to whom the |
| | | * Software is furnished to do so, subject to the following |
| | | * conditions: |
| | | * |
| | | * The above copyright notice and this permission notice shall be |
| | | * included in all copies or substantial portions of the Software. |
| | | * |
| | | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| | | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
| | | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| | | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
| | | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
| | | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
| | | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
| | | * OTHER DEALINGS IN THE SOFTWARE. |
| | | * |
| | | * ========================================================= */ |
| | | |
| | | /** |
| | | * Bridget makes jQuery widgets |
| | | * v2.0.1 |
| | | * MIT license |
| | | */ |
| | | var windowIsDefined = (typeof window === "undefined" ? "undefined" : _typeof(window)) === "object"; |
| | | |
| | | (function (factory) { |
| | | if (typeof define === "function" && define.amd) { |
| | | define(["jquery"], factory); |
| | | } else if ((typeof module === "undefined" ? "undefined" : _typeof(module)) === "object" && module.exports) { |
| | | var jQuery; |
| | | try { |
| | | jQuery = require("jquery"); |
| | | } catch (err) { |
| | | jQuery = null; |
| | | } |
| | | module.exports = factory(jQuery); |
| | | } else if (window) { |
| | | window.Slider = factory(window.jQuery); |
| | | } |
| | | })(function ($) { |
| | | // Constants |
| | | var NAMESPACE_MAIN = 'slider'; |
| | | var NAMESPACE_ALTERNATE = 'bootstrapSlider'; |
| | | |
| | | // Polyfill console methods |
| | | if (windowIsDefined && !window.console) { |
| | | window.console = {}; |
| | | } |
| | | if (windowIsDefined && !window.console.log) { |
| | | window.console.log = function () {}; |
| | | } |
| | | if (windowIsDefined && !window.console.warn) { |
| | | window.console.warn = function () {}; |
| | | } |
| | | |
| | | // Reference to Slider constructor |
| | | var Slider; |
| | | |
| | | (function ($) { |
| | | |
| | | 'use strict'; |
| | | |
| | | // -------------------------- utils -------------------------- // |
| | | |
| | | var slice = Array.prototype.slice; |
| | | |
| | | function noop() {} |
| | | |
| | | // -------------------------- definition -------------------------- // |
| | | |
| | | function defineBridget($) { |
| | | |
| | | // bail if no jQuery |
| | | if (!$) { |
| | | return; |
| | | } |
| | | |
| | | // -------------------------- addOptionMethod -------------------------- // |
| | | |
| | | /** |
| | | * adds option method -> $().plugin('option', {...}) |
| | | * @param {Function} PluginClass - constructor class |
| | | */ |
| | | function addOptionMethod(PluginClass) { |
| | | // don't overwrite original option method |
| | | if (PluginClass.prototype.option) { |
| | | return; |
| | | } |
| | | |
| | | // option setter |
| | | PluginClass.prototype.option = function (opts) { |
| | | // bail out if not an object |
| | | if (!$.isPlainObject(opts)) { |
| | | return; |
| | | } |
| | | this.options = $.extend(true, this.options, opts); |
| | | }; |
| | | } |
| | | |
| | | // -------------------------- plugin bridge -------------------------- // |
| | | |
| | | // helper function for logging errors |
| | | // $.error breaks jQuery chaining |
| | | var logError = typeof console === 'undefined' ? noop : function (message) { |
| | | console.error(message); |
| | | }; |
| | | |
| | | /** |
| | | * jQuery plugin bridge, access methods like $elem.plugin('method') |
| | | * @param {String} namespace - plugin name |
| | | * @param {Function} PluginClass - constructor class |
| | | */ |
| | | function bridge(namespace, PluginClass) { |
| | | // add to jQuery fn namespace |
| | | $.fn[namespace] = function (options) { |
| | | if (typeof options === 'string') { |
| | | // call plugin method when first argument is a string |
| | | // get arguments for method |
| | | var args = slice.call(arguments, 1); |
| | | |
| | | for (var i = 0, len = this.length; i < len; i++) { |
| | | var elem = this[i]; |
| | | var instance = $.data(elem, namespace); |
| | | if (!instance) { |
| | | logError("cannot call methods on " + namespace + " prior to initialization; " + "attempted to call '" + options + "'"); |
| | | continue; |
| | | } |
| | | if (!$.isFunction(instance[options]) || options.charAt(0) === '_') { |
| | | logError("no such method '" + options + "' for " + namespace + " instance"); |
| | | continue; |
| | | } |
| | | |
| | | // trigger method with arguments |
| | | var returnValue = instance[options].apply(instance, args); |
| | | |
| | | // break look and return first value if provided |
| | | if (returnValue !== undefined && returnValue !== instance) { |
| | | return returnValue; |
| | | } |
| | | } |
| | | // return this if no return value |
| | | return this; |
| | | } else { |
| | | var objects = this.map(function () { |
| | | var instance = $.data(this, namespace); |
| | | if (instance) { |
| | | // apply options & init |
| | | instance.option(options); |
| | | instance._init(); |
| | | } else { |
| | | // initialize new instance |
| | | instance = new PluginClass(this, options); |
| | | $.data(this, namespace, instance); |
| | | } |
| | | return $(this); |
| | | }); |
| | | |
| | | if (objects.length === 1) { |
| | | return objects[0]; |
| | | } |
| | | return objects; |
| | | } |
| | | }; |
| | | } |
| | | |
| | | // -------------------------- bridget -------------------------- // |
| | | |
| | | /** |
| | | * converts a Prototypical class into a proper jQuery plugin |
| | | * the class must have a ._init method |
| | | * @param {String} namespace - plugin name, used in $().pluginName |
| | | * @param {Function} PluginClass - constructor class |
| | | */ |
| | | $.bridget = function (namespace, PluginClass) { |
| | | addOptionMethod(PluginClass); |
| | | bridge(namespace, PluginClass); |
| | | }; |
| | | |
| | | return $.bridget; |
| | | } |
| | | |
| | | // get jquery from browser global |
| | | defineBridget($); |
| | | })($); |
| | | |
| | | /************************************************* |
| | | BOOTSTRAP-SLIDER SOURCE CODE |
| | | **************************************************/ |
| | | |
| | | (function ($) { |
| | | var autoRegisterNamespace = void 0; |
| | | |
| | | var ErrorMsgs = { |
| | | formatInvalidInputErrorMsg: function formatInvalidInputErrorMsg(input) { |
| | | return "Invalid input value '" + input + "' passed in"; |
| | | }, |
| | | callingContextNotSliderInstance: "Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method" |
| | | }; |
| | | |
| | | var SliderScale = { |
| | | linear: { |
| | | getValue: function getValue(value, options) { |
| | | if (value < options.min) { |
| | | return options.min; |
| | | } else if (value > options.max) { |
| | | return options.max; |
| | | } else { |
| | | return value; |
| | | } |
| | | }, |
| | | toValue: function toValue(percentage) { |
| | | var rawValue = percentage / 100 * (this.options.max - this.options.min); |
| | | var shouldAdjustWithBase = true; |
| | | if (this.options.ticks_positions.length > 0) { |
| | | var minv, |
| | | maxv, |
| | | minp, |
| | | maxp = 0; |
| | | for (var i = 1; i < this.options.ticks_positions.length; i++) { |
| | | if (percentage <= this.options.ticks_positions[i]) { |
| | | minv = this.options.ticks[i - 1]; |
| | | minp = this.options.ticks_positions[i - 1]; |
| | | maxv = this.options.ticks[i]; |
| | | maxp = this.options.ticks_positions[i]; |
| | | |
| | | break; |
| | | } |
| | | } |
| | | var partialPercentage = (percentage - minp) / (maxp - minp); |
| | | rawValue = minv + partialPercentage * (maxv - minv); |
| | | shouldAdjustWithBase = false; |
| | | } |
| | | |
| | | var adjustment = shouldAdjustWithBase ? this.options.min : 0; |
| | | var value = adjustment + Math.round(rawValue / this.options.step) * this.options.step; |
| | | return SliderScale.linear.getValue(value, this.options); |
| | | }, |
| | | toPercentage: function toPercentage(value) { |
| | | if (this.options.max === this.options.min) { |
| | | return 0; |
| | | } |
| | | |
| | | if (this.options.ticks_positions.length > 0) { |
| | | var minv, |
| | | maxv, |
| | | minp, |
| | | maxp = 0; |
| | | for (var i = 0; i < this.options.ticks.length; i++) { |
| | | if (value <= this.options.ticks[i]) { |
| | | minv = i > 0 ? this.options.ticks[i - 1] : 0; |
| | | minp = i > 0 ? this.options.ticks_positions[i - 1] : 0; |
| | | maxv = this.options.ticks[i]; |
| | | maxp = this.options.ticks_positions[i]; |
| | | |
| | | break; |
| | | } |
| | | } |
| | | if (i > 0) { |
| | | var partialPercentage = (value - minv) / (maxv - minv); |
| | | return minp + partialPercentage * (maxp - minp); |
| | | } |
| | | } |
| | | |
| | | return 100 * (value - this.options.min) / (this.options.max - this.options.min); |
| | | } |
| | | }, |
| | | |
| | | logarithmic: { |
| | | /* Based on http://stackoverflow.com/questions/846221/logarithmic-slider */ |
| | | toValue: function toValue(percentage) { |
| | | var offset = 1 - this.options.min; |
| | | var min = Math.log(this.options.min + offset); |
| | | var max = Math.log(this.options.max + offset); |
| | | var value = Math.exp(min + (max - min) * percentage / 100) - offset; |
| | | if (Math.round(value) === max) { |
| | | return max; |
| | | } |
| | | value = this.options.min + Math.round((value - this.options.min) / this.options.step) * this.options.step; |
| | | /* Rounding to the nearest step could exceed the min or |
| | | * max, so clip to those values. */ |
| | | return SliderScale.linear.getValue(value, this.options); |
| | | }, |
| | | toPercentage: function toPercentage(value) { |
| | | if (this.options.max === this.options.min) { |
| | | return 0; |
| | | } else { |
| | | var offset = 1 - this.options.min; |
| | | var max = Math.log(this.options.max + offset); |
| | | var min = Math.log(this.options.min + offset); |
| | | var v = Math.log(value + offset); |
| | | return 100 * (v - min) / (max - min); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | |
| | | /************************************************* |
| | | CONSTRUCTOR |
| | | **************************************************/ |
| | | Slider = function Slider(element, options) { |
| | | createNewSlider.call(this, element, options); |
| | | return this; |
| | | }; |
| | | |
| | | function createNewSlider(element, options) { |
| | | |
| | | /* |
| | | The internal state object is used to store data about the current 'state' of slider. |
| | | This includes values such as the `value`, `enabled`, etc... |
| | | */ |
| | | this._state = { |
| | | value: null, |
| | | enabled: null, |
| | | offset: null, |
| | | size: null, |
| | | percentage: null, |
| | | inDrag: false, |
| | | over: false, |
| | | tickIndex: null |
| | | }; |
| | | |
| | | // The objects used to store the reference to the tick methods if ticks_tooltip is on |
| | | this.ticksCallbackMap = {}; |
| | | this.handleCallbackMap = {}; |
| | | |
| | | if (typeof element === "string") { |
| | | this.element = document.querySelector(element); |
| | | } else if (element instanceof HTMLElement) { |
| | | this.element = element; |
| | | } |
| | | |
| | | /************************************************* |
| | | Process Options |
| | | **************************************************/ |
| | | options = options ? options : {}; |
| | | var optionTypes = Object.keys(this.defaultOptions); |
| | | |
| | | var isMinSet = options.hasOwnProperty('min'); |
| | | var isMaxSet = options.hasOwnProperty('max'); |
| | | |
| | | for (var i = 0; i < optionTypes.length; i++) { |
| | | var optName = optionTypes[i]; |
| | | |
| | | // First check if an option was passed in via the constructor |
| | | var val = options[optName]; |
| | | // If no data attrib, then check data atrributes |
| | | val = typeof val !== 'undefined' ? val : getDataAttrib(this.element, optName); |
| | | // Finally, if nothing was specified, use the defaults |
| | | val = val !== null ? val : this.defaultOptions[optName]; |
| | | |
| | | // Set all options on the instance of the Slider |
| | | if (!this.options) { |
| | | this.options = {}; |
| | | } |
| | | this.options[optName] = val; |
| | | } |
| | | |
| | | this.ticksAreValid = Array.isArray(this.options.ticks) && this.options.ticks.length > 0; |
| | | |
| | | // Lock to ticks only when ticks[] is defined and set |
| | | if (!this.ticksAreValid) { |
| | | this.options.lock_to_ticks = false; |
| | | } |
| | | |
| | | // Check options.rtl |
| | | if (this.options.rtl === 'auto') { |
| | | var computedStyle = window.getComputedStyle(this.element); |
| | | if (computedStyle != null) { |
| | | this.options.rtl = computedStyle.direction === 'rtl'; |
| | | } else { |
| | | // Fix for Firefox bug in versions less than 62: |
| | | // https://bugzilla.mozilla.org/show_bug.cgi?id=548397 |
| | | // https://bugzilla.mozilla.org/show_bug.cgi?id=1467722 |
| | | this.options.rtl = this.element.style.direction === 'rtl'; |
| | | } |
| | | } |
| | | |
| | | /* |
| | | Validate `tooltip_position` against 'orientation` |
| | | - if `tooltip_position` is incompatible with orientation, swith it to a default compatible with specified `orientation` |
| | | -- default for "vertical" -> "right", "left" if rtl |
| | | -- default for "horizontal" -> "top" |
| | | */ |
| | | if (this.options.orientation === "vertical" && (this.options.tooltip_position === "top" || this.options.tooltip_position === "bottom")) { |
| | | if (this.options.rtl) { |
| | | this.options.tooltip_position = "left"; |
| | | } else { |
| | | this.options.tooltip_position = "right"; |
| | | } |
| | | } else if (this.options.orientation === "horizontal" && (this.options.tooltip_position === "left" || this.options.tooltip_position === "right")) { |
| | | |
| | | this.options.tooltip_position = "top"; |
| | | } |
| | | |
| | | function getDataAttrib(element, optName) { |
| | | var dataName = "data-slider-" + optName.replace(/_/g, '-'); |
| | | var dataValString = element.getAttribute(dataName); |
| | | |
| | | try { |
| | | return JSON.parse(dataValString); |
| | | } catch (err) { |
| | | return dataValString; |
| | | } |
| | | } |
| | | |
| | | /************************************************* |
| | | Create Markup |
| | | **************************************************/ |
| | | |
| | | var origWidth = this.element.style.width; |
| | | var updateSlider = false; |
| | | var parent = this.element.parentNode; |
| | | var sliderTrackSelection; |
| | | var sliderTrackLow, sliderTrackHigh; |
| | | var sliderMinHandle; |
| | | var sliderMaxHandle; |
| | | |
| | | if (this.sliderElem) { |
| | | updateSlider = true; |
| | | } else { |
| | | /* Create elements needed for slider */ |
| | | this.sliderElem = document.createElement("div"); |
| | | this.sliderElem.className = "slider"; |
| | | |
| | | /* Create slider track elements */ |
| | | var sliderTrack = document.createElement("div"); |
| | | sliderTrack.className = "slider-track"; |
| | | |
| | | sliderTrackLow = document.createElement("div"); |
| | | sliderTrackLow.className = "slider-track-low"; |
| | | |
| | | sliderTrackSelection = document.createElement("div"); |
| | | sliderTrackSelection.className = "slider-selection"; |
| | | |
| | | sliderTrackHigh = document.createElement("div"); |
| | | sliderTrackHigh.className = "slider-track-high"; |
| | | |
| | | sliderMinHandle = document.createElement("div"); |
| | | sliderMinHandle.className = "slider-handle min-slider-handle"; |
| | | sliderMinHandle.setAttribute('role', 'slider'); |
| | | sliderMinHandle.setAttribute('aria-valuemin', this.options.min); |
| | | sliderMinHandle.setAttribute('aria-valuemax', this.options.max); |
| | | |
| | | sliderMaxHandle = document.createElement("div"); |
| | | sliderMaxHandle.className = "slider-handle max-slider-handle"; |
| | | sliderMaxHandle.setAttribute('role', 'slider'); |
| | | sliderMaxHandle.setAttribute('aria-valuemin', this.options.min); |
| | | sliderMaxHandle.setAttribute('aria-valuemax', this.options.max); |
| | | |
| | | sliderTrack.appendChild(sliderTrackLow); |
| | | sliderTrack.appendChild(sliderTrackSelection); |
| | | sliderTrack.appendChild(sliderTrackHigh); |
| | | |
| | | /* Create highlight range elements */ |
| | | this.rangeHighlightElements = []; |
| | | var rangeHighlightsOpts = this.options.rangeHighlights; |
| | | if (Array.isArray(rangeHighlightsOpts) && rangeHighlightsOpts.length > 0) { |
| | | for (var j = 0; j < rangeHighlightsOpts.length; j++) { |
| | | var rangeHighlightElement = document.createElement("div"); |
| | | var customClassString = rangeHighlightsOpts[j].class || ""; |
| | | rangeHighlightElement.className = "slider-rangeHighlight slider-selection " + customClassString; |
| | | this.rangeHighlightElements.push(rangeHighlightElement); |
| | | sliderTrack.appendChild(rangeHighlightElement); |
| | | } |
| | | } |
| | | |
| | | /* Add aria-labelledby to handle's */ |
| | | var isLabelledbyArray = Array.isArray(this.options.labelledby); |
| | | if (isLabelledbyArray && this.options.labelledby[0]) { |
| | | sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby[0]); |
| | | } |
| | | if (isLabelledbyArray && this.options.labelledby[1]) { |
| | | sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby[1]); |
| | | } |
| | | if (!isLabelledbyArray && this.options.labelledby) { |
| | | sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby); |
| | | sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby); |
| | | } |
| | | |
| | | /* Create ticks */ |
| | | this.ticks = []; |
| | | if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { |
| | | this.ticksContainer = document.createElement('div'); |
| | | this.ticksContainer.className = 'slider-tick-container'; |
| | | |
| | | for (i = 0; i < this.options.ticks.length; i++) { |
| | | var tick = document.createElement('div'); |
| | | tick.className = 'slider-tick'; |
| | | if (this.options.ticks_tooltip) { |
| | | var tickListenerReference = this._addTickListener(); |
| | | var enterCallback = tickListenerReference.addMouseEnter(this, tick, i); |
| | | var leaveCallback = tickListenerReference.addMouseLeave(this, tick); |
| | | |
| | | this.ticksCallbackMap[i] = { |
| | | mouseEnter: enterCallback, |
| | | mouseLeave: leaveCallback |
| | | }; |
| | | } |
| | | this.ticks.push(tick); |
| | | this.ticksContainer.appendChild(tick); |
| | | } |
| | | |
| | | sliderTrackSelection.className += " tick-slider-selection"; |
| | | } |
| | | |
| | | this.tickLabels = []; |
| | | if (Array.isArray(this.options.ticks_labels) && this.options.ticks_labels.length > 0) { |
| | | this.tickLabelContainer = document.createElement('div'); |
| | | this.tickLabelContainer.className = 'slider-tick-label-container'; |
| | | |
| | | for (i = 0; i < this.options.ticks_labels.length; i++) { |
| | | var label = document.createElement('div'); |
| | | var noTickPositionsSpecified = this.options.ticks_positions.length === 0; |
| | | var tickLabelsIndex = this.options.reversed && noTickPositionsSpecified ? this.options.ticks_labels.length - (i + 1) : i; |
| | | label.className = 'slider-tick-label'; |
| | | label.innerHTML = this.options.ticks_labels[tickLabelsIndex]; |
| | | |
| | | this.tickLabels.push(label); |
| | | this.tickLabelContainer.appendChild(label); |
| | | } |
| | | } |
| | | |
| | | var createAndAppendTooltipSubElements = function createAndAppendTooltipSubElements(tooltipElem) { |
| | | var arrow = document.createElement("div"); |
| | | arrow.className = "tooltip-arrow"; |
| | | |
| | | var inner = document.createElement("div"); |
| | | inner.className = "tooltip-inner"; |
| | | |
| | | tooltipElem.appendChild(arrow); |
| | | tooltipElem.appendChild(inner); |
| | | }; |
| | | |
| | | /* Create tooltip elements */ |
| | | var sliderTooltip = document.createElement("div"); |
| | | sliderTooltip.className = "tooltip tooltip-main"; |
| | | sliderTooltip.setAttribute('role', 'presentation'); |
| | | createAndAppendTooltipSubElements(sliderTooltip); |
| | | |
| | | var sliderTooltipMin = document.createElement("div"); |
| | | sliderTooltipMin.className = "tooltip tooltip-min"; |
| | | sliderTooltipMin.setAttribute('role', 'presentation'); |
| | | createAndAppendTooltipSubElements(sliderTooltipMin); |
| | | |
| | | var sliderTooltipMax = document.createElement("div"); |
| | | sliderTooltipMax.className = "tooltip tooltip-max"; |
| | | sliderTooltipMax.setAttribute('role', 'presentation'); |
| | | createAndAppendTooltipSubElements(sliderTooltipMax); |
| | | |
| | | /* Append components to sliderElem */ |
| | | this.sliderElem.appendChild(sliderTrack); |
| | | this.sliderElem.appendChild(sliderTooltip); |
| | | this.sliderElem.appendChild(sliderTooltipMin); |
| | | this.sliderElem.appendChild(sliderTooltipMax); |
| | | |
| | | if (this.tickLabelContainer) { |
| | | this.sliderElem.appendChild(this.tickLabelContainer); |
| | | } |
| | | if (this.ticksContainer) { |
| | | this.sliderElem.appendChild(this.ticksContainer); |
| | | } |
| | | |
| | | this.sliderElem.appendChild(sliderMinHandle); |
| | | this.sliderElem.appendChild(sliderMaxHandle); |
| | | |
| | | /* Append slider element to parent container, right before the original <input> element */ |
| | | parent.insertBefore(this.sliderElem, this.element); |
| | | |
| | | /* Hide original <input> element */ |
| | | this.element.style.display = "none"; |
| | | } |
| | | /* If JQuery exists, cache JQ references */ |
| | | if ($) { |
| | | this.$element = $(this.element); |
| | | this.$sliderElem = $(this.sliderElem); |
| | | } |
| | | |
| | | /************************************************* |
| | | Setup |
| | | **************************************************/ |
| | | this.eventToCallbackMap = {}; |
| | | this.sliderElem.id = this.options.id; |
| | | |
| | | this.touchCapable = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch; |
| | | |
| | | this.touchX = 0; |
| | | this.touchY = 0; |
| | | |
| | | this.tooltip = this.sliderElem.querySelector('.tooltip-main'); |
| | | this.tooltipInner = this.tooltip.querySelector('.tooltip-inner'); |
| | | |
| | | this.tooltip_min = this.sliderElem.querySelector('.tooltip-min'); |
| | | this.tooltipInner_min = this.tooltip_min.querySelector('.tooltip-inner'); |
| | | |
| | | this.tooltip_max = this.sliderElem.querySelector('.tooltip-max'); |
| | | this.tooltipInner_max = this.tooltip_max.querySelector('.tooltip-inner'); |
| | | |
| | | if (SliderScale[this.options.scale]) { |
| | | this.options.scale = SliderScale[this.options.scale]; |
| | | } |
| | | |
| | | if (updateSlider === true) { |
| | | // Reset classes |
| | | this._removeClass(this.sliderElem, 'slider-horizontal'); |
| | | this._removeClass(this.sliderElem, 'slider-vertical'); |
| | | this._removeClass(this.sliderElem, 'slider-rtl'); |
| | | this._removeClass(this.tooltip, 'hide'); |
| | | this._removeClass(this.tooltip_min, 'hide'); |
| | | this._removeClass(this.tooltip_max, 'hide'); |
| | | |
| | | // Undo existing inline styles for track |
| | | ["left", "right", "top", "width", "height"].forEach(function (prop) { |
| | | this._removeProperty(this.trackLow, prop); |
| | | this._removeProperty(this.trackSelection, prop); |
| | | this._removeProperty(this.trackHigh, prop); |
| | | }, this); |
| | | |
| | | // Undo inline styles on handles |
| | | [this.handle1, this.handle2].forEach(function (handle) { |
| | | this._removeProperty(handle, 'left'); |
| | | this._removeProperty(handle, 'right'); |
| | | this._removeProperty(handle, 'top'); |
| | | }, this); |
| | | |
| | | // Undo inline styles and classes on tooltips |
| | | [this.tooltip, this.tooltip_min, this.tooltip_max].forEach(function (tooltip) { |
| | | this._removeProperty(tooltip, 'left'); |
| | | this._removeProperty(tooltip, 'right'); |
| | | this._removeProperty(tooltip, 'top'); |
| | | |
| | | this._removeClass(tooltip, 'right'); |
| | | this._removeClass(tooltip, 'left'); |
| | | this._removeClass(tooltip, 'top'); |
| | | }, this); |
| | | } |
| | | |
| | | if (this.options.orientation === 'vertical') { |
| | | this._addClass(this.sliderElem, 'slider-vertical'); |
| | | this.stylePos = 'top'; |
| | | this.mousePos = 'pageY'; |
| | | this.sizePos = 'offsetHeight'; |
| | | } else { |
| | | this._addClass(this.sliderElem, 'slider-horizontal'); |
| | | this.sliderElem.style.width = origWidth; |
| | | this.options.orientation = 'horizontal'; |
| | | if (this.options.rtl) { |
| | | this.stylePos = 'right'; |
| | | } else { |
| | | this.stylePos = 'left'; |
| | | } |
| | | this.mousePos = 'clientX'; |
| | | this.sizePos = 'offsetWidth'; |
| | | } |
| | | // specific rtl class |
| | | if (this.options.rtl) { |
| | | this._addClass(this.sliderElem, 'slider-rtl'); |
| | | } |
| | | this._setTooltipPosition(); |
| | | /* In case ticks are specified, overwrite the min and max bounds */ |
| | | if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { |
| | | if (!isMaxSet) { |
| | | this.options.max = Math.max.apply(Math, this.options.ticks); |
| | | } |
| | | if (!isMinSet) { |
| | | this.options.min = Math.min.apply(Math, this.options.ticks); |
| | | } |
| | | } |
| | | |
| | | if (Array.isArray(this.options.value)) { |
| | | this.options.range = true; |
| | | this._state.value = this.options.value; |
| | | } else if (this.options.range) { |
| | | // User wants a range, but value is not an array |
| | | this._state.value = [this.options.value, this.options.max]; |
| | | } else { |
| | | this._state.value = this.options.value; |
| | | } |
| | | |
| | | this.trackLow = sliderTrackLow || this.trackLow; |
| | | this.trackSelection = sliderTrackSelection || this.trackSelection; |
| | | this.trackHigh = sliderTrackHigh || this.trackHigh; |
| | | |
| | | if (this.options.selection === 'none') { |
| | | this._addClass(this.trackLow, 'hide'); |
| | | this._addClass(this.trackSelection, 'hide'); |
| | | this._addClass(this.trackHigh, 'hide'); |
| | | } else if (this.options.selection === 'after' || this.options.selection === 'before') { |
| | | this._removeClass(this.trackLow, 'hide'); |
| | | this._removeClass(this.trackSelection, 'hide'); |
| | | this._removeClass(this.trackHigh, 'hide'); |
| | | } |
| | | |
| | | this.handle1 = sliderMinHandle || this.handle1; |
| | | this.handle2 = sliderMaxHandle || this.handle2; |
| | | |
| | | if (updateSlider === true) { |
| | | // Reset classes |
| | | this._removeClass(this.handle1, 'round triangle'); |
| | | this._removeClass(this.handle2, 'round triangle hide'); |
| | | |
| | | for (i = 0; i < this.ticks.length; i++) { |
| | | this._removeClass(this.ticks[i], 'round triangle hide'); |
| | | } |
| | | } |
| | | |
| | | var availableHandleModifiers = ['round', 'triangle', 'custom']; |
| | | var isValidHandleType = availableHandleModifiers.indexOf(this.options.handle) !== -1; |
| | | if (isValidHandleType) { |
| | | this._addClass(this.handle1, this.options.handle); |
| | | this._addClass(this.handle2, this.options.handle); |
| | | |
| | | for (i = 0; i < this.ticks.length; i++) { |
| | | this._addClass(this.ticks[i], this.options.handle); |
| | | } |
| | | } |
| | | |
| | | this._state.offset = this._offset(this.sliderElem); |
| | | this._state.size = this.sliderElem[this.sizePos]; |
| | | this.setValue(this._state.value); |
| | | |
| | | /****************************************** |
| | | Bind Event Listeners |
| | | ******************************************/ |
| | | |
| | | // Bind keyboard handlers |
| | | this.handle1Keydown = this._keydown.bind(this, 0); |
| | | this.handle1.addEventListener("keydown", this.handle1Keydown, false); |
| | | |
| | | this.handle2Keydown = this._keydown.bind(this, 1); |
| | | this.handle2.addEventListener("keydown", this.handle2Keydown, false); |
| | | |
| | | this.mousedown = this._mousedown.bind(this); |
| | | this.touchstart = this._touchstart.bind(this); |
| | | this.touchmove = this._touchmove.bind(this); |
| | | |
| | | if (this.touchCapable) { |
| | | this.sliderElem.addEventListener("touchstart", this.touchstart, false); |
| | | this.sliderElem.addEventListener("touchmove", this.touchmove, false); |
| | | } |
| | | |
| | | this.sliderElem.addEventListener("mousedown", this.mousedown, false); |
| | | |
| | | // Bind window handlers |
| | | this.resize = this._resize.bind(this); |
| | | window.addEventListener("resize", this.resize, false); |
| | | |
| | | // Bind tooltip-related handlers |
| | | if (this.options.tooltip === 'hide') { |
| | | this._addClass(this.tooltip, 'hide'); |
| | | this._addClass(this.tooltip_min, 'hide'); |
| | | this._addClass(this.tooltip_max, 'hide'); |
| | | } else if (this.options.tooltip === 'always') { |
| | | this._showTooltip(); |
| | | this._alwaysShowTooltip = true; |
| | | } else { |
| | | this.showTooltip = this._showTooltip.bind(this); |
| | | this.hideTooltip = this._hideTooltip.bind(this); |
| | | |
| | | if (this.options.ticks_tooltip) { |
| | | var callbackHandle = this._addTickListener(); |
| | | //create handle1 listeners and store references in map |
| | | var mouseEnter = callbackHandle.addMouseEnter(this, this.handle1); |
| | | var mouseLeave = callbackHandle.addMouseLeave(this, this.handle1); |
| | | this.handleCallbackMap.handle1 = { |
| | | mouseEnter: mouseEnter, |
| | | mouseLeave: mouseLeave |
| | | }; |
| | | //create handle2 listeners and store references in map |
| | | mouseEnter = callbackHandle.addMouseEnter(this, this.handle2); |
| | | mouseLeave = callbackHandle.addMouseLeave(this, this.handle2); |
| | | this.handleCallbackMap.handle2 = { |
| | | mouseEnter: mouseEnter, |
| | | mouseLeave: mouseLeave |
| | | }; |
| | | } else { |
| | | this.sliderElem.addEventListener("mouseenter", this.showTooltip, false); |
| | | this.sliderElem.addEventListener("mouseleave", this.hideTooltip, false); |
| | | |
| | | if (this.touchCapable) { |
| | | this.sliderElem.addEventListener("touchstart", this.showTooltip, false); |
| | | this.sliderElem.addEventListener("touchmove", this.showTooltip, false); |
| | | this.sliderElem.addEventListener("touchend", this.hideTooltip, false); |
| | | } |
| | | } |
| | | |
| | | this.handle1.addEventListener("focus", this.showTooltip, false); |
| | | this.handle1.addEventListener("blur", this.hideTooltip, false); |
| | | |
| | | this.handle2.addEventListener("focus", this.showTooltip, false); |
| | | this.handle2.addEventListener("blur", this.hideTooltip, false); |
| | | |
| | | if (this.touchCapable) { |
| | | this.handle1.addEventListener("touchstart", this.showTooltip, false); |
| | | this.handle1.addEventListener("touchmove", this.showTooltip, false); |
| | | this.handle1.addEventListener("touchend", this.hideTooltip, false); |
| | | |
| | | this.handle2.addEventListener("touchstart", this.showTooltip, false); |
| | | this.handle2.addEventListener("touchmove", this.showTooltip, false); |
| | | this.handle2.addEventListener("touchend", this.hideTooltip, false); |
| | | } |
| | | } |
| | | |
| | | if (this.options.enabled) { |
| | | this.enable(); |
| | | } else { |
| | | this.disable(); |
| | | } |
| | | } |
| | | |
| | | /************************************************* |
| | | INSTANCE PROPERTIES/METHODS |
| | | - Any methods bound to the prototype are considered |
| | | part of the plugin's `public` interface |
| | | **************************************************/ |
| | | Slider.prototype = { |
| | | _init: function _init() {}, // NOTE: Must exist to support bridget |
| | | |
| | | constructor: Slider, |
| | | |
| | | defaultOptions: { |
| | | id: "", |
| | | min: 0, |
| | | max: 10, |
| | | step: 1, |
| | | precision: 0, |
| | | orientation: 'horizontal', |
| | | value: 5, |
| | | range: false, |
| | | selection: 'before', |
| | | tooltip: 'show', |
| | | tooltip_split: false, |
| | | lock_to_ticks: false, |
| | | handle: 'round', |
| | | reversed: false, |
| | | rtl: 'auto', |
| | | enabled: true, |
| | | formatter: function formatter(val) { |
| | | if (Array.isArray(val)) { |
| | | return val[0] + " : " + val[1]; |
| | | } else { |
| | | return val; |
| | | } |
| | | }, |
| | | natural_arrow_keys: false, |
| | | ticks: [], |
| | | ticks_positions: [], |
| | | ticks_labels: [], |
| | | ticks_snap_bounds: 0, |
| | | ticks_tooltip: false, |
| | | scale: 'linear', |
| | | focus: false, |
| | | tooltip_position: null, |
| | | labelledby: null, |
| | | rangeHighlights: [] |
| | | }, |
| | | |
| | | getElement: function getElement() { |
| | | return this.sliderElem; |
| | | }, |
| | | |
| | | getValue: function getValue() { |
| | | if (this.options.range) { |
| | | return this._state.value; |
| | | } else { |
| | | return this._state.value[0]; |
| | | } |
| | | }, |
| | | |
| | | setValue: function setValue(val, triggerSlideEvent, triggerChangeEvent) { |
| | | if (!val) { |
| | | val = 0; |
| | | } |
| | | var oldValue = this.getValue(); |
| | | this._state.value = this._validateInputValue(val); |
| | | var applyPrecision = this._applyPrecision.bind(this); |
| | | |
| | | if (this.options.range) { |
| | | this._state.value[0] = applyPrecision(this._state.value[0]); |
| | | this._state.value[1] = applyPrecision(this._state.value[1]); |
| | | |
| | | if (this.ticksAreValid && this.options.lock_to_ticks) { |
| | | this._state.value[0] = this.options.ticks[this._getClosestTickIndex(this._state.value[0])]; |
| | | this._state.value[1] = this.options.ticks[this._getClosestTickIndex(this._state.value[1])]; |
| | | } |
| | | |
| | | this._state.value[0] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[0])); |
| | | this._state.value[1] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[1])); |
| | | } else { |
| | | this._state.value = applyPrecision(this._state.value); |
| | | |
| | | if (this.ticksAreValid && this.options.lock_to_ticks) { |
| | | this._state.value = this.options.ticks[this._getClosestTickIndex(this._state.value)]; |
| | | } |
| | | |
| | | this._state.value = [Math.max(this.options.min, Math.min(this.options.max, this._state.value))]; |
| | | this._addClass(this.handle2, 'hide'); |
| | | if (this.options.selection === 'after') { |
| | | this._state.value[1] = this.options.max; |
| | | } else { |
| | | this._state.value[1] = this.options.min; |
| | | } |
| | | } |
| | | |
| | | // Determine which ticks the handle(s) are set at (if applicable) |
| | | this._setTickIndex(); |
| | | |
| | | if (this.options.max > this.options.min) { |
| | | this._state.percentage = [this._toPercentage(this._state.value[0]), this._toPercentage(this._state.value[1]), this.options.step * 100 / (this.options.max - this.options.min)]; |
| | | } else { |
| | | this._state.percentage = [0, 0, 100]; |
| | | } |
| | | |
| | | this._layout(); |
| | | var newValue = this.options.range ? this._state.value : this._state.value[0]; |
| | | |
| | | this._setDataVal(newValue); |
| | | if (triggerSlideEvent === true) { |
| | | this._trigger('slide', newValue); |
| | | } |
| | | |
| | | var hasChanged = false; |
| | | if (Array.isArray(newValue)) { |
| | | hasChanged = oldValue[0] !== newValue[0] || oldValue[1] !== newValue[1]; |
| | | } else { |
| | | hasChanged = oldValue !== newValue; |
| | | } |
| | | |
| | | if (hasChanged && triggerChangeEvent === true) { |
| | | this._trigger('change', { |
| | | oldValue: oldValue, |
| | | newValue: newValue |
| | | }); |
| | | } |
| | | |
| | | return this; |
| | | }, |
| | | |
| | | destroy: function destroy() { |
| | | // Remove event handlers on slider elements |
| | | this._removeSliderEventHandlers(); |
| | | |
| | | // Remove the slider from the DOM |
| | | this.sliderElem.parentNode.removeChild(this.sliderElem); |
| | | /* Show original <input> element */ |
| | | this.element.style.display = ""; |
| | | |
| | | // Clear out custom event bindings |
| | | this._cleanUpEventCallbacksMap(); |
| | | |
| | | // Remove data values |
| | | this.element.removeAttribute("data"); |
| | | |
| | | // Remove JQuery handlers/data |
| | | if ($) { |
| | | this._unbindJQueryEventHandlers(); |
| | | if (autoRegisterNamespace === NAMESPACE_MAIN) { |
| | | this.$element.removeData(autoRegisterNamespace); |
| | | } |
| | | this.$element.removeData(NAMESPACE_ALTERNATE); |
| | | } |
| | | }, |
| | | |
| | | disable: function disable() { |
| | | this._state.enabled = false; |
| | | this.handle1.removeAttribute("tabindex"); |
| | | this.handle2.removeAttribute("tabindex"); |
| | | this._addClass(this.sliderElem, 'slider-disabled'); |
| | | this._trigger('slideDisabled'); |
| | | |
| | | return this; |
| | | }, |
| | | |
| | | enable: function enable() { |
| | | this._state.enabled = true; |
| | | this.handle1.setAttribute("tabindex", 0); |
| | | this.handle2.setAttribute("tabindex", 0); |
| | | this._removeClass(this.sliderElem, 'slider-disabled'); |
| | | this._trigger('slideEnabled'); |
| | | |
| | | return this; |
| | | }, |
| | | |
| | | toggle: function toggle() { |
| | | if (this._state.enabled) { |
| | | this.disable(); |
| | | } else { |
| | | this.enable(); |
| | | } |
| | | return this; |
| | | }, |
| | | |
| | | isEnabled: function isEnabled() { |
| | | return this._state.enabled; |
| | | }, |
| | | |
| | | on: function on(evt, callback) { |
| | | this._bindNonQueryEventHandler(evt, callback); |
| | | return this; |
| | | }, |
| | | |
| | | off: function off(evt, callback) { |
| | | if ($) { |
| | | this.$element.off(evt, callback); |
| | | this.$sliderElem.off(evt, callback); |
| | | } else { |
| | | this._unbindNonQueryEventHandler(evt, callback); |
| | | } |
| | | }, |
| | | |
| | | getAttribute: function getAttribute(attribute) { |
| | | if (attribute) { |
| | | return this.options[attribute]; |
| | | } else { |
| | | return this.options; |
| | | } |
| | | }, |
| | | |
| | | setAttribute: function setAttribute(attribute, value) { |
| | | this.options[attribute] = value; |
| | | return this; |
| | | }, |
| | | |
| | | refresh: function refresh(options) { |
| | | var currentValue = this.getValue(); |
| | | this._removeSliderEventHandlers(); |
| | | createNewSlider.call(this, this.element, this.options); |
| | | // Don't reset slider's value on refresh if `useCurrentValue` is true |
| | | if (options && options.useCurrentValue === true) { |
| | | this.setValue(currentValue); |
| | | } |
| | | if ($) { |
| | | // Bind new instance of slider to the element |
| | | if (autoRegisterNamespace === NAMESPACE_MAIN) { |
| | | $.data(this.element, NAMESPACE_MAIN, this); |
| | | $.data(this.element, NAMESPACE_ALTERNATE, this); |
| | | } else { |
| | | $.data(this.element, NAMESPACE_ALTERNATE, this); |
| | | } |
| | | } |
| | | return this; |
| | | }, |
| | | |
| | | relayout: function relayout() { |
| | | this._resize(); |
| | | return this; |
| | | }, |
| | | |
| | | /******************************+ |
| | | HELPERS |
| | | - Any method that is not part of the public interface. |
| | | - Place it underneath this comment block and write its signature like so: |
| | | _fnName : function() {...} |
| | | ********************************/ |
| | | _removeTooltipListener: function _removeTooltipListener(event, handler) { |
| | | this.handle1.removeEventListener(event, handler, false); |
| | | this.handle2.removeEventListener(event, handler, false); |
| | | }, |
| | | _removeSliderEventHandlers: function _removeSliderEventHandlers() { |
| | | // Remove keydown event listeners |
| | | this.handle1.removeEventListener("keydown", this.handle1Keydown, false); |
| | | this.handle2.removeEventListener("keydown", this.handle2Keydown, false); |
| | | |
| | | //remove the listeners from the ticks and handles if they had their own listeners |
| | | if (this.options.ticks_tooltip) { |
| | | var ticks = this.ticksContainer.getElementsByClassName('slider-tick'); |
| | | for (var i = 0; i < ticks.length; i++) { |
| | | ticks[i].removeEventListener('mouseenter', this.ticksCallbackMap[i].mouseEnter, false); |
| | | ticks[i].removeEventListener('mouseleave', this.ticksCallbackMap[i].mouseLeave, false); |
| | | } |
| | | if (this.handleCallbackMap.handle1 && this.handleCallbackMap.handle2) { |
| | | this.handle1.removeEventListener('mouseenter', this.handleCallbackMap.handle1.mouseEnter, false); |
| | | this.handle2.removeEventListener('mouseenter', this.handleCallbackMap.handle2.mouseEnter, false); |
| | | this.handle1.removeEventListener('mouseleave', this.handleCallbackMap.handle1.mouseLeave, false); |
| | | this.handle2.removeEventListener('mouseleave', this.handleCallbackMap.handle2.mouseLeave, false); |
| | | } |
| | | } |
| | | |
| | | this.handleCallbackMap = null; |
| | | this.ticksCallbackMap = null; |
| | | |
| | | if (this.showTooltip) { |
| | | this._removeTooltipListener("focus", this.showTooltip); |
| | | } |
| | | if (this.hideTooltip) { |
| | | this._removeTooltipListener("blur", this.hideTooltip); |
| | | } |
| | | |
| | | // Remove event listeners from sliderElem |
| | | if (this.showTooltip) { |
| | | this.sliderElem.removeEventListener("mouseenter", this.showTooltip, false); |
| | | } |
| | | if (this.hideTooltip) { |
| | | this.sliderElem.removeEventListener("mouseleave", this.hideTooltip, false); |
| | | } |
| | | |
| | | this.sliderElem.removeEventListener("mousedown", this.mousedown, false); |
| | | |
| | | if (this.touchCapable) { |
| | | // Remove touch event listeners from handles |
| | | if (this.showTooltip) { |
| | | this.handle1.removeEventListener("touchstart", this.showTooltip, false); |
| | | this.handle1.removeEventListener("touchmove", this.showTooltip, false); |
| | | this.handle2.removeEventListener("touchstart", this.showTooltip, false); |
| | | this.handle2.removeEventListener("touchmove", this.showTooltip, false); |
| | | } |
| | | if (this.hideTooltip) { |
| | | this.handle1.removeEventListener("touchend", this.hideTooltip, false); |
| | | this.handle2.removeEventListener("touchend", this.hideTooltip, false); |
| | | } |
| | | |
| | | // Remove event listeners from sliderElem |
| | | if (this.showTooltip) { |
| | | this.sliderElem.removeEventListener("touchstart", this.showTooltip, false); |
| | | this.sliderElem.removeEventListener("touchmove", this.showTooltip, false); |
| | | } |
| | | if (this.hideTooltip) { |
| | | this.sliderElem.removeEventListener("touchend", this.hideTooltip, false); |
| | | } |
| | | |
| | | this.sliderElem.removeEventListener("touchstart", this.touchstart, false); |
| | | this.sliderElem.removeEventListener("touchmove", this.touchmove, false); |
| | | } |
| | | |
| | | // Remove window event listener |
| | | window.removeEventListener("resize", this.resize, false); |
| | | }, |
| | | _bindNonQueryEventHandler: function _bindNonQueryEventHandler(evt, callback) { |
| | | if (this.eventToCallbackMap[evt] === undefined) { |
| | | this.eventToCallbackMap[evt] = []; |
| | | } |
| | | this.eventToCallbackMap[evt].push(callback); |
| | | }, |
| | | _unbindNonQueryEventHandler: function _unbindNonQueryEventHandler(evt, callback) { |
| | | var callbacks = this.eventToCallbackMap[evt]; |
| | | if (callbacks !== undefined) { |
| | | for (var i = 0; i < callbacks.length; i++) { |
| | | if (callbacks[i] === callback) { |
| | | callbacks.splice(i, 1); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | _cleanUpEventCallbacksMap: function _cleanUpEventCallbacksMap() { |
| | | var eventNames = Object.keys(this.eventToCallbackMap); |
| | | for (var i = 0; i < eventNames.length; i++) { |
| | | var eventName = eventNames[i]; |
| | | delete this.eventToCallbackMap[eventName]; |
| | | } |
| | | }, |
| | | _showTooltip: function _showTooltip() { |
| | | if (this.options.tooltip_split === false) { |
| | | this._addClass(this.tooltip, 'in'); |
| | | this.tooltip_min.style.display = 'none'; |
| | | this.tooltip_max.style.display = 'none'; |
| | | } else { |
| | | this._addClass(this.tooltip_min, 'in'); |
| | | this._addClass(this.tooltip_max, 'in'); |
| | | this.tooltip.style.display = 'none'; |
| | | } |
| | | this._state.over = true; |
| | | }, |
| | | _hideTooltip: function _hideTooltip() { |
| | | if (this._state.inDrag === false && this._alwaysShowTooltip !== true) { |
| | | this._removeClass(this.tooltip, 'in'); |
| | | this._removeClass(this.tooltip_min, 'in'); |
| | | this._removeClass(this.tooltip_max, 'in'); |
| | | } |
| | | this._state.over = false; |
| | | }, |
| | | _setToolTipOnMouseOver: function _setToolTipOnMouseOver(tempState) { |
| | | var self = this; |
| | | var formattedTooltipVal = this.options.formatter(!tempState ? this._state.value[0] : tempState.value[0]); |
| | | var positionPercentages = !tempState ? getPositionPercentages(this._state, this.options.reversed) : getPositionPercentages(tempState, this.options.reversed); |
| | | this._setText(this.tooltipInner, formattedTooltipVal); |
| | | |
| | | this.tooltip.style[this.stylePos] = positionPercentages[0] + "%"; |
| | | |
| | | function getPositionPercentages(state, reversed) { |
| | | if (reversed) { |
| | | return [100 - state.percentage[0], self.options.range ? 100 - state.percentage[1] : state.percentage[1]]; |
| | | } |
| | | return [state.percentage[0], state.percentage[1]]; |
| | | } |
| | | }, |
| | | _copyState: function _copyState() { |
| | | return { |
| | | value: [this._state.value[0], this._state.value[1]], |
| | | enabled: this._state.enabled, |
| | | offset: this._state.offset, |
| | | size: this._state.size, |
| | | percentage: [this._state.percentage[0], this._state.percentage[1], this._state.percentage[2]], |
| | | inDrag: this._state.inDrag, |
| | | over: this._state.over, |
| | | // deleted or null'd keys |
| | | dragged: this._state.dragged, |
| | | keyCtrl: this._state.keyCtrl |
| | | }; |
| | | }, |
| | | _addTickListener: function _addTickListener() { |
| | | return { |
| | | addMouseEnter: function addMouseEnter(reference, element, index) { |
| | | var enter = function enter() { |
| | | var tempState = reference._copyState(); |
| | | // Which handle is being hovered over? |
| | | var val = element === reference.handle1 ? tempState.value[0] : tempState.value[1]; |
| | | var per = void 0; |
| | | |
| | | // Setup value and percentage for tick's 'mouseenter' |
| | | if (index !== undefined) { |
| | | val = reference.options.ticks[index]; |
| | | per = reference.options.ticks_positions.length > 0 && reference.options.ticks_positions[index] || reference._toPercentage(reference.options.ticks[index]); |
| | | } else { |
| | | per = reference._toPercentage(val); |
| | | } |
| | | |
| | | tempState.value[0] = val; |
| | | tempState.percentage[0] = per; |
| | | reference._setToolTipOnMouseOver(tempState); |
| | | reference._showTooltip(); |
| | | }; |
| | | element.addEventListener("mouseenter", enter, false); |
| | | return enter; |
| | | }, |
| | | addMouseLeave: function addMouseLeave(reference, element) { |
| | | var leave = function leave() { |
| | | reference._hideTooltip(); |
| | | }; |
| | | element.addEventListener("mouseleave", leave, false); |
| | | return leave; |
| | | } |
| | | }; |
| | | }, |
| | | _layout: function _layout() { |
| | | var positionPercentages; |
| | | var formattedValue; |
| | | |
| | | if (this.options.reversed) { |
| | | positionPercentages = [100 - this._state.percentage[0], this.options.range ? 100 - this._state.percentage[1] : this._state.percentage[1]]; |
| | | } else { |
| | | positionPercentages = [this._state.percentage[0], this._state.percentage[1]]; |
| | | } |
| | | |
| | | this.handle1.style[this.stylePos] = positionPercentages[0] + "%"; |
| | | this.handle1.setAttribute('aria-valuenow', this._state.value[0]); |
| | | formattedValue = this.options.formatter(this._state.value[0]); |
| | | if (isNaN(formattedValue)) { |
| | | this.handle1.setAttribute('aria-valuetext', formattedValue); |
| | | } else { |
| | | this.handle1.removeAttribute('aria-valuetext'); |
| | | } |
| | | |
| | | this.handle2.style[this.stylePos] = positionPercentages[1] + "%"; |
| | | this.handle2.setAttribute('aria-valuenow', this._state.value[1]); |
| | | formattedValue = this.options.formatter(this._state.value[1]); |
| | | if (isNaN(formattedValue)) { |
| | | this.handle2.setAttribute('aria-valuetext', formattedValue); |
| | | } else { |
| | | this.handle2.removeAttribute('aria-valuetext'); |
| | | } |
| | | |
| | | /* Position highlight range elements */ |
| | | if (this.rangeHighlightElements.length > 0 && Array.isArray(this.options.rangeHighlights) && this.options.rangeHighlights.length > 0) { |
| | | for (var _i = 0; _i < this.options.rangeHighlights.length; _i++) { |
| | | var startPercent = this._toPercentage(this.options.rangeHighlights[_i].start); |
| | | var endPercent = this._toPercentage(this.options.rangeHighlights[_i].end); |
| | | |
| | | if (this.options.reversed) { |
| | | var sp = 100 - endPercent; |
| | | endPercent = 100 - startPercent; |
| | | startPercent = sp; |
| | | } |
| | | |
| | | var currentRange = this._createHighlightRange(startPercent, endPercent); |
| | | |
| | | if (currentRange) { |
| | | if (this.options.orientation === 'vertical') { |
| | | this.rangeHighlightElements[_i].style.top = currentRange.start + "%"; |
| | | this.rangeHighlightElements[_i].style.height = currentRange.size + "%"; |
| | | } else { |
| | | if (this.options.rtl) { |
| | | this.rangeHighlightElements[_i].style.right = currentRange.start + "%"; |
| | | } else { |
| | | this.rangeHighlightElements[_i].style.left = currentRange.start + "%"; |
| | | } |
| | | this.rangeHighlightElements[_i].style.width = currentRange.size + "%"; |
| | | } |
| | | } else { |
| | | this.rangeHighlightElements[_i].style.display = "none"; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* Position ticks and labels */ |
| | | if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { |
| | | |
| | | var styleSize = this.options.orientation === 'vertical' ? 'height' : 'width'; |
| | | var styleMargin; |
| | | if (this.options.orientation === 'vertical') { |
| | | styleMargin = 'marginTop'; |
| | | } else { |
| | | if (this.options.rtl) { |
| | | styleMargin = 'marginRight'; |
| | | } else { |
| | | styleMargin = 'marginLeft'; |
| | | } |
| | | } |
| | | var labelSize = this._state.size / (this.options.ticks.length - 1); |
| | | |
| | | if (this.tickLabelContainer) { |
| | | var extraMargin = 0; |
| | | if (this.options.ticks_positions.length === 0) { |
| | | if (this.options.orientation !== 'vertical') { |
| | | this.tickLabelContainer.style[styleMargin] = -labelSize / 2 + "px"; |
| | | } |
| | | |
| | | extraMargin = this.tickLabelContainer.offsetHeight; |
| | | } else { |
| | | /* Chidren are position absolute, calculate height by finding the max offsetHeight of a child */ |
| | | for (i = 0; i < this.tickLabelContainer.childNodes.length; i++) { |
| | | if (this.tickLabelContainer.childNodes[i].offsetHeight > extraMargin) { |
| | | extraMargin = this.tickLabelContainer.childNodes[i].offsetHeight; |
| | | } |
| | | } |
| | | } |
| | | if (this.options.orientation === 'horizontal') { |
| | | this.sliderElem.style.marginBottom = extraMargin + "px"; |
| | | } |
| | | } |
| | | for (var i = 0; i < this.options.ticks.length; i++) { |
| | | |
| | | var percentage = this.options.ticks_positions[i] || this._toPercentage(this.options.ticks[i]); |
| | | |
| | | if (this.options.reversed) { |
| | | percentage = 100 - percentage; |
| | | } |
| | | |
| | | this.ticks[i].style[this.stylePos] = percentage + "%"; |
| | | |
| | | /* Set class labels to denote whether ticks are in the selection */ |
| | | this._removeClass(this.ticks[i], 'in-selection'); |
| | | if (!this.options.range) { |
| | | if (this.options.selection === 'after' && percentage >= positionPercentages[0]) { |
| | | this._addClass(this.ticks[i], 'in-selection'); |
| | | } else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) { |
| | | this._addClass(this.ticks[i], 'in-selection'); |
| | | } |
| | | } else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) { |
| | | this._addClass(this.ticks[i], 'in-selection'); |
| | | } |
| | | |
| | | if (this.tickLabels[i]) { |
| | | this.tickLabels[i].style[styleSize] = labelSize + "px"; |
| | | |
| | | if (this.options.orientation !== 'vertical' && this.options.ticks_positions[i] !== undefined) { |
| | | this.tickLabels[i].style.position = 'absolute'; |
| | | this.tickLabels[i].style[this.stylePos] = percentage + "%"; |
| | | this.tickLabels[i].style[styleMargin] = -labelSize / 2 + 'px'; |
| | | } else if (this.options.orientation === 'vertical') { |
| | | if (this.options.rtl) { |
| | | this.tickLabels[i].style['marginRight'] = this.sliderElem.offsetWidth + "px"; |
| | | } else { |
| | | this.tickLabels[i].style['marginLeft'] = this.sliderElem.offsetWidth + "px"; |
| | | } |
| | | this.tickLabelContainer.style[styleMargin] = this.sliderElem.offsetWidth / 2 * -1 + 'px'; |
| | | } |
| | | |
| | | /* Set class labels to indicate tick labels are in the selection or selected */ |
| | | this._removeClass(this.tickLabels[i], 'label-in-selection label-is-selection'); |
| | | if (!this.options.range) { |
| | | if (this.options.selection === 'after' && percentage >= positionPercentages[0]) { |
| | | this._addClass(this.tickLabels[i], 'label-in-selection'); |
| | | } else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) { |
| | | this._addClass(this.tickLabels[i], 'label-in-selection'); |
| | | } |
| | | if (percentage === positionPercentages[0]) { |
| | | this._addClass(this.tickLabels[i], 'label-is-selection'); |
| | | } |
| | | } else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) { |
| | | this._addClass(this.tickLabels[i], 'label-in-selection'); |
| | | if (percentage === positionPercentages[0] || positionPercentages[1]) { |
| | | this._addClass(this.tickLabels[i], 'label-is-selection'); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | var formattedTooltipVal; |
| | | |
| | | if (this.options.range) { |
| | | formattedTooltipVal = this.options.formatter(this._state.value); |
| | | this._setText(this.tooltipInner, formattedTooltipVal); |
| | | this.tooltip.style[this.stylePos] = (positionPercentages[1] + positionPercentages[0]) / 2 + "%"; |
| | | |
| | | var innerTooltipMinText = this.options.formatter(this._state.value[0]); |
| | | this._setText(this.tooltipInner_min, innerTooltipMinText); |
| | | |
| | | var innerTooltipMaxText = this.options.formatter(this._state.value[1]); |
| | | this._setText(this.tooltipInner_max, innerTooltipMaxText); |
| | | |
| | | this.tooltip_min.style[this.stylePos] = positionPercentages[0] + "%"; |
| | | |
| | | this.tooltip_max.style[this.stylePos] = positionPercentages[1] + "%"; |
| | | } else { |
| | | formattedTooltipVal = this.options.formatter(this._state.value[0]); |
| | | this._setText(this.tooltipInner, formattedTooltipVal); |
| | | |
| | | this.tooltip.style[this.stylePos] = positionPercentages[0] + "%"; |
| | | } |
| | | |
| | | if (this.options.orientation === 'vertical') { |
| | | this.trackLow.style.top = '0'; |
| | | this.trackLow.style.height = Math.min(positionPercentages[0], positionPercentages[1]) + '%'; |
| | | |
| | | this.trackSelection.style.top = Math.min(positionPercentages[0], positionPercentages[1]) + '%'; |
| | | this.trackSelection.style.height = Math.abs(positionPercentages[0] - positionPercentages[1]) + '%'; |
| | | |
| | | this.trackHigh.style.bottom = '0'; |
| | | this.trackHigh.style.height = 100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1]) + '%'; |
| | | } else { |
| | | if (this.stylePos === 'right') { |
| | | this.trackLow.style.right = '0'; |
| | | } else { |
| | | this.trackLow.style.left = '0'; |
| | | } |
| | | this.trackLow.style.width = Math.min(positionPercentages[0], positionPercentages[1]) + '%'; |
| | | |
| | | if (this.stylePos === 'right') { |
| | | this.trackSelection.style.right = Math.min(positionPercentages[0], positionPercentages[1]) + '%'; |
| | | } else { |
| | | this.trackSelection.style.left = Math.min(positionPercentages[0], positionPercentages[1]) + '%'; |
| | | } |
| | | this.trackSelection.style.width = Math.abs(positionPercentages[0] - positionPercentages[1]) + '%'; |
| | | |
| | | if (this.stylePos === 'right') { |
| | | this.trackHigh.style.left = '0'; |
| | | } else { |
| | | this.trackHigh.style.right = '0'; |
| | | } |
| | | this.trackHigh.style.width = 100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1]) + '%'; |
| | | |
| | | var offset_min = this.tooltip_min.getBoundingClientRect(); |
| | | var offset_max = this.tooltip_max.getBoundingClientRect(); |
| | | |
| | | if (this.options.tooltip_position === 'bottom') { |
| | | if (offset_min.right > offset_max.left) { |
| | | this._removeClass(this.tooltip_max, 'bottom'); |
| | | this._addClass(this.tooltip_max, 'top'); |
| | | this.tooltip_max.style.top = ''; |
| | | this.tooltip_max.style.bottom = 22 + 'px'; |
| | | } else { |
| | | this._removeClass(this.tooltip_max, 'top'); |
| | | this._addClass(this.tooltip_max, 'bottom'); |
| | | this.tooltip_max.style.top = this.tooltip_min.style.top; |
| | | this.tooltip_max.style.bottom = ''; |
| | | } |
| | | } else { |
| | | if (offset_min.right > offset_max.left) { |
| | | this._removeClass(this.tooltip_max, 'top'); |
| | | this._addClass(this.tooltip_max, 'bottom'); |
| | | this.tooltip_max.style.top = 18 + 'px'; |
| | | } else { |
| | | this._removeClass(this.tooltip_max, 'bottom'); |
| | | this._addClass(this.tooltip_max, 'top'); |
| | | this.tooltip_max.style.top = this.tooltip_min.style.top; |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | _createHighlightRange: function _createHighlightRange(start, end) { |
| | | if (this._isHighlightRange(start, end)) { |
| | | if (start > end) { |
| | | return { 'start': end, 'size': start - end }; |
| | | } |
| | | return { 'start': start, 'size': end - start }; |
| | | } |
| | | return null; |
| | | }, |
| | | _isHighlightRange: function _isHighlightRange(start, end) { |
| | | if (0 <= start && start <= 100 && 0 <= end && end <= 100) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | }, |
| | | _resize: function _resize(ev) { |
| | | /*jshint unused:false*/ |
| | | this._state.offset = this._offset(this.sliderElem); |
| | | this._state.size = this.sliderElem[this.sizePos]; |
| | | this._layout(); |
| | | }, |
| | | _removeProperty: function _removeProperty(element, prop) { |
| | | if (element.style.removeProperty) { |
| | | element.style.removeProperty(prop); |
| | | } else { |
| | | element.style.removeAttribute(prop); |
| | | } |
| | | }, |
| | | _mousedown: function _mousedown(ev) { |
| | | if (!this._state.enabled) { |
| | | return false; |
| | | } |
| | | |
| | | if (ev.preventDefault) { |
| | | ev.preventDefault(); |
| | | } |
| | | |
| | | this._state.offset = this._offset(this.sliderElem); |
| | | this._state.size = this.sliderElem[this.sizePos]; |
| | | |
| | | var percentage = this._getPercentage(ev); |
| | | |
| | | if (this.options.range) { |
| | | var diff1 = Math.abs(this._state.percentage[0] - percentage); |
| | | var diff2 = Math.abs(this._state.percentage[1] - percentage); |
| | | this._state.dragged = diff1 < diff2 ? 0 : 1; |
| | | this._adjustPercentageForRangeSliders(percentage); |
| | | } else { |
| | | this._state.dragged = 0; |
| | | } |
| | | |
| | | this._state.percentage[this._state.dragged] = percentage; |
| | | |
| | | if (this.touchCapable) { |
| | | document.removeEventListener("touchmove", this.mousemove, false); |
| | | document.removeEventListener("touchend", this.mouseup, false); |
| | | } |
| | | |
| | | if (this.mousemove) { |
| | | document.removeEventListener("mousemove", this.mousemove, false); |
| | | } |
| | | if (this.mouseup) { |
| | | document.removeEventListener("mouseup", this.mouseup, false); |
| | | } |
| | | |
| | | this.mousemove = this._mousemove.bind(this); |
| | | this.mouseup = this._mouseup.bind(this); |
| | | |
| | | if (this.touchCapable) { |
| | | // Touch: Bind touch events: |
| | | document.addEventListener("touchmove", this.mousemove, false); |
| | | document.addEventListener("touchend", this.mouseup, false); |
| | | } |
| | | // Bind mouse events: |
| | | document.addEventListener("mousemove", this.mousemove, false); |
| | | document.addEventListener("mouseup", this.mouseup, false); |
| | | |
| | | this._state.inDrag = true; |
| | | var newValue = this._calculateValue(); |
| | | |
| | | this._trigger('slideStart', newValue); |
| | | |
| | | this.setValue(newValue, false, true); |
| | | |
| | | ev.returnValue = false; |
| | | |
| | | if (this.options.focus) { |
| | | this._triggerFocusOnHandle(this._state.dragged); |
| | | } |
| | | |
| | | return true; |
| | | }, |
| | | _touchstart: function _touchstart(ev) { |
| | | this._mousedown(ev); |
| | | }, |
| | | _triggerFocusOnHandle: function _triggerFocusOnHandle(handleIdx) { |
| | | if (handleIdx === 0) { |
| | | this.handle1.focus(); |
| | | } |
| | | if (handleIdx === 1) { |
| | | this.handle2.focus(); |
| | | } |
| | | }, |
| | | _keydown: function _keydown(handleIdx, ev) { |
| | | if (!this._state.enabled) { |
| | | return false; |
| | | } |
| | | |
| | | var dir; |
| | | switch (ev.keyCode) { |
| | | case 37: // left |
| | | case 40: |
| | | // down |
| | | dir = -1; |
| | | break; |
| | | case 39: // right |
| | | case 38: |
| | | // up |
| | | dir = 1; |
| | | break; |
| | | } |
| | | if (!dir) { |
| | | return; |
| | | } |
| | | |
| | | // use natural arrow keys instead of from min to max |
| | | if (this.options.natural_arrow_keys) { |
| | | var isHorizontal = this.options.orientation === 'horizontal'; |
| | | var isVertical = this.options.orientation === 'vertical'; |
| | | var isRTL = this.options.rtl; |
| | | var isReversed = this.options.reversed; |
| | | |
| | | if (isHorizontal) { |
| | | if (isRTL) { |
| | | if (!isReversed) { |
| | | dir = -dir; |
| | | } |
| | | } else { |
| | | if (isReversed) { |
| | | dir = -dir; |
| | | } |
| | | } |
| | | } else if (isVertical) { |
| | | if (!isReversed) { |
| | | dir = -dir; |
| | | } |
| | | } |
| | | } |
| | | |
| | | var val; |
| | | if (this.ticksAreValid && this.options.lock_to_ticks) { |
| | | var index = void 0; |
| | | // Find tick index that handle 1/2 is currently on |
| | | index = this.options.ticks.indexOf(this._state.value[handleIdx]); |
| | | if (index === -1) { |
| | | // Set default to first tick |
| | | index = 0; |
| | | window.console.warn('(lock_to_ticks) _keydown: index should not be -1'); |
| | | } |
| | | index += dir; |
| | | index = Math.max(0, Math.min(this.options.ticks.length - 1, index)); |
| | | val = this.options.ticks[index]; |
| | | } else { |
| | | val = this._state.value[handleIdx] + dir * this.options.step; |
| | | } |
| | | var percentage = this._toPercentage(val); |
| | | this._state.keyCtrl = handleIdx; |
| | | if (this.options.range) { |
| | | this._adjustPercentageForRangeSliders(percentage); |
| | | var val1 = !this._state.keyCtrl ? val : this._state.value[0]; |
| | | var val2 = this._state.keyCtrl ? val : this._state.value[1]; |
| | | // Restrict values within limits |
| | | val = [Math.max(this.options.min, Math.min(this.options.max, val1)), Math.max(this.options.min, Math.min(this.options.max, val2))]; |
| | | } else { |
| | | val = Math.max(this.options.min, Math.min(this.options.max, val)); |
| | | } |
| | | |
| | | this._trigger('slideStart', val); |
| | | |
| | | this.setValue(val, true, true); |
| | | |
| | | this._trigger('slideStop', val); |
| | | |
| | | this._pauseEvent(ev); |
| | | delete this._state.keyCtrl; |
| | | |
| | | return false; |
| | | }, |
| | | _pauseEvent: function _pauseEvent(ev) { |
| | | if (ev.stopPropagation) { |
| | | ev.stopPropagation(); |
| | | } |
| | | if (ev.preventDefault) { |
| | | ev.preventDefault(); |
| | | } |
| | | ev.cancelBubble = true; |
| | | ev.returnValue = false; |
| | | }, |
| | | _mousemove: function _mousemove(ev) { |
| | | if (!this._state.enabled) { |
| | | return false; |
| | | } |
| | | |
| | | var percentage = this._getPercentage(ev); |
| | | this._adjustPercentageForRangeSliders(percentage); |
| | | this._state.percentage[this._state.dragged] = percentage; |
| | | |
| | | var val = this._calculateValue(true); |
| | | this.setValue(val, true, true); |
| | | |
| | | return false; |
| | | }, |
| | | _touchmove: function _touchmove(ev) { |
| | | if (ev.changedTouches === undefined) { |
| | | return; |
| | | } |
| | | |
| | | // Prevent page from scrolling and only drag the slider |
| | | if (ev.preventDefault) { |
| | | ev.preventDefault(); |
| | | } |
| | | }, |
| | | _adjustPercentageForRangeSliders: function _adjustPercentageForRangeSliders(percentage) { |
| | | if (this.options.range) { |
| | | var precision = this._getNumDigitsAfterDecimalPlace(percentage); |
| | | precision = precision ? precision - 1 : 0; |
| | | var percentageWithAdjustedPrecision = this._applyToFixedAndParseFloat(percentage, precision); |
| | | if (this._state.dragged === 0 && this._applyToFixedAndParseFloat(this._state.percentage[1], precision) < percentageWithAdjustedPrecision) { |
| | | this._state.percentage[0] = this._state.percentage[1]; |
| | | this._state.dragged = 1; |
| | | } else if (this._state.dragged === 1 && this._applyToFixedAndParseFloat(this._state.percentage[0], precision) > percentageWithAdjustedPrecision) { |
| | | this._state.percentage[1] = this._state.percentage[0]; |
| | | this._state.dragged = 0; |
| | | } else if (this._state.keyCtrl === 0 && this._toPercentage(this._state.value[1]) < percentage) { |
| | | this._state.percentage[0] = this._state.percentage[1]; |
| | | this._state.keyCtrl = 1; |
| | | this.handle2.focus(); |
| | | } else if (this._state.keyCtrl === 1 && this._toPercentage(this._state.value[0]) > percentage) { |
| | | this._state.percentage[1] = this._state.percentage[0]; |
| | | this._state.keyCtrl = 0; |
| | | this.handle1.focus(); |
| | | } |
| | | } |
| | | }, |
| | | _mouseup: function _mouseup(ev) { |
| | | if (!this._state.enabled) { |
| | | return false; |
| | | } |
| | | |
| | | var percentage = this._getPercentage(ev); |
| | | this._adjustPercentageForRangeSliders(percentage); |
| | | this._state.percentage[this._state.dragged] = percentage; |
| | | |
| | | if (this.touchCapable) { |
| | | // Touch: Unbind touch event handlers: |
| | | document.removeEventListener("touchmove", this.mousemove, false); |
| | | document.removeEventListener("touchend", this.mouseup, false); |
| | | } |
| | | // Unbind mouse event handlers: |
| | | document.removeEventListener("mousemove", this.mousemove, false); |
| | | document.removeEventListener("mouseup", this.mouseup, false); |
| | | |
| | | this._state.inDrag = false; |
| | | if (this._state.over === false) { |
| | | this._hideTooltip(); |
| | | } |
| | | var val = this._calculateValue(true); |
| | | |
| | | this.setValue(val, false, true); |
| | | this._trigger('slideStop', val); |
| | | |
| | | // No longer need 'dragged' after mouse up |
| | | this._state.dragged = null; |
| | | |
| | | return false; |
| | | }, |
| | | _setValues: function _setValues(index, val) { |
| | | var comp = 0 === index ? 0 : 100; |
| | | if (this._state.percentage[index] !== comp) { |
| | | val.data[index] = this._toValue(this._state.percentage[index]); |
| | | val.data[index] = this._applyPrecision(val.data[index]); |
| | | } |
| | | }, |
| | | _calculateValue: function _calculateValue(snapToClosestTick) { |
| | | var val = {}; |
| | | if (this.options.range) { |
| | | val.data = [this.options.min, this.options.max]; |
| | | this._setValues(0, val); |
| | | this._setValues(1, val); |
| | | if (snapToClosestTick) { |
| | | val.data[0] = this._snapToClosestTick(val.data[0]); |
| | | val.data[1] = this._snapToClosestTick(val.data[1]); |
| | | } |
| | | } else { |
| | | val.data = this._toValue(this._state.percentage[0]); |
| | | val.data = parseFloat(val.data); |
| | | val.data = this._applyPrecision(val.data); |
| | | if (snapToClosestTick) { |
| | | val.data = this._snapToClosestTick(val.data); |
| | | } |
| | | } |
| | | |
| | | return val.data; |
| | | }, |
| | | _snapToClosestTick: function _snapToClosestTick(val) { |
| | | var min = [val, Infinity]; |
| | | for (var i = 0; i < this.options.ticks.length; i++) { |
| | | var diff = Math.abs(this.options.ticks[i] - val); |
| | | if (diff <= min[1]) { |
| | | min = [this.options.ticks[i], diff]; |
| | | } |
| | | } |
| | | if (min[1] <= this.options.ticks_snap_bounds) { |
| | | return min[0]; |
| | | } |
| | | return val; |
| | | }, |
| | | |
| | | _applyPrecision: function _applyPrecision(val) { |
| | | var precision = this.options.precision || this._getNumDigitsAfterDecimalPlace(this.options.step); |
| | | return this._applyToFixedAndParseFloat(val, precision); |
| | | }, |
| | | _getNumDigitsAfterDecimalPlace: function _getNumDigitsAfterDecimalPlace(num) { |
| | | var match = ('' + num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); |
| | | if (!match) { |
| | | return 0; |
| | | } |
| | | return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0)); |
| | | }, |
| | | _applyToFixedAndParseFloat: function _applyToFixedAndParseFloat(num, toFixedInput) { |
| | | var truncatedNum = num.toFixed(toFixedInput); |
| | | return parseFloat(truncatedNum); |
| | | }, |
| | | /* |
| | | Credits to Mike Samuel for the following method! |
| | | Source: http://stackoverflow.com/questions/10454518/javascript-how-to-retrieve-the-number-of-decimals-of-a-string-number |
| | | */ |
| | | _getPercentage: function _getPercentage(ev) { |
| | | if (this.touchCapable && (ev.type === 'touchstart' || ev.type === 'touchmove' || ev.type === 'touchend')) { |
| | | ev = ev.changedTouches[0]; |
| | | } |
| | | |
| | | var eventPosition = ev[this.mousePos]; |
| | | var sliderOffset = this._state.offset[this.stylePos]; |
| | | var distanceToSlide = eventPosition - sliderOffset; |
| | | if (this.stylePos === 'right') { |
| | | distanceToSlide = -distanceToSlide; |
| | | } |
| | | // Calculate what percent of the length the slider handle has slid |
| | | var percentage = distanceToSlide / this._state.size * 100; |
| | | percentage = Math.round(percentage / this._state.percentage[2]) * this._state.percentage[2]; |
| | | if (this.options.reversed) { |
| | | percentage = 100 - percentage; |
| | | } |
| | | |
| | | // Make sure the percent is within the bounds of the slider. |
| | | // 0% corresponds to the 'min' value of the slide |
| | | // 100% corresponds to the 'max' value of the slide |
| | | return Math.max(0, Math.min(100, percentage)); |
| | | }, |
| | | _validateInputValue: function _validateInputValue(val) { |
| | | if (!isNaN(+val)) { |
| | | return +val; |
| | | } else if (Array.isArray(val)) { |
| | | this._validateArray(val); |
| | | return val; |
| | | } else { |
| | | throw new Error(ErrorMsgs.formatInvalidInputErrorMsg(val)); |
| | | } |
| | | }, |
| | | _validateArray: function _validateArray(val) { |
| | | for (var i = 0; i < val.length; i++) { |
| | | var input = val[i]; |
| | | if (typeof input !== 'number') { |
| | | throw new Error(ErrorMsgs.formatInvalidInputErrorMsg(input)); |
| | | } |
| | | } |
| | | }, |
| | | _setDataVal: function _setDataVal(val) { |
| | | this.element.setAttribute('data-value', val); |
| | | this.element.setAttribute('value', val); |
| | | this.element.value = val; |
| | | }, |
| | | _trigger: function _trigger(evt, val) { |
| | | val = val || val === 0 ? val : undefined; |
| | | |
| | | var callbackFnArray = this.eventToCallbackMap[evt]; |
| | | if (callbackFnArray && callbackFnArray.length) { |
| | | for (var i = 0; i < callbackFnArray.length; i++) { |
| | | var callbackFn = callbackFnArray[i]; |
| | | callbackFn(val); |
| | | } |
| | | } |
| | | |
| | | /* If JQuery exists, trigger JQuery events */ |
| | | if ($) { |
| | | this._triggerJQueryEvent(evt, val); |
| | | } |
| | | }, |
| | | _triggerJQueryEvent: function _triggerJQueryEvent(evt, val) { |
| | | var eventData = { |
| | | type: evt, |
| | | value: val |
| | | }; |
| | | this.$element.trigger(eventData); |
| | | this.$sliderElem.trigger(eventData); |
| | | }, |
| | | _unbindJQueryEventHandlers: function _unbindJQueryEventHandlers() { |
| | | this.$element.off(); |
| | | this.$sliderElem.off(); |
| | | }, |
| | | _setText: function _setText(element, text) { |
| | | if (typeof element.textContent !== "undefined") { |
| | | element.textContent = text; |
| | | } else if (typeof element.innerText !== "undefined") { |
| | | element.innerText = text; |
| | | } |
| | | }, |
| | | _removeClass: function _removeClass(element, classString) { |
| | | var classes = classString.split(" "); |
| | | var newClasses = element.className; |
| | | |
| | | for (var i = 0; i < classes.length; i++) { |
| | | var classTag = classes[i]; |
| | | var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); |
| | | newClasses = newClasses.replace(regex, " "); |
| | | } |
| | | |
| | | element.className = newClasses.trim(); |
| | | }, |
| | | _addClass: function _addClass(element, classString) { |
| | | var classes = classString.split(" "); |
| | | var newClasses = element.className; |
| | | |
| | | for (var i = 0; i < classes.length; i++) { |
| | | var classTag = classes[i]; |
| | | var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); |
| | | var ifClassExists = regex.test(newClasses); |
| | | |
| | | if (!ifClassExists) { |
| | | newClasses += " " + classTag; |
| | | } |
| | | } |
| | | |
| | | element.className = newClasses.trim(); |
| | | }, |
| | | _offsetLeft: function _offsetLeft(obj) { |
| | | return obj.getBoundingClientRect().left; |
| | | }, |
| | | _offsetRight: function _offsetRight(obj) { |
| | | return obj.getBoundingClientRect().right; |
| | | }, |
| | | _offsetTop: function _offsetTop(obj) { |
| | | var offsetTop = obj.offsetTop; |
| | | while ((obj = obj.offsetParent) && !isNaN(obj.offsetTop)) { |
| | | offsetTop += obj.offsetTop; |
| | | if (obj.tagName !== 'BODY') { |
| | | offsetTop -= obj.scrollTop; |
| | | } |
| | | } |
| | | return offsetTop; |
| | | }, |
| | | _offset: function _offset(obj) { |
| | | return { |
| | | left: this._offsetLeft(obj), |
| | | right: this._offsetRight(obj), |
| | | top: this._offsetTop(obj) |
| | | }; |
| | | }, |
| | | _css: function _css(elementRef, styleName, value) { |
| | | if ($) { |
| | | $.style(elementRef, styleName, value); |
| | | } else { |
| | | var style = styleName.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, function (all, letter) { |
| | | return letter.toUpperCase(); |
| | | }); |
| | | elementRef.style[style] = value; |
| | | } |
| | | }, |
| | | _toValue: function _toValue(percentage) { |
| | | return this.options.scale.toValue.apply(this, [percentage]); |
| | | }, |
| | | _toPercentage: function _toPercentage(value) { |
| | | return this.options.scale.toPercentage.apply(this, [value]); |
| | | }, |
| | | _setTooltipPosition: function _setTooltipPosition() { |
| | | var tooltips = [this.tooltip, this.tooltip_min, this.tooltip_max]; |
| | | if (this.options.orientation === 'vertical') { |
| | | var tooltipPos; |
| | | if (this.options.tooltip_position) { |
| | | tooltipPos = this.options.tooltip_position; |
| | | } else { |
| | | if (this.options.rtl) { |
| | | tooltipPos = 'left'; |
| | | } else { |
| | | tooltipPos = 'right'; |
| | | } |
| | | } |
| | | var oppositeSide = tooltipPos === 'left' ? 'right' : 'left'; |
| | | tooltips.forEach(function (tooltip) { |
| | | this._addClass(tooltip, tooltipPos); |
| | | tooltip.style[oppositeSide] = '100%'; |
| | | }.bind(this)); |
| | | } else if (this.options.tooltip_position === 'bottom') { |
| | | tooltips.forEach(function (tooltip) { |
| | | this._addClass(tooltip, 'bottom'); |
| | | tooltip.style.top = 22 + 'px'; |
| | | }.bind(this)); |
| | | } else { |
| | | tooltips.forEach(function (tooltip) { |
| | | this._addClass(tooltip, 'top'); |
| | | tooltip.style.top = -this.tooltip.outerHeight - 14 + 'px'; |
| | | }.bind(this)); |
| | | } |
| | | }, |
| | | _getClosestTickIndex: function _getClosestTickIndex(val) { |
| | | var difference = Math.abs(val - this.options.ticks[0]); |
| | | var index = 0; |
| | | for (var i = 0; i < this.options.ticks.length; ++i) { |
| | | var d = Math.abs(val - this.options.ticks[i]); |
| | | if (d < difference) { |
| | | difference = d; |
| | | index = i; |
| | | } |
| | | } |
| | | return index; |
| | | }, |
| | | /** |
| | | * Attempts to find the index in `ticks[]` the slider values are set at. |
| | | * The indexes can be -1 to indicate the slider value is not set at a value in `ticks[]`. |
| | | */ |
| | | _setTickIndex: function _setTickIndex() { |
| | | if (this.ticksAreValid) { |
| | | this._state.tickIndex = [this.options.ticks.indexOf(this._state.value[0]), this.options.ticks.indexOf(this._state.value[1])]; |
| | | } |
| | | } |
| | | }; |
| | | |
| | | /********************************* |
| | | Attach to global namespace |
| | | *********************************/ |
| | | if ($ && $.fn) { |
| | | if (!$.fn.slider) { |
| | | $.bridget(NAMESPACE_MAIN, Slider); |
| | | autoRegisterNamespace = NAMESPACE_MAIN; |
| | | } else { |
| | | if (windowIsDefined) { |
| | | window.console.warn("bootstrap-slider.js - WARNING: $.fn.slider namespace is already bound. Use the $.fn.bootstrapSlider namespace instead."); |
| | | } |
| | | autoRegisterNamespace = NAMESPACE_ALTERNATE; |
| | | } |
| | | $.bridget(NAMESPACE_ALTERNATE, Slider); |
| | | |
| | | // Auto-Register data-provide="slider" Elements |
| | | $(function () { |
| | | $("input[data-provide=slider]")[autoRegisterNamespace](); |
| | | }); |
| | | } |
| | | })($); |
| | | |
| | | return Slider; |
| | | }); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /*! ======================================================= |
| | | VERSION 10.6.2 |
| | | ========================================================= */ |
| | | "use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},windowIsDefined="object"===("undefined"==typeof window?"undefined":_typeof(window));!function(a){if("function"==typeof define&&define.amd)define(["jquery"],a);else if("object"===("undefined"==typeof module?"undefined":_typeof(module))&&module.exports){var b;try{b=require("jquery")}catch(c){b=null}module.exports=a(b)}else window&&(window.Slider=a(window.jQuery))}(function(a){var b="slider",c="bootstrapSlider";windowIsDefined&&!window.console&&(window.console={}),windowIsDefined&&!window.console.log&&(window.console.log=function(){}),windowIsDefined&&!window.console.warn&&(window.console.warn=function(){});var d;return function(a){function b(){}function c(a){function c(b){b.prototype.option||(b.prototype.option=function(b){a.isPlainObject(b)&&(this.options=a.extend(!0,this.options,b))})}function e(b,c){a.fn[b]=function(e){if("string"==typeof e){for(var g=d.call(arguments,1),h=0,i=this.length;i>h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l&&l!==k)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}return this}var m=this.map(function(){var d=a.data(this,b);return d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d)),a(this)});return 1===m.length?m[0]:m}}if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}var d=Array.prototype.slice;c(a)}(a),function(a){function e(b,c){function d(a,b){var c="data-slider-"+b.replace(/_/g,"-"),d=a.getAttribute(c);try{return JSON.parse(d)}catch(e){return d}}this._state={value:null,enabled:null,offset:null,size:null,percentage:null,inDrag:!1,over:!1,tickIndex:null},this.ticksCallbackMap={},this.handleCallbackMap={},"string"==typeof b?this.element=document.querySelector(b):b instanceof HTMLElement&&(this.element=b),c=c?c:{};for(var e=Object.keys(this.defaultOptions),f=c.hasOwnProperty("min"),g=c.hasOwnProperty("max"),i=0;i<e.length;i++){var j=e[i],k=c[j];k="undefined"!=typeof k?k:d(this.element,j),k=null!==k?k:this.defaultOptions[j],this.options||(this.options={}),this.options[j]=k}if(this.ticksAreValid=Array.isArray(this.options.ticks)&&this.options.ticks.length>0,this.ticksAreValid||(this.options.lock_to_ticks=!1),"auto"===this.options.rtl){var l=window.getComputedStyle(this.element);null!=l?this.options.rtl="rtl"===l.direction:this.options.rtl="rtl"===this.element.style.direction}"vertical"!==this.options.orientation||"top"!==this.options.tooltip_position&&"bottom"!==this.options.tooltip_position?"horizontal"!==this.options.orientation||"left"!==this.options.tooltip_position&&"right"!==this.options.tooltip_position||(this.options.tooltip_position="top"):this.options.rtl?this.options.tooltip_position="left":this.options.tooltip_position="right";var m,n,o,p,q,r=this.element.style.width,s=!1,t=this.element.parentNode;if(this.sliderElem)s=!0;else{this.sliderElem=document.createElement("div"),this.sliderElem.className="slider";var u=document.createElement("div");u.className="slider-track",n=document.createElement("div"),n.className="slider-track-low",m=document.createElement("div"),m.className="slider-selection",o=document.createElement("div"),o.className="slider-track-high",p=document.createElement("div"),p.className="slider-handle min-slider-handle",p.setAttribute("role","slider"),p.setAttribute("aria-valuemin",this.options.min),p.setAttribute("aria-valuemax",this.options.max),q=document.createElement("div"),q.className="slider-handle max-slider-handle",q.setAttribute("role","slider"),q.setAttribute("aria-valuemin",this.options.min),q.setAttribute("aria-valuemax",this.options.max),u.appendChild(n),u.appendChild(m),u.appendChild(o),this.rangeHighlightElements=[];var v=this.options.rangeHighlights;if(Array.isArray(v)&&v.length>0)for(var w=0;w<v.length;w++){var x=document.createElement("div"),y=v[w]["class"]||"";x.className="slider-rangeHighlight slider-selection "+y,this.rangeHighlightElements.push(x),u.appendChild(x)}var z=Array.isArray(this.options.labelledby);if(z&&this.options.labelledby[0]&&p.setAttribute("aria-labelledby",this.options.labelledby[0]),z&&this.options.labelledby[1]&&q.setAttribute("aria-labelledby",this.options.labelledby[1]),!z&&this.options.labelledby&&(p.setAttribute("aria-labelledby",this.options.labelledby),q.setAttribute("aria-labelledby",this.options.labelledby)),this.ticks=[],Array.isArray(this.options.ticks)&&this.options.ticks.length>0){for(this.ticksContainer=document.createElement("div"),this.ticksContainer.className="slider-tick-container",i=0;i<this.options.ticks.length;i++){var A=document.createElement("div");if(A.className="slider-tick",this.options.ticks_tooltip){var B=this._addTickListener(),C=B.addMouseEnter(this,A,i),D=B.addMouseLeave(this,A);this.ticksCallbackMap[i]={mouseEnter:C,mouseLeave:D}}this.ticks.push(A),this.ticksContainer.appendChild(A)}m.className+=" tick-slider-selection"}if(this.tickLabels=[],Array.isArray(this.options.ticks_labels)&&this.options.ticks_labels.length>0)for(this.tickLabelContainer=document.createElement("div"),this.tickLabelContainer.className="slider-tick-label-container",i=0;i<this.options.ticks_labels.length;i++){var E=document.createElement("div"),F=0===this.options.ticks_positions.length,G=this.options.reversed&&F?this.options.ticks_labels.length-(i+1):i;E.className="slider-tick-label",E.innerHTML=this.options.ticks_labels[G],this.tickLabels.push(E),this.tickLabelContainer.appendChild(E)}var H=function(a){var b=document.createElement("div");b.className="tooltip-arrow";var c=document.createElement("div");c.className="tooltip-inner",a.appendChild(b),a.appendChild(c)},I=document.createElement("div");I.className="tooltip tooltip-main",I.setAttribute("role","presentation"),H(I);var J=document.createElement("div");J.className="tooltip tooltip-min",J.setAttribute("role","presentation"),H(J);var K=document.createElement("div");K.className="tooltip tooltip-max",K.setAttribute("role","presentation"),H(K),this.sliderElem.appendChild(u),this.sliderElem.appendChild(I),this.sliderElem.appendChild(J),this.sliderElem.appendChild(K),this.tickLabelContainer&&this.sliderElem.appendChild(this.tickLabelContainer),this.ticksContainer&&this.sliderElem.appendChild(this.ticksContainer),this.sliderElem.appendChild(p),this.sliderElem.appendChild(q),t.insertBefore(this.sliderElem,this.element),this.element.style.display="none"}if(a&&(this.$element=a(this.element),this.$sliderElem=a(this.sliderElem)),this.eventToCallbackMap={},this.sliderElem.id=this.options.id,this.touchCapable="ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,this.touchX=0,this.touchY=0,this.tooltip=this.sliderElem.querySelector(".tooltip-main"),this.tooltipInner=this.tooltip.querySelector(".tooltip-inner"),this.tooltip_min=this.sliderElem.querySelector(".tooltip-min"),this.tooltipInner_min=this.tooltip_min.querySelector(".tooltip-inner"),this.tooltip_max=this.sliderElem.querySelector(".tooltip-max"),this.tooltipInner_max=this.tooltip_max.querySelector(".tooltip-inner"),h[this.options.scale]&&(this.options.scale=h[this.options.scale]),s===!0&&(this._removeClass(this.sliderElem,"slider-horizontal"),this._removeClass(this.sliderElem,"slider-vertical"),this._removeClass(this.sliderElem,"slider-rtl"),this._removeClass(this.tooltip,"hide"),this._removeClass(this.tooltip_min,"hide"),this._removeClass(this.tooltip_max,"hide"),["left","right","top","width","height"].forEach(function(a){this._removeProperty(this.trackLow,a),this._removeProperty(this.trackSelection,a),this._removeProperty(this.trackHigh,a)},this),[this.handle1,this.handle2].forEach(function(a){this._removeProperty(a,"left"),this._removeProperty(a,"right"),this._removeProperty(a,"top")},this),[this.tooltip,this.tooltip_min,this.tooltip_max].forEach(function(a){this._removeProperty(a,"left"),this._removeProperty(a,"right"),this._removeProperty(a,"top"),this._removeClass(a,"right"),this._removeClass(a,"left"),this._removeClass(a,"top")},this)),"vertical"===this.options.orientation?(this._addClass(this.sliderElem,"slider-vertical"),this.stylePos="top",this.mousePos="pageY",this.sizePos="offsetHeight"):(this._addClass(this.sliderElem,"slider-horizontal"),this.sliderElem.style.width=r,this.options.orientation="horizontal",this.options.rtl?this.stylePos="right":this.stylePos="left",this.mousePos="clientX",this.sizePos="offsetWidth"),this.options.rtl&&this._addClass(this.sliderElem,"slider-rtl"),this._setTooltipPosition(),Array.isArray(this.options.ticks)&&this.options.ticks.length>0&&(g||(this.options.max=Math.max.apply(Math,this.options.ticks)),f||(this.options.min=Math.min.apply(Math,this.options.ticks))),Array.isArray(this.options.value)?(this.options.range=!0,this._state.value=this.options.value):this.options.range?this._state.value=[this.options.value,this.options.max]:this._state.value=this.options.value,this.trackLow=n||this.trackLow,this.trackSelection=m||this.trackSelection,this.trackHigh=o||this.trackHigh,"none"===this.options.selection?(this._addClass(this.trackLow,"hide"),this._addClass(this.trackSelection,"hide"),this._addClass(this.trackHigh,"hide")):("after"===this.options.selection||"before"===this.options.selection)&&(this._removeClass(this.trackLow,"hide"),this._removeClass(this.trackSelection,"hide"),this._removeClass(this.trackHigh,"hide")),this.handle1=p||this.handle1,this.handle2=q||this.handle2,s===!0)for(this._removeClass(this.handle1,"round triangle"),this._removeClass(this.handle2,"round triangle hide"),i=0;i<this.ticks.length;i++)this._removeClass(this.ticks[i],"round triangle hide");var L=["round","triangle","custom"],M=-1!==L.indexOf(this.options.handle);if(M)for(this._addClass(this.handle1,this.options.handle),this._addClass(this.handle2,this.options.handle),i=0;i<this.ticks.length;i++)this._addClass(this.ticks[i],this.options.handle);if(this._state.offset=this._offset(this.sliderElem),this._state.size=this.sliderElem[this.sizePos],this.setValue(this._state.value),this.handle1Keydown=this._keydown.bind(this,0),this.handle1.addEventListener("keydown",this.handle1Keydown,!1),this.handle2Keydown=this._keydown.bind(this,1),this.handle2.addEventListener("keydown",this.handle2Keydown,!1),this.mousedown=this._mousedown.bind(this),this.touchstart=this._touchstart.bind(this),this.touchmove=this._touchmove.bind(this),this.touchCapable&&(this.sliderElem.addEventListener("touchstart",this.touchstart,!1),this.sliderElem.addEventListener("touchmove",this.touchmove,!1)),this.sliderElem.addEventListener("mousedown",this.mousedown,!1),this.resize=this._resize.bind(this),window.addEventListener("resize",this.resize,!1),"hide"===this.options.tooltip)this._addClass(this.tooltip,"hide"),this._addClass(this.tooltip_min,"hide"),this._addClass(this.tooltip_max,"hide");else if("always"===this.options.tooltip)this._showTooltip(),this._alwaysShowTooltip=!0;else{if(this.showTooltip=this._showTooltip.bind(this),this.hideTooltip=this._hideTooltip.bind(this),this.options.ticks_tooltip){var N=this._addTickListener(),O=N.addMouseEnter(this,this.handle1),P=N.addMouseLeave(this,this.handle1);this.handleCallbackMap.handle1={mouseEnter:O,mouseLeave:P},O=N.addMouseEnter(this,this.handle2),P=N.addMouseLeave(this,this.handle2),this.handleCallbackMap.handle2={mouseEnter:O,mouseLeave:P}}else this.sliderElem.addEventListener("mouseenter",this.showTooltip,!1),this.sliderElem.addEventListener("mouseleave",this.hideTooltip,!1),this.touchCapable&&(this.sliderElem.addEventListener("touchstart",this.showTooltip,!1),this.sliderElem.addEventListener("touchmove",this.showTooltip,!1),this.sliderElem.addEventListener("touchend",this.hideTooltip,!1));this.handle1.addEventListener("focus",this.showTooltip,!1),this.handle1.addEventListener("blur",this.hideTooltip,!1),this.handle2.addEventListener("focus",this.showTooltip,!1),this.handle2.addEventListener("blur",this.hideTooltip,!1),this.touchCapable&&(this.handle1.addEventListener("touchstart",this.showTooltip,!1),this.handle1.addEventListener("touchmove",this.showTooltip,!1),this.handle1.addEventListener("touchend",this.hideTooltip,!1),this.handle2.addEventListener("touchstart",this.showTooltip,!1),this.handle2.addEventListener("touchmove",this.showTooltip,!1),this.handle2.addEventListener("touchend",this.hideTooltip,!1))}this.options.enabled?this.enable():this.disable()}var f=void 0,g={formatInvalidInputErrorMsg:function(a){return"Invalid input value '"+a+"' passed in"},callingContextNotSliderInstance:"Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method"},h={linear:{getValue:function(a,b){return a<b.min?b.min:a>b.max?b.max:a},toValue:function(a){var b=a/100*(this.options.max-this.options.min),c=!0;if(this.options.ticks_positions.length>0){for(var d,e,f,g=0,i=1;i<this.options.ticks_positions.length;i++)if(a<=this.options.ticks_positions[i]){d=this.options.ticks[i-1],f=this.options.ticks_positions[i-1],e=this.options.ticks[i],g=this.options.ticks_positions[i];break}var j=(a-f)/(g-f);b=d+j*(e-d),c=!1}var k=c?this.options.min:0,l=k+Math.round(b/this.options.step)*this.options.step;return h.linear.getValue(l,this.options)},toPercentage:function(a){if(this.options.max===this.options.min)return 0;if(this.options.ticks_positions.length>0){for(var b,c,d,e=0,f=0;f<this.options.ticks.length;f++)if(a<=this.options.ticks[f]){b=f>0?this.options.ticks[f-1]:0,d=f>0?this.options.ticks_positions[f-1]:0,c=this.options.ticks[f],e=this.options.ticks_positions[f];break}if(f>0){var g=(a-b)/(c-b);return d+g*(e-d)}}return 100*(a-this.options.min)/(this.options.max-this.options.min)}},logarithmic:{toValue:function(a){var b=1-this.options.min,c=Math.log(this.options.min+b),d=Math.log(this.options.max+b),e=Math.exp(c+(d-c)*a/100)-b;return Math.round(e)===d?d:(e=this.options.min+Math.round((e-this.options.min)/this.options.step)*this.options.step,h.linear.getValue(e,this.options))},toPercentage:function(a){if(this.options.max===this.options.min)return 0;var b=1-this.options.min,c=Math.log(this.options.max+b),d=Math.log(this.options.min+b),e=Math.log(a+b);return 100*(e-d)/(c-d)}}};d=function(a,b){return e.call(this,a,b),this},d.prototype={_init:function(){},constructor:d,defaultOptions:{id:"",min:0,max:10,step:1,precision:0,orientation:"horizontal",value:5,range:!1,selection:"before",tooltip:"show",tooltip_split:!1,lock_to_ticks:!1,handle:"round",reversed:!1,rtl:"auto",enabled:!0,formatter:function(a){return Array.isArray(a)?a[0]+" : "+a[1]:a},natural_arrow_keys:!1,ticks:[],ticks_positions:[],ticks_labels:[],ticks_snap_bounds:0,ticks_tooltip:!1,scale:"linear",focus:!1,tooltip_position:null,labelledby:null,rangeHighlights:[]},getElement:function(){return this.sliderElem},getValue:function(){return this.options.range?this._state.value:this._state.value[0]},setValue:function(a,b,c){a||(a=0);var d=this.getValue();this._state.value=this._validateInputValue(a);var e=this._applyPrecision.bind(this);this.options.range?(this._state.value[0]=e(this._state.value[0]),this._state.value[1]=e(this._state.value[1]),this.ticksAreValid&&this.options.lock_to_ticks&&(this._state.value[0]=this.options.ticks[this._getClosestTickIndex(this._state.value[0])],this._state.value[1]=this.options.ticks[this._getClosestTickIndex(this._state.value[1])]),this._state.value[0]=Math.max(this.options.min,Math.min(this.options.max,this._state.value[0])),this._state.value[1]=Math.max(this.options.min,Math.min(this.options.max,this._state.value[1]))):(this._state.value=e(this._state.value),this.ticksAreValid&&this.options.lock_to_ticks&&(this._state.value=this.options.ticks[this._getClosestTickIndex(this._state.value)]),this._state.value=[Math.max(this.options.min,Math.min(this.options.max,this._state.value))],this._addClass(this.handle2,"hide"),"after"===this.options.selection?this._state.value[1]=this.options.max:this._state.value[1]=this.options.min),this._setTickIndex(),this.options.max>this.options.min?this._state.percentage=[this._toPercentage(this._state.value[0]),this._toPercentage(this._state.value[1]),100*this.options.step/(this.options.max-this.options.min)]:this._state.percentage=[0,0,100],this._layout();var f=this.options.range?this._state.value:this._state.value[0];this._setDataVal(f),b===!0&&this._trigger("slide",f);var g=!1;return g=Array.isArray(f)?d[0]!==f[0]||d[1]!==f[1]:d!==f,g&&c===!0&&this._trigger("change",{oldValue:d,newValue:f}),this},destroy:function(){this._removeSliderEventHandlers(),this.sliderElem.parentNode.removeChild(this.sliderElem),this.element.style.display="",this._cleanUpEventCallbacksMap(),this.element.removeAttribute("data"),a&&(this._unbindJQueryEventHandlers(),f===b&&this.$element.removeData(f),this.$element.removeData(c))},disable:function(){return this._state.enabled=!1,this.handle1.removeAttribute("tabindex"),this.handle2.removeAttribute("tabindex"),this._addClass(this.sliderElem,"slider-disabled"),this._trigger("slideDisabled"),this},enable:function(){return this._state.enabled=!0,this.handle1.setAttribute("tabindex",0),this.handle2.setAttribute("tabindex",0),this._removeClass(this.sliderElem,"slider-disabled"),this._trigger("slideEnabled"),this},toggle:function(){return this._state.enabled?this.disable():this.enable(),this},isEnabled:function(){return this._state.enabled},on:function(a,b){return this._bindNonQueryEventHandler(a,b),this},off:function(b,c){a?(this.$element.off(b,c),this.$sliderElem.off(b,c)):this._unbindNonQueryEventHandler(b,c)},getAttribute:function(a){return a?this.options[a]:this.options},setAttribute:function(a,b){return this.options[a]=b,this},refresh:function(d){var g=this.getValue();return this._removeSliderEventHandlers(),e.call(this,this.element,this.options),d&&d.useCurrentValue===!0&&this.setValue(g),a&&(f===b?(a.data(this.element,b,this),a.data(this.element,c,this)):a.data(this.element,c,this)),this},relayout:function(){return this._resize(),this},_removeTooltipListener:function(a,b){this.handle1.removeEventListener(a,b,!1),this.handle2.removeEventListener(a,b,!1)},_removeSliderEventHandlers:function(){if(this.handle1.removeEventListener("keydown",this.handle1Keydown,!1),this.handle2.removeEventListener("keydown",this.handle2Keydown,!1),this.options.ticks_tooltip){for(var a=this.ticksContainer.getElementsByClassName("slider-tick"),b=0;b<a.length;b++)a[b].removeEventListener("mouseenter",this.ticksCallbackMap[b].mouseEnter,!1),a[b].removeEventListener("mouseleave",this.ticksCallbackMap[b].mouseLeave,!1);this.handleCallbackMap.handle1&&this.handleCallbackMap.handle2&&(this.handle1.removeEventListener("mouseenter",this.handleCallbackMap.handle1.mouseEnter,!1),this.handle2.removeEventListener("mouseenter",this.handleCallbackMap.handle2.mouseEnter,!1),this.handle1.removeEventListener("mouseleave",this.handleCallbackMap.handle1.mouseLeave,!1),this.handle2.removeEventListener("mouseleave",this.handleCallbackMap.handle2.mouseLeave,!1))}this.handleCallbackMap=null,this.ticksCallbackMap=null,this.showTooltip&&this._removeTooltipListener("focus",this.showTooltip),this.hideTooltip&&this._removeTooltipListener("blur",this.hideTooltip),this.showTooltip&&this.sliderElem.removeEventListener("mouseenter",this.showTooltip,!1),this.hideTooltip&&this.sliderElem.removeEventListener("mouseleave",this.hideTooltip,!1),this.sliderElem.removeEventListener("mousedown",this.mousedown,!1),this.touchCapable&&(this.showTooltip&&(this.handle1.removeEventListener("touchstart",this.showTooltip,!1),this.handle1.removeEventListener("touchmove",this.showTooltip,!1),this.handle2.removeEventListener("touchstart",this.showTooltip,!1),this.handle2.removeEventListener("touchmove",this.showTooltip,!1)),this.hideTooltip&&(this.handle1.removeEventListener("touchend",this.hideTooltip,!1),this.handle2.removeEventListener("touchend",this.hideTooltip,!1)),this.showTooltip&&(this.sliderElem.removeEventListener("touchstart",this.showTooltip,!1),this.sliderElem.removeEventListener("touchmove",this.showTooltip,!1)),this.hideTooltip&&this.sliderElem.removeEventListener("touchend",this.hideTooltip,!1),this.sliderElem.removeEventListener("touchstart",this.touchstart,!1),this.sliderElem.removeEventListener("touchmove",this.touchmove,!1)),window.removeEventListener("resize",this.resize,!1)},_bindNonQueryEventHandler:function(a,b){void 0===this.eventToCallbackMap[a]&&(this.eventToCallbackMap[a]=[]),this.eventToCallbackMap[a].push(b)},_unbindNonQueryEventHandler:function(a,b){var c=this.eventToCallbackMap[a];if(void 0!==c)for(var d=0;d<c.length;d++)if(c[d]===b){c.splice(d,1);break}},_cleanUpEventCallbacksMap:function(){for(var a=Object.keys(this.eventToCallbackMap),b=0;b<a.length;b++){var c=a[b];delete this.eventToCallbackMap[c]}},_showTooltip:function(){this.options.tooltip_split===!1?(this._addClass(this.tooltip,"in"),this.tooltip_min.style.display="none",this.tooltip_max.style.display="none"):(this._addClass(this.tooltip_min,"in"),this._addClass(this.tooltip_max,"in"),this.tooltip.style.display="none"),this._state.over=!0},_hideTooltip:function(){this._state.inDrag===!1&&this._alwaysShowTooltip!==!0&&(this._removeClass(this.tooltip,"in"),this._removeClass(this.tooltip_min,"in"),this._removeClass(this.tooltip_max,"in")),this._state.over=!1},_setToolTipOnMouseOver:function(a){function b(a,b){return b?[100-a.percentage[0],c.options.range?100-a.percentage[1]:a.percentage[1]]:[a.percentage[0],a.percentage[1]]}var c=this,d=this.options.formatter(a?a.value[0]:this._state.value[0]),e=a?b(a,this.options.reversed):b(this._state,this.options.reversed);this._setText(this.tooltipInner,d),this.tooltip.style[this.stylePos]=e[0]+"%"},_copyState:function(){return{value:[this._state.value[0],this._state.value[1]],enabled:this._state.enabled,offset:this._state.offset,size:this._state.size,percentage:[this._state.percentage[0],this._state.percentage[1],this._state.percentage[2]],inDrag:this._state.inDrag,over:this._state.over,dragged:this._state.dragged,keyCtrl:this._state.keyCtrl}},_addTickListener:function(){return{addMouseEnter:function(a,b,c){var d=function(){var d=a._copyState(),e=b===a.handle1?d.value[0]:d.value[1],f=void 0;void 0!==c?(e=a.options.ticks[c],f=a.options.ticks_positions.length>0&&a.options.ticks_positions[c]||a._toPercentage(a.options.ticks[c])):f=a._toPercentage(e),d.value[0]=e,d.percentage[0]=f,a._setToolTipOnMouseOver(d),a._showTooltip()};return b.addEventListener("mouseenter",d,!1),d},addMouseLeave:function(a,b){var c=function(){a._hideTooltip()};return b.addEventListener("mouseleave",c,!1),c}}},_layout:function(){var a,b;if(a=this.options.reversed?[100-this._state.percentage[0],this.options.range?100-this._state.percentage[1]:this._state.percentage[1]]:[this._state.percentage[0],this._state.percentage[1]],this.handle1.style[this.stylePos]=a[0]+"%",this.handle1.setAttribute("aria-valuenow",this._state.value[0]),b=this.options.formatter(this._state.value[0]),isNaN(b)?this.handle1.setAttribute("aria-valuetext",b):this.handle1.removeAttribute("aria-valuetext"),this.handle2.style[this.stylePos]=a[1]+"%",this.handle2.setAttribute("aria-valuenow",this._state.value[1]),b=this.options.formatter(this._state.value[1]),isNaN(b)?this.handle2.setAttribute("aria-valuetext",b):this.handle2.removeAttribute("aria-valuetext"),this.rangeHighlightElements.length>0&&Array.isArray(this.options.rangeHighlights)&&this.options.rangeHighlights.length>0)for(var c=0;c<this.options.rangeHighlights.length;c++){var d=this._toPercentage(this.options.rangeHighlights[c].start),e=this._toPercentage(this.options.rangeHighlights[c].end);if(this.options.reversed){var f=100-e;e=100-d,d=f}var g=this._createHighlightRange(d,e);g?"vertical"===this.options.orientation?(this.rangeHighlightElements[c].style.top=g.start+"%",this.rangeHighlightElements[c].style.height=g.size+"%"):(this.options.rtl?this.rangeHighlightElements[c].style.right=g.start+"%":this.rangeHighlightElements[c].style.left=g.start+"%",this.rangeHighlightElements[c].style.width=g.size+"%"):this.rangeHighlightElements[c].style.display="none"}if(Array.isArray(this.options.ticks)&&this.options.ticks.length>0){var h,i="vertical"===this.options.orientation?"height":"width";h="vertical"===this.options.orientation?"marginTop":this.options.rtl?"marginRight":"marginLeft";var j=this._state.size/(this.options.ticks.length-1);if(this.tickLabelContainer){var k=0;if(0===this.options.ticks_positions.length)"vertical"!==this.options.orientation&&(this.tickLabelContainer.style[h]=-j/2+"px"),k=this.tickLabelContainer.offsetHeight;else for(l=0;l<this.tickLabelContainer.childNodes.length;l++)this.tickLabelContainer.childNodes[l].offsetHeight>k&&(k=this.tickLabelContainer.childNodes[l].offsetHeight);"horizontal"===this.options.orientation&&(this.sliderElem.style.marginBottom=k+"px")}for(var l=0;l<this.options.ticks.length;l++){var m=this.options.ticks_positions[l]||this._toPercentage(this.options.ticks[l]);this.options.reversed&&(m=100-m),this.ticks[l].style[this.stylePos]=m+"%",this._removeClass(this.ticks[l],"in-selection"),this.options.range?m>=a[0]&&m<=a[1]&&this._addClass(this.ticks[l],"in-selection"):"after"===this.options.selection&&m>=a[0]?this._addClass(this.ticks[l],"in-selection"):"before"===this.options.selection&&m<=a[0]&&this._addClass(this.ticks[l],"in-selection"),this.tickLabels[l]&&(this.tickLabels[l].style[i]=j+"px","vertical"!==this.options.orientation&&void 0!==this.options.ticks_positions[l]?(this.tickLabels[l].style.position="absolute",this.tickLabels[l].style[this.stylePos]=m+"%",this.tickLabels[l].style[h]=-j/2+"px"):"vertical"===this.options.orientation&&(this.options.rtl?this.tickLabels[l].style.marginRight=this.sliderElem.offsetWidth+"px":this.tickLabels[l].style.marginLeft=this.sliderElem.offsetWidth+"px",this.tickLabelContainer.style[h]=this.sliderElem.offsetWidth/2*-1+"px"),this._removeClass(this.tickLabels[l],"label-in-selection label-is-selection"),this.options.range?m>=a[0]&&m<=a[1]&&(this._addClass(this.tickLabels[l],"label-in-selection"),(m===a[0]||a[1])&&this._addClass(this.tickLabels[l],"label-is-selection")):("after"===this.options.selection&&m>=a[0]?this._addClass(this.tickLabels[l],"label-in-selection"):"before"===this.options.selection&&m<=a[0]&&this._addClass(this.tickLabels[l],"label-in-selection"),m===a[0]&&this._addClass(this.tickLabels[l],"label-is-selection")))}}var n;if(this.options.range){n=this.options.formatter(this._state.value),this._setText(this.tooltipInner,n),this.tooltip.style[this.stylePos]=(a[1]+a[0])/2+"%";var o=this.options.formatter(this._state.value[0]);this._setText(this.tooltipInner_min,o);var p=this.options.formatter(this._state.value[1]);this._setText(this.tooltipInner_max,p),this.tooltip_min.style[this.stylePos]=a[0]+"%",this.tooltip_max.style[this.stylePos]=a[1]+"%"}else n=this.options.formatter(this._state.value[0]),this._setText(this.tooltipInner,n),this.tooltip.style[this.stylePos]=a[0]+"%";if("vertical"===this.options.orientation)this.trackLow.style.top="0",this.trackLow.style.height=Math.min(a[0],a[1])+"%",this.trackSelection.style.top=Math.min(a[0],a[1])+"%",this.trackSelection.style.height=Math.abs(a[0]-a[1])+"%",this.trackHigh.style.bottom="0",this.trackHigh.style.height=100-Math.min(a[0],a[1])-Math.abs(a[0]-a[1])+"%";else{"right"===this.stylePos?this.trackLow.style.right="0":this.trackLow.style.left="0",this.trackLow.style.width=Math.min(a[0],a[1])+"%","right"===this.stylePos?this.trackSelection.style.right=Math.min(a[0],a[1])+"%":this.trackSelection.style.left=Math.min(a[0],a[1])+"%",this.trackSelection.style.width=Math.abs(a[0]-a[1])+"%","right"===this.stylePos?this.trackHigh.style.left="0":this.trackHigh.style.right="0",this.trackHigh.style.width=100-Math.min(a[0],a[1])-Math.abs(a[0]-a[1])+"%";var q=this.tooltip_min.getBoundingClientRect(),r=this.tooltip_max.getBoundingClientRect();"bottom"===this.options.tooltip_position?q.right>r.left?(this._removeClass(this.tooltip_max,"bottom"),this._addClass(this.tooltip_max,"top"),this.tooltip_max.style.top="",this.tooltip_max.style.bottom="22px"):(this._removeClass(this.tooltip_max,"top"),this._addClass(this.tooltip_max,"bottom"),this.tooltip_max.style.top=this.tooltip_min.style.top,this.tooltip_max.style.bottom=""):q.right>r.left?(this._removeClass(this.tooltip_max,"top"),this._addClass(this.tooltip_max,"bottom"),this.tooltip_max.style.top="18px"):(this._removeClass(this.tooltip_max,"bottom"),this._addClass(this.tooltip_max,"top"),this.tooltip_max.style.top=this.tooltip_min.style.top)}},_createHighlightRange:function(a,b){return this._isHighlightRange(a,b)?a>b?{start:b,size:a-b}:{start:a,size:b-a}:null},_isHighlightRange:function(a,b){return a>=0&&100>=a&&b>=0&&100>=b?!0:!1},_resize:function(a){this._state.offset=this._offset(this.sliderElem),this._state.size=this.sliderElem[this.sizePos],this._layout()},_removeProperty:function(a,b){a.style.removeProperty?a.style.removeProperty(b):a.style.removeAttribute(b)},_mousedown:function(a){if(!this._state.enabled)return!1;a.preventDefault&&a.preventDefault(),this._state.offset=this._offset(this.sliderElem),this._state.size=this.sliderElem[this.sizePos];var b=this._getPercentage(a);if(this.options.range){var c=Math.abs(this._state.percentage[0]-b),d=Math.abs(this._state.percentage[1]-b);this._state.dragged=d>c?0:1,this._adjustPercentageForRangeSliders(b)}else this._state.dragged=0;this._state.percentage[this._state.dragged]=b,this.touchCapable&&(document.removeEventListener("touchmove",this.mousemove,!1),document.removeEventListener("touchend",this.mouseup,!1)),this.mousemove&&document.removeEventListener("mousemove",this.mousemove,!1),this.mouseup&&document.removeEventListener("mouseup",this.mouseup,!1),this.mousemove=this._mousemove.bind(this),this.mouseup=this._mouseup.bind(this),this.touchCapable&&(document.addEventListener("touchmove",this.mousemove,!1),document.addEventListener("touchend",this.mouseup,!1)),document.addEventListener("mousemove",this.mousemove,!1),document.addEventListener("mouseup",this.mouseup,!1),this._state.inDrag=!0;var e=this._calculateValue();return this._trigger("slideStart",e),this.setValue(e,!1,!0),a.returnValue=!1,this.options.focus&&this._triggerFocusOnHandle(this._state.dragged),!0},_touchstart:function(a){this._mousedown(a)},_triggerFocusOnHandle:function(a){0===a&&this.handle1.focus(),1===a&&this.handle2.focus()},_keydown:function(a,b){if(!this._state.enabled)return!1;var c;switch(b.keyCode){case 37:case 40:c=-1;break;case 39:case 38:c=1}if(c){if(this.options.natural_arrow_keys){var d="horizontal"===this.options.orientation,e="vertical"===this.options.orientation,f=this.options.rtl,g=this.options.reversed;d?f?g||(c=-c):g&&(c=-c):e&&(g||(c=-c))}var h;if(this.ticksAreValid&&this.options.lock_to_ticks){var i=void 0;i=this.options.ticks.indexOf(this._state.value[a]),-1===i&&(i=0,window.console.warn("(lock_to_ticks) _keydown: index should not be -1")),i+=c,i=Math.max(0,Math.min(this.options.ticks.length-1,i)),h=this.options.ticks[i]}else h=this._state.value[a]+c*this.options.step;var j=this._toPercentage(h);if(this._state.keyCtrl=a,this.options.range){this._adjustPercentageForRangeSliders(j);var k=this._state.keyCtrl?this._state.value[0]:h,l=this._state.keyCtrl?h:this._state.value[1];h=[Math.max(this.options.min,Math.min(this.options.max,k)),Math.max(this.options.min,Math.min(this.options.max,l))]}else h=Math.max(this.options.min,Math.min(this.options.max,h));return this._trigger("slideStart",h),this.setValue(h,!0,!0),this._trigger("slideStop",h),this._pauseEvent(b),delete this._state.keyCtrl,!1}},_pauseEvent:function(a){a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a.cancelBubble=!0,a.returnValue=!1},_mousemove:function(a){if(!this._state.enabled)return!1; |
| | | var b=this._getPercentage(a);this._adjustPercentageForRangeSliders(b),this._state.percentage[this._state.dragged]=b;var c=this._calculateValue(!0);return this.setValue(c,!0,!0),!1},_touchmove:function(a){void 0!==a.changedTouches&&a.preventDefault&&a.preventDefault()},_adjustPercentageForRangeSliders:function(a){if(this.options.range){var b=this._getNumDigitsAfterDecimalPlace(a);b=b?b-1:0;var c=this._applyToFixedAndParseFloat(a,b);0===this._state.dragged&&this._applyToFixedAndParseFloat(this._state.percentage[1],b)<c?(this._state.percentage[0]=this._state.percentage[1],this._state.dragged=1):1===this._state.dragged&&this._applyToFixedAndParseFloat(this._state.percentage[0],b)>c?(this._state.percentage[1]=this._state.percentage[0],this._state.dragged=0):0===this._state.keyCtrl&&this._toPercentage(this._state.value[1])<a?(this._state.percentage[0]=this._state.percentage[1],this._state.keyCtrl=1,this.handle2.focus()):1===this._state.keyCtrl&&this._toPercentage(this._state.value[0])>a&&(this._state.percentage[1]=this._state.percentage[0],this._state.keyCtrl=0,this.handle1.focus())}},_mouseup:function(a){if(!this._state.enabled)return!1;var b=this._getPercentage(a);this._adjustPercentageForRangeSliders(b),this._state.percentage[this._state.dragged]=b,this.touchCapable&&(document.removeEventListener("touchmove",this.mousemove,!1),document.removeEventListener("touchend",this.mouseup,!1)),document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1),this._state.inDrag=!1,this._state.over===!1&&this._hideTooltip();var c=this._calculateValue(!0);return this.setValue(c,!1,!0),this._trigger("slideStop",c),this._state.dragged=null,!1},_setValues:function(a,b){var c=0===a?0:100;this._state.percentage[a]!==c&&(b.data[a]=this._toValue(this._state.percentage[a]),b.data[a]=this._applyPrecision(b.data[a]))},_calculateValue:function(a){var b={};return this.options.range?(b.data=[this.options.min,this.options.max],this._setValues(0,b),this._setValues(1,b),a&&(b.data[0]=this._snapToClosestTick(b.data[0]),b.data[1]=this._snapToClosestTick(b.data[1]))):(b.data=this._toValue(this._state.percentage[0]),b.data=parseFloat(b.data),b.data=this._applyPrecision(b.data),a&&(b.data=this._snapToClosestTick(b.data))),b.data},_snapToClosestTick:function(a){for(var b=[a,1/0],c=0;c<this.options.ticks.length;c++){var d=Math.abs(this.options.ticks[c]-a);d<=b[1]&&(b=[this.options.ticks[c],d])}return b[1]<=this.options.ticks_snap_bounds?b[0]:a},_applyPrecision:function(a){var b=this.options.precision||this._getNumDigitsAfterDecimalPlace(this.options.step);return this._applyToFixedAndParseFloat(a,b)},_getNumDigitsAfterDecimalPlace:function(a){var b=(""+a).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return b?Math.max(0,(b[1]?b[1].length:0)-(b[2]?+b[2]:0)):0},_applyToFixedAndParseFloat:function(a,b){var c=a.toFixed(b);return parseFloat(c)},_getPercentage:function(a){!this.touchCapable||"touchstart"!==a.type&&"touchmove"!==a.type&&"touchend"!==a.type||(a=a.changedTouches[0]);var b=a[this.mousePos],c=this._state.offset[this.stylePos],d=b-c;"right"===this.stylePos&&(d=-d);var e=d/this._state.size*100;return e=Math.round(e/this._state.percentage[2])*this._state.percentage[2],this.options.reversed&&(e=100-e),Math.max(0,Math.min(100,e))},_validateInputValue:function(a){if(isNaN(+a)){if(Array.isArray(a))return this._validateArray(a),a;throw new Error(g.formatInvalidInputErrorMsg(a))}return+a},_validateArray:function(a){for(var b=0;b<a.length;b++){var c=a[b];if("number"!=typeof c)throw new Error(g.formatInvalidInputErrorMsg(c))}},_setDataVal:function(a){this.element.setAttribute("data-value",a),this.element.setAttribute("value",a),this.element.value=a},_trigger:function(b,c){c=c||0===c?c:void 0;var d=this.eventToCallbackMap[b];if(d&&d.length)for(var e=0;e<d.length;e++){var f=d[e];f(c)}a&&this._triggerJQueryEvent(b,c)},_triggerJQueryEvent:function(a,b){var c={type:a,value:b};this.$element.trigger(c),this.$sliderElem.trigger(c)},_unbindJQueryEventHandlers:function(){this.$element.off(),this.$sliderElem.off()},_setText:function(a,b){"undefined"!=typeof a.textContent?a.textContent=b:"undefined"!=typeof a.innerText&&(a.innerText=b)},_removeClass:function(a,b){for(var c=b.split(" "),d=a.className,e=0;e<c.length;e++){var f=c[e],g=new RegExp("(?:\\s|^)"+f+"(?:\\s|$)");d=d.replace(g," ")}a.className=d.trim()},_addClass:function(a,b){for(var c=b.split(" "),d=a.className,e=0;e<c.length;e++){var f=c[e],g=new RegExp("(?:\\s|^)"+f+"(?:\\s|$)"),h=g.test(d);h||(d+=" "+f)}a.className=d.trim()},_offsetLeft:function(a){return a.getBoundingClientRect().left},_offsetRight:function(a){return a.getBoundingClientRect().right},_offsetTop:function(a){for(var b=a.offsetTop;(a=a.offsetParent)&&!isNaN(a.offsetTop);)b+=a.offsetTop,"BODY"!==a.tagName&&(b-=a.scrollTop);return b},_offset:function(a){return{left:this._offsetLeft(a),right:this._offsetRight(a),top:this._offsetTop(a)}},_css:function(b,c,d){if(a)a.style(b,c,d);else{var e=c.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(a,b){return b.toUpperCase()});b.style[e]=d}},_toValue:function(a){return this.options.scale.toValue.apply(this,[a])},_toPercentage:function(a){return this.options.scale.toPercentage.apply(this,[a])},_setTooltipPosition:function(){var a=[this.tooltip,this.tooltip_min,this.tooltip_max];if("vertical"===this.options.orientation){var b;b=this.options.tooltip_position?this.options.tooltip_position:this.options.rtl?"left":"right";var c="left"===b?"right":"left";a.forEach(function(a){this._addClass(a,b),a.style[c]="100%"}.bind(this))}else"bottom"===this.options.tooltip_position?a.forEach(function(a){this._addClass(a,"bottom"),a.style.top="22px"}.bind(this)):a.forEach(function(a){this._addClass(a,"top"),a.style.top=-this.tooltip.outerHeight-14+"px"}.bind(this))},_getClosestTickIndex:function(a){for(var b=Math.abs(a-this.options.ticks[0]),c=0,d=0;d<this.options.ticks.length;++d){var e=Math.abs(a-this.options.ticks[d]);b>e&&(b=e,c=d)}return c},_setTickIndex:function(){this.ticksAreValid&&(this._state.tickIndex=[this.options.ticks.indexOf(this._state.value[0]),this.options.ticks.indexOf(this._state.value[1])])}},a&&a.fn&&(a.fn.slider?(windowIsDefined&&window.console.warn("bootstrap-slider.js - WARNING: $.fn.slider namespace is already bound. Use the $.fn.bootstrapSlider namespace instead."),f=c):(a.bridget(b,d),f=b),a.bridget(c,d),a(function(){a("input[data-provide=slider]")[f]()}))}(a),d}); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /*! ======================================================= |
| | | VERSION 10.6.2 |
| | | ========================================================= */ |
| | | /*! ========================================================= |
| | | * bootstrap-slider.js |
| | | * |
| | | * Maintainers: |
| | | * Kyle Kemp |
| | | * - Twitter: @seiyria |
| | | * - Github: seiyria |
| | | * Rohit Kalkur |
| | | * - Twitter: @Rovolutionary |
| | | * - Github: rovolution |
| | | * |
| | | * ========================================================= |
| | | * |
| | | * bootstrap-slider is released under the MIT License |
| | | * Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors |
| | | * |
| | | * Permission is hereby granted, free of charge, to any person |
| | | * obtaining a copy of this software and associated documentation |
| | | * files (the "Software"), to deal in the Software without |
| | | * restriction, including without limitation the rights to use, |
| | | * copy, modify, merge, publish, distribute, sublicense, and/or sell |
| | | * copies of the Software, and to permit persons to whom the |
| | | * Software is furnished to do so, subject to the following |
| | | * conditions: |
| | | * |
| | | * The above copyright notice and this permission notice shall be |
| | | * included in all copies or substantial portions of the Software. |
| | | * |
| | | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| | | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
| | | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| | | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
| | | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
| | | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
| | | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
| | | * OTHER DEALINGS IN THE SOFTWARE. |
| | | * |
| | | * ========================================================= */ |
| | | .slider { |
| | | display: inline-block; |
| | | vertical-align: middle; |
| | | position: relative; |
| | | } |
| | | .slider.slider-horizontal { |
| | | width: 210px; |
| | | height: 20px; |
| | | } |
| | | .slider.slider-horizontal .slider-track { |
| | | height: 10px; |
| | | width: 100%; |
| | | margin-top: -5px; |
| | | top: 50%; |
| | | left: 0; |
| | | } |
| | | .slider.slider-horizontal .slider-selection, |
| | | .slider.slider-horizontal .slider-track-low, |
| | | .slider.slider-horizontal .slider-track-high { |
| | | height: 100%; |
| | | top: 0; |
| | | bottom: 0; |
| | | } |
| | | .slider.slider-horizontal .slider-tick, |
| | | .slider.slider-horizontal .slider-handle { |
| | | margin-left: -10px; |
| | | } |
| | | .slider.slider-horizontal .slider-tick.triangle, |
| | | .slider.slider-horizontal .slider-handle.triangle { |
| | | position: relative; |
| | | top: 50%; |
| | | -ms-transform: translateY(-50%); |
| | | transform: translateY(-50%); |
| | | border-width: 0 10px 10px 10px; |
| | | width: 0; |
| | | height: 0; |
| | | border-bottom-color: #2e6da4; |
| | | margin-top: 0; |
| | | } |
| | | .slider.slider-horizontal .slider-tick-container { |
| | | white-space: nowrap; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | } |
| | | .slider.slider-horizontal .slider-tick-label-container { |
| | | white-space: nowrap; |
| | | margin-top: 20px; |
| | | } |
| | | .slider.slider-horizontal .slider-tick-label-container .slider-tick-label { |
| | | padding-top: 4px; |
| | | display: inline-block; |
| | | text-align: center; |
| | | } |
| | | .slider.slider-horizontal .tooltip { |
| | | -ms-transform: translateX(-50%); |
| | | transform: translateX(-50%); |
| | | } |
| | | .slider.slider-horizontal.slider-rtl .slider-track { |
| | | left: initial; |
| | | right: 0; |
| | | } |
| | | .slider.slider-horizontal.slider-rtl .slider-tick, |
| | | .slider.slider-horizontal.slider-rtl .slider-handle { |
| | | margin-left: initial; |
| | | margin-right: -10px; |
| | | } |
| | | .slider.slider-horizontal.slider-rtl .slider-tick-container { |
| | | left: initial; |
| | | right: 0; |
| | | } |
| | | .slider.slider-horizontal.slider-rtl .tooltip { |
| | | -ms-transform: translateX(50%); |
| | | transform: translateX(50%); |
| | | } |
| | | .slider.slider-vertical { |
| | | height: 210px; |
| | | width: 20px; |
| | | } |
| | | .slider.slider-vertical .slider-track { |
| | | width: 10px; |
| | | height: 100%; |
| | | left: 25%; |
| | | top: 0; |
| | | } |
| | | .slider.slider-vertical .slider-selection { |
| | | width: 100%; |
| | | left: 0; |
| | | top: 0; |
| | | bottom: 0; |
| | | } |
| | | .slider.slider-vertical .slider-track-low, |
| | | .slider.slider-vertical .slider-track-high { |
| | | width: 100%; |
| | | left: 0; |
| | | right: 0; |
| | | } |
| | | .slider.slider-vertical .slider-tick, |
| | | .slider.slider-vertical .slider-handle { |
| | | margin-top: -10px; |
| | | } |
| | | .slider.slider-vertical .slider-tick.triangle, |
| | | .slider.slider-vertical .slider-handle.triangle { |
| | | border-width: 10px 0 10px 10px; |
| | | width: 1px; |
| | | height: 1px; |
| | | border-left-color: #2e6da4; |
| | | border-right-color: #2e6da4; |
| | | margin-left: 0; |
| | | margin-right: 0; |
| | | } |
| | | .slider.slider-vertical .slider-tick-label-container { |
| | | white-space: nowrap; |
| | | } |
| | | .slider.slider-vertical .slider-tick-label-container .slider-tick-label { |
| | | padding-left: 4px; |
| | | } |
| | | .slider.slider-vertical .tooltip { |
| | | -ms-transform: translateY(-50%); |
| | | transform: translateY(-50%); |
| | | } |
| | | .slider.slider-vertical.slider-rtl .slider-track { |
| | | left: initial; |
| | | right: 25%; |
| | | } |
| | | .slider.slider-vertical.slider-rtl .slider-selection { |
| | | left: initial; |
| | | right: 0; |
| | | } |
| | | .slider.slider-vertical.slider-rtl .slider-tick.triangle, |
| | | .slider.slider-vertical.slider-rtl .slider-handle.triangle { |
| | | border-width: 10px 10px 10px 0; |
| | | } |
| | | .slider.slider-vertical.slider-rtl .slider-tick-label-container .slider-tick-label { |
| | | padding-left: initial; |
| | | padding-right: 4px; |
| | | } |
| | | .slider.slider-disabled .slider-handle { |
| | | background-image: -webkit-linear-gradient(top, #dfdfdf 0%, #bebebe 100%); |
| | | background-image: -o-linear-gradient(top, #dfdfdf 0%, #bebebe 100%); |
| | | background-image: linear-gradient(to bottom, #dfdfdf 0%, #bebebe 100%); |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf', endColorstr='#ffbebebe', GradientType=0); |
| | | background-repeat: repeat-x; |
| | | } |
| | | .slider.slider-disabled .slider-track { |
| | | background-image: -webkit-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%); |
| | | background-image: -o-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%); |
| | | background-image: linear-gradient(to bottom, #e5e5e5 0%, #e9e9e9 100%); |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5', endColorstr='#ffe9e9e9', GradientType=0); |
| | | background-repeat: repeat-x; |
| | | cursor: not-allowed; |
| | | } |
| | | .slider input { |
| | | display: none; |
| | | } |
| | | .slider .tooltip { |
| | | pointer-events: none; |
| | | } |
| | | .slider .tooltip.top { |
| | | margin-top: -36px; |
| | | } |
| | | .slider .tooltip-inner { |
| | | white-space: nowrap; |
| | | max-width: none; |
| | | } |
| | | .slider .hide { |
| | | display: none; |
| | | } |
| | | .slider-track { |
| | | position: absolute; |
| | | cursor: pointer; |
| | | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%); |
| | | background-image: -o-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%); |
| | | background-image: linear-gradient(to bottom, #f5f5f5 0%, #f9f9f9 100%); |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); |
| | | background-repeat: repeat-x; |
| | | -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); |
| | | box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); |
| | | border-radius: 4px; |
| | | } |
| | | .slider-selection { |
| | | position: absolute; |
| | | background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); |
| | | background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); |
| | | background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%); |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); |
| | | background-repeat: repeat-x; |
| | | -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); |
| | | box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); |
| | | -webkit-box-sizing: border-box; |
| | | -moz-box-sizing: border-box; |
| | | box-sizing: border-box; |
| | | border-radius: 4px; |
| | | } |
| | | .slider-selection.tick-slider-selection { |
| | | background-image: -webkit-linear-gradient(top, #8ac1ef 0%, #82b3de 100%); |
| | | background-image: -o-linear-gradient(top, #8ac1ef 0%, #82b3de 100%); |
| | | background-image: linear-gradient(to bottom, #8ac1ef 0%, #82b3de 100%); |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef', endColorstr='#ff82b3de', GradientType=0); |
| | | background-repeat: repeat-x; |
| | | } |
| | | .slider-track-low, |
| | | .slider-track-high { |
| | | position: absolute; |
| | | background: transparent; |
| | | -webkit-box-sizing: border-box; |
| | | -moz-box-sizing: border-box; |
| | | box-sizing: border-box; |
| | | border-radius: 4px; |
| | | } |
| | | .slider-handle { |
| | | position: absolute; |
| | | top: 0; |
| | | width: 20px; |
| | | height: 20px; |
| | | background-color: #337ab7; |
| | | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); |
| | | background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); |
| | | background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); |
| | | background-repeat: repeat-x; |
| | | filter: none; |
| | | -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); |
| | | box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); |
| | | border: 0px solid transparent; |
| | | } |
| | | .slider-handle:hover { |
| | | cursor: pointer; |
| | | } |
| | | .slider-handle.round { |
| | | border-radius: 50%; |
| | | } |
| | | .slider-handle.triangle { |
| | | background: transparent none; |
| | | } |
| | | .slider-handle.custom { |
| | | background: transparent none; |
| | | } |
| | | .slider-handle.custom::before { |
| | | line-height: 20px; |
| | | font-size: 20px; |
| | | content: '\2605'; |
| | | color: #726204; |
| | | } |
| | | .slider-tick { |
| | | position: absolute; |
| | | cursor: pointer; |
| | | width: 20px; |
| | | height: 20px; |
| | | background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); |
| | | background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); |
| | | background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%); |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); |
| | | background-repeat: repeat-x; |
| | | -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); |
| | | box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); |
| | | -webkit-box-sizing: border-box; |
| | | -moz-box-sizing: border-box; |
| | | box-sizing: border-box; |
| | | filter: none; |
| | | opacity: 0.8; |
| | | border: 0px solid transparent; |
| | | } |
| | | .slider-tick.round { |
| | | border-radius: 50%; |
| | | } |
| | | .slider-tick.triangle { |
| | | background: transparent none; |
| | | } |
| | | .slider-tick.custom { |
| | | background: transparent none; |
| | | } |
| | | .slider-tick.custom::before { |
| | | line-height: 20px; |
| | | font-size: 20px; |
| | | content: '\2605'; |
| | | color: #726204; |
| | | } |
| | | .slider-tick.in-selection { |
| | | background-image: -webkit-linear-gradient(top, #8ac1ef 0%, #82b3de 100%); |
| | | background-image: -o-linear-gradient(top, #8ac1ef 0%, #82b3de 100%); |
| | | background-image: linear-gradient(to bottom, #8ac1ef 0%, #82b3de 100%); |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef', endColorstr='#ff82b3de', GradientType=0); |
| | | background-repeat: repeat-x; |
| | | opacity: 1; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /*! ======================================================= |
| | | VERSION 10.6.2 |
| | | ========================================================= */ |
| | | /*! ========================================================= |
| | | * bootstrap-slider.js |
| | | * |
| | | * Maintainers: |
| | | * Kyle Kemp |
| | | * - Twitter: @seiyria |
| | | * - Github: seiyria |
| | | * Rohit Kalkur |
| | | * - Twitter: @Rovolutionary |
| | | * - Github: rovolution |
| | | * |
| | | * ========================================================= |
| | | * |
| | | * bootstrap-slider is released under the MIT License |
| | | * Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors |
| | | * |
| | | * Permission is hereby granted, free of charge, to any person |
| | | * obtaining a copy of this software and associated documentation |
| | | * files (the "Software"), to deal in the Software without |
| | | * restriction, including without limitation the rights to use, |
| | | * copy, modify, merge, publish, distribute, sublicense, and/or sell |
| | | * copies of the Software, and to permit persons to whom the |
| | | * Software is furnished to do so, subject to the following |
| | | * conditions: |
| | | * |
| | | * The above copyright notice and this permission notice shall be |
| | | * included in all copies or substantial portions of the Software. |
| | | * |
| | | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| | | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
| | | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| | | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
| | | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
| | | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
| | | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
| | | * OTHER DEALINGS IN THE SOFTWARE. |
| | | * |
| | | * ========================================================= */.slider{display:inline-block;vertical-align:middle;position:relative}.slider.slider-horizontal{width:210px;height:20px}.slider.slider-horizontal .slider-track{height:10px;width:100%;margin-top:-5px;top:50%;left:0}.slider.slider-horizontal .slider-selection,.slider.slider-horizontal .slider-track-low,.slider.slider-horizontal .slider-track-high{height:100%;top:0;bottom:0}.slider.slider-horizontal .slider-tick,.slider.slider-horizontal .slider-handle{margin-left:-10px}.slider.slider-horizontal .slider-tick.triangle,.slider.slider-horizontal .slider-handle.triangle{position:relative;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%);border-width:0 10px 10px 10px;width:0;height:0;border-bottom-color:#2e6da4;margin-top:0}.slider.slider-horizontal .slider-tick-container{white-space:nowrap;position:absolute;top:0;left:0;width:100%}.slider.slider-horizontal .slider-tick-label-container{white-space:nowrap;margin-top:20px}.slider.slider-horizontal .slider-tick-label-container .slider-tick-label{padding-top:4px;display:inline-block;text-align:center}.slider.slider-horizontal .tooltip{-ms-transform:translateX(-50%);transform:translateX(-50%)}.slider.slider-horizontal.slider-rtl .slider-track{left:initial;right:0}.slider.slider-horizontal.slider-rtl .slider-tick,.slider.slider-horizontal.slider-rtl .slider-handle{margin-left:initial;margin-right:-10px}.slider.slider-horizontal.slider-rtl .slider-tick-container{left:initial;right:0}.slider.slider-horizontal.slider-rtl .tooltip{-ms-transform:translateX(50%);transform:translateX(50%)}.slider.slider-vertical{height:210px;width:20px}.slider.slider-vertical .slider-track{width:10px;height:100%;left:25%;top:0}.slider.slider-vertical .slider-selection{width:100%;left:0;top:0;bottom:0}.slider.slider-vertical .slider-track-low,.slider.slider-vertical .slider-track-high{width:100%;left:0;right:0}.slider.slider-vertical .slider-tick,.slider.slider-vertical .slider-handle{margin-top:-10px}.slider.slider-vertical .slider-tick.triangle,.slider.slider-vertical .slider-handle.triangle{border-width:10px 0 10px 10px;width:1px;height:1px;border-left-color:#2e6da4;border-right-color:#2e6da4;margin-left:0;margin-right:0}.slider.slider-vertical .slider-tick-label-container{white-space:nowrap}.slider.slider-vertical .slider-tick-label-container .slider-tick-label{padding-left:4px}.slider.slider-vertical .tooltip{-ms-transform:translateY(-50%);transform:translateY(-50%)}.slider.slider-vertical.slider-rtl .slider-track{left:initial;right:25%}.slider.slider-vertical.slider-rtl .slider-selection{left:initial;right:0}.slider.slider-vertical.slider-rtl .slider-tick.triangle,.slider.slider-vertical.slider-rtl .slider-handle.triangle{border-width:10px 10px 10px 0}.slider.slider-vertical.slider-rtl .slider-tick-label-container .slider-tick-label{padding-left:initial;padding-right:4px}.slider.slider-disabled .slider-handle{background-image:-webkit-linear-gradient(top,#dfdfdf 0,#bebebe 100%);background-image:-o-linear-gradient(top,#dfdfdf 0,#bebebe 100%);background-image:linear-gradient(to bottom,#dfdfdf 0,#bebebe 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf',endColorstr='#ffbebebe',GradientType=0);background-repeat:repeat-x}.slider.slider-disabled .slider-track{background-image:-webkit-linear-gradient(top,#e5e5e5 0,#e9e9e9 100%);background-image:-o-linear-gradient(top,#e5e5e5 0,#e9e9e9 100%);background-image:linear-gradient(to bottom,#e5e5e5 0,#e9e9e9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5',endColorstr='#ffe9e9e9',GradientType=0);background-repeat:repeat-x;cursor:not-allowed}.slider input{display:none}.slider .tooltip{pointer-events:none}.slider .tooltip.top{margin-top:-36px}.slider .tooltip-inner{white-space:nowrap;max-width:none}.slider .hide{display:none}.slider-track{position:absolute;cursor:pointer;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);border-radius:4px}.slider-selection{position:absolute;background-image:-webkit-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#f9f9f9 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9',endColorstr='#fff5f5f5',GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.slider-selection.tick-slider-selection{background-image:-webkit-linear-gradient(top,#8ac1ef 0,#82b3de 100%);background-image:-o-linear-gradient(top,#8ac1ef 0,#82b3de 100%);background-image:linear-gradient(to bottom,#8ac1ef 0,#82b3de 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef',endColorstr='#ff82b3de',GradientType=0);background-repeat:repeat-x}.slider-track-low,.slider-track-high{position:absolute;background:transparent;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.slider-handle{position:absolute;top:0;width:20px;height:20px;background-color:#337ab7;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7',endColorstr='#ff2e6da4',GradientType=0);background-repeat:repeat-x;filter:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);border:0 solid transparent}.slider-handle:hover{cursor:pointer}.slider-handle.round{border-radius:50%}.slider-handle.triangle{background:transparent none}.slider-handle.custom{background:transparent none}.slider-handle.custom::before{line-height:20px;font-size:20px;content:'\2605';color:#726204}.slider-tick{position:absolute;cursor:pointer;width:20px;height:20px;background-image:-webkit-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#f9f9f9 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9',endColorstr='#fff5f5f5',GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;filter:none;opacity:.8;border:0 solid transparent}.slider-tick.round{border-radius:50%}.slider-tick.triangle{background:transparent none}.slider-tick.custom{background:transparent none}.slider-tick.custom::before{line-height:20px;font-size:20px;content:'\2605';color:#726204}.slider-tick.in-selection{background-image:-webkit-linear-gradient(top,#8ac1ef 0,#82b3de 100%);background-image:-o-linear-gradient(top,#8ac1ef 0,#82b3de 100%);background-image:linear-gradient(to bottom,#8ac1ef 0,#82b3de 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef',endColorstr='#ff82b3de',GradientType=0);background-repeat:repeat-x;opacity:1} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * bootstrap-switch - Turn checkboxes and radio buttons into toggle switches. |
| | | * |
| | | * @version v3.4.0 |
| | | * @homepage https://bttstrp.github.io/bootstrap-switch |
| | | * @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu) |
| | | * @license MIT |
| | | */ |
| | | |
| | | .clearfix { |
| | | *zoom: 1; |
| | | } |
| | | .clearfix:before, |
| | | .clearfix:after { |
| | | display: table; |
| | | content: ""; |
| | | line-height: 0; |
| | | } |
| | | .clearfix:after { |
| | | clear: both; |
| | | } |
| | | .hide-text { |
| | | font: 0/0 a; |
| | | color: transparent; |
| | | text-shadow: none; |
| | | background-color: transparent; |
| | | border: 0; |
| | | } |
| | | .input-block-level { |
| | | display: block; |
| | | width: 100%; |
| | | min-height: 30px; |
| | | -webkit-box-sizing: border-box; |
| | | -moz-box-sizing: border-box; |
| | | box-sizing: border-box; |
| | | } |
| | | .bootstrap-switch { |
| | | display: inline-block; |
| | | direction: ltr; |
| | | cursor: pointer; |
| | | -webkit-border-radius: 5px; |
| | | -moz-border-radius: 5px; |
| | | border-radius: 5px; |
| | | border: 1px solid; |
| | | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); |
| | | position: relative; |
| | | text-align: left; |
| | | overflow: hidden; |
| | | line-height: 8px; |
| | | z-index: 0; |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | -o-user-select: none; |
| | | user-select: none; |
| | | vertical-align: middle; |
| | | -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
| | | -moz-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
| | | -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
| | | transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-container { |
| | | display: inline-block; |
| | | top: 0; |
| | | -webkit-border-radius: 4px; |
| | | -moz-border-radius: 4px; |
| | | border-radius: 4px; |
| | | -webkit-transform: translate3d(0, 0, 0); |
| | | -moz-transform: translate3d(0, 0, 0); |
| | | -o-transform: translate3d(0, 0, 0); |
| | | transform: translate3d(0, 0, 0); |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on, |
| | | .bootstrap-switch .bootstrap-switch-handle-off, |
| | | .bootstrap-switch .bootstrap-switch-label { |
| | | -webkit-box-sizing: border-box; |
| | | -moz-box-sizing: border-box; |
| | | box-sizing: border-box; |
| | | cursor: pointer; |
| | | display: inline-block !important; |
| | | padding-top: 4px; |
| | | padding-bottom: 4px; |
| | | padding-left: 8px; |
| | | padding-right: 8px; |
| | | font-size: 14px; |
| | | line-height: 20px; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on, |
| | | .bootstrap-switch .bootstrap-switch-handle-off { |
| | | text-align: center; |
| | | z-index: 1; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary { |
| | | color: #fff; |
| | | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); |
| | | background-color: #005fcc; |
| | | background-image: -moz-linear-gradient(top, #0044cc, #08c); |
| | | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0044cc), to(#08c)); |
| | | background-image: -webkit-linear-gradient(top, #0044cc, #08c); |
| | | background-image: -o-linear-gradient(top, #0044cc, #08c); |
| | | background-image: linear-gradient(to bottom, #0044cc, #08c); |
| | | background-repeat: repeat-x; |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0044cc', endColorstr='#ff0088cc', GradientType=0); |
| | | border-color: #08c #08c #005580; |
| | | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); |
| | | *background-color: #08c; |
| | | /* Darken IE7 buttons by default so they stand out more given they won't have borders */ |
| | | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary[disabled], |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary[disabled] { |
| | | color: #fff; |
| | | background-color: #08c; |
| | | *background-color: #0077b3; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active { |
| | | background-color: #006699 \9; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info { |
| | | color: #fff; |
| | | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); |
| | | background-color: #41a7c5; |
| | | background-image: -moz-linear-gradient(top, #2f96b4, #5bc0de); |
| | | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2f96b4), to(#5bc0de)); |
| | | background-image: -webkit-linear-gradient(top, #2f96b4, #5bc0de); |
| | | background-image: -o-linear-gradient(top, #2f96b4, #5bc0de); |
| | | background-image: linear-gradient(to bottom, #2f96b4, #5bc0de); |
| | | background-repeat: repeat-x; |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f96b4', endColorstr='#ff5bc0de', GradientType=0); |
| | | border-color: #5bc0de #5bc0de #28a1c5; |
| | | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); |
| | | *background-color: #5bc0de; |
| | | /* Darken IE7 buttons by default so they stand out more given they won't have borders */ |
| | | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info[disabled], |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info[disabled] { |
| | | color: #fff; |
| | | background-color: #5bc0de; |
| | | *background-color: #46b8da; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.active { |
| | | background-color: #31b0d5 \9; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success { |
| | | color: #fff; |
| | | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); |
| | | background-color: #58b058; |
| | | background-image: -moz-linear-gradient(top, #51a351, #62c462); |
| | | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#51a351), to(#62c462)); |
| | | background-image: -webkit-linear-gradient(top, #51a351, #62c462); |
| | | background-image: -o-linear-gradient(top, #51a351, #62c462); |
| | | background-image: linear-gradient(to bottom, #51a351, #62c462); |
| | | background-repeat: repeat-x; |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff51a351', endColorstr='#ff62c462', GradientType=0); |
| | | border-color: #62c462 #62c462 #3b9e3b; |
| | | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); |
| | | *background-color: #62c462; |
| | | /* Darken IE7 buttons by default so they stand out more given they won't have borders */ |
| | | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success[disabled], |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success[disabled] { |
| | | color: #fff; |
| | | background-color: #62c462; |
| | | *background-color: #4fbd4f; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.active { |
| | | background-color: #42b142 \9; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning { |
| | | color: #fff; |
| | | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); |
| | | background-color: #f9a123; |
| | | background-image: -moz-linear-gradient(top, #f89406, #fbb450); |
| | | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f89406), to(#fbb450)); |
| | | background-image: -webkit-linear-gradient(top, #f89406, #fbb450); |
| | | background-image: -o-linear-gradient(top, #f89406, #fbb450); |
| | | background-image: linear-gradient(to bottom, #f89406, #fbb450); |
| | | background-repeat: repeat-x; |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff89406', endColorstr='#fffbb450', GradientType=0); |
| | | border-color: #fbb450 #fbb450 #f89406; |
| | | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); |
| | | *background-color: #fbb450; |
| | | /* Darken IE7 buttons by default so they stand out more given they won't have borders */ |
| | | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning[disabled], |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning[disabled] { |
| | | color: #fff; |
| | | background-color: #fbb450; |
| | | *background-color: #faa937; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.active { |
| | | background-color: #fa9f1e \9; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger { |
| | | color: #fff; |
| | | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); |
| | | background-color: #d14641; |
| | | background-image: -moz-linear-gradient(top, #bd362f, #ee5f5b); |
| | | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bd362f), to(#ee5f5b)); |
| | | background-image: -webkit-linear-gradient(top, #bd362f, #ee5f5b); |
| | | background-image: -o-linear-gradient(top, #bd362f, #ee5f5b); |
| | | background-image: linear-gradient(to bottom, #bd362f, #ee5f5b); |
| | | background-repeat: repeat-x; |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbd362f', endColorstr='#ffee5f5b', GradientType=0); |
| | | border-color: #ee5f5b #ee5f5b #e51d18; |
| | | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); |
| | | *background-color: #ee5f5b; |
| | | /* Darken IE7 buttons by default so they stand out more given they won't have borders */ |
| | | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger[disabled], |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger[disabled] { |
| | | color: #fff; |
| | | background-color: #ee5f5b; |
| | | *background-color: #ec4844; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.active { |
| | | background-color: #e9322d \9; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default { |
| | | color: #333; |
| | | text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); |
| | | background-color: #f0f0f0; |
| | | background-image: -moz-linear-gradient(top, #e6e6e6, #fff); |
| | | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#fff)); |
| | | background-image: -webkit-linear-gradient(top, #e6e6e6, #fff); |
| | | background-image: -o-linear-gradient(top, #e6e6e6, #fff); |
| | | background-image: linear-gradient(to bottom, #e6e6e6, #fff); |
| | | background-repeat: repeat-x; |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffffffff', GradientType=0); |
| | | border-color: #fff #fff #d9d9d9; |
| | | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); |
| | | *background-color: #fff; |
| | | /* Darken IE7 buttons by default so they stand out more given they won't have borders */ |
| | | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:hover, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:focus, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.disabled, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default[disabled], |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default[disabled] { |
| | | color: #333; |
| | | background-color: #fff; |
| | | *background-color: #f2f2f2; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active, |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.active, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.active { |
| | | background-color: #e6e6e6 \9; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-label { |
| | | text-align: center; |
| | | margin-top: -1px; |
| | | margin-bottom: -1px; |
| | | z-index: 100; |
| | | border-left: 1px solid #ccc; |
| | | border-right: 1px solid #ccc; |
| | | color: #333; |
| | | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); |
| | | background-color: #f5f5f5; |
| | | background-image: -moz-linear-gradient(top, #fff, #e6e6e6); |
| | | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#e6e6e6)); |
| | | background-image: -webkit-linear-gradient(top, #fff, #e6e6e6); |
| | | background-image: -o-linear-gradient(top, #fff, #e6e6e6); |
| | | background-image: linear-gradient(to bottom, #fff, #e6e6e6); |
| | | background-repeat: repeat-x; |
| | | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); |
| | | border-color: #e6e6e6 #e6e6e6 #bfbfbf; |
| | | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); |
| | | *background-color: #e6e6e6; |
| | | /* Darken IE7 buttons by default so they stand out more given they won't have borders */ |
| | | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-label:hover, |
| | | .bootstrap-switch .bootstrap-switch-label:focus, |
| | | .bootstrap-switch .bootstrap-switch-label:active, |
| | | .bootstrap-switch .bootstrap-switch-label.active, |
| | | .bootstrap-switch .bootstrap-switch-label.disabled, |
| | | .bootstrap-switch .bootstrap-switch-label[disabled] { |
| | | color: #333; |
| | | background-color: #e6e6e6; |
| | | *background-color: #d9d9d9; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-label:active, |
| | | .bootstrap-switch .bootstrap-switch-label.active { |
| | | background-color: #cccccc \9; |
| | | } |
| | | .bootstrap-switch span::before { |
| | | content: "\200b"; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on { |
| | | -webkit-border-top-left-radius: 4px; |
| | | -moz-border-radius-topleft: 4px; |
| | | border-top-left-radius: 4px; |
| | | -webkit-border-bottom-left-radius: 4px; |
| | | -moz-border-radius-bottomleft: 4px; |
| | | border-bottom-left-radius: 4px; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-off { |
| | | -webkit-border-top-right-radius: 4px; |
| | | -moz-border-radius-topright: 4px; |
| | | border-top-right-radius: 4px; |
| | | -webkit-border-bottom-right-radius: 4px; |
| | | -moz-border-radius-bottomright: 4px; |
| | | border-bottom-right-radius: 4px; |
| | | } |
| | | .bootstrap-switch input[type='radio'], |
| | | .bootstrap-switch input[type='checkbox'] { |
| | | position: absolute !important; |
| | | top: 0; |
| | | left: 0; |
| | | opacity: 0; |
| | | filter: alpha(opacity=0); |
| | | z-index: -1; |
| | | visibility: hidden; |
| | | } |
| | | .bootstrap-switch input[type='radio'].form-control, |
| | | .bootstrap-switch input[type='checkbox'].form-control { |
| | | height: auto; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-mini { |
| | | min-width: 71px; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label { |
| | | padding: 3px 6px; |
| | | font-size: 10px; |
| | | line-height: 9px; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-small { |
| | | min-width: 79px; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label { |
| | | padding: 3px 6px; |
| | | font-size: 12px; |
| | | line-height: 18px; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-large { |
| | | min-width: 120px; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label { |
| | | padding: 9px 12px; |
| | | font-size: 16px; |
| | | line-height: normal; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-disabled, |
| | | .bootstrap-switch.bootstrap-switch-readonly, |
| | | .bootstrap-switch.bootstrap-switch-indeterminate { |
| | | cursor: default !important; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label, |
| | | .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label, |
| | | .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label { |
| | | opacity: 0.5; |
| | | filter: alpha(opacity=50); |
| | | cursor: default !important; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container { |
| | | -webkit-transition: margin-left 0.5s; |
| | | -moz-transition: margin-left 0.5s; |
| | | -o-transition: margin-left 0.5s; |
| | | transition: margin-left 0.5s; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on { |
| | | -webkit-border-top-left-radius: 0; |
| | | -moz-border-radius-topleft: 0; |
| | | border-top-left-radius: 0; |
| | | -webkit-border-bottom-left-radius: 0; |
| | | -moz-border-radius-bottomleft: 0; |
| | | border-bottom-left-radius: 0; |
| | | -webkit-border-top-right-radius: 4px; |
| | | -moz-border-radius-topright: 4px; |
| | | border-top-right-radius: 4px; |
| | | -webkit-border-bottom-right-radius: 4px; |
| | | -moz-border-radius-bottomright: 4px; |
| | | border-bottom-right-radius: 4px; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off { |
| | | -webkit-border-top-right-radius: 0; |
| | | -moz-border-radius-topright: 0; |
| | | border-top-right-radius: 0; |
| | | -webkit-border-bottom-right-radius: 0; |
| | | -moz-border-radius-bottomright: 0; |
| | | border-bottom-right-radius: 0; |
| | | -webkit-border-top-left-radius: 4px; |
| | | -moz-border-radius-topleft: 4px; |
| | | border-top-left-radius: 4px; |
| | | -webkit-border-bottom-left-radius: 4px; |
| | | -moz-border-radius-bottomleft: 4px; |
| | | border-bottom-left-radius: 4px; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-focused { |
| | | border-color: rgba(82, 168, 236, 0.8); |
| | | outline: 0; |
| | | outline: thin dotted \9; |
| | | -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6); |
| | | -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6); |
| | | box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6); |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label, |
| | | .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label { |
| | | -webkit-border-top-right-radius: 4px; |
| | | -moz-border-radius-topright: 4px; |
| | | border-top-right-radius: 4px; |
| | | -webkit-border-bottom-right-radius: 4px; |
| | | -moz-border-radius-bottomright: 4px; |
| | | border-bottom-right-radius: 4px; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label, |
| | | .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label { |
| | | -webkit-border-top-left-radius: 4px; |
| | | -moz-border-radius-topleft: 4px; |
| | | border-top-left-radius: 4px; |
| | | -webkit-border-bottom-left-radius: 4px; |
| | | -moz-border-radius-bottomleft: 4px; |
| | | border-bottom-left-radius: 4px; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * bootstrap-switch - Turn checkboxes and radio buttons into toggle switches. |
| | | * |
| | | * @version v3.4.0 |
| | | * @homepage https://bttstrp.github.io/bootstrap-switch |
| | | * @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu) |
| | | * @license MIT |
| | | */ |
| | | |
| | | .clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;border:1px solid;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-moz-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.bootstrap-switch .bootstrap-switch-container{display:inline-block;top:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:inline-block!important;font-size:14px;line-height:20px;padding:4px 8px}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on{text-align:center;z-index:1}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#005fcc;background-image:-moz-linear-gradient(top,#04c,#08c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#04c),to(#08c));background-image:-webkit-linear-gradient(top,#04c,#08c);background-image:-o-linear-gradient(top,#04c,#08c);background-image:linear-gradient(to bottom,#04c,#08c);background-repeat:repeat-x;border-color:#08c #08c #005580;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.disabled,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:focus,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:hover,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary[disabled],.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.disabled,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:focus,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:hover,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary[disabled]{color:#fff;background-color:#08c}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active{background-color:#069\9}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#41a7c5;background-image:-moz-linear-gradient(top,#2f96b4,#5bc0de);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2f96b4),to(#5bc0de));background-image:-webkit-linear-gradient(top,#2f96b4,#5bc0de);background-image:-o-linear-gradient(top,#2f96b4,#5bc0de);background-image:linear-gradient(to bottom,#2f96b4,#5bc0de);background-repeat:repeat-x;border-color:#5bc0de #5bc0de #28a1c5;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.disabled,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:focus,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:hover,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info[disabled],.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.disabled,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:focus,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:hover,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info[disabled]{color:#fff;background-color:#5bc0de}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:active{background-color:#31b0d5\9}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#58b058;background-image:-moz-linear-gradient(top,#51a351,#62c462);background-image:-webkit-gradient(linear,0 0,0 100%,from(#51a351),to(#62c462));background-image:-webkit-linear-gradient(top,#51a351,#62c462);background-image:-o-linear-gradient(top,#51a351,#62c462);background-image:linear-gradient(to bottom,#51a351,#62c462);background-repeat:repeat-x;border-color:#62c462 #62c462 #3b9e3b;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.disabled,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:focus,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:hover,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success[disabled],.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.disabled,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:focus,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:hover,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success[disabled]{color:#fff;background-color:#62c462}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:active{background-color:#42b142\9}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#f9a123;background-image:-moz-linear-gradient(top,#f89406,#fbb450);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f89406),to(#fbb450));background-image:-webkit-linear-gradient(top,#f89406,#fbb450);background-image:-o-linear-gradient(top,#f89406,#fbb450);background-image:linear-gradient(to bottom,#f89406,#fbb450);background-repeat:repeat-x;border-color:#fbb450 #fbb450 #f89406;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.disabled,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:focus,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:hover,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning[disabled],.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.disabled,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:focus,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:hover,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning[disabled]{color:#fff;background-color:#fbb450}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:active{background-color:#fa9f1e\9}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#d14641;background-image:-moz-linear-gradient(top,#bd362f,#ee5f5b);background-image:-webkit-gradient(linear,0 0,0 100%,from(#bd362f),to(#ee5f5b));background-image:-webkit-linear-gradient(top,#bd362f,#ee5f5b);background-image:-o-linear-gradient(top,#bd362f,#ee5f5b);background-image:linear-gradient(to bottom,#bd362f,#ee5f5b);background-repeat:repeat-x;border-color:#ee5f5b #ee5f5b #e51d18;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.disabled,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:focus,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:hover,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger[disabled],.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.disabled,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:focus,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:hover,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger[disabled]{color:#fff;background-color:#ee5f5b}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active{background-color:#e9322d\9}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default{color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#e6e6e6,#fff);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(#fff));background-image:-webkit-linear-gradient(top,#e6e6e6,#fff);background-image:-o-linear-gradient(top,#e6e6e6,#fff);background-image:linear-gradient(to bottom,#e6e6e6,#fff);background-repeat:repeat-x;border-color:#fff #fff #d9d9d9;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.disabled,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:focus,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:hover,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default[disabled],.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.disabled,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:focus,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:hover,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default[disabled]{color:#333;background-color:#fff}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.active,.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.active,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:active{background-color:#e6e6e6\9}.bootstrap-switch .bootstrap-switch-label{text-align:center;margin-top:-1px;margin-bottom:-1px;z-index:100;border-left:1px solid #ccc;border-right:1px solid #ccc;color:#333;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.bootstrap-switch .bootstrap-switch-label.active,.bootstrap-switch .bootstrap-switch-label.disabled,.bootstrap-switch .bootstrap-switch-label:active,.bootstrap-switch .bootstrap-switch-label:focus,.bootstrap-switch .bootstrap-switch-label:hover,.bootstrap-switch .bootstrap-switch-label[disabled]{color:#333;background-color:#e6e6e6}.bootstrap-switch .bootstrap-switch-label.active,.bootstrap-switch .bootstrap-switch-label:active{background-color:#ccc\9}.bootstrap-switch span::before{content:"\200b"}.bootstrap-switch .bootstrap-switch-handle-on{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-switch .bootstrap-switch-handle-off{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}.bootstrap-switch input[type=radio],.bootstrap-switch input[type=checkbox]{position:absolute!important;top:0;left:0;opacity:0;filter:alpha(opacity=0);z-index:-1;visibility:hidden}.bootstrap-switch input[type=radio].form-control,.bootstrap-switch input[type=checkbox].form-control{height:auto}.bootstrap-switch.bootstrap-switch-mini{min-width:71px}.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label{padding:3px 6px;font-size:10px;line-height:9px}.bootstrap-switch.bootstrap-switch-small{min-width:79px}.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label{padding:3px 6px;font-size:12px;line-height:18px}.bootstrap-switch.bootstrap-switch-large{min-width:120px}.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label{padding:9px 12px;font-size:16px;line-height:normal}.bootstrap-switch.bootstrap-switch-disabled,.bootstrap-switch.bootstrap-switch-indeterminate,.bootstrap-switch.bootstrap-switch-readonly{cursor:default!important}.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label{opacity:.5;filter:alpha(opacity=50);cursor:default!important}.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{-webkit-transition:margin-left .5s;-moz-transition:margin-left .5s;-o-transition:margin-left .5s;transition:margin-left .5s}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on{-webkit-border-top-left-radius:0;-moz-border-radius-topleft:0;-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-radius:0 4px 4px 0}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{-webkit-border-top-right-radius:0;-moz-border-radius-topright:0;-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-radius:4px 0 0 4px}.bootstrap-switch.bootstrap-switch-focused{border-color:rgba(82,168,236,.8);outline:0;outline:dotted thin\9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6)}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * bootstrap-switch - Turn checkboxes and radio buttons into toggle switches. |
| | | * |
| | | * @version v3.4.0 |
| | | * @homepage https://bttstrp.github.io/bootstrap-switch |
| | | * @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu) |
| | | * @license MIT |
| | | */ |
| | | |
| | | .bootstrap-switch { |
| | | display: inline-block; |
| | | direction: ltr; |
| | | cursor: pointer; |
| | | border-radius: 4px; |
| | | border: 1px solid; |
| | | border-color: #ccc; |
| | | position: relative; |
| | | text-align: left; |
| | | overflow: hidden; |
| | | line-height: 8px; |
| | | z-index: 0; |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | vertical-align: middle; |
| | | -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
| | | -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
| | | transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-container { |
| | | display: inline-block; |
| | | top: 0; |
| | | border-radius: 4px; |
| | | -webkit-transform: translate3d(0, 0, 0); |
| | | transform: translate3d(0, 0, 0); |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on, |
| | | .bootstrap-switch .bootstrap-switch-handle-off, |
| | | .bootstrap-switch .bootstrap-switch-label { |
| | | -webkit-box-sizing: border-box; |
| | | -moz-box-sizing: border-box; |
| | | box-sizing: border-box; |
| | | cursor: pointer; |
| | | display: table-cell; |
| | | vertical-align: middle; |
| | | padding: 6px 12px; |
| | | font-size: 14px; |
| | | line-height: 20px; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on, |
| | | .bootstrap-switch .bootstrap-switch-handle-off { |
| | | text-align: center; |
| | | z-index: 1; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary { |
| | | color: #fff; |
| | | background: #337ab7; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info { |
| | | color: #fff; |
| | | background: #5bc0de; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success { |
| | | color: #fff; |
| | | background: #5cb85c; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning { |
| | | background: #f0ad4e; |
| | | color: #fff; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger { |
| | | color: #fff; |
| | | background: #d9534f; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default, |
| | | .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default { |
| | | color: #000; |
| | | background: #eeeeee; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-label { |
| | | text-align: center; |
| | | margin-top: -1px; |
| | | margin-bottom: -1px; |
| | | z-index: 100; |
| | | color: #333; |
| | | background: #fff; |
| | | } |
| | | .bootstrap-switch span::before { |
| | | content: "\200b"; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-on { |
| | | border-bottom-left-radius: 3px; |
| | | border-top-left-radius: 3px; |
| | | } |
| | | .bootstrap-switch .bootstrap-switch-handle-off { |
| | | border-bottom-right-radius: 3px; |
| | | border-top-right-radius: 3px; |
| | | } |
| | | .bootstrap-switch input[type='radio'], |
| | | .bootstrap-switch input[type='checkbox'] { |
| | | position: absolute !important; |
| | | top: 0; |
| | | left: 0; |
| | | margin: 0; |
| | | z-index: -1; |
| | | opacity: 0; |
| | | filter: alpha(opacity=0); |
| | | visibility: hidden; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label { |
| | | padding: 1px 5px; |
| | | font-size: 12px; |
| | | line-height: 1.5; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label { |
| | | padding: 5px 10px; |
| | | font-size: 12px; |
| | | line-height: 1.5; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label { |
| | | padding: 6px 16px; |
| | | font-size: 18px; |
| | | line-height: 1.3333333; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-disabled, |
| | | .bootstrap-switch.bootstrap-switch-readonly, |
| | | .bootstrap-switch.bootstrap-switch-indeterminate { |
| | | cursor: default !important; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on, |
| | | .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off, |
| | | .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label, |
| | | .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label, |
| | | .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label { |
| | | opacity: 0.5; |
| | | filter: alpha(opacity=50); |
| | | cursor: default !important; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container { |
| | | -webkit-transition: margin-left 0.5s; |
| | | -o-transition: margin-left 0.5s; |
| | | transition: margin-left 0.5s; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on { |
| | | border-bottom-left-radius: 0; |
| | | border-top-left-radius: 0; |
| | | border-bottom-right-radius: 3px; |
| | | border-top-right-radius: 3px; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off { |
| | | border-bottom-right-radius: 0; |
| | | border-top-right-radius: 0; |
| | | border-bottom-left-radius: 3px; |
| | | border-top-left-radius: 3px; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-focused { |
| | | border-color: #66afe9; |
| | | outline: 0; |
| | | -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); |
| | | box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label, |
| | | .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label { |
| | | border-bottom-right-radius: 3px; |
| | | border-top-right-radius: 3px; |
| | | } |
| | | .bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label, |
| | | .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label { |
| | | border-bottom-left-radius: 3px; |
| | | border-top-left-radius: 3px; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * bootstrap-switch - Turn checkboxes and radio buttons into toggle switches. |
| | | * |
| | | * @version v3.4.0 |
| | | * @homepage https://bttstrp.github.io/bootstrap-switch |
| | | * @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu) |
| | | * @license MIT |
| | | */ |
| | | |
| | | .bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;border-radius:4px;border:1px solid #ccc;position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-switch .bootstrap-switch-container{display:inline-block;top:0;border-radius:4px;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:table-cell;vertical-align:middle;padding:6px 12px;font-size:14px;line-height:20px}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on{text-align:center;z-index:1}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary{color:#fff;background:#337ab7}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info{color:#fff;background:#5bc0de}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success{color:#fff;background:#5cb85c}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning{background:#f0ad4e;color:#fff}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger{color:#fff;background:#d9534f}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default{color:#000;background:#eee}.bootstrap-switch .bootstrap-switch-label{text-align:center;margin-top:-1px;margin-bottom:-1px;z-index:100;color:#333;background:#fff}.bootstrap-switch span::before{content:"\200b"}.bootstrap-switch .bootstrap-switch-handle-on{border-bottom-left-radius:3px;border-top-left-radius:3px}.bootstrap-switch .bootstrap-switch-handle-off{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch input[type=radio],.bootstrap-switch input[type=checkbox]{position:absolute!important;top:0;left:0;margin:0;z-index:-1;opacity:0;filter:alpha(opacity=0);visibility:hidden}.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label{padding:1px 5px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label{padding:5px 10px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label{padding:6px 16px;font-size:18px;line-height:1.3333333}.bootstrap-switch.bootstrap-switch-disabled,.bootstrap-switch.bootstrap-switch-indeterminate,.bootstrap-switch.bootstrap-switch-readonly{cursor:default!important}.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label{opacity:.5;filter:alpha(opacity=50);cursor:default!important}.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{-webkit-transition:margin-left .5s;-o-transition:margin-left .5s;transition:margin-left .5s}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on{border-radius:0 3px 3px 0}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{border-radius:3px 0 0 3px}.bootstrap-switch.bootstrap-switch-focused{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label{border-bottom-left-radius:3px;border-top-left-radius:3px} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * bootstrap-switch - Turn checkboxes and radio buttons into toggle switches. |
| | | * |
| | | * @version v3.4.0 |
| | | * @homepage https://bttstrp.github.io/bootstrap-switch |
| | | * @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu) |
| | | * @license MIT |
| | | */ |
| | | |
| | | (function (global, factory) { |
| | | if (typeof define === "function" && define.amd) { |
| | | define(['jquery'], factory); |
| | | } else if (typeof exports !== "undefined") { |
| | | factory(require('jquery')); |
| | | } else { |
| | | var mod = { |
| | | exports: {} |
| | | }; |
| | | factory(global.jquery); |
| | | global.bootstrapSwitch = mod.exports; |
| | | } |
| | | })(this, function (_jquery) { |
| | | 'use strict'; |
| | | |
| | | var _jquery2 = _interopRequireDefault(_jquery); |
| | | |
| | | function _interopRequireDefault(obj) { |
| | | return obj && obj.__esModule ? obj : { |
| | | default: obj |
| | | }; |
| | | } |
| | | |
| | | var _extends = Object.assign || function (target) { |
| | | for (var i = 1; i < arguments.length; i++) { |
| | | var source = arguments[i]; |
| | | |
| | | for (var key in source) { |
| | | if (Object.prototype.hasOwnProperty.call(source, key)) { |
| | | target[key] = source[key]; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return target; |
| | | }; |
| | | |
| | | function _classCallCheck(instance, Constructor) { |
| | | if (!(instance instanceof Constructor)) { |
| | | throw new TypeError("Cannot call a class as a function"); |
| | | } |
| | | } |
| | | |
| | | var _createClass = function () { |
| | | function defineProperties(target, props) { |
| | | for (var i = 0; i < props.length; i++) { |
| | | var descriptor = props[i]; |
| | | descriptor.enumerable = descriptor.enumerable || false; |
| | | descriptor.configurable = true; |
| | | if ("value" in descriptor) descriptor.writable = true; |
| | | Object.defineProperty(target, descriptor.key, descriptor); |
| | | } |
| | | } |
| | | |
| | | return function (Constructor, protoProps, staticProps) { |
| | | if (protoProps) defineProperties(Constructor.prototype, protoProps); |
| | | if (staticProps) defineProperties(Constructor, staticProps); |
| | | return Constructor; |
| | | }; |
| | | }(); |
| | | |
| | | var $ = _jquery2.default || window.jQuery || window.$; |
| | | |
| | | function getClasses(options, id) { |
| | | var state = options.state, |
| | | size = options.size, |
| | | disabled = options.disabled, |
| | | readonly = options.readonly, |
| | | indeterminate = options.indeterminate, |
| | | inverse = options.inverse; |
| | | |
| | | return [state ? 'on' : 'off', size, disabled ? 'disabled' : undefined, readonly ? 'readonly' : undefined, indeterminate ? 'indeterminate' : undefined, inverse ? 'inverse' : undefined, id ? 'id-' + id : undefined].filter(function (v) { |
| | | return v == null; |
| | | }); |
| | | } |
| | | |
| | | function prvgetElementOptions() { |
| | | return { |
| | | state: this.$element.is(':checked'), |
| | | size: this.$element.data('size'), |
| | | animate: this.$element.data('animate'), |
| | | disabled: this.$element.is(':disabled'), |
| | | readonly: this.$element.is('[readonly]'), |
| | | indeterminate: this.$element.data('indeterminate'), |
| | | inverse: this.$element.data('inverse'), |
| | | radioAllOff: this.$element.data('radio-all-off'), |
| | | onColor: this.$element.data('on-color'), |
| | | offColor: this.$element.data('off-color'), |
| | | onText: this.$element.data('on-text'), |
| | | offText: this.$element.data('off-text'), |
| | | labelText: this.$element.data('label-text'), |
| | | handleWidth: this.$element.data('handle-width'), |
| | | labelWidth: this.$element.data('label-width'), |
| | | baseClass: this.$element.data('base-class'), |
| | | wrapperClass: this.$element.data('wrapper-class') |
| | | }; |
| | | } |
| | | |
| | | function prvwidth() { |
| | | var _this = this; |
| | | |
| | | var $handles = this.$on.add(this.$off).add(this.$label).css('width', ''); |
| | | var handleWidth = this.options.handleWidth === 'auto' ? Math.round(Math.max(this.$on.width(), this.$off.width())) : this.options.handleWidth; |
| | | $handles.width(handleWidth); |
| | | this.$label.width(function (index, width) { |
| | | if (_this.options.labelWidth !== 'auto') { |
| | | return _this.options.labelWidth; |
| | | } |
| | | if (width < handleWidth) { |
| | | return handleWidth; |
| | | } |
| | | return width; |
| | | }); |
| | | this.privateHandleWidth = this.$on.outerWidth(); |
| | | this.privateLabelWidth = this.$label.outerWidth(); |
| | | this.$container.width(this.privateHandleWidth * 2 + this.privateLabelWidth); |
| | | return this.$wrapper.width(this.privateHandleWidth + this.privateLabelWidth); |
| | | } |
| | | |
| | | function prvcontainerPosition() { |
| | | var _this2 = this; |
| | | |
| | | var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.ope; |
| | | |
| | | this.$container.css('margin-left', function () { |
| | | var values = [0, '-' + _this2.privateHandleWidth + 'px']; |
| | | if (_this2.options.indeterminate) { |
| | | return '-' + _this2.privateHandleWidth / 2 + 'px'; |
| | | } |
| | | if (state) { |
| | | if (_this2.options.inverse) { |
| | | return values[1]; |
| | | } |
| | | return values[0]; |
| | | } |
| | | if (_this2.options.inverse) { |
| | | return values[0]; |
| | | } |
| | | return values[1]; |
| | | }); |
| | | } |
| | | |
| | | function prvgetClass(name) { |
| | | return this.options.baseClass + '-' + name; |
| | | } |
| | | |
| | | function prvinit() { |
| | | var _this3 = this; |
| | | |
| | | var init = function init() { |
| | | _this3.setPrevOptions(); |
| | | prvwidth.call(_this3); |
| | | prvcontainerPosition.call(_this3); |
| | | setTimeout(function () { |
| | | return _this3.options.animate && _this3.$wrapper.addClass(prvgetClass.call(_this3, 'animate')); |
| | | }, 50); |
| | | }; |
| | | if (this.$wrapper.is(':visible')) { |
| | | init(); |
| | | return; |
| | | } |
| | | var initInterval = window.setInterval(function () { |
| | | return _this3.$wrapper.is(':visible') && (init() || true) && window.clearInterval(initInterval); |
| | | }, 50); |
| | | } |
| | | |
| | | function prvelementHandlers() { |
| | | var _this4 = this; |
| | | |
| | | return this.$element.on({ |
| | | 'setPreviousOptions.bootstrapSwitch': function setPreviousOptionsBootstrapSwitch() { |
| | | return _this4.setPrevOptions(); |
| | | }, |
| | | |
| | | 'previousState.bootstrapSwitch': function previousStateBootstrapSwitch() { |
| | | _this4.options = _this4.prevOptions; |
| | | if (_this4.options.indeterminate) { |
| | | _this4.$wrapper.addClass(prvgetClass.call(_this4, 'indeterminate')); |
| | | } |
| | | _this4.$element.prop('checked', _this4.options.state).trigger('change.bootstrapSwitch', true); |
| | | }, |
| | | |
| | | 'change.bootstrapSwitch': function changeBootstrapSwitch(event, skip) { |
| | | event.preventDefault(); |
| | | event.stopImmediatePropagation(); |
| | | var state = _this4.$element.is(':checked'); |
| | | prvcontainerPosition.call(_this4, state); |
| | | if (state === _this4.options.state) { |
| | | return; |
| | | } |
| | | _this4.options.state = state; |
| | | _this4.$wrapper.toggleClass(prvgetClass.call(_this4, 'off')).toggleClass(prvgetClass.call(_this4, 'on')); |
| | | if (!skip) { |
| | | if (_this4.$element.is(':radio')) { |
| | | $('[name="' + _this4.$element.attr('name') + '"]').not(_this4.$element).prop('checked', false).trigger('change.bootstrapSwitch', true); |
| | | } |
| | | _this4.$element.trigger('switchChange.bootstrapSwitch', [state]); |
| | | } |
| | | }, |
| | | |
| | | 'focus.bootstrapSwitch': function focusBootstrapSwitch(event) { |
| | | event.preventDefault(); |
| | | _this4.$wrapper.addClass(prvgetClass.call(_this4, 'focused')); |
| | | }, |
| | | |
| | | 'blur.bootstrapSwitch': function blurBootstrapSwitch(event) { |
| | | event.preventDefault(); |
| | | _this4.$wrapper.removeClass(prvgetClass.call(_this4, 'focused')); |
| | | }, |
| | | |
| | | 'keydown.bootstrapSwitch': function keydownBootstrapSwitch(event) { |
| | | if (!event.which || _this4.options.disabled || _this4.options.readonly) { |
| | | return; |
| | | } |
| | | if (event.which === 37 || event.which === 39) { |
| | | event.preventDefault(); |
| | | event.stopImmediatePropagation(); |
| | | _this4.state(event.which === 39); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function prvhandleHandlers() { |
| | | var _this5 = this; |
| | | |
| | | this.$on.on('click.bootstrapSwitch', function (event) { |
| | | event.preventDefault(); |
| | | event.stopPropagation(); |
| | | _this5.state(false); |
| | | return _this5.$element.trigger('focus.bootstrapSwitch'); |
| | | }); |
| | | return this.$off.on('click.bootstrapSwitch', function (event) { |
| | | event.preventDefault(); |
| | | event.stopPropagation(); |
| | | _this5.state(true); |
| | | return _this5.$element.trigger('focus.bootstrapSwitch'); |
| | | }); |
| | | } |
| | | |
| | | function prvlabelHandlers() { |
| | | var _this6 = this; |
| | | |
| | | var dragStart = void 0; |
| | | var dragEnd = void 0; |
| | | var handlers = { |
| | | click: function click(event) { |
| | | event.stopPropagation(); |
| | | }, |
| | | |
| | | |
| | | 'mousedown.bootstrapSwitch touchstart.bootstrapSwitch': function mousedownBootstrapSwitchTouchstartBootstrapSwitch(event) { |
| | | if (dragStart || _this6.options.disabled || _this6.options.readonly) { |
| | | return; |
| | | } |
| | | event.preventDefault(); |
| | | event.stopPropagation(); |
| | | dragStart = (event.pageX || event.originalEvent.touches[0].pageX) - parseInt(_this6.$container.css('margin-left'), 10); |
| | | if (_this6.options.animate) { |
| | | _this6.$wrapper.removeClass(prvgetClass.call(_this6, 'animate')); |
| | | } |
| | | _this6.$element.trigger('focus.bootstrapSwitch'); |
| | | }, |
| | | |
| | | 'mousemove.bootstrapSwitch touchmove.bootstrapSwitch': function mousemoveBootstrapSwitchTouchmoveBootstrapSwitch(event) { |
| | | if (dragStart == null) { |
| | | return; |
| | | } |
| | | var difference = (event.pageX || event.originalEvent.touches[0].pageX) - dragStart; |
| | | event.preventDefault(); |
| | | if (difference < -_this6.privateHandleWidth || difference > 0) { |
| | | return; |
| | | } |
| | | dragEnd = difference; |
| | | _this6.$container.css('margin-left', dragEnd + 'px'); |
| | | }, |
| | | |
| | | 'mouseup.bootstrapSwitch touchend.bootstrapSwitch': function mouseupBootstrapSwitchTouchendBootstrapSwitch(event) { |
| | | if (!dragStart) { |
| | | return; |
| | | } |
| | | event.preventDefault(); |
| | | if (_this6.options.animate) { |
| | | _this6.$wrapper.addClass(prvgetClass.call(_this6, 'animate')); |
| | | } |
| | | if (dragEnd) { |
| | | var state = dragEnd > -(_this6.privateHandleWidth / 2); |
| | | dragEnd = false; |
| | | _this6.state(_this6.options.inverse ? !state : state); |
| | | } else { |
| | | _this6.state(!_this6.options.state); |
| | | } |
| | | dragStart = false; |
| | | }, |
| | | |
| | | 'mouseleave.bootstrapSwitch': function mouseleaveBootstrapSwitch() { |
| | | _this6.$label.trigger('mouseup.bootstrapSwitch'); |
| | | } |
| | | }; |
| | | this.$label.on(handlers); |
| | | } |
| | | |
| | | function prvexternalLabelHandler() { |
| | | var _this7 = this; |
| | | |
| | | var $externalLabel = this.$element.closest('label'); |
| | | $externalLabel.on('click', function (event) { |
| | | event.preventDefault(); |
| | | event.stopImmediatePropagation(); |
| | | if (event.target === $externalLabel[0]) { |
| | | _this7.toggleState(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function prvformHandler() { |
| | | function isBootstrapSwitch() { |
| | | return $(this).data('bootstrap-switch'); |
| | | } |
| | | |
| | | function performReset() { |
| | | return $(this).bootstrapSwitch('state', this.checked); |
| | | } |
| | | |
| | | var $form = this.$element.closest('form'); |
| | | if ($form.data('bootstrap-switch')) { |
| | | return; |
| | | } |
| | | $form.on('reset.bootstrapSwitch', function () { |
| | | window.setTimeout(function () { |
| | | $form.find('input').filter(isBootstrapSwitch).each(performReset); |
| | | }, 1); |
| | | }).data('bootstrap-switch', true); |
| | | } |
| | | |
| | | function prvgetClasses(classes) { |
| | | var _this8 = this; |
| | | |
| | | if (!$.isArray(classes)) { |
| | | return [prvgetClass.call(this, classes)]; |
| | | } |
| | | return classes.map(function (v) { |
| | | return prvgetClass.call(_this8, v); |
| | | }); |
| | | } |
| | | |
| | | var BootstrapSwitch = function () { |
| | | function BootstrapSwitch(element) { |
| | | var _this9 = this; |
| | | |
| | | var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; |
| | | |
| | | _classCallCheck(this, BootstrapSwitch); |
| | | |
| | | this.$element = $(element); |
| | | this.options = $.extend({}, $.fn.bootstrapSwitch.defaults, prvgetElementOptions.call(this), options); |
| | | this.prevOptions = {}; |
| | | this.$wrapper = $('<div>', { |
| | | class: function _class() { |
| | | return getClasses(_this9.options, _this9.$element.attr('id')).map(function (v) { |
| | | return prvgetClass.call(_this9, v); |
| | | }).concat([_this9.options.baseClass], prvgetClasses.call(_this9, _this9.options.wrapperClass)).join(' '); |
| | | } |
| | | }); |
| | | this.$container = $('<div>', { class: prvgetClass.call(this, 'container') }); |
| | | this.$on = $('<span>', { |
| | | html: this.options.onText, |
| | | class: prvgetClass.call(this, 'handle-on') + ' ' + prvgetClass.call(this, this.options.onColor) |
| | | }); |
| | | this.$off = $('<span>', { |
| | | html: this.options.offText, |
| | | class: prvgetClass.call(this, 'handle-off') + ' ' + prvgetClass.call(this, this.options.offColor) |
| | | }); |
| | | this.$label = $('<span>', { |
| | | html: this.options.labelText, |
| | | class: prvgetClass.call(this, 'label') |
| | | }); |
| | | |
| | | this.$element.on('init.bootstrapSwitch', function () { |
| | | return _this9.options.onInit(element); |
| | | }); |
| | | this.$element.on('switchChange.bootstrapSwitch', function () { |
| | | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { |
| | | args[_key] = arguments[_key]; |
| | | } |
| | | |
| | | var changeState = _this9.options.onSwitchChange.apply(element, args); |
| | | if (changeState === false) { |
| | | if (_this9.$element.is(':radio')) { |
| | | $('[name="' + _this9.$element.attr('name') + '"]').trigger('previousState.bootstrapSwitch', true); |
| | | } else { |
| | | _this9.$element.trigger('previousState.bootstrapSwitch', true); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | this.$container = this.$element.wrap(this.$container).parent(); |
| | | this.$wrapper = this.$container.wrap(this.$wrapper).parent(); |
| | | this.$element.before(this.options.inverse ? this.$off : this.$on).before(this.$label).before(this.options.inverse ? this.$on : this.$off); |
| | | |
| | | if (this.options.indeterminate) { |
| | | this.$element.prop('indeterminate', true); |
| | | } |
| | | |
| | | prvinit.call(this); |
| | | prvelementHandlers.call(this); |
| | | prvhandleHandlers.call(this); |
| | | prvlabelHandlers.call(this); |
| | | prvformHandler.call(this); |
| | | prvexternalLabelHandler.call(this); |
| | | this.$element.trigger('init.bootstrapSwitch', this.options.state); |
| | | } |
| | | |
| | | _createClass(BootstrapSwitch, [{ |
| | | key: 'setPrevOptions', |
| | | value: function setPrevOptions() { |
| | | this.prevOptions = _extends({}, this.options); |
| | | } |
| | | }, { |
| | | key: 'state', |
| | | value: function state(value, skip) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.state; |
| | | } |
| | | if (this.options.disabled || this.options.readonly || this.options.state && !this.options.radioAllOff && this.$element.is(':radio')) { |
| | | return this.$element; |
| | | } |
| | | if (this.$element.is(':radio')) { |
| | | $('[name="' + this.$element.attr('name') + '"]').trigger('setPreviousOptions.bootstrapSwitch'); |
| | | } else { |
| | | this.$element.trigger('setPreviousOptions.bootstrapSwitch'); |
| | | } |
| | | if (this.options.indeterminate) { |
| | | this.indeterminate(false); |
| | | } |
| | | this.$element.prop('checked', Boolean(value)).trigger('change.bootstrapSwitch', skip); |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'toggleState', |
| | | value: function toggleState(skip) { |
| | | if (this.options.disabled || this.options.readonly) { |
| | | return this.$element; |
| | | } |
| | | if (this.options.indeterminate) { |
| | | this.indeterminate(false); |
| | | return this.state(true); |
| | | } |
| | | return this.$element.prop('checked', !this.options.state).trigger('change.bootstrapSwitch', skip); |
| | | } |
| | | }, { |
| | | key: 'size', |
| | | value: function size(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.size; |
| | | } |
| | | if (this.options.size != null) { |
| | | this.$wrapper.removeClass(prvgetClass.call(this, this.options.size)); |
| | | } |
| | | if (value) { |
| | | this.$wrapper.addClass(prvgetClass.call(this, value)); |
| | | } |
| | | prvwidth.call(this); |
| | | prvcontainerPosition.call(this); |
| | | this.options.size = value; |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'animate', |
| | | value: function animate(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.animate; |
| | | } |
| | | if (this.options.animate === Boolean(value)) { |
| | | return this.$element; |
| | | } |
| | | return this.toggleAnimate(); |
| | | } |
| | | }, { |
| | | key: 'toggleAnimate', |
| | | value: function toggleAnimate() { |
| | | this.options.animate = !this.options.animate; |
| | | this.$wrapper.toggleClass(prvgetClass.call(this, 'animate')); |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'disabled', |
| | | value: function disabled(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.disabled; |
| | | } |
| | | if (this.options.disabled === Boolean(value)) { |
| | | return this.$element; |
| | | } |
| | | return this.toggleDisabled(); |
| | | } |
| | | }, { |
| | | key: 'toggleDisabled', |
| | | value: function toggleDisabled() { |
| | | this.options.disabled = !this.options.disabled; |
| | | this.$element.prop('disabled', this.options.disabled); |
| | | this.$wrapper.toggleClass(prvgetClass.call(this, 'disabled')); |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'readonly', |
| | | value: function readonly(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.readonly; |
| | | } |
| | | if (this.options.readonly === Boolean(value)) { |
| | | return this.$element; |
| | | } |
| | | return this.toggleReadonly(); |
| | | } |
| | | }, { |
| | | key: 'toggleReadonly', |
| | | value: function toggleReadonly() { |
| | | this.options.readonly = !this.options.readonly; |
| | | this.$element.prop('readonly', this.options.readonly); |
| | | this.$wrapper.toggleClass(prvgetClass.call(this, 'readonly')); |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'indeterminate', |
| | | value: function indeterminate(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.indeterminate; |
| | | } |
| | | if (this.options.indeterminate === Boolean(value)) { |
| | | return this.$element; |
| | | } |
| | | return this.toggleIndeterminate(); |
| | | } |
| | | }, { |
| | | key: 'toggleIndeterminate', |
| | | value: function toggleIndeterminate() { |
| | | this.options.indeterminate = !this.options.indeterminate; |
| | | this.$element.prop('indeterminate', this.options.indeterminate); |
| | | this.$wrapper.toggleClass(prvgetClass.call(this, 'indeterminate')); |
| | | prvcontainerPosition.call(this); |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'inverse', |
| | | value: function inverse(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.inverse; |
| | | } |
| | | if (this.options.inverse === Boolean(value)) { |
| | | return this.$element; |
| | | } |
| | | return this.toggleInverse(); |
| | | } |
| | | }, { |
| | | key: 'toggleInverse', |
| | | value: function toggleInverse() { |
| | | this.$wrapper.toggleClass(prvgetClass.call(this, 'inverse')); |
| | | var $on = this.$on.clone(true); |
| | | var $off = this.$off.clone(true); |
| | | this.$on.replaceWith($off); |
| | | this.$off.replaceWith($on); |
| | | this.$on = $off; |
| | | this.$off = $on; |
| | | this.options.inverse = !this.options.inverse; |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'onColor', |
| | | value: function onColor(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.onColor; |
| | | } |
| | | if (this.options.onColor) { |
| | | this.$on.removeClass(prvgetClass.call(this, this.options.onColor)); |
| | | } |
| | | this.$on.addClass(prvgetClass.call(this, value)); |
| | | this.options.onColor = value; |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'offColor', |
| | | value: function offColor(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.offColor; |
| | | } |
| | | if (this.options.offColor) { |
| | | this.$off.removeClass(prvgetClass.call(this, this.options.offColor)); |
| | | } |
| | | this.$off.addClass(prvgetClass.call(this, value)); |
| | | this.options.offColor = value; |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'onText', |
| | | value: function onText(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.onText; |
| | | } |
| | | this.$on.html(value); |
| | | prvwidth.call(this); |
| | | prvcontainerPosition.call(this); |
| | | this.options.onText = value; |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'offText', |
| | | value: function offText(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.offText; |
| | | } |
| | | this.$off.html(value); |
| | | prvwidth.call(this); |
| | | prvcontainerPosition.call(this); |
| | | this.options.offText = value; |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'labelText', |
| | | value: function labelText(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.labelText; |
| | | } |
| | | this.$label.html(value); |
| | | prvwidth.call(this); |
| | | this.options.labelText = value; |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'handleWidth', |
| | | value: function handleWidth(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.handleWidth; |
| | | } |
| | | this.options.handleWidth = value; |
| | | prvwidth.call(this); |
| | | prvcontainerPosition.call(this); |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'labelWidth', |
| | | value: function labelWidth(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.labelWidth; |
| | | } |
| | | this.options.labelWidth = value; |
| | | prvwidth.call(this); |
| | | prvcontainerPosition.call(this); |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'baseClass', |
| | | value: function baseClass() { |
| | | return this.options.baseClass; |
| | | } |
| | | }, { |
| | | key: 'wrapperClass', |
| | | value: function wrapperClass(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.wrapperClass; |
| | | } |
| | | var wrapperClass = value || $.fn.bootstrapSwitch.defaults.wrapperClass; |
| | | this.$wrapper.removeClass(prvgetClasses.call(this, this.options.wrapperClass).join(' ')); |
| | | this.$wrapper.addClass(prvgetClasses.call(this, wrapperClass).join(' ')); |
| | | this.options.wrapperClass = wrapperClass; |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'radioAllOff', |
| | | value: function radioAllOff(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.radioAllOff; |
| | | } |
| | | var val = Boolean(value); |
| | | if (this.options.radioAllOff === val) { |
| | | return this.$element; |
| | | } |
| | | this.options.radioAllOff = val; |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'onInit', |
| | | value: function onInit(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.onInit; |
| | | } |
| | | this.options.onInit = value || $.fn.bootstrapSwitch.defaults.onInit; |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'onSwitchChange', |
| | | value: function onSwitchChange(value) { |
| | | if (typeof value === 'undefined') { |
| | | return this.options.onSwitchChange; |
| | | } |
| | | this.options.onSwitchChange = value || $.fn.bootstrapSwitch.defaults.onSwitchChange; |
| | | return this.$element; |
| | | } |
| | | }, { |
| | | key: 'destroy', |
| | | value: function destroy() { |
| | | var $form = this.$element.closest('form'); |
| | | if ($form.length) { |
| | | $form.off('reset.bootstrapSwitch').removeData('bootstrap-switch'); |
| | | } |
| | | this.$container.children().not(this.$element).remove(); |
| | | this.$element.unwrap().unwrap().off('.bootstrapSwitch').removeData('bootstrap-switch'); |
| | | return this.$element; |
| | | } |
| | | }]); |
| | | |
| | | return BootstrapSwitch; |
| | | }(); |
| | | |
| | | function bootstrapSwitch(option) { |
| | | for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { |
| | | args[_key2 - 1] = arguments[_key2]; |
| | | } |
| | | |
| | | function reducer(ret, next) { |
| | | var $this = $(next); |
| | | var existingData = $this.data('bootstrap-switch'); |
| | | var data = existingData || new BootstrapSwitch(next, option); |
| | | if (!existingData) { |
| | | $this.data('bootstrap-switch', data); |
| | | } |
| | | if (typeof option === 'string') { |
| | | return data[option].apply(data, args); |
| | | } |
| | | return ret; |
| | | } |
| | | return Array.prototype.reduce.call(this, reducer, this); |
| | | } |
| | | |
| | | $.fn.bootstrapSwitch = bootstrapSwitch; |
| | | $.fn.bootstrapSwitch.Constructor = BootstrapSwitch; |
| | | $.fn.bootstrapSwitch.defaults = { |
| | | state: true, |
| | | size: null, |
| | | animate: true, |
| | | disabled: false, |
| | | readonly: false, |
| | | indeterminate: false, |
| | | inverse: false, |
| | | radioAllOff: false, |
| | | onColor: 'primary', |
| | | offColor: 'default', |
| | | onText: 'ON', |
| | | offText: 'OFF', |
| | | labelText: ' ', |
| | | handleWidth: 'auto', |
| | | labelWidth: 'auto', |
| | | baseClass: 'bootstrap-switch', |
| | | wrapperClass: 'wrapper', |
| | | onInit: function onInit() {}, |
| | | onSwitchChange: function onSwitchChange() {} |
| | | }; |
| | | }); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * bootstrap-switch - Turn checkboxes and radio buttons into toggle switches. |
| | | * |
| | | * @version v3.4.0 |
| | | * @homepage https://bttstrp.github.io/bootstrap-switch |
| | | * @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu) |
| | | * @license MIT |
| | | */ |
| | | |
| | | (function(a,b){if('function'==typeof define&&define.amd)define(['jquery'],b);else if('undefined'!=typeof exports)b(require('jquery'));else{b(a.jquery),a.bootstrapSwitch={exports:{}}.exports}})(this,function(a){'use strict';function c(x,y){if(!(x instanceof y))throw new TypeError('Cannot call a class as a function')}function d(x,y){var z=x.state,A=x.size,B=x.disabled,C=x.readonly,D=x.indeterminate,E=x.inverse;return[z?'on':'off',A,B?'disabled':void 0,C?'readonly':void 0,D?'indeterminate':void 0,E?'inverse':void 0,y?'id-'+y:void 0].filter(function(F){return null==F})}function e(){return{state:this.$element.is(':checked'),size:this.$element.data('size'),animate:this.$element.data('animate'),disabled:this.$element.is(':disabled'),readonly:this.$element.is('[readonly]'),indeterminate:this.$element.data('indeterminate'),inverse:this.$element.data('inverse'),radioAllOff:this.$element.data('radio-all-off'),onColor:this.$element.data('on-color'),offColor:this.$element.data('off-color'),onText:this.$element.data('on-text'),offText:this.$element.data('off-text'),labelText:this.$element.data('label-text'),handleWidth:this.$element.data('handle-width'),labelWidth:this.$element.data('label-width'),baseClass:this.$element.data('base-class'),wrapperClass:this.$element.data('wrapper-class')}}function f(){var x=this,y=this.$on.add(this.$off).add(this.$label).css('width',''),z='auto'===this.options.handleWidth?Math.round(Math.max(this.$on.width(),this.$off.width())):this.options.handleWidth;return y.width(z),this.$label.width(function(A,B){return'auto'===x.options.labelWidth?B<z?z:B:x.options.labelWidth}),this.privateHandleWidth=this.$on.outerWidth(),this.privateLabelWidth=this.$label.outerWidth(),this.$container.width(2*this.privateHandleWidth+this.privateLabelWidth),this.$wrapper.width(this.privateHandleWidth+this.privateLabelWidth)}function g(){var x=this,y=0<arguments.length&&arguments[0]!==void 0?arguments[0]:this.ope;this.$container.css('margin-left',function(){var z=[0,'-'+x.privateHandleWidth+'px'];return x.options.indeterminate?'-'+x.privateHandleWidth/2+'px':y?x.options.inverse?z[1]:z[0]:x.options.inverse?z[0]:z[1]})}function h(x){return this.options.baseClass+'-'+x}function j(){var x=this,y=function(){x.setPrevOptions(),f.call(x),g.call(x),setTimeout(function(){return x.options.animate&&x.$wrapper.addClass(h.call(x,'animate'))},50)};if(this.$wrapper.is(':visible'))return void y();var z=window.setInterval(function(){return x.$wrapper.is(':visible')&&(y()||!0)&&window.clearInterval(z)},50)}function k(){var x=this;return this.$element.on({'setPreviousOptions.bootstrapSwitch':function(){return x.setPrevOptions()},'previousState.bootstrapSwitch':function(){x.options=x.prevOptions,x.options.indeterminate&&x.$wrapper.addClass(h.call(x,'indeterminate')),x.$element.prop('checked',x.options.state).trigger('change.bootstrapSwitch',!0)},'change.bootstrapSwitch':function(z,A){z.preventDefault(),z.stopImmediatePropagation();var B=x.$element.is(':checked');g.call(x,B);B===x.options.state||(x.options.state=B,x.$wrapper.toggleClass(h.call(x,'off')).toggleClass(h.call(x,'on')),!A&&(x.$element.is(':radio')&&u('[name="'+x.$element.attr('name')+'"]').not(x.$element).prop('checked',!1).trigger('change.bootstrapSwitch',!0),x.$element.trigger('switchChange.bootstrapSwitch',[B])))},'focus.bootstrapSwitch':function(z){z.preventDefault(),x.$wrapper.addClass(h.call(x,'focused'))},'blur.bootstrapSwitch':function(z){z.preventDefault(),x.$wrapper.removeClass(h.call(x,'focused'))},'keydown.bootstrapSwitch':function(z){!z.which||x.options.disabled||x.options.readonly||(37===z.which||39===z.which)&&(z.preventDefault(),z.stopImmediatePropagation(),x.state(39===z.which))}})}function l(){var x=this;return this.$on.on('click.bootstrapSwitch',function(y){return y.preventDefault(),y.stopPropagation(),x.state(!1),x.$element.trigger('focus.bootstrapSwitch')}),this.$off.on('click.bootstrapSwitch',function(y){return y.preventDefault(),y.stopPropagation(),x.state(!0),x.$element.trigger('focus.bootstrapSwitch')})}function m(){var x=this,y=void 0,z=void 0;this.$label.on({click:function(C){C.stopPropagation()},'mousedown.bootstrapSwitch touchstart.bootstrapSwitch':function(C){y||x.options.disabled||x.options.readonly||(C.preventDefault(),C.stopPropagation(),y=(C.pageX||C.originalEvent.touches[0].pageX)-parseInt(x.$container.css('margin-left'),10),x.options.animate&&x.$wrapper.removeClass(h.call(x,'animate')),x.$element.trigger('focus.bootstrapSwitch'))},'mousemove.bootstrapSwitch touchmove.bootstrapSwitch':function(C){if(null!=y){var D=(C.pageX||C.originalEvent.touches[0].pageX)-y;C.preventDefault(),D<-x.privateHandleWidth||0<D||(z=D,x.$container.css('margin-left',z+'px'))}},'mouseup.bootstrapSwitch touchend.bootstrapSwitch':function(C){if(y){if(C.preventDefault(),x.options.animate&&x.$wrapper.addClass(h.call(x,'animate')),z){var D=z>-(x.privateHandleWidth/2);z=!1,x.state(x.options.inverse?!D:D)}else x.state(!x.options.state);y=!1}},'mouseleave.bootstrapSwitch':function(){x.$label.trigger('mouseup.bootstrapSwitch')}})}function n(){var x=this,y=this.$element.closest('label');y.on('click',function(z){z.preventDefault(),z.stopImmediatePropagation(),z.target===y[0]&&x.toggleState()})}function o(){function x(){return u(this).data('bootstrap-switch')}function y(){return u(this).bootstrapSwitch('state',this.checked)}var z=this.$element.closest('form');z.data('bootstrap-switch')||z.on('reset.bootstrapSwitch',function(){window.setTimeout(function(){z.find('input').filter(x).each(y)},1)}).data('bootstrap-switch',!0)}function p(x){var y=this;return u.isArray(x)?x.map(function(z){return h.call(y,z)}):[h.call(this,x)]}var r=function(x){return x&&x.__esModule?x:{default:x}}(a),s=Object.assign||function(x){for(var z,y=1;y<arguments.length;y++)for(var A in z=arguments[y],z)Object.prototype.hasOwnProperty.call(z,A)&&(x[A]=z[A]);return x},t=function(){function x(y,z){for(var B,A=0;A<z.length;A++)B=z[A],B.enumerable=B.enumerable||!1,B.configurable=!0,'value'in B&&(B.writable=!0),Object.defineProperty(y,B.key,B)}return function(y,z,A){return z&&x(y.prototype,z),A&&x(y,A),y}}(),u=r.default||window.jQuery||window.$,w=function(){function x(y){var z=this,A=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};c(this,x),this.$element=u(y),this.options=u.extend({},u.fn.bootstrapSwitch.defaults,e.call(this),A),this.prevOptions={},this.$wrapper=u('<div>',{class:function(){return d(z.options,z.$element.attr('id')).map(function(C){return h.call(z,C)}).concat([z.options.baseClass],p.call(z,z.options.wrapperClass)).join(' ')}}),this.$container=u('<div>',{class:h.call(this,'container')}),this.$on=u('<span>',{html:this.options.onText,class:h.call(this,'handle-on')+' '+h.call(this,this.options.onColor)}),this.$off=u('<span>',{html:this.options.offText,class:h.call(this,'handle-off')+' '+h.call(this,this.options.offColor)}),this.$label=u('<span>',{html:this.options.labelText,class:h.call(this,'label')}),this.$element.on('init.bootstrapSwitch',function(){return z.options.onInit(y)}),this.$element.on('switchChange.bootstrapSwitch',function(){for(var B=arguments.length,C=Array(B),D=0;D<B;D++)C[D]=arguments[D];var E=z.options.onSwitchChange.apply(y,C);!1===E&&(z.$element.is(':radio')?u('[name="'+z.$element.attr('name')+'"]').trigger('previousState.bootstrapSwitch',!0):z.$element.trigger('previousState.bootstrapSwitch',!0))}),this.$container=this.$element.wrap(this.$container).parent(),this.$wrapper=this.$container.wrap(this.$wrapper).parent(),this.$element.before(this.options.inverse?this.$off:this.$on).before(this.$label).before(this.options.inverse?this.$on:this.$off),this.options.indeterminate&&this.$element.prop('indeterminate',!0),j.call(this),k.call(this),l.call(this),m.call(this),o.call(this),n.call(this),this.$element.trigger('init.bootstrapSwitch',this.options.state)}return t(x,[{key:'setPrevOptions',value:function(){this.prevOptions=s({},this.options)}},{key:'state',value:function(z,A){return'undefined'==typeof z?this.options.state:this.options.disabled||this.options.readonly||this.options.state&&!this.options.radioAllOff&&this.$element.is(':radio')?this.$element:(this.$element.is(':radio')?u('[name="'+this.$element.attr('name')+'"]').trigger('setPreviousOptions.bootstrapSwitch'):this.$element.trigger('setPreviousOptions.bootstrapSwitch'),this.options.indeterminate&&this.indeterminate(!1),this.$element.prop('checked',!!z).trigger('change.bootstrapSwitch',A),this.$element)}},{key:'toggleState',value:function(z){return this.options.disabled||this.options.readonly?this.$element:this.options.indeterminate?(this.indeterminate(!1),this.state(!0)):this.$element.prop('checked',!this.options.state).trigger('change.bootstrapSwitch',z)}},{key:'size',value:function(z){return'undefined'==typeof z?this.options.size:(null!=this.options.size&&this.$wrapper.removeClass(h.call(this,this.options.size)),z&&this.$wrapper.addClass(h.call(this,z)),f.call(this),g.call(this),this.options.size=z,this.$element)}},{key:'animate',value:function(z){return'undefined'==typeof z?this.options.animate:this.options.animate===!!z?this.$element:this.toggleAnimate()}},{key:'toggleAnimate',value:function(){return this.options.animate=!this.options.animate,this.$wrapper.toggleClass(h.call(this,'animate')),this.$element}},{key:'disabled',value:function(z){return'undefined'==typeof z?this.options.disabled:this.options.disabled===!!z?this.$element:this.toggleDisabled()}},{key:'toggleDisabled',value:function(){return this.options.disabled=!this.options.disabled,this.$element.prop('disabled',this.options.disabled),this.$wrapper.toggleClass(h.call(this,'disabled')),this.$element}},{key:'readonly',value:function(z){return'undefined'==typeof z?this.options.readonly:this.options.readonly===!!z?this.$element:this.toggleReadonly()}},{key:'toggleReadonly',value:function(){return this.options.readonly=!this.options.readonly,this.$element.prop('readonly',this.options.readonly),this.$wrapper.toggleClass(h.call(this,'readonly')),this.$element}},{key:'indeterminate',value:function(z){return'undefined'==typeof z?this.options.indeterminate:this.options.indeterminate===!!z?this.$element:this.toggleIndeterminate()}},{key:'toggleIndeterminate',value:function(){return this.options.indeterminate=!this.options.indeterminate,this.$element.prop('indeterminate',this.options.indeterminate),this.$wrapper.toggleClass(h.call(this,'indeterminate')),g.call(this),this.$element}},{key:'inverse',value:function(z){return'undefined'==typeof z?this.options.inverse:this.options.inverse===!!z?this.$element:this.toggleInverse()}},{key:'toggleInverse',value:function(){this.$wrapper.toggleClass(h.call(this,'inverse'));var z=this.$on.clone(!0),A=this.$off.clone(!0);return this.$on.replaceWith(A),this.$off.replaceWith(z),this.$on=A,this.$off=z,this.options.inverse=!this.options.inverse,this.$element}},{key:'onColor',value:function(z){return'undefined'==typeof z?this.options.onColor:(this.options.onColor&&this.$on.removeClass(h.call(this,this.options.onColor)),this.$on.addClass(h.call(this,z)),this.options.onColor=z,this.$element)}},{key:'offColor',value:function(z){return'undefined'==typeof z?this.options.offColor:(this.options.offColor&&this.$off.removeClass(h.call(this,this.options.offColor)),this.$off.addClass(h.call(this,z)),this.options.offColor=z,this.$element)}},{key:'onText',value:function(z){return'undefined'==typeof z?this.options.onText:(this.$on.html(z),f.call(this),g.call(this),this.options.onText=z,this.$element)}},{key:'offText',value:function(z){return'undefined'==typeof z?this.options.offText:(this.$off.html(z),f.call(this),g.call(this),this.options.offText=z,this.$element)}},{key:'labelText',value:function(z){return'undefined'==typeof z?this.options.labelText:(this.$label.html(z),f.call(this),this.options.labelText=z,this.$element)}},{key:'handleWidth',value:function(z){return'undefined'==typeof z?this.options.handleWidth:(this.options.handleWidth=z,f.call(this),g.call(this),this.$element)}},{key:'labelWidth',value:function(z){return'undefined'==typeof z?this.options.labelWidth:(this.options.labelWidth=z,f.call(this),g.call(this),this.$element)}},{key:'baseClass',value:function(){return this.options.baseClass}},{key:'wrapperClass',value:function(z){if('undefined'==typeof z)return this.options.wrapperClass;var y=z||u.fn.bootstrapSwitch.defaults.wrapperClass;return this.$wrapper.removeClass(p.call(this,this.options.wrapperClass).join(' ')),this.$wrapper.addClass(p.call(this,y).join(' ')),this.options.wrapperClass=y,this.$element}},{key:'radioAllOff',value:function(z){if('undefined'==typeof z)return this.options.radioAllOff;var A=!!z;return this.options.radioAllOff===A?this.$element:(this.options.radioAllOff=A,this.$element)}},{key:'onInit',value:function(z){return'undefined'==typeof z?this.options.onInit:(this.options.onInit=z||u.fn.bootstrapSwitch.defaults.onInit,this.$element)}},{key:'onSwitchChange',value:function(z){return'undefined'==typeof z?this.options.onSwitchChange:(this.options.onSwitchChange=z||u.fn.bootstrapSwitch.defaults.onSwitchChange,this.$element)}},{key:'destroy',value:function(){var z=this.$element.closest('form');return z.length&&z.off('reset.bootstrapSwitch').removeData('bootstrap-switch'),this.$container.children().not(this.$element).remove(),this.$element.unwrap().unwrap().off('.bootstrapSwitch').removeData('bootstrap-switch'),this.$element}}]),x}();u.fn.bootstrapSwitch=function(x){for(var z=arguments.length,A=Array(1<z?z-1:0),B=1;B<z;B++)A[B-1]=arguments[B];return Array.prototype.reduce.call(this,function(C,D){var E=u(D),F=E.data('bootstrap-switch'),G=F||new w(D,x);return F||E.data('bootstrap-switch',G),'string'==typeof x?G[x].apply(G,A):C},this)},u.fn.bootstrapSwitch.Constructor=w,u.fn.bootstrapSwitch.defaults={state:!0,size:null,animate:!0,disabled:!1,readonly:!1,indeterminate:!1,inverse:!1,radioAllOff:!1,onColor:'primary',offColor:'default',onText:'ON',offText:'OFF',labelText:' ',handleWidth:'auto',labelWidth:'auto',baseClass:'bootstrap-switch',wrapperClass:'wrapper',onInit:function(){},onSwitchChange:function(){}}}); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | {"version":3,"file":"bootstrap.bundle.js","sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/index.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n }\n}\n\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n}\n\nconst Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n}\n\nconst Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input:not([type=\"hidden\"])',\n ACTIVE : '.active',\n BUTTON : '.btn'\n}\n\nconst Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLE\n )[0]\n\n if (rootElement) {\n const input = this._element.querySelector(Selector.INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(Selector.ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n input.checked = !this._element.classList.contains(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !this._element.classList.contains(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true,\n touch : true\n}\n\nconst DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean',\n touch : 'boolean'\n}\n\nconst Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n}\n\nconst Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHSTART : `touchstart${EVENT_KEY}`,\n TOUCHMOVE : `touchmove${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n POINTERDOWN : `pointerdown${EVENT_KEY}`,\n POINTERUP : `pointerup${EVENT_KEY}`,\n DRAG_START : `dragstart${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item',\n POINTER_EVENT : 'pointer-event'\n}\n\nconst Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n ITEM_IMG : '.carousel-item img',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n}\n\nconst PointerType = {\n TOUCH : 'touch',\n PEN : 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(Selector.INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(Selector.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = (event) => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, (e) => e.preventDefault())\n if (this._pointerEvent) {\n $(this._element).on(Event.POINTERDOWN, (event) => start(event))\n $(this._element).on(Event.POINTERUP, (event) => end(event))\n\n this._element.classList.add(ClassName.POINTER_EVENT)\n } else {\n $(this._element).on(Event.TOUCHSTART, (event) => start(event))\n $(this._element).on(Event.TOUCHMOVE, (event) => move(event))\n $(this._element).on(Event.TOUCHEND, (event) => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n $(indicators)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle : true,\n parent : ''\n}\n\nconst DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n}\n\nconst Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n}\n\nconst Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n}\n\nconst Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES))\n .filter((elem) => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(ClassName.COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n const children = [].slice.call(parent.querySelectorAll(selector))\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.7\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" â or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n}\n\nconst Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n}\n\nconst AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n}\n\nconst Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic'\n}\n\nconst DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n show() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(Selector.MENU)\n }\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets, this._element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = parent.querySelector(Selector.DATA_TOGGLE)\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SCROLLABLE : 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DIALOG : '.modal-dialog',\n MODAL_BODY : '.modal-body',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(Selector.DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n $(document).off(Event.FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n\n if ($(this._dialog).hasClass(ClassName.SCROLLABLE)) {\n this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(ClassName.OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n}\n\nconst HoverState = {\n SHOW : 'show',\n OUT : 'out'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n}\n\nconst Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n}\n\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal')\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => this._handlePopperPlacementChange(data)\n })\n\n $(tip).addClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(Selector.TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n })\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => {\n if (this.element) {\n this.hide()\n }\n }\n )\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const popperInstance = popperData.instance\n this.tip = popperInstance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset : 10,\n method : 'auto',\n target : ''\n}\n\nconst DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n}\n\nconst Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n}\n\nconst Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n}\n\nconst OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n [].slice.call(document.querySelectorAll(this._selector))\n .filter((node) => node.classList.contains(ClassName.ACTIVE))\n .forEach((node) => node.classList.remove(ClassName.ACTIVE))\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY))\n const scrollSpysLength = scrollSpys.length\n\n for (let i = scrollSpysLength; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL')\n ? $(container).find(Selector.ACTIVE_UL)\n : $(container).children(Selector.ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && $(active).hasClass(ClassName.FADE))\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n $(active)\n .removeClass(ClassName.SHOW)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(ClassName.ACTIVE)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n\n if (element.classList.contains(ClassName.FADE)) {\n element.classList.add(ClassName.SHOW)\n }\n\n if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n\n if (dropdownElement) {\n const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector.DROPDOWN_TOGGLE))\n\n $(dropdownToggleList).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n}\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n HIDE : 'hide',\n SHOW : 'show',\n SHOWING : 'showing'\n}\n\nconst DefaultType = {\n animation : 'boolean',\n autohide : 'boolean',\n delay : 'number'\n}\n\nconst Default = {\n animation : true,\n autohide : true,\n delay : 500\n}\n\nconst Selector = {\n DATA_DISMISS : '[data-dismiss=\"toast\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast {\n constructor(element, config) {\n this._element = element\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n show() {\n $(this._element).trigger(Event.SHOW)\n\n if (this._config.animation) {\n this._element.classList.add(ClassName.FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(ClassName.SHOWING)\n this._element.classList.add(ClassName.SHOW)\n\n $(this._element).trigger(Event.SHOWN)\n\n if (this._config.autohide) {\n this.hide()\n }\n }\n\n this._element.classList.remove(ClassName.HIDE)\n this._element.classList.add(ClassName.SHOWING)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n hide(withoutTimeout) {\n if (!this._element.classList.contains(ClassName.SHOW)) {\n return\n }\n\n $(this._element).trigger(Event.HIDE)\n\n if (withoutTimeout) {\n this._close()\n } else {\n this._timeout = setTimeout(() => {\n this._close()\n }, this._config.delay)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n this._timeout = null\n\n if (this._element.classList.contains(ClassName.SHOW)) {\n this._element.classList.remove(ClassName.SHOW)\n }\n\n $(this._element).off(Event.CLICK_DISMISS)\n\n $.removeData(this._element, DATA_KEY)\n this._element = null\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...$(this._element).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _setListeners() {\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n () => this.hide(true)\n )\n }\n\n _close() {\n const complete = () => {\n this._element.classList.add(ClassName.HIDE)\n $(this._element).trigger(Event.HIDDEN)\n }\n\n this._element.classList.remove(ClassName.SHOW)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Toast._jQueryInterface\n$.fn[NAME].Constructor = Toast\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast._jQueryInterface\n}\n\nexport default Toast\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Toast from './toast'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(() => {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n})()\n\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Toast,\n Tooltip\n}\n"],"names":["TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","toType","obj","toString","call","match","toLowerCase","getSpecialTransitionEndEvent","bindType","delegateType","handle","event","$","target","is","handleObj","handler","apply","arguments","undefined","transitionEndEmulator","duration","called","one","Util","setTimeout","triggerTransitionEnd","setTransitionEndSupport","fn","emulateTransitionEnd","special","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","Selector","DISMISS","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","ALERT","FADE","SHOW","Alert","_element","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","ACTIVE","BUTTON","FOCUS","DATA_TOGGLE_CARROT","DATA_TOGGLE","INPUT","FOCUS_BLUR_DATA_API","Button","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","hasAttribute","focus","setAttribute","toggleClass","button","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","NEXT","PREV","LEFT","RIGHT","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","CAROUSEL","ITEM","POINTER_EVENT","ACTIVE_ITEM","ITEM_IMG","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","window","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","length","direction","off","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","start","originalEvent","pointerType","clientX","touches","move","end","clearTimeout","querySelectorAll","e","add","tagName","which","slice","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","slidEvent","nextElementInterval","parseInt","defaultInterval","action","TypeError","ride","_dataApiClickHandler","slideIndex","carousels","i","len","$carousel","SHOWN","HIDE","HIDDEN","COLLAPSE","COLLAPSING","COLLAPSED","Dimension","WIDTH","HEIGHT","ACTIVES","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","complete","capitalizedDimension","scrollSize","getBoundingClientRect","triggerArrayLength","$elem","isTransitioning","hasWidth","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","DISABLED","DROPUP","DROPRIGHT","DROPLEFT","MENURIGHT","MENULEFT","POSITION_STATIC","FORM_CHILD","MENU","NAVBAR_NAV","VISIBLE_ITEMS","AttachmentMap","TOP","TOPEND","BOTTOM","BOTTOMEND","RIGHTEND","LEFTEND","offset","flip","boundary","reference","display","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","Popper","referenceElement","_getPopperConfig","body","noop","hideEvent","destroy","update","scheduleUpdate","stopPropagation","constructor","_getPlacement","$parentDropdown","placement","_getOffset","offsets","popperConfig","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","SCROLLABLE","SCROLLBAR_MEASURER","BACKDROP","OPEN","DIALOG","MODAL_BODY","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","forEach","htmlElement","handleUpdate","Node","ELEMENT_NODE","appendChild","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","has","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","rect","left","right","innerWidth","_getScrollbarWidth","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","uriAttrs","ARIA_ATTRIBUTE_PATTERN","DefaultWhitelist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","l","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","whitelistKeys","keys","el","elName","attributeList","attributes","whitelistedAttributes","concat","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","container","fallbackPlacement","sanitize","AUTO","HoverState","OUT","INSERTED","FOCUSOUT","TOOLTIP","TOOLTIP_INNER","ARROW","Trigger","HOVER","MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","empty","append","text","find","triggers","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","key","$tip","tabClass","join","popperData","popperInstance","instance","popper","initConfigAnimation","TITLE","CONTENT","Popover","_getContent","method","ACTIVATE","SCROLL","DROPDOWN_ITEM","DROPDOWN_MENU","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","map","targetSelector","targetBCR","height","top","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","offsetLength","isActiveTarget","queries","$link","parents","node","scrollSpys","scrollSpysLength","$spy","ACTIVE_UL","DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","activeElements","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","SHOWING","autohide","Toast","withoutTimeout","_close","version","minMajor","ltMajor","minMinor","minPatch","maxMajor"],"mappings":"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CA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,MAAM,EAAE;EACV;EACA,IAAI,KAAK,EAAE,GAAG;EACd;EACA,IAAI,OAAO,EAAE,IAAI;EACjB;EACA,IAAI,EAAE,EAAE,MAAM;EACd;EACA;EACA;EACA,IAAI,MAAM,EAAE,CAAC;EACb,GAAG;;EAEH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,eAAe,EAAE;EACnB;EACA,IAAI,KAAK,EAAE,GAAG;EACd;EACA,IAAI,OAAO,EAAE,IAAI;EACjB;EACA,IAAI,EAAE,EAAE,eAAe;EACvB;EACA;EACA;EACA;EACA;EACA,IAAI,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;EAChD;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,EAAE,CAAC;EACd;EACA;EACA;EACA;EACA;EACA,IAAI,iBAAiB,EAAE,cAAc;EACrC,GAAG;;EAEH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,YAAY,EAAE;EAChB;EACA,IAAI,KAAK,EAAE,GAAG;EACd;EACA,IAAI,OAAO,EAAE,IAAI;EACjB;EACA,IAAI,EAAE,EAAE,YAAY;EACpB,GAAG;;EAEH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,KAAK,EAAE;EACT;EACA,IAAI,KAAK,EAAE,GAAG;EACd;EACA,IAAI,OAAO,EAAE,IAAI;EACjB;EACA,IAAI,EAAE,EAAE,KAAK;EACb;EACA,IAAI,OAAO,EAAE,WAAW;EACxB,GAAG;;EAEH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,IAAI,EAAE;EACR;EACA,IAAI,KAAK,EAAE,GAAG;EACd;EACA,IAAI,OAAO,EAAE,IAAI;EACjB;EACA,IAAI,EAAE,EAAE,IAAI;EACZ;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,QAAQ,EAAE,MAAM;EACpB;EACA;EACA;EACA;EACA,IAAI,OAAO,EAAE,CAAC;EACd;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,iBAAiB,EAAE,UAAU;EACjC,GAAG;;EAEH;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,KAAK,EAAE;EACT;EACA,IAAI,KAAK,EAAE,GAAG;EACd;EACA,IAAI,OAAO,EAAE,KAAK;EAClB;EACA,IAAI,EAAE,EAAE,KAAK;EACb,GAAG;;EAEH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,IAAI,EAAE;EACR;EACA,IAAI,KAAK,EAAE,GAAG;EACd;EACA,IAAI,OAAO,EAAE,IAAI;EACjB;EACA,IAAI,EAAE,EAAE,IAAI;EACZ,GAAG;;EAEH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,YAAY,EAAE;EAChB;EACA,IAAI,KAAK,EAAE,GAAG;EACd;EACA,IAAI,OAAO,EAAE,IAAI;EACjB;EACA,IAAI,EAAE,EAAE,YAAY;EACpB;EACA;EACA;EACA;EACA;EACA,IAAI,eAAe,EAAE,IAAI;EACzB;EACA;EACA;EACA;EACA;EACA,IAAI,CAAC,EAAE,QAAQ;EACf;EACA;EACA;EACA;EACA;EACA,IAAI,CAAC,EAAE,OAAO;EACd,GAAG;;EAEH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,UAAU,EAAE;EACd;EACA,IAAI,KAAK,EAAE,GAAG;EACd;EACA,IAAI,OAAO,EAAE,IAAI;EACjB;EACA,IAAI,EAAE,EAAE,UAAU;EAClB;EACA,IAAI,MAAM,EAAE,gBAAgB;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,eAAe,EAAE,SAAS;EAC9B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"} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /*! |
| | | * Bootstrap v4.3.1 (https://getbootstrap.com/) |
| | | * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) |
| | | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
| | | */ |
| | | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t=t||self).bootstrap={},t.jQuery)}(this,function(t,p){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}p=p&&p.hasOwnProperty("default")?p.default:p;var e="transitionend";function n(t){var e=this,n=!1;return p(this).one(m.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||m.triggerTransitionEnd(e)},t),this}var m={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=p(t).css("transition-duration"),n=p(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){p(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&m.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?m.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};p.fn.emulateTransitionEnd=n,p.event.special[m.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(p(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o="alert",r="bs.alert",a="."+r,c=p.fn[o],h={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},u="alert",f="fade",d="show",g=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){p.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=m.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=p(t).closest("."+u)[0]),n},t._triggerCloseEvent=function(t){var e=p.Event(h.CLOSE);return p(t).trigger(e),e},t._removeElement=function(e){var n=this;if(p(e).removeClass(d),p(e).hasClass(f)){var t=m.getTransitionDurationFromElement(e);p(e).one(m.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){p(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();p(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),p.fn[o]=g._jQueryInterface,p.fn[o].Constructor=g,p.fn[o].noConflict=function(){return p.fn[o]=c,g._jQueryInterface};var _="button",v="bs.button",y="."+v,E=".data-api",b=p.fn[_],w="active",C="btn",T="focus",S='[data-toggle^="button"]',D='[data-toggle="buttons"]',I='input:not([type="hidden"])',A=".active",O=".btn",N={CLICK_DATA_API:"click"+y+E,FOCUS_BLUR_DATA_API:"focus"+y+E+" blur"+y+E},k=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=this._element.querySelector(I);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(w))t=!1;else{var o=n.querySelector(A);o&&p(o).removeClass(w)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains(w),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(w)),t&&p(this._element).toggleClass(w)},t.dispose=function(){p.removeData(this._element,v),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(v);t||(t=new n(this),p(this).data(v,t)),"toggle"===e&&t[e]()})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),n}();p(document).on(N.CLICK_DATA_API,S,function(t){t.preventDefault();var e=t.target;p(e).hasClass(C)||(e=p(e).closest(O)),k._jQueryInterface.call(p(e),"toggle")}).on(N.FOCUS_BLUR_DATA_API,S,function(t){var e=p(t.target).closest(O)[0];p(e).toggleClass(T,/^focus(in)?$/.test(t.type))}),p.fn[_]=k._jQueryInterface,p.fn[_].Constructor=k,p.fn[_].noConflict=function(){return p.fn[_]=b,k._jQueryInterface};var L="carousel",x="bs.carousel",P="."+x,H=".data-api",j=p.fn[L],R={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},F={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},M="next",W="prev",U="left",B="right",q={SLIDE:"slide"+P,SLID:"slid"+P,KEYDOWN:"keydown"+P,MOUSEENTER:"mouseenter"+P,MOUSELEAVE:"mouseleave"+P,TOUCHSTART:"touchstart"+P,TOUCHMOVE:"touchmove"+P,TOUCHEND:"touchend"+P,POINTERDOWN:"pointerdown"+P,POINTERUP:"pointerup"+P,DRAG_START:"dragstart"+P,LOAD_DATA_API:"load"+P+H,CLICK_DATA_API:"click"+P+H},K="carousel",Q="active",V="slide",Y="carousel-item-right",z="carousel-item-left",X="carousel-item-next",G="carousel-item-prev",$="pointer-event",J=".active",Z=".active.carousel-item",tt=".carousel-item",et=".carousel-item img",nt=".carousel-item-next, .carousel-item-prev",it=".carousel-indicators",ot="[data-slide], [data-slide-to]",rt='[data-ride="carousel"]',st={TOUCH:"touch",PEN:"pen"},at=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(it),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(M)},t.nextWhenVisible=function(){!document.hidden&&p(this._element).is(":visible")&&"hidden"!==p(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(W)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(nt)&&(m.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector(Z);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)p(this._element).one(q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?M:W;this._slide(i,this._items[t])}},t.dispose=function(){p(this._element).off(P),p.removeData(this._element,x),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l({},R,t),m.typeCheckConfig(L,t,F),t},t._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;0<e&&this.prev(),e<0&&this.next()}},t._addEventListeners=function(){var e=this;this._config.keyboard&&p(this._element).on(q.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&p(this._element).on(q.MOUSEENTER,function(t){return e.pause(t)}).on(q.MOUSELEAVE,function(t){return e.cycle(t)}),this._config.touch&&this._addTouchEventListeners()},t._addTouchEventListeners=function(){var n=this;if(this._touchSupported){var e=function(t){n._pointerEvent&&st[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},i=function(t){n._pointerEvent&&st[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),"hover"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))};p(this._element.querySelectorAll(et)).on(q.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(p(this._element).on(q.POINTERDOWN,function(t){return e(t)}),p(this._element).on(q.POINTERUP,function(t){return i(t)}),this._element.classList.add($)):(p(this._element).on(q.TOUCHSTART,function(t){return e(t)}),p(this._element).on(q.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),p(this._element).on(q.TOUCHEND,function(t){return i(t)}))}},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(tt)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===M,i=t===W,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===W?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(Z)),o=p.Event(q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return p(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(J));p(e).removeClass(Q);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&p(n).addClass(Q)}},t._slide=function(t,e){var n,i,o,r=this,s=this._element.querySelector(Z),a=this._getItemIndex(s),l=e||s&&this._getItemByDirection(t,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=t===M?(n=z,i=X,U):(n=Y,i=G,B),l&&p(l).hasClass(Q))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=p.Event(q.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(p(this._element).hasClass(V)){p(l).addClass(i),m.reflow(l),p(s).addClass(n),p(l).addClass(n);var f=parseInt(l.getAttribute("data-interval"),10);this._config.interval=f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,f):this._config.defaultInterval||this._config.interval;var d=m.getTransitionDurationFromElement(s);p(s).one(m.TRANSITION_END,function(){p(l).removeClass(n+" "+i).addClass(Q),p(s).removeClass(Q+" "+i+" "+n),r._isSliding=!1,setTimeout(function(){return p(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else p(s).removeClass(Q),p(l).addClass(Q),this._isSliding=!1,p(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var t=p(this).data(x),e=l({},R,p(this).data());"object"==typeof i&&(e=l({},e,i));var n="string"==typeof i?i:e.slide;if(t||(t=new r(this,e),p(this).data(x,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&e.ride&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e=m.getSelectorFromElement(this);if(e){var n=p(e)[0];if(n&&p(n).hasClass(K)){var i=l({},p(n).data(),p(this).data()),o=this.getAttribute("data-slide-to");o&&(i.interval=!1),r._jQueryInterface.call(p(n),i),o&&p(n).data(x).to(o),t.preventDefault()}}},s(r,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return R}}]),r}();p(document).on(q.CLICK_DATA_API,ot,at._dataApiClickHandler),p(window).on(q.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(rt)),e=0,n=t.length;e<n;e++){var i=p(t[e]);at._jQueryInterface.call(i,i.data())}}),p.fn[L]=at._jQueryInterface,p.fn[L].Constructor=at,p.fn[L].noConflict=function(){return p.fn[L]=j,at._jQueryInterface};var lt="collapse",ct="bs.collapse",ht="."+ct,ut=p.fn[lt],ft={toggle:!0,parent:""},dt={toggle:"boolean",parent:"(string|element)"},pt={SHOW:"show"+ht,SHOWN:"shown"+ht,HIDE:"hide"+ht,HIDDEN:"hidden"+ht,CLICK_DATA_API:"click"+ht+".data-api"},mt="show",gt="collapse",_t="collapsing",vt="collapsed",yt="width",Et="height",bt=".show, .collapsing",wt='[data-toggle="collapse"]',Ct=function(){function a(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(wt)),i=0,o=n.length;i<o;i++){var r=n[i],s=m.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(t){return t===e});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){p(this._element).hasClass(mt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!p(this._element).hasClass(mt)&&(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(bt)).filter(function(t){return"string"==typeof n._config.parent?t.getAttribute("data-parent")===n._config.parent:t.classList.contains(gt)})).length&&(t=null),!(t&&(e=p(t).not(this._selector).data(ct))&&e._isTransitioning))){var i=p.Event(pt.SHOW);if(p(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(p(t).not(this._selector),"hide"),e||p(t).data(ct,null));var o=this._getDimension();p(this._element).removeClass(gt).addClass(_t),this._element.style[o]=0,this._triggerArray.length&&p(this._triggerArray).removeClass(vt).attr("aria-expanded",!0),this.setTransitioning(!0);var r="scroll"+(o[0].toUpperCase()+o.slice(1)),s=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){p(n._element).removeClass(_t).addClass(gt).addClass(mt),n._element.style[o]="",n.setTransitioning(!1),p(n._element).trigger(pt.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+"px"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&p(this._element).hasClass(mt)){var e=p.Event(pt.HIDE);if(p(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",m.reflow(this._element),p(this._element).addClass(_t).removeClass(gt).removeClass(mt);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=m.getSelectorFromElement(r);if(null!==s)p([].slice.call(document.querySelectorAll(s))).hasClass(mt)||p(r).addClass(vt).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var a=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){t.setTransitioning(!1),p(t._element).removeClass(_t).addClass(gt).trigger(pt.HIDDEN)}).emulateTransitionEnd(a)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){p.removeData(this._element,ct),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l({},ft,t)).toggle=Boolean(t.toggle),m.typeCheckConfig(lt,t,dt),t},t._getDimension=function(){return p(this._element).hasClass(yt)?yt:Et},t._getParent=function(){var t,n=this;m.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(t.querySelectorAll(e));return p(i).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=p(t).hasClass(mt);e.length&&p(e).toggleClass(vt,!n).attr("aria-expanded",n)},a._getTargetFromElement=function(t){var e=m.getSelectorFromElement(t);return e?document.querySelector(e):null},a._jQueryInterface=function(i){return this.each(function(){var t=p(this),e=t.data(ct),n=l({},ft,t.data(),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(ct,e)),"string"==typeof i){if("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return ft}}]),a}();p(document).on(pt.CLICK_DATA_API,wt,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=p(this),e=m.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));p(i).each(function(){var t=p(this),e=t.data(ct)?"toggle":n.data();Ct._jQueryInterface.call(t,e)})}),p.fn[lt]=Ct._jQueryInterface,p.fn[lt].Constructor=Ct,p.fn[lt].noConflict=function(){return p.fn[lt]=ut,Ct._jQueryInterface};for(var Tt="undefined"!=typeof window&&"undefined"!=typeof document,St=["Edge","Trident","Firefox"],Dt=0,It=0;It<St.length;It+=1)if(Tt&&0<=navigator.userAgent.indexOf(St[It])){Dt=1;break}var At=Tt&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Dt))}};function Ot(t){return t&&"[object Function]"==={}.toString.call(t)}function Nt(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function kt(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function Lt(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=Nt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:Lt(kt(t))}var xt=Tt&&!(!window.MSInputMethodContext||!document.documentMode),Pt=Tt&&/MSIE 10/.test(navigator.userAgent);function Ht(t){return 11===t?xt:10===t?Pt:xt||Pt}function jt(t){if(!t)return document.documentElement;for(var e=Ht(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===Nt(n,"position")?jt(n):n:t?t.ownerDocument.documentElement:document.documentElement}function Rt(t){return null!==t.parentNode?Rt(t.parentNode):t}function Ft(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var s,a,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(a=(s=l).nodeName)||"HTML"!==a&&jt(s.firstElementChild)!==s?jt(l):l;var c=Rt(t);return c.host?Ft(c.host,e):Ft(t,Rt(e).host)}function Mt(t){var e="top"===(1<arguments.length&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"!==n&&"HTML"!==n)return t[e];var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}function Wt(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}function Ut(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Ht(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function Bt(t){var e=t.body,n=t.documentElement,i=Ht(10)&&getComputedStyle(n);return{height:Ut("Height",e,n,i),width:Ut("Width",e,n,i)}}var qt=function(){function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}}(),Kt=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},Qt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function Vt(t){return Qt({},t,{right:t.left+t.width,bottom:t.top+t.height})}function Yt(t){var e={};try{if(Ht(10)){e=t.getBoundingClientRect();var n=Mt(t,"top"),i=Mt(t,"left");e.top+=n,e.left+=i,e.bottom+=n,e.right+=i}else e=t.getBoundingClientRect()}catch(t){}var o={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},r="HTML"===t.nodeName?Bt(t.ownerDocument):{},s=r.width||t.clientWidth||o.right-o.left,a=r.height||t.clientHeight||o.bottom-o.top,l=t.offsetWidth-s,c=t.offsetHeight-a;if(l||c){var h=Nt(t);l-=Wt(h,"x"),c-=Wt(h,"y"),o.width-=l,o.height-=c}return Vt(o)}function zt(t,e){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=Ht(10),o="HTML"===e.nodeName,r=Yt(t),s=Yt(e),a=Lt(t),l=Nt(e),c=parseFloat(l.borderTopWidth,10),h=parseFloat(l.borderLeftWidth,10);n&&o&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var u=Vt({top:r.top-s.top-c,left:r.left-s.left-h,width:r.width,height:r.height});if(u.marginTop=0,u.marginLeft=0,!i&&o){var f=parseFloat(l.marginTop,10),d=parseFloat(l.marginLeft,10);u.top-=c-f,u.bottom-=c-f,u.left-=h-d,u.right-=h-d,u.marginTop=f,u.marginLeft=d}return(i&&!n?e.contains(a):e===a&&"BODY"!==a.nodeName)&&(u=function(t,e){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=Mt(e,"top"),o=Mt(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}(u,e)),u}function Xt(t){if(!t||!t.parentElement||Ht())return document.documentElement;for(var e=t.parentElement;e&&"none"===Nt(e,"transform");)e=e.parentElement;return e||document.documentElement}function Gt(t,e,n,i){var o=4<arguments.length&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},s=o?Xt(t):Ft(t,e);if("viewport"===i)r=function(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=zt(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),s=e?0:Mt(n),a=e?0:Mt(n,"left");return Vt({top:s-i.top+i.marginTop,left:a-i.left+i.marginLeft,width:o,height:r})}(s,o);else{var a=void 0;"scrollParent"===i?"BODY"===(a=Lt(kt(e))).nodeName&&(a=t.ownerDocument.documentElement):a="window"===i?t.ownerDocument.documentElement:i;var l=zt(a,s,o);if("HTML"!==a.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===Nt(e,"position"))return!0;var i=kt(e);return!!i&&t(i)}(s))r=l;else{var c=Bt(t.ownerDocument),h=c.height,u=c.width;r.top+=l.top-l.marginTop,r.bottom=h+l.top,r.left+=l.left-l.marginLeft,r.right=u+l.left}}var f="number"==typeof(n=n||0);return r.left+=f?n:n.left||0,r.top+=f?n:n.top||0,r.right-=f?n:n.right||0,r.bottom-=f?n:n.bottom||0,r}function $t(t,e,i,n,o){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var s=Gt(i,n,r,o),a={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}},l=Object.keys(a).map(function(t){return Qt({key:t},a[t],{area:(e=a[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),c=l.filter(function(t){var e=t.width,n=t.height;return e>=i.clientWidth&&n>=i.clientHeight}),h=0<c.length?c[0].key:l[0].key,u=t.split("-")[1];return h+(u?"-"+u:"")}function Jt(t,e,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return zt(n,i?Xt(e):Ft(e,n),i)}function Zt(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function te(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function ee(t,e,n){n=n.split("-")[0];var i=Zt(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),s=r?"top":"left",a=r?"left":"top",l=r?"height":"width",c=r?"width":"height";return o[s]=e[s]+e[l]/2-i[l]/2,o[a]=n===a?e[a]-i[c]:e[te(a)],o}function ne(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ie(t,n,e){return(void 0===e?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=ne(t,function(t){return t[e]===n});return t.indexOf(i)}(t,"name",e))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var e=t.function||t.fn;t.enabled&&Ot(e)&&(n.offsets.popper=Vt(n.offsets.popper),n.offsets.reference=Vt(n.offsets.reference),n=e(n,t))}),n}function oe(t,n){return t.some(function(t){var e=t.name;return t.enabled&&e===n})}function re(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var o=e[i],r=o?""+o+n:t;if("undefined"!=typeof document.body.style[r])return r}return null}function se(t){var e=t.ownerDocument;return e?e.defaultView:window}function ae(t,e,n,i){n.updateBound=i,se(t).addEventListener("resize",n.updateBound,{passive:!0});var o=Lt(t);return function t(e,n,i,o){var r="BODY"===e.nodeName,s=r?e.ownerDocument.defaultView:e;s.addEventListener(n,i,{passive:!0}),r||t(Lt(s.parentNode),n,i,o),o.push(s)}(o,"scroll",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function le(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,se(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach(function(t){t.removeEventListener("scroll",e.updateBound)}),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function ce(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function he(n,i){Object.keys(i).forEach(function(t){var e="";-1!==["width","height","top","right","bottom","left"].indexOf(t)&&ce(i[t])&&(e="px"),n.style[t]=i[t]+e})}var ue=Tt&&/Firefox/i.test(navigator.userAgent);function fe(t,e,n){var i=ne(t,function(t){return t.name===e}),o=!!i&&t.some(function(t){return t.name===n&&t.enabled&&t.order<i.order});if(!o){var r="`"+e+"`",s="`"+n+"`";console.warn(s+" modifier is required by "+r+" modifier in order to work, be sure to include it before "+r+"!")}return o}var de=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],pe=de.slice(3);function me(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=pe.indexOf(t),i=pe.slice(n+1).concat(pe.slice(0,n));return e?i.reverse():i}var ge="flip",_e="clockwise",ve="counterclockwise";function ye(t,o,r,e){var s=[0,0],a=-1!==["right","left"].indexOf(e),n=t.split(/(\+|\-)/).map(function(t){return t.trim()}),i=n.indexOf(ne(n,function(t){return-1!==t.search(/,|\s/)}));n[i]&&-1===n[i].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==i?[n.slice(0,i).concat([n[i].split(l)[0]]),[n[i].split(l)[1]].concat(n.slice(i+1))]:[n];return(c=c.map(function(t,e){var n=(1===e?!a:a)?"height":"width",i=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,i=!0,t):i?(t[t.length-1]+=e,i=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],s=o[2];if(!r)return t;if(0!==s.indexOf("%"))return"vh"!==s&&"vw"!==s?r:("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;var a=void 0;switch(s){case"%p":a=n;break;case"%":case"%r":default:a=i}return Vt(a)[e]/100*r}(t,n,o,r)})})).forEach(function(n,i){n.forEach(function(t,e){ce(t)&&(s[i]+=t*("-"===n[e-1]?-1:1))})}),s}var Ee={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,s=o.popper,a=-1!==["bottom","top"].indexOf(n),l=a?"left":"top",c=a?"width":"height",h={start:Kt({},l,r[l]),end:Kt({},l,r[l]+r[c]-s[c])};t.offsets.popper=Qt({},s,h[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,s=o.reference,a=i.split("-")[0],l=void 0;return l=ce(+n)?[+n,0]:ye(n,r,s,a),"left"===a?(r.top+=l[0],r.left-=l[1]):"right"===a?(r.top+=l[0],r.left+=l[1]):"top"===a?(r.left+=l[0],r.top-=l[1]):"bottom"===a&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,i){var e=i.boundariesElement||jt(t.instance.popper);t.instance.reference===e&&(e=jt(e));var n=re("transform"),o=t.instance.popper.style,r=o.top,s=o.left,a=o[n];o.top="",o.left="",o[n]="";var l=Gt(t.instance.popper,t.instance.reference,i.padding,e,t.positionFixed);o.top=r,o.left=s,o[n]=a,i.boundaries=l;var c=i.priority,h=t.offsets.popper,u={primary:function(t){var e=h[t];return h[t]<l[t]&&!i.escapeWithReference&&(e=Math.max(h[t],l[t])),Kt({},t,e)},secondary:function(t){var e="right"===t?"left":"top",n=h[e];return h[t]>l[t]&&!i.escapeWithReference&&(n=Math.min(h[e],l[t]-("right"===t?h.width:h.height))),Kt({},e,n)}};return c.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";h=Qt({},h,u[e](t))}),t.offsets.popper=h,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]<r(i[l])&&(t.offsets.popper[l]=r(i[l])-n[c]),n[l]>r(i[a])&&(t.offsets.popper[l]=r(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!fe(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",h=l?"Top":"Left",u=h.toLowerCase(),f=l?"left":"top",d=l?"bottom":"right",p=Zt(i)[c];a[d]-p<s[u]&&(t.offsets.popper[u]-=s[u]-(a[d]-p)),a[u]+p>s[d]&&(t.offsets.popper[u]+=a[u]+p-s[d]),t.offsets.popper=Vt(t.offsets.popper);var m=a[u]+a[c]/2-p/2,g=Nt(t.instance.popper),_=parseFloat(g["margin"+h],10),v=parseFloat(g["border"+h+"Width"],10),y=m-t.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),t.arrowElement=i,t.offsets.arrow=(Kt(n={},u,Math.round(y)),Kt(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(p,m){if(oe(p.instance.modifiers,"inner"))return p;if(p.flipped&&p.placement===p.originalPlacement)return p;var g=Gt(p.instance.popper,p.instance.reference,m.padding,m.boundariesElement,p.positionFixed),_=p.placement.split("-")[0],v=te(_),y=p.placement.split("-")[1]||"",E=[];switch(m.behavior){case ge:E=[_,v];break;case _e:E=me(_);break;case ve:E=me(_,!0);break;default:E=m.behavior}return E.forEach(function(t,e){if(_!==t||E.length===e+1)return p;_=p.placement.split("-")[0],v=te(_);var n,i=p.offsets.popper,o=p.offsets.reference,r=Math.floor,s="left"===_&&r(i.right)>r(o.left)||"right"===_&&r(i.left)<r(o.right)||"top"===_&&r(i.bottom)>r(o.top)||"bottom"===_&&r(i.top)<r(o.bottom),a=r(i.left)<r(g.left),l=r(i.right)>r(g.right),c=r(i.top)<r(g.top),h=r(i.bottom)>r(g.bottom),u="left"===_&&a||"right"===_&&l||"top"===_&&c||"bottom"===_&&h,f=-1!==["top","bottom"].indexOf(_),d=!!m.flipVariations&&(f&&"start"===y&&a||f&&"end"===y&&l||!f&&"start"===y&&c||!f&&"end"===y&&h);(s||u||d)&&(p.flipped=!0,(s||u)&&(_=E[e+1]),d&&(y="end"===(n=y)?"start":"start"===n?"end":n),p.placement=_+(y?"-"+y:""),p.offsets.popper=Qt({},p.offsets.popper,ee(p.instance.popper,p.offsets.reference,p.placement)),p=ie(p.instance.modifiers,p,"flip"))}),p},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),t.placement=te(e),t.offsets.popper=Vt(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!fe(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=ne(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,o=t.offsets.popper,r=ne(t.instance.modifiers,function(t){return"applyStyle"===t.name}).gpuAcceleration;void 0!==r&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var s,a,l,c,h,u,f,d,p,m,g,_,v,y,E=void 0!==r?r:e.gpuAcceleration,b=jt(t.instance.popper),w=Yt(b),C={position:o.position},T=(s=t,a=window.devicePixelRatio<2||!ue,l=s.offsets,c=l.popper,h=l.reference,u=Math.round,f=Math.floor,d=function(t){return t},p=u(h.width),m=u(c.width),g=-1!==["left","right"].indexOf(s.placement),_=-1!==s.placement.indexOf("-"),y=a?u:d,{left:(v=a?g||_||p%2==m%2?u:f:d)(p%2==1&&m%2==1&&!_&&a?c.left-1:c.left),top:y(c.top),bottom:y(c.bottom),right:v(c.right)}),S="bottom"===n?"top":"bottom",D="right"===i?"left":"right",I=re("transform"),A=void 0,O=void 0;if(O="bottom"===S?"HTML"===b.nodeName?-b.clientHeight+T.bottom:-w.height+T.bottom:T.top,A="right"===D?"HTML"===b.nodeName?-b.clientWidth+T.right:-w.width+T.right:T.left,E&&I)C[I]="translate3d("+A+"px, "+O+"px, 0)",C[S]=0,C[D]=0,C.willChange="transform";else{var N="bottom"===S?-1:1,k="right"===D?-1:1;C[S]=O*N,C[D]=A*k,C.willChange=S+", "+D}var L={"x-placement":t.placement};return t.attributes=Qt({},L,t.attributes),t.styles=Qt({},C,t.styles),t.arrowStyles=Qt({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return he(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach(function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)}),t.arrowElement&&Object.keys(t.arrowStyles).length&&he(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,o){var r=Jt(o,e,t,n.positionFixed),s=$t(n.placement,r,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",s),he(e,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},be=function(){function r(t,e){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=At(this.update.bind(this)),this.options=Qt({},r.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=e&&e.jquery?e[0]:e,this.options.modifiers={},Object.keys(Qt({},r.Defaults.modifiers,i.modifiers)).forEach(function(t){n.options.modifiers[t]=Qt({},r.Defaults.modifiers[t]||{},i.modifiers?i.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return Qt({name:t},n.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&Ot(t.onLoad)&&t.onLoad(n.reference,n.popper,n.options,t,n.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return qt(r,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=Jt(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=$t(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=ee(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=ie(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,oe(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[re("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=ae(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return le.call(this)}}]),r}();be.Utils=("undefined"!=typeof window?window:global).PopperUtils,be.placements=de,be.Defaults=Ee;var we="dropdown",Ce="bs.dropdown",Te="."+Ce,Se=".data-api",De=p.fn[we],Ie=new RegExp("38|40|27"),Ae={HIDE:"hide"+Te,HIDDEN:"hidden"+Te,SHOW:"show"+Te,SHOWN:"shown"+Te,CLICK:"click"+Te,CLICK_DATA_API:"click"+Te+Se,KEYDOWN_DATA_API:"keydown"+Te+Se,KEYUP_DATA_API:"keyup"+Te+Se},Oe="disabled",Ne="show",ke="dropup",Le="dropright",xe="dropleft",Pe="dropdown-menu-right",He="position-static",je='[data-toggle="dropdown"]',Re=".dropdown form",Fe=".dropdown-menu",Me=".navbar-nav",We=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Ue="top-start",Be="top-end",qe="bottom-start",Ke="bottom-end",Qe="right-start",Ve="left-start",Ye={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},ze={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},Xe=function(){function c(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=c.prototype;return t.toggle=function(){if(!this._element.disabled&&!p(this._element).hasClass(Oe)){var t=c._getParentFromElement(this._element),e=p(this._menu).hasClass(Ne);if(c._clearMenus(),!e){var n={relatedTarget:this._element},i=p.Event(Ae.SHOW,n);if(p(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof be)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=t:m.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&p(t).addClass(He),this._popper=new be(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===p(t).closest(Me).length&&p(document.body).children().on("mouseover",null,p.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),p(this._menu).toggleClass(Ne),p(t).toggleClass(Ne).trigger(p.Event(Ae.SHOWN,n))}}}},t.show=function(){if(!(this._element.disabled||p(this._element).hasClass(Oe)||p(this._menu).hasClass(Ne))){var t={relatedTarget:this._element},e=p.Event(Ae.SHOW,t),n=c._getParentFromElement(this._element);p(n).trigger(e),e.isDefaultPrevented()||(p(this._menu).toggleClass(Ne),p(n).toggleClass(Ne).trigger(p.Event(Ae.SHOWN,t)))}},t.hide=function(){if(!this._element.disabled&&!p(this._element).hasClass(Oe)&&p(this._menu).hasClass(Ne)){var t={relatedTarget:this._element},e=p.Event(Ae.HIDE,t),n=c._getParentFromElement(this._element);p(n).trigger(e),e.isDefaultPrevented()||(p(this._menu).toggleClass(Ne),p(n).toggleClass(Ne).trigger(p.Event(Ae.HIDDEN,t)))}},t.dispose=function(){p.removeData(this._element,Ce),p(this._element).off(Te),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;p(this._element).on(Ae.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l({},this.constructor.Default,p(this._element).data(),t),m.typeCheckConfig(we,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=c._getParentFromElement(this._element);t&&(this._menu=t.querySelector(Fe))}return this._menu},t._getPlacement=function(){var t=p(this._element.parentNode),e=qe;return t.hasClass(ke)?(e=Ue,p(this._menu).hasClass(Pe)&&(e=Be)):t.hasClass(Le)?e=Qe:t.hasClass(xe)?e=Ve:p(this._menu).hasClass(Pe)&&(e=Ke),e},t._detectNavbar=function(){return 0<p(this._element).closest(".navbar").length},t._getOffset=function(){var e=this,t={};return"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e._config.offset(t.offsets,e._element)||{}),t}:t.offset=this._config.offset,t},t._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),t},c._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(Ce);if(t||(t=new c(this,"object"==typeof e?e:null),p(this).data(Ce,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},c._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(je)),n=0,i=e.length;n<i;n++){var o=c._getParentFromElement(e[n]),r=p(e[n]).data(Ce),s={relatedTarget:e[n]};if(t&&"click"===t.type&&(s.clickEvent=t),r){var a=r._menu;if(p(o).hasClass(Ne)&&!(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&p.contains(o,t.target))){var l=p.Event(Ae.HIDE,s);p(o).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),e[n].setAttribute("aria-expanded","false"),p(a).removeClass(Ne),p(o).removeClass(Ne).trigger(p.Event(Ae.HIDDEN,s)))}}}},c._getParentFromElement=function(t){var e,n=m.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},c._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||p(t.target).closest(Fe).length)):Ie.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!p(this).hasClass(Oe))){var e=c._getParentFromElement(this),n=p(e).hasClass(Ne);if(n&&(!n||27!==t.which&&32!==t.which)){var i=[].slice.call(e.querySelectorAll(We));if(0!==i.length){var o=i.indexOf(t.target);38===t.which&&0<o&&o--,40===t.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===t.which){var r=e.querySelector(je);p(r).trigger("focus")}p(this).trigger("click")}}},s(c,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Ye}},{key:"DefaultType",get:function(){return ze}}]),c}();p(document).on(Ae.KEYDOWN_DATA_API,je,Xe._dataApiKeydownHandler).on(Ae.KEYDOWN_DATA_API,Fe,Xe._dataApiKeydownHandler).on(Ae.CLICK_DATA_API+" "+Ae.KEYUP_DATA_API,Xe._clearMenus).on(Ae.CLICK_DATA_API,je,function(t){t.preventDefault(),t.stopPropagation(),Xe._jQueryInterface.call(p(this),"toggle")}).on(Ae.CLICK_DATA_API,Re,function(t){t.stopPropagation()}),p.fn[we]=Xe._jQueryInterface,p.fn[we].Constructor=Xe,p.fn[we].noConflict=function(){return p.fn[we]=De,Xe._jQueryInterface};var Ge="modal",$e="bs.modal",Je="."+$e,Ze=p.fn[Ge],tn={backdrop:!0,keyboard:!0,focus:!0,show:!0},en={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},nn={HIDE:"hide"+Je,HIDDEN:"hidden"+Je,SHOW:"show"+Je,SHOWN:"shown"+Je,FOCUSIN:"focusin"+Je,RESIZE:"resize"+Je,CLICK_DISMISS:"click.dismiss"+Je,KEYDOWN_DISMISS:"keydown.dismiss"+Je,MOUSEUP_DISMISS:"mouseup.dismiss"+Je,MOUSEDOWN_DISMISS:"mousedown.dismiss"+Je,CLICK_DATA_API:"click"+Je+".data-api"},on="modal-dialog-scrollable",rn="modal-scrollbar-measure",sn="modal-backdrop",an="modal-open",ln="fade",cn="show",hn=".modal-dialog",un=".modal-body",fn='[data-toggle="modal"]',dn='[data-dismiss="modal"]',pn=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",mn=".sticky-top",gn=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(hn),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){p(this._element).hasClass(ln)&&(this._isTransitioning=!0);var n=p.Event(nn.SHOW,{relatedTarget:t});p(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),p(this._element).on(nn.CLICK_DISMISS,dn,function(t){return e.hide(t)}),p(this._dialog).on(nn.MOUSEDOWN_DISMISS,function(){p(e._element).one(nn.MOUSEUP_DISMISS,function(t){p(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=p.Event(nn.HIDE);if(p(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=p(this._element).hasClass(ln);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),p(document).off(nn.FOCUSIN),p(this._element).removeClass(cn),p(this._element).off(nn.CLICK_DISMISS),p(this._dialog).off(nn.MOUSEDOWN_DISMISS),i){var o=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(o)}else this._hideModal()}}},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return p(t).off(Je)}),p(document).off(nn.FOCUSIN),p.removeData(this._element,$e),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l({},tn,t),m.typeCheckConfig(Ge,t,en),t},t._showElement=function(t){var e=this,n=p(this._element).hasClass(ln);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),p(this._dialog).hasClass(on)?this._dialog.querySelector(un).scrollTop=0:this._element.scrollTop=0,n&&m.reflow(this._element),p(this._element).addClass(cn),this._config.focus&&this._enforceFocus();var i=p.Event(nn.SHOWN,{relatedTarget:t}),o=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,p(e._element).trigger(i)};if(n){var r=m.getTransitionDurationFromElement(this._dialog);p(this._dialog).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o()},t._enforceFocus=function(){var e=this;p(document).off(nn.FOCUSIN).on(nn.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===p(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?p(this._element).on(nn.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||p(this._element).off(nn.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?p(window).on(nn.RESIZE,function(t){return e.handleUpdate(t)}):p(window).off(nn.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){p(document.body).removeClass(an),t._resetAdjustments(),t._resetScrollbar(),p(t._element).trigger(nn.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(p(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=p(this._element).hasClass(ln)?ln:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=sn,n&&this._backdrop.classList.add(n),p(this._backdrop).appendTo(document.body),p(this._element).on(nn.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._element.focus():e.hide())}),n&&m.reflow(this._backdrop),p(this._backdrop).addClass(cn),!t)return;if(!n)return void t();var i=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){p(this._backdrop).removeClass(cn);var o=function(){e._removeBackdrop(),t&&t()};if(p(this._element).hasClass(ln)){var r=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var t=[].slice.call(document.querySelectorAll(pn)),e=[].slice.call(document.querySelectorAll(mn));p(t).each(function(t,e){var n=e.style.paddingRight,i=p(e).css("padding-right");p(e).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),p(e).each(function(t,e){var n=e.style.marginRight,i=p(e).css("margin-right");p(e).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=p(document.body).css("padding-right");p(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}p(document.body).addClass(an)},t._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(pn));p(t).each(function(t,e){var n=p(e).data("padding-right");p(e).removeData("padding-right"),e.style.paddingRight=n||""});var e=[].slice.call(document.querySelectorAll(""+mn));p(e).each(function(t,e){var n=p(e).data("margin-right");"undefined"!=typeof n&&p(e).css("margin-right",n).removeData("margin-right")});var n=p(document.body).data("padding-right");p(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=rn,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=p(this).data($e),e=l({},tn,p(this).data(),"object"==typeof n&&n?n:{});if(t||(t=new o(this,e),p(this).data($e,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return tn}}]),o}();p(document).on(nn.CLICK_DATA_API,fn,function(t){var e,n=this,i=m.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=p(e).data($e)?"toggle":l({},p(e).data(),p(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var r=p(e).one(nn.SHOW,function(t){t.isDefaultPrevented()||r.one(nn.HIDDEN,function(){p(n).is(":visible")&&n.focus()})});gn._jQueryInterface.call(p(e),o,this)}),p.fn[Ge]=gn._jQueryInterface,p.fn[Ge].Constructor=gn,p.fn[Ge].noConflict=function(){return p.fn[Ge]=Ze,gn._jQueryInterface};var _n=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},yn=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,En=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function bn(t,s,e){if(0===t.length)return t;if(e&&"function"==typeof e)return e(t);for(var n=(new window.DOMParser).parseFromString(t,"text/html"),a=Object.keys(s),l=[].slice.call(n.body.querySelectorAll("*")),i=function(t,e){var n=l[t],i=n.nodeName.toLowerCase();if(-1===a.indexOf(n.nodeName.toLowerCase()))return n.parentNode.removeChild(n),"continue";var o=[].slice.call(n.attributes),r=[].concat(s["*"]||[],s[i]||[]);o.forEach(function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===_n.indexOf(n)||Boolean(t.nodeValue.match(yn)||t.nodeValue.match(En));for(var i=e.filter(function(t){return t instanceof RegExp}),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return!0;return!1})(t,r)||n.removeAttribute(t.nodeName)})},o=0,r=l.length;o<r;o++)i(o);return n.body.innerHTML}var wn="tooltip",Cn="bs.tooltip",Tn="."+Cn,Sn=p.fn[wn],Dn="bs-tooltip",In=new RegExp("(^|\\s)"+Dn+"\\S+","g"),An=["sanitize","whiteList","sanitizeFn"],On={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object"},Nn={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},kn={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:vn},Ln="show",xn="out",Pn={HIDE:"hide"+Tn,HIDDEN:"hidden"+Tn,SHOW:"show"+Tn,SHOWN:"shown"+Tn,INSERTED:"inserted"+Tn,CLICK:"click"+Tn,FOCUSIN:"focusin"+Tn,FOCUSOUT:"focusout"+Tn,MOUSEENTER:"mouseenter"+Tn,MOUSELEAVE:"mouseleave"+Tn},Hn="fade",jn="show",Rn=".tooltip-inner",Fn=".arrow",Mn="hover",Wn="focus",Un="click",Bn="manual",qn=function(){function i(t,e){if("undefined"==typeof be)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=p(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(jn))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(t);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p(o).addClass(Hn);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new be(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Fn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),p(o).addClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p(e.element).trigger(e.constructor.Event.SHOWN),t===xn&&e._leave(null,e)};if(p(this.tip).hasClass(Hn)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=p.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==Ln&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),p(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(p(this.element).trigger(i),!i.isDefaultPrevented()){if(p(n).removeClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger[Un]=!1,this._activeTrigger[Wn]=!1,this._activeTrigger[Mn]=!1,p(this.tip).hasClass(Hn)){var r=m.getTransitionDurationFromElement(n);p(n).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){p(this.getTipElement()).addClass(Dn+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(p(t.querySelectorAll(Rn)),this.getTitle()),p(t).removeClass(Hn+" "+jn)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=bn(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?p(e).parent().is(t)||t.empty().append(e):t.text(p(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},t._getAttachment=function(t){return Nn[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Bn){var e=t===Mn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Mn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),p(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Wn:Mn]=!0),p(e.getTipElement()).hasClass(jn)||e._hoverState===Ln?e._hoverState=Ln:(clearTimeout(e._timeout),e._hoverState=Ln,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Ln&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Wn:Mn]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=xn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===xn&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=p(this.element).data();return Object.keys(e).forEach(function(t){-1!==An.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),m.typeCheckConfig(wn,t,this.constructor.DefaultType),t.sanitize&&(t.template=bn(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(In);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(p(t).removeClass(Hn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Cn),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Cn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return kn}},{key:"NAME",get:function(){return wn}},{key:"DATA_KEY",get:function(){return Cn}},{key:"Event",get:function(){return Pn}},{key:"EVENT_KEY",get:function(){return Tn}},{key:"DefaultType",get:function(){return On}}]),i}();p.fn[wn]=qn._jQueryInterface,p.fn[wn].Constructor=qn,p.fn[wn].noConflict=function(){return p.fn[wn]=Sn,qn._jQueryInterface};var Kn="popover",Qn="bs.popover",Vn="."+Qn,Yn=p.fn[Kn],zn="bs-popover",Xn=new RegExp("(^|\\s)"+zn+"\\S+","g"),Gn=l({},qn.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),$n=l({},qn.DefaultType,{content:"(string|element|function)"}),Jn="fade",Zn="show",ti=".popover-header",ei=".popover-body",ni={HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn,INSERTED:"inserted"+Vn,CLICK:"click"+Vn,FOCUSIN:"focusin"+Vn,FOCUSOUT:"focusout"+Vn,MOUSEENTER:"mouseenter"+Vn,MOUSELEAVE:"mouseleave"+Vn},ii=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){p(this.getTipElement()).addClass(zn+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},o.setContent=function(){var t=p(this.getTipElement());this.setElementContent(t.find(ti),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ei),e),t.removeClass(Jn+" "+Zn)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(Xn);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Qn),e="object"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Qn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Gn}},{key:"NAME",get:function(){return Kn}},{key:"DATA_KEY",get:function(){return Qn}},{key:"Event",get:function(){return ni}},{key:"EVENT_KEY",get:function(){return Vn}},{key:"DefaultType",get:function(){return $n}}]),i}(qn);p.fn[Kn]=ii._jQueryInterface,p.fn[Kn].Constructor=ii,p.fn[Kn].noConflict=function(){return p.fn[Kn]=Yn,ii._jQueryInterface};var oi="scrollspy",ri="bs.scrollspy",si="."+ri,ai=p.fn[oi],li={offset:10,method:"auto",target:""},ci={offset:"number",method:"string",target:"(string|element)"},hi={ACTIVATE:"activate"+si,SCROLL:"scroll"+si,LOAD_DATA_API:"load"+si+".data-api"},ui="dropdown-item",fi="active",di='[data-spy="scroll"]',pi=".nav, .list-group",mi=".nav-link",gi=".nav-item",_i=".list-group-item",vi=".dropdown",yi=".dropdown-item",Ei=".dropdown-toggle",bi="offset",wi="position",Ci=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+mi+","+this._config.target+" "+_i+","+this._config.target+" "+yi,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,p(this._scrollElement).on(hi.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?bi:wi,o="auto"===this._config.method?t:this._config.method,r=o===wi?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=m.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[p(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){p.removeData(this._element,ri),p(this._scrollElement).off(si),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if("string"!=typeof(t=l({},li,"object"==typeof t&&t?t:{})).target){var e=p(t.target).attr("id");e||(e=m.getUID(oi),p(t.target).attr("id",e)),t.target="#"+e}return m.typeCheckConfig(oi,t,ci),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",").map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'}),n=p([].slice.call(document.querySelectorAll(t.join(","))));n.hasClass(ui)?(n.closest(vi).find(Ei).addClass(fi),n.addClass(fi)):(n.addClass(fi),n.parents(pi).prev(mi+", "+_i).addClass(fi),n.parents(pi).prev(gi).children(mi).addClass(fi)),p(this._scrollElement).trigger(hi.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(fi)}).forEach(function(t){return t.classList.remove(fi)})},n._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(ri);if(t||(t=new n(this,"object"==typeof e&&e),p(this).data(ri,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return li}}]),n}();p(window).on(hi.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(di)),e=t.length;e--;){var n=p(t[e]);Ci._jQueryInterface.call(n,n.data())}}),p.fn[oi]=Ci._jQueryInterface,p.fn[oi].Constructor=Ci,p.fn[oi].noConflict=function(){return p.fn[oi]=ai,Ci._jQueryInterface};var Ti="bs.tab",Si="."+Ti,Di=p.fn.tab,Ii={HIDE:"hide"+Si,HIDDEN:"hidden"+Si,SHOW:"show"+Si,SHOWN:"shown"+Si,CLICK_DATA_API:"click"+Si+".data-api"},Ai="dropdown-menu",Oi="active",Ni="disabled",ki="fade",Li="show",xi=".dropdown",Pi=".nav, .list-group",Hi=".active",ji="> li > .active",Ri='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',Fi=".dropdown-toggle",Mi="> .dropdown-menu .active",Wi=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&p(this._element).hasClass(Oi)||p(this._element).hasClass(Ni))){var t,i,e=p(this._element).closest(Pi)[0],o=m.getSelectorFromElement(this._element);if(e){var r="UL"===e.nodeName||"OL"===e.nodeName?ji:Hi;i=(i=p.makeArray(p(e).find(r)))[i.length-1]}var s=p.Event(Ii.HIDE,{relatedTarget:this._element}),a=p.Event(Ii.SHOW,{relatedTarget:i});if(i&&p(i).trigger(s),p(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=p.Event(Ii.HIDDEN,{relatedTarget:n._element}),e=p.Event(Ii.SHOWN,{relatedTarget:i});p(i).trigger(t),p(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){p.removeData(this._element,Ti),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?p(e).children(Hi):p(e).find(ji))[0],r=n&&o&&p(o).hasClass(ki),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=m.getTransitionDurationFromElement(o);p(o).removeClass(Li).one(m.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){p(e).removeClass(Oi);var i=p(e.parentNode).find(Mi)[0];i&&p(i).removeClass(Oi),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(p(t).addClass(Oi),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),m.reflow(t),t.classList.contains(ki)&&t.classList.add(Li),t.parentNode&&p(t.parentNode).hasClass(Ai)){var o=p(t).closest(xi)[0];if(o){var r=[].slice.call(o.querySelectorAll(Fi));p(r).addClass(Oi)}t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(Ti);if(e||(e=new i(this),t.data(Ti,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();p(document).on(Ii.CLICK_DATA_API,Ri,function(t){t.preventDefault(),Wi._jQueryInterface.call(p(this),"show")}),p.fn.tab=Wi._jQueryInterface,p.fn.tab.Constructor=Wi,p.fn.tab.noConflict=function(){return p.fn.tab=Di,Wi._jQueryInterface};var Ui="toast",Bi="bs.toast",qi="."+Bi,Ki=p.fn[Ui],Qi={CLICK_DISMISS:"click.dismiss"+qi,HIDE:"hide"+qi,HIDDEN:"hidden"+qi,SHOW:"show"+qi,SHOWN:"shown"+qi},Vi="fade",Yi="hide",zi="show",Xi="showing",Gi={animation:"boolean",autohide:"boolean",delay:"number"},$i={animation:!0,autohide:!0,delay:500},Ji='[data-dismiss="toast"]',Zi=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;p(this._element).trigger(Qi.SHOW),this._config.animation&&this._element.classList.add(Vi);var e=function(){t._element.classList.remove(Xi),t._element.classList.add(zi),p(t._element).trigger(Qi.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove(Yi),this._element.classList.add(Xi),this._config.animation){var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(zi)&&(p(this._element).trigger(Qi.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(zi)&&this._element.classList.remove(zi),p(this._element).off(Qi.CLICK_DISMISS),p.removeData(this._element,Bi),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},$i,p(this._element).data(),"object"==typeof t&&t?t:{}),m.typeCheckConfig(Ui,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;p(this._element).on(Qi.CLICK_DISMISS,Ji,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add(Yi),p(t._element).trigger(Qi.HIDDEN)};if(this._element.classList.remove(zi),this._config.animation){var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(Bi);if(e||(e=new i(this,"object"==typeof n&&n),t.data(Bi,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"DefaultType",get:function(){return Gi}},{key:"Default",get:function(){return $i}}]),i}();p.fn[Ui]=Zi._jQueryInterface,p.fn[Ui].Constructor=Zi,p.fn[Ui].noConflict=function(){return p.fn[Ui]=Ki,Zi._jQueryInterface},function(){if("undefined"==typeof p)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=p.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),t.Util=m,t.Alert=g,t.Button=k,t.Carousel=at,t.Collapse=Ct,t.Dropdown=Xe,t.Modal=gn,t.Popover=ii,t.Scrollspy=Ci,t.Tab=Wi,t.Toast=Zi,t.Tooltip=qn,Object.defineProperty(t,"__esModule",{value:!0})}); |
| | | //# sourceMappingURL=bootstrap.bundle.min.js.map |
¶Ô±ÈÐÂÎļþ |
| | |
| | | {"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/index.js"],"names":["TRANSITION_END","transitionEndEmulator","duration","_this","this","called","$","one","Util","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","ShadowRoot","parentNode","root","fn","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","Alert","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","DATA_API_KEY","Selector","FOCUS_BLUR_DATA_API","Button","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","hasAttribute","focus","setAttribute","toggleClass","button","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","window","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","length","direction","off","_objectSpread","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","end","clearTimeout","querySelectorAll","e","add","tagName","which","slice","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","parseInt","defaultInterval","action","TypeError","ride","_dataApiClickHandler","slideIndex","carousels","i","len","$carousel","SHOW","SHOWN","HIDE","HIDDEN","Dimension","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","isBrowser","longerTimeoutBrowsers","timeoutDuration","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","undefined","html","scrollingElement","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","max","getWindowSizes","height","width","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","protoProps","staticProps","_extends","assign","source","getClientRect","offsets","right","left","bottom","top","rect","scrollTop","scrollLeft","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","reference","padding","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","isFixed","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","_ref","sort","a","b","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","runModifiers","modifiers","ends","prop","findIndex","cur","forEach","console","warn","enabled","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toCheck","getWindow","setupEventListeners","options","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","callback","scrollParents","isBody","eventsEnabled","disableEventListeners","cancelAnimationFrame","scheduleUpdate","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","concat","reverse","BEHAVIORS","parseOffset","offset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","positionFixed","removeOnDestroy","onCreate","onUpdate","shift","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","preventOverflow","instance","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","flip","flipped","originalPlacement","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","inner","subtractLength","bound","attributes","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","offsetParentRect","position","devicePixelRatio","v","prefixedProperty","willChange","invertTop","invertLeft","x-placement","arrowStyles","applyStyle","removeAttribute","onLoad","modifierOptions","Popper","classCallCheck","requestAnimationFrame","update","isDestroyed","isCreated","enableEventListeners","removeChild","Utils","global","PopperUtils","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","AttachmentMap","boundary","display","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","referenceElement","_getPopperConfig","noop","hideEvent","destroy","stopPropagation","constructor","_getPlacement","$parentDropdown","_getOffset","popperConfig","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","ELEMENT_NODE","appendChild","_enforceFocus","shownEvent","transitionComplete","has","_this5","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this8","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","paddingLeft","paddingRight","_getScrollbarWidth","_this9","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","elements","margin","scrollDiv","scrollbarWidth","_this10","uriAttrs","DefaultWhitelist","*","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","l","allowedAttribute","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","container","fallbackPlacement","sanitize","AUTO","TOP","RIGHT","BOTTOM","LEFT","HoverState","INSERTED","FOCUSOUT","Trigger","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_handlePopperPlacementChange","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","text","empty","append","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","join","popperData","popperInstance","initConfigAnimation","Popover","_getContent","method","ACTIVATE","SCROLL","OffsetMethod","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","item","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","scrollSpys","$spy","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","autohide","Toast","withoutTimeout","_close"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n }\n}\n\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n}\n\nconst Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n}\n\nconst Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input:not([type=\"hidden\"])',\n ACTIVE : '.active',\n BUTTON : '.btn'\n}\n\nconst Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLE\n )[0]\n\n if (rootElement) {\n const input = this._element.querySelector(Selector.INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(Selector.ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n input.checked = !this._element.classList.contains(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !this._element.classList.contains(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true,\n touch : true\n}\n\nconst DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean',\n touch : 'boolean'\n}\n\nconst Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n}\n\nconst Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHSTART : `touchstart${EVENT_KEY}`,\n TOUCHMOVE : `touchmove${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n POINTERDOWN : `pointerdown${EVENT_KEY}`,\n POINTERUP : `pointerup${EVENT_KEY}`,\n DRAG_START : `dragstart${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item',\n POINTER_EVENT : 'pointer-event'\n}\n\nconst Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n ITEM_IMG : '.carousel-item img',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n}\n\nconst PointerType = {\n TOUCH : 'touch',\n PEN : 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(Selector.INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(Selector.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = (event) => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, (e) => e.preventDefault())\n if (this._pointerEvent) {\n $(this._element).on(Event.POINTERDOWN, (event) => start(event))\n $(this._element).on(Event.POINTERUP, (event) => end(event))\n\n this._element.classList.add(ClassName.POINTER_EVENT)\n } else {\n $(this._element).on(Event.TOUCHSTART, (event) => start(event))\n $(this._element).on(Event.TOUCHMOVE, (event) => move(event))\n $(this._element).on(Event.TOUCHEND, (event) => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n $(indicators)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle : true,\n parent : ''\n}\n\nconst DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n}\n\nconst Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n}\n\nconst Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n}\n\nconst Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES))\n .filter((elem) => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(ClassName.COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n const children = [].slice.call(parent.querySelectorAll(selector))\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.7\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" â or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n}\n\nconst Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n}\n\nconst AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n}\n\nconst Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic'\n}\n\nconst DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n show() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(Selector.MENU)\n }\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets, this._element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = parent.querySelector(Selector.DATA_TOGGLE)\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SCROLLABLE : 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DIALOG : '.modal-dialog',\n MODAL_BODY : '.modal-body',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(Selector.DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n $(document).off(Event.FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n\n if ($(this._dialog).hasClass(ClassName.SCROLLABLE)) {\n this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(ClassName.OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n}\n\nconst HoverState = {\n SHOW : 'show',\n OUT : 'out'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n}\n\nconst Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n}\n\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal')\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => this._handlePopperPlacementChange(data)\n })\n\n $(tip).addClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(Selector.TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n })\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => {\n if (this.element) {\n this.hide()\n }\n }\n )\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const popperInstance = popperData.instance\n this.tip = popperInstance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset : 10,\n method : 'auto',\n target : ''\n}\n\nconst DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n}\n\nconst Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n}\n\nconst Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n}\n\nconst OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n [].slice.call(document.querySelectorAll(this._selector))\n .filter((node) => node.classList.contains(ClassName.ACTIVE))\n .forEach((node) => node.classList.remove(ClassName.ACTIVE))\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY))\n const scrollSpysLength = scrollSpys.length\n\n for (let i = scrollSpysLength; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL')\n ? $(container).find(Selector.ACTIVE_UL)\n : $(container).children(Selector.ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && $(active).hasClass(ClassName.FADE))\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n $(active)\n .removeClass(ClassName.SHOW)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(ClassName.ACTIVE)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n\n if (element.classList.contains(ClassName.FADE)) {\n element.classList.add(ClassName.SHOW)\n }\n\n if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n\n if (dropdownElement) {\n const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector.DROPDOWN_TOGGLE))\n\n $(dropdownToggleList).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n}\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n HIDE : 'hide',\n SHOW : 'show',\n SHOWING : 'showing'\n}\n\nconst DefaultType = {\n animation : 'boolean',\n autohide : 'boolean',\n delay : 'number'\n}\n\nconst Default = {\n animation : true,\n autohide : true,\n delay : 500\n}\n\nconst Selector = {\n DATA_DISMISS : '[data-dismiss=\"toast\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast {\n constructor(element, config) {\n this._element = element\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n show() {\n $(this._element).trigger(Event.SHOW)\n\n if (this._config.animation) {\n this._element.classList.add(ClassName.FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(ClassName.SHOWING)\n this._element.classList.add(ClassName.SHOW)\n\n $(this._element).trigger(Event.SHOWN)\n\n if (this._config.autohide) {\n this.hide()\n }\n }\n\n this._element.classList.remove(ClassName.HIDE)\n this._element.classList.add(ClassName.SHOWING)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n hide(withoutTimeout) {\n if (!this._element.classList.contains(ClassName.SHOW)) {\n return\n }\n\n $(this._element).trigger(Event.HIDE)\n\n if (withoutTimeout) {\n this._close()\n } else {\n this._timeout = setTimeout(() => {\n this._close()\n }, this._config.delay)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n this._timeout = null\n\n if (this._element.classList.contains(ClassName.SHOW)) {\n this._element.classList.remove(ClassName.SHOW)\n }\n\n $(this._element).off(Event.CLICK_DISMISS)\n\n $.removeData(this._element, DATA_KEY)\n this._element = null\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...$(this._element).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _setListeners() {\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n () => this.hide(true)\n )\n }\n\n _close() {\n const complete = () => {\n this._element.classList.add(ClassName.HIDE)\n $(this._element).trigger(Event.HIDDEN)\n }\n\n this._element.classList.remove(ClassName.SHOW)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Toast._jQueryInterface\n$.fn[NAME].Constructor = Toast\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast._jQueryInterface\n}\n\nexport default Toast\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Toast from './toast'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(() => {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n})()\n\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Toast,\n Tooltip\n}\n"]} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | {"version":3,"file":"bootstrap.js","sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/index.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n }\n}\n\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n}\n\nconst Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n}\n\nconst Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input:not([type=\"hidden\"])',\n ACTIVE : '.active',\n BUTTON : '.btn'\n}\n\nconst Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLE\n )[0]\n\n if (rootElement) {\n const input = this._element.querySelector(Selector.INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(Selector.ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n input.checked = !this._element.classList.contains(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !this._element.classList.contains(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true,\n touch : true\n}\n\nconst DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean',\n touch : 'boolean'\n}\n\nconst Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n}\n\nconst Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHSTART : `touchstart${EVENT_KEY}`,\n TOUCHMOVE : `touchmove${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n POINTERDOWN : `pointerdown${EVENT_KEY}`,\n POINTERUP : `pointerup${EVENT_KEY}`,\n DRAG_START : `dragstart${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item',\n POINTER_EVENT : 'pointer-event'\n}\n\nconst Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n ITEM_IMG : '.carousel-item img',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n}\n\nconst PointerType = {\n TOUCH : 'touch',\n PEN : 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(Selector.INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(Selector.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = (event) => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, (e) => e.preventDefault())\n if (this._pointerEvent) {\n $(this._element).on(Event.POINTERDOWN, (event) => start(event))\n $(this._element).on(Event.POINTERUP, (event) => end(event))\n\n this._element.classList.add(ClassName.POINTER_EVENT)\n } else {\n $(this._element).on(Event.TOUCHSTART, (event) => start(event))\n $(this._element).on(Event.TOUCHMOVE, (event) => move(event))\n $(this._element).on(Event.TOUCHEND, (event) => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n $(indicators)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle : true,\n parent : ''\n}\n\nconst DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n}\n\nconst Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n}\n\nconst Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n}\n\nconst Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES))\n .filter((elem) => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(ClassName.COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n const children = [].slice.call(parent.querySelectorAll(selector))\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n}\n\nconst Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n}\n\nconst AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n}\n\nconst Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic'\n}\n\nconst DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n show() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(Selector.MENU)\n }\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets, this._element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = parent.querySelector(Selector.DATA_TOGGLE)\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SCROLLABLE : 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DIALOG : '.modal-dialog',\n MODAL_BODY : '.modal-body',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(Selector.DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n $(document).off(Event.FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n\n if ($(this._dialog).hasClass(ClassName.SCROLLABLE)) {\n this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(ClassName.OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n}\n\nconst HoverState = {\n SHOW : 'show',\n OUT : 'out'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n}\n\nconst Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n}\n\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal')\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => this._handlePopperPlacementChange(data)\n })\n\n $(tip).addClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(Selector.TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n })\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => {\n if (this.element) {\n this.hide()\n }\n }\n )\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const popperInstance = popperData.instance\n this.tip = popperInstance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset : 10,\n method : 'auto',\n target : ''\n}\n\nconst DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n}\n\nconst Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n}\n\nconst Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n}\n\nconst OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n [].slice.call(document.querySelectorAll(this._selector))\n .filter((node) => node.classList.contains(ClassName.ACTIVE))\n .forEach((node) => node.classList.remove(ClassName.ACTIVE))\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY))\n const scrollSpysLength = scrollSpys.length\n\n for (let i = scrollSpysLength; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL')\n ? $(container).find(Selector.ACTIVE_UL)\n : $(container).children(Selector.ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && $(active).hasClass(ClassName.FADE))\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n $(active)\n .removeClass(ClassName.SHOW)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(ClassName.ACTIVE)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n\n if (element.classList.contains(ClassName.FADE)) {\n element.classList.add(ClassName.SHOW)\n }\n\n if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n\n if (dropdownElement) {\n const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector.DROPDOWN_TOGGLE))\n\n $(dropdownToggleList).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n}\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n HIDE : 'hide',\n SHOW : 'show',\n SHOWING : 'showing'\n}\n\nconst DefaultType = {\n animation : 'boolean',\n autohide : 'boolean',\n delay : 'number'\n}\n\nconst Default = {\n animation : true,\n autohide : true,\n delay : 500\n}\n\nconst Selector = {\n DATA_DISMISS : '[data-dismiss=\"toast\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast {\n constructor(element, config) {\n this._element = element\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n show() {\n $(this._element).trigger(Event.SHOW)\n\n if (this._config.animation) {\n this._element.classList.add(ClassName.FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(ClassName.SHOWING)\n this._element.classList.add(ClassName.SHOW)\n\n $(this._element).trigger(Event.SHOWN)\n\n if (this._config.autohide) {\n this.hide()\n }\n }\n\n this._element.classList.remove(ClassName.HIDE)\n this._element.classList.add(ClassName.SHOWING)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n hide(withoutTimeout) {\n if (!this._element.classList.contains(ClassName.SHOW)) {\n return\n }\n\n $(this._element).trigger(Event.HIDE)\n\n if (withoutTimeout) {\n this._close()\n } else {\n this._timeout = setTimeout(() => {\n this._close()\n }, this._config.delay)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n this._timeout = null\n\n if (this._element.classList.contains(ClassName.SHOW)) {\n this._element.classList.remove(ClassName.SHOW)\n }\n\n $(this._element).off(Event.CLICK_DISMISS)\n\n $.removeData(this._element, DATA_KEY)\n this._element = null\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...$(this._element).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _setListeners() {\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n () => this.hide(true)\n )\n }\n\n _close() {\n const complete = () => {\n this._element.classList.add(ClassName.HIDE)\n $(this._element).trigger(Event.HIDDEN)\n }\n\n this._element.classList.remove(ClassName.SHOW)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Toast._jQueryInterface\n$.fn[NAME].Constructor = Toast\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast._jQueryInterface\n}\n\nexport default Toast\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Toast from './toast'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(() => {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n})()\n\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Toast,\n Tooltip\n}\n"],"names":["TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","toType","obj","toString","call","match","toLowerCase","getSpecialTransitionEndEvent","bindType","delegateType","handle","event","$","target","is","handleObj","handler","apply","arguments","undefined","transitionEndEmulator","duration","called","one","Util","setTimeout","triggerTransitionEnd","setTransitionEndSupport","fn","emulateTransitionEnd","special","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","Selector","DISMISS","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","ALERT","FADE","SHOW","Alert","_element","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","ACTIVE","BUTTON","FOCUS","DATA_TOGGLE_CARROT","DATA_TOGGLE","INPUT","FOCUS_BLUR_DATA_API","Button","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","hasAttribute","focus","setAttribute","toggleClass","button","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","NEXT","PREV","LEFT","RIGHT","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","CAROUSEL","ITEM","POINTER_EVENT","ACTIVE_ITEM","ITEM_IMG","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","window","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","length","direction","off","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","start","originalEvent","pointerType","clientX","touches","move","end","clearTimeout","querySelectorAll","e","add","tagName","which","slice","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","slidEvent","nextElementInterval","parseInt","defaultInterval","action","TypeError","ride","_dataApiClickHandler","slideIndex","carousels","i","len","$carousel","SHOWN","HIDE","HIDDEN","COLLAPSE","COLLAPSING","COLLAPSED","Dimension","WIDTH","HEIGHT","ACTIVES","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","complete","capitalizedDimension","scrollSize","getBoundingClientRect","triggerArrayLength","$elem","isTransitioning","hasWidth","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","DISABLED","DROPUP","DROPRIGHT","DROPLEFT","MENURIGHT","MENULEFT","POSITION_STATIC","FORM_CHILD","MENU","NAVBAR_NAV","VISIBLE_ITEMS","AttachmentMap","TOP","TOPEND","BOTTOM","BOTTOMEND","RIGHTEND","LEFTEND","offset","flip","boundary","reference","display","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","Popper","referenceElement","_getPopperConfig","body","noop","hideEvent","destroy","update","scheduleUpdate","stopPropagation","constructor","_getPlacement","$parentDropdown","placement","_getOffset","offsets","popperConfig","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","SCROLLABLE","SCROLLBAR_MEASURER","BACKDROP","OPEN","DIALOG","MODAL_BODY","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","forEach","htmlElement","handleUpdate","Node","ELEMENT_NODE","appendChild","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","has","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","rect","left","right","innerWidth","_getScrollbarWidth","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","uriAttrs","ARIA_ATTRIBUTE_PATTERN","DefaultWhitelist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","l","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","whitelistKeys","keys","el","elName","attributeList","attributes","whitelistedAttributes","concat","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","container","fallbackPlacement","sanitize","AUTO","HoverState","OUT","INSERTED","FOCUSOUT","TOOLTIP","TOOLTIP_INNER","ARROW","Trigger","HOVER","MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","empty","append","text","find","triggers","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","key","$tip","tabClass","join","popperData","popperInstance","instance","popper","initConfigAnimation","TITLE","CONTENT","Popover","_getContent","method","ACTIVATE","SCROLL","DROPDOWN_ITEM","DROPDOWN_MENU","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","map","targetSelector","targetBCR","height","top","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","offsetLength","isActiveTarget","queries","$link","parents","node","scrollSpys","scrollSpysLength","$spy","ACTIVE_UL","DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","activeElements","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","SHOWING","autohide","Toast","withoutTimeout","_close","version","minMajor","ltMajor","minMinor","minPatch","maxMajor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;;;;;;AAOA,EAEA;;;;;;EAMA,IAAMA,cAAc,GAAG,eAAvB;EACA,IAAMC,OAAO,GAAG,OAAhB;EACA,IAAMC,uBAAuB,GAAG,IAAhC;;EAGA,SAASC,MAAT,CAAgBC,GAAhB,EAAqB;EACnB,SAAO,GAAGC,QAAH,CAAYC,IAAZ,CAAiBF,GAAjB,EAAsBG,KAAtB,CAA4B,aAA5B,EAA2C,CAA3C,EAA8CC,WAA9C,EAAP;EACD;;EAED,SAASC,4BAAT,GAAwC;EACtC,SAAO;EACLC,IAAAA,QAAQ,EAAEV,cADL;EAELW,IAAAA,YAAY,EAAEX,cAFT;EAGLY,IAAAA,MAHK,kBAGEC,KAHF,EAGS;EACZ,UAAIC,CAAC,CAACD,KAAK,CAACE,MAAP,CAAD,CAAgBC,EAAhB,CAAmB,IAAnB,CAAJ,EAA8B;EAC5B,eAAOH,KAAK,CAACI,SAAN,CAAgBC,OAAhB,CAAwBC,KAAxB,CAA8B,IAA9B,EAAoCC,SAApC,CAAP,CAD4B;EAE7B;;EACD,aAAOC,SAAP,CAJY;EAKb;EARI,GAAP;EAUD;;EAED,SAASC,qBAAT,CAA+BC,QAA/B,EAAyC;EAAA;;EACvC,MAAIC,MAAM,GAAG,KAAb;EAEAV,EAAAA,CAAC,CAAC,IAAD,CAAD,CAAQW,GAAR,CAAYC,IAAI,CAAC1B,cAAjB,EAAiC,YAAM;EACrCwB,IAAAA,MAAM,GAAG,IAAT;EACD,GAFD;EAIAG,EAAAA,UAAU,CAAC,YAAM;EACf,QAAI,CAACH,MAAL,EAAa;EACXE,MAAAA,IAAI,CAACE,oBAAL,CAA0B,KAA1B;EACD;EACF,GAJS,EAIPL,QAJO,CAAV;EAMA,SAAO,IAAP;EACD;;EAED,SAASM,uBAAT,GAAmC;EACjCf,EAAAA,CAAC,CAACgB,EAAF,CAAKC,oBAAL,GAA4BT,qBAA5B;EACAR,EAAAA,CAAC,CAACD,KAAF,CAAQmB,OAAR,CAAgBN,IAAI,CAAC1B,cAArB,IAAuCS,4BAA4B,EAAnE;EACD;EAED;;;;;;;EAMA,IAAMiB,IAAI,GAAG;EAEX1B,EAAAA,cAAc,EAAE,iBAFL;EAIXiC,EAAAA,MAJW,kBAIJC,MAJI,EAII;EACb,OAAG;EACD;EACAA,MAAAA,MAAM,IAAI,CAAC,EAAEC,IAAI,CAACC,MAAL,KAAgBnC,OAAlB,CAAX,CAFC;EAGF,KAHD,QAGSoC,QAAQ,CAACC,cAAT,CAAwBJ,MAAxB,CAHT;;EAIA,WAAOA,MAAP;EACD,GAVU;EAYXK,EAAAA,sBAZW,kCAYYC,OAZZ,EAYqB;EAC9B,QAAIC,QAAQ,GAAGD,OAAO,CAACE,YAAR,CAAqB,aAArB,CAAf;;EAEA,QAAI,CAACD,QAAD,IAAaA,QAAQ,KAAK,GAA9B,EAAmC;EACjC,UAAME,QAAQ,GAAGH,OAAO,CAACE,YAAR,CAAqB,MAArB,CAAjB;EACAD,MAAAA,QAAQ,GAAGE,QAAQ,IAAIA,QAAQ,KAAK,GAAzB,GAA+BA,QAAQ,CAACC,IAAT,EAA/B,GAAiD,EAA5D;EACD;;EAED,QAAI;EACF,aAAOP,QAAQ,CAACQ,aAAT,CAAuBJ,QAAvB,IAAmCA,QAAnC,GAA8C,IAArD;EACD,KAFD,CAEE,OAAOK,GAAP,EAAY;EACZ,aAAO,IAAP;EACD;EACF,GAzBU;EA2BXC,EAAAA,gCA3BW,4CA2BsBP,OA3BtB,EA2B+B;EACxC,QAAI,CAACA,OAAL,EAAc;EACZ,aAAO,CAAP;EACD,KAHuC;;;EAMxC,QAAIQ,kBAAkB,GAAGlC,CAAC,CAAC0B,OAAD,CAAD,CAAWS,GAAX,CAAe,qBAAf,CAAzB;EACA,QAAIC,eAAe,GAAGpC,CAAC,CAAC0B,OAAD,CAAD,CAAWS,GAAX,CAAe,kBAAf,CAAtB;EAEA,QAAME,uBAAuB,GAAGC,UAAU,CAACJ,kBAAD,CAA1C;EACA,QAAMK,oBAAoB,GAAGD,UAAU,CAACF,eAAD,CAAvC,CAVwC;;EAaxC,QAAI,CAACC,uBAAD,IAA4B,CAACE,oBAAjC,EAAuD;EACrD,aAAO,CAAP;EACD,KAfuC;;;EAkBxCL,IAAAA,kBAAkB,GAAGA,kBAAkB,CAACM,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CAArB;EACAJ,IAAAA,eAAe,GAAGA,eAAe,CAACI,KAAhB,CAAsB,GAAtB,EAA2B,CAA3B,CAAlB;EAEA,WAAO,CAACF,UAAU,CAACJ,kBAAD,CAAV,GAAiCI,UAAU,CAACF,eAAD,CAA5C,IAAiEhD,uBAAxE;EACD,GAjDU;EAmDXqD,EAAAA,MAnDW,kBAmDJf,OAnDI,EAmDK;EACd,WAAOA,OAAO,CAACgB,YAAf;EACD,GArDU;EAuDX5B,EAAAA,oBAvDW,gCAuDUY,OAvDV,EAuDmB;EAC5B1B,IAAAA,CAAC,CAAC0B,OAAD,CAAD,CAAWiB,OAAX,CAAmBzD,cAAnB;EACD,GAzDU;EA2DX;EACA0D,EAAAA,qBA5DW,mCA4Da;EACtB,WAAOC,OAAO,CAAC3D,cAAD,CAAd;EACD,GA9DU;EAgEX4D,EAAAA,SAhEW,qBAgEDxD,GAhEC,EAgEI;EACb,WAAO,CAACA,GAAG,CAAC,CAAD,CAAH,IAAUA,GAAX,EAAgByD,QAAvB;EACD,GAlEU;EAoEXC,EAAAA,eApEW,2BAoEKC,aApEL,EAoEoBC,MApEpB,EAoE4BC,WApE5B,EAoEyC;EAClD,SAAK,IAAMC,QAAX,IAAuBD,WAAvB,EAAoC;EAClC,UAAIE,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgC/D,IAAhC,CAAqC2D,WAArC,EAAkDC,QAAlD,CAAJ,EAAiE;EAC/D,YAAMI,aAAa,GAAGL,WAAW,CAACC,QAAD,CAAjC;EACA,YAAMK,KAAK,GAAWP,MAAM,CAACE,QAAD,CAA5B;EACA,YAAMM,SAAS,GAAOD,KAAK,IAAI7C,IAAI,CAACkC,SAAL,CAAeW,KAAf,CAAT,GAClB,SADkB,GACNpE,MAAM,CAACoE,KAAD,CADtB;;EAGA,YAAI,CAAC,IAAIE,MAAJ,CAAWH,aAAX,EAA0BI,IAA1B,CAA+BF,SAA/B,CAAL,EAAgD;EAC9C,gBAAM,IAAIG,KAAJ,CACDZ,aAAa,CAACa,WAAd,EAAH,yBACWV,QADX,2BACuCM,SADvC,sCAEsBF,aAFtB,SADI,CAAN;EAID;EACF;EACF;EACF,GApFU;EAsFXO,EAAAA,cAtFW,0BAsFIrC,OAtFJ,EAsFa;EACtB,QAAI,CAACH,QAAQ,CAACyC,eAAT,CAAyBC,YAA9B,EAA4C;EAC1C,aAAO,IAAP;EACD,KAHqB;;;EAMtB,QAAI,OAAOvC,OAAO,CAACwC,WAAf,KAA+B,UAAnC,EAA+C;EAC7C,UAAMC,IAAI,GAAGzC,OAAO,CAACwC,WAAR,EAAb;EACA,aAAOC,IAAI,YAAYC,UAAhB,GAA6BD,IAA7B,GAAoC,IAA3C;EACD;;EAED,QAAIzC,OAAO,YAAY0C,UAAvB,EAAmC;EACjC,aAAO1C,OAAP;EACD,KAbqB;;;EAgBtB,QAAI,CAACA,OAAO,CAAC2C,UAAb,EAAyB;EACvB,aAAO,IAAP;EACD;;EAED,WAAOzD,IAAI,CAACmD,cAAL,CAAoBrC,OAAO,CAAC2C,UAA5B,CAAP;EACD;EA3GU,CAAb;EA8GAtD,uBAAuB;;ECpKvB;;;;;;EAMA,IAAMuD,IAAI,GAAkB,OAA5B;EACA,IAAMC,OAAO,GAAe,OAA5B;EACA,IAAMC,QAAQ,GAAc,UAA5B;EACA,IAAMC,SAAS,SAAiBD,QAAhC;EACA,IAAME,YAAY,GAAU,WAA5B;EACA,IAAMC,kBAAkB,GAAI3E,CAAC,CAACgB,EAAF,CAAKsD,IAAL,CAA5B;EAEA,IAAMM,QAAQ,GAAG;EACfC,EAAAA,OAAO,EAAG;EADK,CAAjB;EAIA,IAAMC,KAAK,GAAG;EACZC,EAAAA,KAAK,YAAoBN,SADb;EAEZO,EAAAA,MAAM,aAAoBP,SAFd;EAGZQ,EAAAA,cAAc,YAAWR,SAAX,GAAuBC;EAHzB,CAAd;EAMA,IAAMQ,SAAS,GAAG;EAChBC,EAAAA,KAAK,EAAG,OADQ;EAEhBC,EAAAA,IAAI,EAAI,MAFQ;EAGhBC,EAAAA,IAAI,EAAI;EAGV;;;;;;EANkB,CAAlB;;MAYMC;;;EACJ,iBAAY5D,OAAZ,EAAqB;EACnB,SAAK6D,QAAL,GAAgB7D,OAAhB;EACD;;;;;EAQD;WAEA8D,QAAA,eAAM9D,OAAN,EAAe;EACb,QAAI+D,WAAW,GAAG,KAAKF,QAAvB;;EACA,QAAI7D,OAAJ,EAAa;EACX+D,MAAAA,WAAW,GAAG,KAAKC,eAAL,CAAqBhE,OAArB,CAAd;EACD;;EAED,QAAMiE,WAAW,GAAG,KAAKC,kBAAL,CAAwBH,WAAxB,CAApB;;EAEA,QAAIE,WAAW,CAACE,kBAAZ,EAAJ,EAAsC;EACpC;EACD;;EAED,SAAKC,cAAL,CAAoBL,WAApB;EACD;;WAEDM,UAAA,mBAAU;EACR/F,IAAAA,CAAC,CAACgG,UAAF,CAAa,KAAKT,QAAlB,EAA4Bf,QAA5B;EACA,SAAKe,QAAL,GAAgB,IAAhB;EACD;;;WAIDG,kBAAA,yBAAgBhE,OAAhB,EAAyB;EACvB,QAAMC,QAAQ,GAAGf,IAAI,CAACa,sBAAL,CAA4BC,OAA5B,CAAjB;EACA,QAAIuE,MAAM,GAAO,KAAjB;;EAEA,QAAItE,QAAJ,EAAc;EACZsE,MAAAA,MAAM,GAAG1E,QAAQ,CAACQ,aAAT,CAAuBJ,QAAvB,CAAT;EACD;;EAED,QAAI,CAACsE,MAAL,EAAa;EACXA,MAAAA,MAAM,GAAGjG,CAAC,CAAC0B,OAAD,CAAD,CAAWwE,OAAX,OAAuBhB,SAAS,CAACC,KAAjC,EAA0C,CAA1C,CAAT;EACD;;EAED,WAAOc,MAAP;EACD;;WAEDL,qBAAA,4BAAmBlE,OAAnB,EAA4B;EAC1B,QAAMyE,UAAU,GAAGnG,CAAC,CAAC8E,KAAF,CAAQA,KAAK,CAACC,KAAd,CAAnB;EAEA/E,IAAAA,CAAC,CAAC0B,OAAD,CAAD,CAAWiB,OAAX,CAAmBwD,UAAnB;EACA,WAAOA,UAAP;EACD;;WAEDL,iBAAA,wBAAepE,OAAf,EAAwB;EAAA;;EACtB1B,IAAAA,CAAC,CAAC0B,OAAD,CAAD,CAAW0E,WAAX,CAAuBlB,SAAS,CAACG,IAAjC;;EAEA,QAAI,CAACrF,CAAC,CAAC0B,OAAD,CAAD,CAAW2E,QAAX,CAAoBnB,SAAS,CAACE,IAA9B,CAAL,EAA0C;EACxC,WAAKkB,eAAL,CAAqB5E,OAArB;;EACA;EACD;;EAED,QAAMQ,kBAAkB,GAAGtB,IAAI,CAACqB,gCAAL,CAAsCP,OAAtC,CAA3B;EAEA1B,IAAAA,CAAC,CAAC0B,OAAD,CAAD,CACGf,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4B,UAACa,KAAD;EAAA,aAAW,KAAI,CAACuG,eAAL,CAAqB5E,OAArB,EAA8B3B,KAA9B,CAAX;EAAA,KAD5B,EAEGkB,oBAFH,CAEwBiB,kBAFxB;EAGD;;WAEDoE,kBAAA,yBAAgB5E,OAAhB,EAAyB;EACvB1B,IAAAA,CAAC,CAAC0B,OAAD,CAAD,CACG6E,MADH,GAEG5D,OAFH,CAEWmC,KAAK,CAACE,MAFjB,EAGGwB,MAHH;EAID;;;UAIMC,mBAAP,0BAAwBvD,MAAxB,EAAgC;EAC9B,WAAO,KAAKwD,IAAL,CAAU,YAAY;EAC3B,UAAMC,QAAQ,GAAG3G,CAAC,CAAC,IAAD,CAAlB;EACA,UAAI4G,IAAI,GAASD,QAAQ,CAACC,IAAT,CAAcpC,QAAd,CAAjB;;EAEA,UAAI,CAACoC,IAAL,EAAW;EACTA,QAAAA,IAAI,GAAG,IAAItB,KAAJ,CAAU,IAAV,CAAP;EACAqB,QAAAA,QAAQ,CAACC,IAAT,CAAcpC,QAAd,EAAwBoC,IAAxB;EACD;;EAED,UAAI1D,MAAM,KAAK,OAAf,EAAwB;EACtB0D,QAAAA,IAAI,CAAC1D,MAAD,CAAJ,CAAa,IAAb;EACD;EACF,KAZM,CAAP;EAaD;;UAEM2D,iBAAP,wBAAsBC,aAAtB,EAAqC;EACnC,WAAO,UAAU/G,KAAV,EAAiB;EACtB,UAAIA,KAAJ,EAAW;EACTA,QAAAA,KAAK,CAACgH,cAAN;EACD;;EAEDD,MAAAA,aAAa,CAACtB,KAAd,CAAoB,IAApB;EACD,KAND;EAOD;;;;0BAlGoB;EACnB,aAAOjB,OAAP;EACD;;;;;EAmGH;;;;;;;EAMAvE,CAAC,CAACuB,QAAD,CAAD,CAAYyF,EAAZ,CACElC,KAAK,CAACG,cADR,EAEEL,QAAQ,CAACC,OAFX,EAGES,KAAK,CAACuB,cAAN,CAAqB,IAAIvB,KAAJ,EAArB,CAHF;EAMA;;;;;;EAMAtF,CAAC,CAACgB,EAAF,CAAKsD,IAAL,IAAyBgB,KAAK,CAACmB,gBAA/B;EACAzG,CAAC,CAACgB,EAAF,CAAKsD,IAAL,EAAW2C,WAAX,GAAyB3B,KAAzB;;EACAtF,CAAC,CAACgB,EAAF,CAAKsD,IAAL,EAAW4C,UAAX,GAAyB,YAAM;EAC7BlH,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,IAAL,IAAaK,kBAAb;EACA,SAAOW,KAAK,CAACmB,gBAAb;EACD,CAHD;;ECpKA;;;;;;EAMA,IAAMnC,MAAI,GAAkB,QAA5B;EACA,IAAMC,SAAO,GAAe,OAA5B;EACA,IAAMC,UAAQ,GAAc,WAA5B;EACA,IAAMC,WAAS,SAAiBD,UAAhC;EACA,IAAME,cAAY,GAAU,WAA5B;EACA,IAAMC,oBAAkB,GAAI3E,CAAC,CAACgB,EAAF,CAAKsD,MAAL,CAA5B;EAEA,IAAMY,WAAS,GAAG;EAChBiC,EAAAA,MAAM,EAAG,QADO;EAEhBC,EAAAA,MAAM,EAAG,KAFO;EAGhBC,EAAAA,KAAK,EAAI;EAHO,CAAlB;EAMA,IAAMzC,UAAQ,GAAG;EACf0C,EAAAA,kBAAkB,EAAG,yBADN;EAEfC,EAAAA,WAAW,EAAU,yBAFN;EAGfC,EAAAA,KAAK,EAAgB,4BAHN;EAIfL,EAAAA,MAAM,EAAe,SAJN;EAKfC,EAAAA,MAAM,EAAe;EALN,CAAjB;EAQA,IAAMtC,OAAK,GAAG;EACZG,EAAAA,cAAc,YAAgBR,WAAhB,GAA4BC,cAD9B;EAEZ+C,EAAAA,mBAAmB,EAAG,UAAQhD,WAAR,GAAoBC,cAApB,mBACSD,WADT,GACqBC,cADrB;EAIxB;;;;;;EANc,CAAd;;MAYMgD;;;EACJ,kBAAYhG,OAAZ,EAAqB;EACnB,SAAK6D,QAAL,GAAgB7D,OAAhB;EACD;;;;;EAQD;WAEAiG,SAAA,kBAAS;EACP,QAAIC,kBAAkB,GAAG,IAAzB;EACA,QAAIC,cAAc,GAAG,IAArB;EACA,QAAMpC,WAAW,GAAGzF,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBW,OAAjB,CAClBtB,UAAQ,CAAC2C,WADS,EAElB,CAFkB,CAApB;;EAIA,QAAI9B,WAAJ,EAAiB;EACf,UAAMqC,KAAK,GAAG,KAAKvC,QAAL,CAAcxD,aAAd,CAA4B6C,UAAQ,CAAC4C,KAArC,CAAd;;EAEA,UAAIM,KAAJ,EAAW;EACT,YAAIA,KAAK,CAACC,IAAN,KAAe,OAAnB,EAA4B;EAC1B,cAAID,KAAK,CAACE,OAAN,IACF,KAAKzC,QAAL,CAAc0C,SAAd,CAAwBC,QAAxB,CAAiChD,WAAS,CAACiC,MAA3C,CADF,EACsD;EACpDS,YAAAA,kBAAkB,GAAG,KAArB;EACD,WAHD,MAGO;EACL,gBAAMO,aAAa,GAAG1C,WAAW,CAAC1D,aAAZ,CAA0B6C,UAAQ,CAACuC,MAAnC,CAAtB;;EAEA,gBAAIgB,aAAJ,EAAmB;EACjBnI,cAAAA,CAAC,CAACmI,aAAD,CAAD,CAAiB/B,WAAjB,CAA6BlB,WAAS,CAACiC,MAAvC;EACD;EACF;EACF;;EAED,YAAIS,kBAAJ,EAAwB;EACtB,cAAIE,KAAK,CAACM,YAAN,CAAmB,UAAnB,KACF3C,WAAW,CAAC2C,YAAZ,CAAyB,UAAzB,CADE,IAEFN,KAAK,CAACG,SAAN,CAAgBC,QAAhB,CAAyB,UAAzB,CAFE,IAGFzC,WAAW,CAACwC,SAAZ,CAAsBC,QAAtB,CAA+B,UAA/B,CAHF,EAG8C;EAC5C;EACD;;EACDJ,UAAAA,KAAK,CAACE,OAAN,GAAgB,CAAC,KAAKzC,QAAL,CAAc0C,SAAd,CAAwBC,QAAxB,CAAiChD,WAAS,CAACiC,MAA3C,CAAjB;EACAnH,UAAAA,CAAC,CAAC8H,KAAD,CAAD,CAASnF,OAAT,CAAiB,QAAjB;EACD;;EAEDmF,QAAAA,KAAK,CAACO,KAAN;EACAR,QAAAA,cAAc,GAAG,KAAjB;EACD;EACF;;EAED,QAAIA,cAAJ,EAAoB;EAClB,WAAKtC,QAAL,CAAc+C,YAAd,CAA2B,cAA3B,EACE,CAAC,KAAK/C,QAAL,CAAc0C,SAAd,CAAwBC,QAAxB,CAAiChD,WAAS,CAACiC,MAA3C,CADH;EAED;;EAED,QAAIS,kBAAJ,EAAwB;EACtB5H,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBgD,WAAjB,CAA6BrD,WAAS,CAACiC,MAAvC;EACD;EACF;;WAEDpB,UAAA,mBAAU;EACR/F,IAAAA,CAAC,CAACgG,UAAF,CAAa,KAAKT,QAAlB,EAA4Bf,UAA5B;EACA,SAAKe,QAAL,GAAgB,IAAhB;EACD;;;WAIMkB,mBAAP,0BAAwBvD,MAAxB,EAAgC;EAC9B,WAAO,KAAKwD,IAAL,CAAU,YAAY;EAC3B,UAAIE,IAAI,GAAG5G,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,CAAX;;EAEA,UAAI,CAACoC,IAAL,EAAW;EACTA,QAAAA,IAAI,GAAG,IAAIc,MAAJ,CAAW,IAAX,CAAP;EACA1H,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,EAAuBoC,IAAvB;EACD;;EAED,UAAI1D,MAAM,KAAK,QAAf,EAAyB;EACvB0D,QAAAA,IAAI,CAAC1D,MAAD,CAAJ;EACD;EACF,KAXM,CAAP;EAYD;;;;0BA5EoB;EACnB,aAAOqB,SAAP;EACD;;;;;EA6EH;;;;;;;EAMAvE,CAAC,CAACuB,QAAD,CAAD,CACGyF,EADH,CACMlC,OAAK,CAACG,cADZ,EAC4BL,UAAQ,CAAC0C,kBADrC,EACyD,UAACvH,KAAD,EAAW;EAChEA,EAAAA,KAAK,CAACgH,cAAN;EAEA,MAAIyB,MAAM,GAAGzI,KAAK,CAACE,MAAnB;;EAEA,MAAI,CAACD,CAAC,CAACwI,MAAD,CAAD,CAAUnC,QAAV,CAAmBnB,WAAS,CAACkC,MAA7B,CAAL,EAA2C;EACzCoB,IAAAA,MAAM,GAAGxI,CAAC,CAACwI,MAAD,CAAD,CAAUtC,OAAV,CAAkBtB,UAAQ,CAACwC,MAA3B,CAAT;EACD;;EAEDM,EAAAA,MAAM,CAACjB,gBAAP,CAAwBjH,IAAxB,CAA6BQ,CAAC,CAACwI,MAAD,CAA9B,EAAwC,QAAxC;EACD,CAXH,EAYGxB,EAZH,CAYMlC,OAAK,CAAC2C,mBAZZ,EAYiC7C,UAAQ,CAAC0C,kBAZ1C,EAY8D,UAACvH,KAAD,EAAW;EACrE,MAAMyI,MAAM,GAAGxI,CAAC,CAACD,KAAK,CAACE,MAAP,CAAD,CAAgBiG,OAAhB,CAAwBtB,UAAQ,CAACwC,MAAjC,EAAyC,CAAzC,CAAf;EACApH,EAAAA,CAAC,CAACwI,MAAD,CAAD,CAAUD,WAAV,CAAsBrD,WAAS,CAACmC,KAAhC,EAAuC,eAAezD,IAAf,CAAoB7D,KAAK,CAACgI,IAA1B,CAAvC;EACD,CAfH;EAiBA;;;;;;EAMA/H,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaoD,MAAM,CAACjB,gBAApB;EACAzG,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW2C,WAAX,GAAyBS,MAAzB;;EACA1H,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW4C,UAAX,GAAwB,YAAM;EAC5BlH,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaK,oBAAb;EACA,SAAO+C,MAAM,CAACjB,gBAAd;EACD,CAHD;;EC3JA;;;;;;EAMA,IAAMnC,MAAI,GAAqB,UAA/B;EACA,IAAMC,SAAO,GAAkB,OAA/B;EACA,IAAMC,UAAQ,GAAiB,aAA/B;EACA,IAAMC,WAAS,SAAoBD,UAAnC;EACA,IAAME,cAAY,GAAa,WAA/B;EACA,IAAMC,oBAAkB,GAAO3E,CAAC,CAACgB,EAAF,CAAKsD,MAAL,CAA/B;EACA,IAAMmE,kBAAkB,GAAO,EAA/B;;EACA,IAAMC,mBAAmB,GAAM,EAA/B;;EACA,IAAMC,sBAAsB,GAAG,GAA/B;;EACA,IAAMC,eAAe,GAAU,EAA/B;EAEA,IAAMC,OAAO,GAAG;EACdC,EAAAA,QAAQ,EAAG,IADG;EAEdC,EAAAA,QAAQ,EAAG,IAFG;EAGdC,EAAAA,KAAK,EAAM,KAHG;EAIdC,EAAAA,KAAK,EAAM,OAJG;EAKdC,EAAAA,IAAI,EAAO,IALG;EAMdC,EAAAA,KAAK,EAAM;EANG,CAAhB;EASA,IAAMC,WAAW,GAAG;EAClBN,EAAAA,QAAQ,EAAG,kBADO;EAElBC,EAAAA,QAAQ,EAAG,SAFO;EAGlBC,EAAAA,KAAK,EAAM,kBAHO;EAIlBC,EAAAA,KAAK,EAAM,kBAJO;EAKlBC,EAAAA,IAAI,EAAO,SALO;EAMlBC,EAAAA,KAAK,EAAM;EANO,CAApB;EASA,IAAME,SAAS,GAAG;EAChBC,EAAAA,IAAI,EAAO,MADK;EAEhBC,EAAAA,IAAI,EAAO,MAFK;EAGhBC,EAAAA,IAAI,EAAO,MAHK;EAIhBC,EAAAA,KAAK,EAAM;EAJK,CAAlB;EAOA,IAAM3E,OAAK,GAAG;EACZ4E,EAAAA,KAAK,YAAoBjF,WADb;EAEZkF,EAAAA,IAAI,WAAoBlF,WAFZ;EAGZmF,EAAAA,OAAO,cAAoBnF,WAHf;EAIZoF,EAAAA,UAAU,iBAAoBpF,WAJlB;EAKZqF,EAAAA,UAAU,iBAAoBrF,WALlB;EAMZsF,EAAAA,UAAU,iBAAoBtF,WANlB;EAOZuF,EAAAA,SAAS,gBAAoBvF,WAPjB;EAQZwF,EAAAA,QAAQ,eAAoBxF,WARhB;EASZyF,EAAAA,WAAW,kBAAoBzF,WATnB;EAUZ0F,EAAAA,SAAS,gBAAoB1F,WAVjB;EAWZ2F,EAAAA,UAAU,gBAAmB3F,WAXjB;EAYZ4F,EAAAA,aAAa,WAAW5F,WAAX,GAAuBC,cAZxB;EAaZO,EAAAA,cAAc,YAAWR,WAAX,GAAuBC;EAbzB,CAAd;EAgBA,IAAMQ,WAAS,GAAG;EAChBoF,EAAAA,QAAQ,EAAQ,UADA;EAEhBnD,EAAAA,MAAM,EAAU,QAFA;EAGhBuC,EAAAA,KAAK,EAAW,OAHA;EAIhBD,EAAAA,KAAK,EAAW,qBAJA;EAKhBD,EAAAA,IAAI,EAAY,oBALA;EAMhBF,EAAAA,IAAI,EAAY,oBANA;EAOhBC,EAAAA,IAAI,EAAY,oBAPA;EAQhBgB,EAAAA,IAAI,EAAY,eARA;EAShBC,EAAAA,aAAa,EAAG;EATA,CAAlB;EAYA,IAAM5F,UAAQ,GAAG;EACfuC,EAAAA,MAAM,EAAQ,SADC;EAEfsD,EAAAA,WAAW,EAAG,uBAFC;EAGfF,EAAAA,IAAI,EAAU,gBAHC;EAIfG,EAAAA,QAAQ,EAAM,oBAJC;EAKfC,EAAAA,SAAS,EAAK,0CALC;EAMfC,EAAAA,UAAU,EAAI,sBANC;EAOfC,EAAAA,UAAU,EAAI,+BAPC;EAQfC,EAAAA,SAAS,EAAK;EARC,CAAjB;EAWA,IAAMC,WAAW,GAAG;EAClBC,EAAAA,KAAK,EAAG,OADU;EAElBC,EAAAA,GAAG,EAAK;EAGV;;;;;;EALoB,CAApB;;MAUMC;;;EACJ,oBAAYxJ,OAAZ,EAAqBwB,MAArB,EAA6B;EAC3B,SAAKiI,MAAL,GAAsB,IAAtB;EACA,SAAKC,SAAL,GAAsB,IAAtB;EACA,SAAKC,cAAL,GAAsB,IAAtB;EACA,SAAKC,SAAL,GAAsB,KAAtB;EACA,SAAKC,UAAL,GAAsB,KAAtB;EACA,SAAKC,YAAL,GAAsB,IAAtB;EACA,SAAKC,WAAL,GAAsB,CAAtB;EACA,SAAKC,WAAL,GAAsB,CAAtB;EAEA,SAAKC,OAAL,GAA0B,KAAKC,UAAL,CAAgB1I,MAAhB,CAA1B;EACA,SAAKqC,QAAL,GAA0B7D,OAA1B;EACA,SAAKmK,kBAAL,GAA0B,KAAKtG,QAAL,CAAcxD,aAAd,CAA4B6C,UAAQ,CAACgG,UAArC,CAA1B;EACA,SAAKkB,eAAL,GAA0B,kBAAkBvK,QAAQ,CAACyC,eAA3B,IAA8C+H,SAAS,CAACC,cAAV,GAA2B,CAAnG;EACA,SAAKC,aAAL,GAA0BpJ,OAAO,CAACqJ,MAAM,CAACC,YAAP,IAAuBD,MAAM,CAACE,cAA/B,CAAjC;;EAEA,SAAKC,kBAAL;EACD;;;;;EAYD;WAEAC,OAAA,gBAAO;EACL,QAAI,CAAC,KAAKf,UAAV,EAAsB;EACpB,WAAKgB,MAAL,CAAYlD,SAAS,CAACC,IAAtB;EACD;EACF;;WAEDkD,kBAAA,2BAAkB;EAChB;EACA;EACA,QAAI,CAACjL,QAAQ,CAACkL,MAAV,IACDzM,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBrF,EAAjB,CAAoB,UAApB,KAAmCF,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBpD,GAAjB,CAAqB,YAArB,MAAuC,QAD7E,EACwF;EACtF,WAAKmK,IAAL;EACD;EACF;;WAEDI,OAAA,gBAAO;EACL,QAAI,CAAC,KAAKnB,UAAV,EAAsB;EACpB,WAAKgB,MAAL,CAAYlD,SAAS,CAACE,IAAtB;EACD;EACF;;WAEDN,QAAA,eAAMlJ,KAAN,EAAa;EACX,QAAI,CAACA,KAAL,EAAY;EACV,WAAKuL,SAAL,GAAiB,IAAjB;EACD;;EAED,QAAI,KAAK/F,QAAL,CAAcxD,aAAd,CAA4B6C,UAAQ,CAAC+F,SAArC,CAAJ,EAAqD;EACnD/J,MAAAA,IAAI,CAACE,oBAAL,CAA0B,KAAKyE,QAA/B;EACA,WAAKoH,KAAL,CAAW,IAAX;EACD;;EAEDC,IAAAA,aAAa,CAAC,KAAKxB,SAAN,CAAb;EACA,SAAKA,SAAL,GAAiB,IAAjB;EACD;;WAEDuB,QAAA,eAAM5M,KAAN,EAAa;EACX,QAAI,CAACA,KAAL,EAAY;EACV,WAAKuL,SAAL,GAAiB,KAAjB;EACD;;EAED,QAAI,KAAKF,SAAT,EAAoB;EAClBwB,MAAAA,aAAa,CAAC,KAAKxB,SAAN,CAAb;EACA,WAAKA,SAAL,GAAiB,IAAjB;EACD;;EAED,QAAI,KAAKO,OAAL,CAAa7C,QAAb,IAAyB,CAAC,KAAKwC,SAAnC,EAA8C;EAC5C,WAAKF,SAAL,GAAiByB,WAAW,CAC1B,CAACtL,QAAQ,CAACuL,eAAT,GAA2B,KAAKN,eAAhC,GAAkD,KAAKF,IAAxD,EAA8DS,IAA9D,CAAmE,IAAnE,CAD0B,EAE1B,KAAKpB,OAAL,CAAa7C,QAFa,CAA5B;EAID;EACF;;WAEDkE,KAAA,YAAGC,KAAH,EAAU;EAAA;;EACR,SAAK5B,cAAL,GAAsB,KAAK9F,QAAL,CAAcxD,aAAd,CAA4B6C,UAAQ,CAAC6F,WAArC,CAAtB;;EAEA,QAAMyC,WAAW,GAAG,KAAKC,aAAL,CAAmB,KAAK9B,cAAxB,CAApB;;EAEA,QAAI4B,KAAK,GAAG,KAAK9B,MAAL,CAAYiC,MAAZ,GAAqB,CAA7B,IAAkCH,KAAK,GAAG,CAA9C,EAAiD;EAC/C;EACD;;EAED,QAAI,KAAK1B,UAAT,EAAqB;EACnBvL,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB5E,GAAjB,CAAqBmE,OAAK,CAAC6E,IAA3B,EAAiC;EAAA,eAAM,KAAI,CAACqD,EAAL,CAAQC,KAAR,CAAN;EAAA,OAAjC;EACA;EACD;;EAED,QAAIC,WAAW,KAAKD,KAApB,EAA2B;EACzB,WAAKhE,KAAL;EACA,WAAK0D,KAAL;EACA;EACD;;EAED,QAAMU,SAAS,GAAGJ,KAAK,GAAGC,WAAR,GACd7D,SAAS,CAACC,IADI,GAEdD,SAAS,CAACE,IAFd;;EAIA,SAAKgD,MAAL,CAAYc,SAAZ,EAAuB,KAAKlC,MAAL,CAAY8B,KAAZ,CAAvB;EACD;;WAEDlH,UAAA,mBAAU;EACR/F,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB+H,GAAjB,CAAqB7I,WAArB;EACAzE,IAAAA,CAAC,CAACgG,UAAF,CAAa,KAAKT,QAAlB,EAA4Bf,UAA5B;EAEA,SAAK2G,MAAL,GAA0B,IAA1B;EACA,SAAKQ,OAAL,GAA0B,IAA1B;EACA,SAAKpG,QAAL,GAA0B,IAA1B;EACA,SAAK6F,SAAL,GAA0B,IAA1B;EACA,SAAKE,SAAL,GAA0B,IAA1B;EACA,SAAKC,UAAL,GAA0B,IAA1B;EACA,SAAKF,cAAL,GAA0B,IAA1B;EACA,SAAKQ,kBAAL,GAA0B,IAA1B;EACD;;;WAIDD,aAAA,oBAAW1I,MAAX,EAAmB;EACjBA,IAAAA,MAAM,qBACD2F,OADC,EAED3F,MAFC,CAAN;EAIAtC,IAAAA,IAAI,CAACoC,eAAL,CAAqBsB,MAArB,EAA2BpB,MAA3B,EAAmCkG,WAAnC;EACA,WAAOlG,MAAP;EACD;;WAEDqK,eAAA,wBAAe;EACb,QAAMC,SAAS,GAAGnM,IAAI,CAACoM,GAAL,CAAS,KAAK/B,WAAd,CAAlB;;EAEA,QAAI8B,SAAS,IAAI5E,eAAjB,EAAkC;EAChC;EACD;;EAED,QAAMyE,SAAS,GAAGG,SAAS,GAAG,KAAK9B,WAAnC,CAPa;;EAUb,QAAI2B,SAAS,GAAG,CAAhB,EAAmB;EACjB,WAAKX,IAAL;EACD,KAZY;;;EAeb,QAAIW,SAAS,GAAG,CAAhB,EAAmB;EACjB,WAAKf,IAAL;EACD;EACF;;WAEDD,qBAAA,8BAAqB;EAAA;;EACnB,QAAI,KAAKV,OAAL,CAAa5C,QAAjB,EAA2B;EACzB/I,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CACGyB,EADH,CACMlC,OAAK,CAAC8E,OADZ,EACqB,UAAC7J,KAAD;EAAA,eAAW,MAAI,CAAC2N,QAAL,CAAc3N,KAAd,CAAX;EAAA,OADrB;EAED;;EAED,QAAI,KAAK4L,OAAL,CAAa1C,KAAb,KAAuB,OAA3B,EAAoC;EAClCjJ,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CACGyB,EADH,CACMlC,OAAK,CAAC+E,UADZ,EACwB,UAAC9J,KAAD;EAAA,eAAW,MAAI,CAACkJ,KAAL,CAAWlJ,KAAX,CAAX;EAAA,OADxB,EAEGiH,EAFH,CAEMlC,OAAK,CAACgF,UAFZ,EAEwB,UAAC/J,KAAD;EAAA,eAAW,MAAI,CAAC4M,KAAL,CAAW5M,KAAX,CAAX;EAAA,OAFxB;EAGD;;EAED,QAAI,KAAK4L,OAAL,CAAaxC,KAAjB,EAAwB;EACtB,WAAKwE,uBAAL;EACD;EACF;;WAEDA,0BAAA,mCAA0B;EAAA;;EACxB,QAAI,CAAC,KAAK7B,eAAV,EAA2B;EACzB;EACD;;EAED,QAAM8B,KAAK,GAAG,SAARA,KAAQ,CAAC7N,KAAD,EAAW;EACvB,UAAI,MAAI,CAACkM,aAAL,IAAsBlB,WAAW,CAAChL,KAAK,CAAC8N,aAAN,CAAoBC,WAApB,CAAgChK,WAAhC,EAAD,CAArC,EAAsF;EACpF,QAAA,MAAI,CAAC2H,WAAL,GAAmB1L,KAAK,CAAC8N,aAAN,CAAoBE,OAAvC;EACD,OAFD,MAEO,IAAI,CAAC,MAAI,CAAC9B,aAAV,EAAyB;EAC9B,QAAA,MAAI,CAACR,WAAL,GAAmB1L,KAAK,CAAC8N,aAAN,CAAoBG,OAApB,CAA4B,CAA5B,EAA+BD,OAAlD;EACD;EACF,KAND;;EAQA,QAAME,IAAI,GAAG,SAAPA,IAAO,CAAClO,KAAD,EAAW;EACtB;EACA,UAAIA,KAAK,CAAC8N,aAAN,CAAoBG,OAApB,IAA+BjO,KAAK,CAAC8N,aAAN,CAAoBG,OAApB,CAA4BZ,MAA5B,GAAqC,CAAxE,EAA2E;EACzE,QAAA,MAAI,CAAC1B,WAAL,GAAmB,CAAnB;EACD,OAFD,MAEO;EACL,QAAA,MAAI,CAACA,WAAL,GAAmB3L,KAAK,CAAC8N,aAAN,CAAoBG,OAApB,CAA4B,CAA5B,EAA+BD,OAA/B,GAAyC,MAAI,CAACtC,WAAjE;EACD;EACF,KAPD;;EASA,QAAMyC,GAAG,GAAG,SAANA,GAAM,CAACnO,KAAD,EAAW;EACrB,UAAI,MAAI,CAACkM,aAAL,IAAsBlB,WAAW,CAAChL,KAAK,CAAC8N,aAAN,CAAoBC,WAApB,CAAgChK,WAAhC,EAAD,CAArC,EAAsF;EACpF,QAAA,MAAI,CAAC4H,WAAL,GAAmB3L,KAAK,CAAC8N,aAAN,CAAoBE,OAApB,GAA8B,MAAI,CAACtC,WAAtD;EACD;;EAED,MAAA,MAAI,CAAC8B,YAAL;;EACA,UAAI,MAAI,CAAC5B,OAAL,CAAa1C,KAAb,KAAuB,OAA3B,EAAoC;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,QAAA,MAAI,CAACA,KAAL;;EACA,YAAI,MAAI,CAACuC,YAAT,EAAuB;EACrB2C,UAAAA,YAAY,CAAC,MAAI,CAAC3C,YAAN,CAAZ;EACD;;EACD,QAAA,MAAI,CAACA,YAAL,GAAoB3K,UAAU,CAAC,UAACd,KAAD;EAAA,iBAAW,MAAI,CAAC4M,KAAL,CAAW5M,KAAX,CAAX;EAAA,SAAD,EAA+B4I,sBAAsB,GAAG,MAAI,CAACgD,OAAL,CAAa7C,QAArE,CAA9B;EACD;EACF,KArBD;;EAuBA9I,IAAAA,CAAC,CAAC,KAAKuF,QAAL,CAAc6I,gBAAd,CAA+BxJ,UAAQ,CAAC8F,QAAxC,CAAD,CAAD,CAAqD1D,EAArD,CAAwDlC,OAAK,CAACsF,UAA9D,EAA0E,UAACiE,CAAD;EAAA,aAAOA,CAAC,CAACtH,cAAF,EAAP;EAAA,KAA1E;;EACA,QAAI,KAAKkF,aAAT,EAAwB;EACtBjM,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiByB,EAAjB,CAAoBlC,OAAK,CAACoF,WAA1B,EAAuC,UAACnK,KAAD;EAAA,eAAW6N,KAAK,CAAC7N,KAAD,CAAhB;EAAA,OAAvC;EACAC,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiByB,EAAjB,CAAoBlC,OAAK,CAACqF,SAA1B,EAAqC,UAACpK,KAAD;EAAA,eAAWmO,GAAG,CAACnO,KAAD,CAAd;EAAA,OAArC;;EAEA,WAAKwF,QAAL,CAAc0C,SAAd,CAAwBqG,GAAxB,CAA4BpJ,WAAS,CAACsF,aAAtC;EACD,KALD,MAKO;EACLxK,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiByB,EAAjB,CAAoBlC,OAAK,CAACiF,UAA1B,EAAsC,UAAChK,KAAD;EAAA,eAAW6N,KAAK,CAAC7N,KAAD,CAAhB;EAAA,OAAtC;EACAC,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiByB,EAAjB,CAAoBlC,OAAK,CAACkF,SAA1B,EAAqC,UAACjK,KAAD;EAAA,eAAWkO,IAAI,CAAClO,KAAD,CAAf;EAAA,OAArC;EACAC,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiByB,EAAjB,CAAoBlC,OAAK,CAACmF,QAA1B,EAAoC,UAAClK,KAAD;EAAA,eAAWmO,GAAG,CAACnO,KAAD,CAAd;EAAA,OAApC;EACD;EACF;;WAED2N,WAAA,kBAAS3N,KAAT,EAAgB;EACd,QAAI,kBAAkB6D,IAAlB,CAAuB7D,KAAK,CAACE,MAAN,CAAasO,OAApC,CAAJ,EAAkD;EAChD;EACD;;EAED,YAAQxO,KAAK,CAACyO,KAAd;EACE,WAAK/F,kBAAL;EACE1I,QAAAA,KAAK,CAACgH,cAAN;EACA,aAAK2F,IAAL;EACA;;EACF,WAAKhE,mBAAL;EACE3I,QAAAA,KAAK,CAACgH,cAAN;EACA,aAAKuF,IAAL;EACA;;EACF;EATF;EAWD;;WAEDa,gBAAA,uBAAczL,OAAd,EAAuB;EACrB,SAAKyJ,MAAL,GAAczJ,OAAO,IAAIA,OAAO,CAAC2C,UAAnB,GACV,GAAGoK,KAAH,CAASjP,IAAT,CAAckC,OAAO,CAAC2C,UAAR,CAAmB+J,gBAAnB,CAAoCxJ,UAAQ,CAAC2F,IAA7C,CAAd,CADU,GAEV,EAFJ;EAGA,WAAO,KAAKY,MAAL,CAAYuD,OAAZ,CAAoBhN,OAApB,CAAP;EACD;;WAEDiN,sBAAA,6BAAoBtB,SAApB,EAA+BlF,aAA/B,EAA8C;EAC5C,QAAMyG,eAAe,GAAGvB,SAAS,KAAKhE,SAAS,CAACC,IAAhD;EACA,QAAMuF,eAAe,GAAGxB,SAAS,KAAKhE,SAAS,CAACE,IAAhD;;EACA,QAAM2D,WAAW,GAAO,KAAKC,aAAL,CAAmBhF,aAAnB,CAAxB;;EACA,QAAM2G,aAAa,GAAK,KAAK3D,MAAL,CAAYiC,MAAZ,GAAqB,CAA7C;EACA,QAAM2B,aAAa,GAAKF,eAAe,IAAI3B,WAAW,KAAK,CAAnC,IACA0B,eAAe,IAAI1B,WAAW,KAAK4B,aAD3D;;EAGA,QAAIC,aAAa,IAAI,CAAC,KAAKpD,OAAL,CAAazC,IAAnC,EAAyC;EACvC,aAAOf,aAAP;EACD;;EAED,QAAM6G,KAAK,GAAO3B,SAAS,KAAKhE,SAAS,CAACE,IAAxB,GAA+B,CAAC,CAAhC,GAAoC,CAAtD;EACA,QAAM0F,SAAS,GAAG,CAAC/B,WAAW,GAAG8B,KAAf,IAAwB,KAAK7D,MAAL,CAAYiC,MAAtD;EAEA,WAAO6B,SAAS,KAAK,CAAC,CAAf,GACH,KAAK9D,MAAL,CAAY,KAAKA,MAAL,CAAYiC,MAAZ,GAAqB,CAAjC,CADG,GACmC,KAAKjC,MAAL,CAAY8D,SAAZ,CAD1C;EAED;;WAEDC,qBAAA,4BAAmBC,aAAnB,EAAkCC,kBAAlC,EAAsD;EACpD,QAAMC,WAAW,GAAG,KAAKlC,aAAL,CAAmBgC,aAAnB,CAApB;;EACA,QAAMG,SAAS,GAAG,KAAKnC,aAAL,CAAmB,KAAK5H,QAAL,CAAcxD,aAAd,CAA4B6C,UAAQ,CAAC6F,WAArC,CAAnB,CAAlB;;EACA,QAAM8E,UAAU,GAAGvP,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAAC4E,KAAd,EAAqB;EACtCyF,MAAAA,aAAa,EAAbA,aADsC;EAEtC9B,MAAAA,SAAS,EAAE+B,kBAF2B;EAGtCI,MAAAA,IAAI,EAAEF,SAHgC;EAItCtC,MAAAA,EAAE,EAAEqC;EAJkC,KAArB,CAAnB;EAOArP,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyB4M,UAAzB;EAEA,WAAOA,UAAP;EACD;;WAEDE,6BAAA,oCAA2B/N,OAA3B,EAAoC;EAClC,QAAI,KAAKmK,kBAAT,EAA6B;EAC3B,UAAM6D,UAAU,GAAG,GAAGjB,KAAH,CAASjP,IAAT,CAAc,KAAKqM,kBAAL,CAAwBuC,gBAAxB,CAAyCxJ,UAAQ,CAACuC,MAAlD,CAAd,CAAnB;EACAnH,MAAAA,CAAC,CAAC0P,UAAD,CAAD,CACGtJ,WADH,CACelB,WAAS,CAACiC,MADzB;;EAGA,UAAMwI,aAAa,GAAG,KAAK9D,kBAAL,CAAwB+D,QAAxB,CACpB,KAAKzC,aAAL,CAAmBzL,OAAnB,CADoB,CAAtB;;EAIA,UAAIiO,aAAJ,EAAmB;EACjB3P,QAAAA,CAAC,CAAC2P,aAAD,CAAD,CAAiBE,QAAjB,CAA0B3K,WAAS,CAACiC,MAApC;EACD;EACF;EACF;;WAEDoF,SAAA,gBAAOc,SAAP,EAAkB3L,OAAlB,EAA2B;EAAA;;EACzB,QAAMyG,aAAa,GAAG,KAAK5C,QAAL,CAAcxD,aAAd,CAA4B6C,UAAQ,CAAC6F,WAArC,CAAtB;;EACA,QAAMqF,kBAAkB,GAAG,KAAK3C,aAAL,CAAmBhF,aAAnB,CAA3B;;EACA,QAAM4H,WAAW,GAAKrO,OAAO,IAAIyG,aAAa,IAC5C,KAAKwG,mBAAL,CAAyBtB,SAAzB,EAAoClF,aAApC,CADF;;EAEA,QAAM6H,gBAAgB,GAAG,KAAK7C,aAAL,CAAmB4C,WAAnB,CAAzB;;EACA,QAAME,SAAS,GAAGpN,OAAO,CAAC,KAAKuI,SAAN,CAAzB;EAEA,QAAI8E,oBAAJ;EACA,QAAIC,cAAJ;EACA,QAAIf,kBAAJ;;EAEA,QAAI/B,SAAS,KAAKhE,SAAS,CAACC,IAA5B,EAAkC;EAChC4G,MAAAA,oBAAoB,GAAGhL,WAAS,CAACsE,IAAjC;EACA2G,MAAAA,cAAc,GAAGjL,WAAS,CAACoE,IAA3B;EACA8F,MAAAA,kBAAkB,GAAG/F,SAAS,CAACG,IAA/B;EACD,KAJD,MAIO;EACL0G,MAAAA,oBAAoB,GAAGhL,WAAS,CAACuE,KAAjC;EACA0G,MAAAA,cAAc,GAAGjL,WAAS,CAACqE,IAA3B;EACA6F,MAAAA,kBAAkB,GAAG/F,SAAS,CAACI,KAA/B;EACD;;EAED,QAAIsG,WAAW,IAAI/P,CAAC,CAAC+P,WAAD,CAAD,CAAe1J,QAAf,CAAwBnB,WAAS,CAACiC,MAAlC,CAAnB,EAA8D;EAC5D,WAAKoE,UAAL,GAAkB,KAAlB;EACA;EACD;;EAED,QAAMgE,UAAU,GAAG,KAAKL,kBAAL,CAAwBa,WAAxB,EAAqCX,kBAArC,CAAnB;;EACA,QAAIG,UAAU,CAAC1J,kBAAX,EAAJ,EAAqC;EACnC;EACD;;EAED,QAAI,CAACsC,aAAD,IAAkB,CAAC4H,WAAvB,EAAoC;EAClC;EACA;EACD;;EAED,SAAKxE,UAAL,GAAkB,IAAlB;;EAEA,QAAI0E,SAAJ,EAAe;EACb,WAAKhH,KAAL;EACD;;EAED,SAAKwG,0BAAL,CAAgCM,WAAhC;;EAEA,QAAMK,SAAS,GAAGpQ,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAAC6E,IAAd,EAAoB;EACpCwF,MAAAA,aAAa,EAAEY,WADqB;EAEpC1C,MAAAA,SAAS,EAAE+B,kBAFyB;EAGpCI,MAAAA,IAAI,EAAEM,kBAH8B;EAIpC9C,MAAAA,EAAE,EAAEgD;EAJgC,KAApB,CAAlB;;EAOA,QAAIhQ,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAACwE,KAApC,CAAJ,EAAgD;EAC9C1J,MAAAA,CAAC,CAAC+P,WAAD,CAAD,CAAeF,QAAf,CAAwBM,cAAxB;EAEAvP,MAAAA,IAAI,CAAC6B,MAAL,CAAYsN,WAAZ;EAEA/P,MAAAA,CAAC,CAACmI,aAAD,CAAD,CAAiB0H,QAAjB,CAA0BK,oBAA1B;EACAlQ,MAAAA,CAAC,CAAC+P,WAAD,CAAD,CAAeF,QAAf,CAAwBK,oBAAxB;EAEA,UAAMG,mBAAmB,GAAGC,QAAQ,CAACP,WAAW,CAACnO,YAAZ,CAAyB,eAAzB,CAAD,EAA4C,EAA5C,CAApC;;EACA,UAAIyO,mBAAJ,EAAyB;EACvB,aAAK1E,OAAL,CAAa4E,eAAb,GAA+B,KAAK5E,OAAL,CAAa4E,eAAb,IAAgC,KAAK5E,OAAL,CAAa7C,QAA5E;EACA,aAAK6C,OAAL,CAAa7C,QAAb,GAAwBuH,mBAAxB;EACD,OAHD,MAGO;EACL,aAAK1E,OAAL,CAAa7C,QAAb,GAAwB,KAAK6C,OAAL,CAAa4E,eAAb,IAAgC,KAAK5E,OAAL,CAAa7C,QAArE;EACD;;EAED,UAAM5G,kBAAkB,GAAGtB,IAAI,CAACqB,gCAAL,CAAsCkG,aAAtC,CAA3B;EAEAnI,MAAAA,CAAC,CAACmI,aAAD,CAAD,CACGxH,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4B,YAAM;EAC9Bc,QAAAA,CAAC,CAAC+P,WAAD,CAAD,CACG3J,WADH,CACkB8J,oBADlB,SAC0CC,cAD1C,EAEGN,QAFH,CAEY3K,WAAS,CAACiC,MAFtB;EAIAnH,QAAAA,CAAC,CAACmI,aAAD,CAAD,CAAiB/B,WAAjB,CAAgClB,WAAS,CAACiC,MAA1C,SAAoDgJ,cAApD,SAAsED,oBAAtE;EAEA,QAAA,MAAI,CAAC3E,UAAL,GAAkB,KAAlB;EAEA1K,QAAAA,UAAU,CAAC;EAAA,iBAAMb,CAAC,CAAC,MAAI,CAACuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyByN,SAAzB,CAAN;EAAA,SAAD,EAA4C,CAA5C,CAAV;EACD,OAXH,EAYGnP,oBAZH,CAYwBiB,kBAZxB;EAaD,KA/BD,MA+BO;EACLlC,MAAAA,CAAC,CAACmI,aAAD,CAAD,CAAiB/B,WAAjB,CAA6BlB,WAAS,CAACiC,MAAvC;EACAnH,MAAAA,CAAC,CAAC+P,WAAD,CAAD,CAAeF,QAAf,CAAwB3K,WAAS,CAACiC,MAAlC;EAEA,WAAKoE,UAAL,GAAkB,KAAlB;EACAvL,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyByN,SAAzB;EACD;;EAED,QAAIH,SAAJ,EAAe;EACb,WAAKtD,KAAL;EACD;EACF;;;aAIMlG,mBAAP,0BAAwBvD,MAAxB,EAAgC;EAC9B,WAAO,KAAKwD,IAAL,CAAU,YAAY;EAC3B,UAAIE,IAAI,GAAG5G,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,CAAX;;EACA,UAAImH,OAAO,qBACN9C,OADM,EAEN7I,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,EAFM,CAAX;;EAKA,UAAI,OAAO1D,MAAP,KAAkB,QAAtB,EAAgC;EAC9ByI,QAAAA,OAAO,qBACFA,OADE,EAEFzI,MAFE,CAAP;EAID;;EAED,UAAMsN,MAAM,GAAG,OAAOtN,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCyI,OAAO,CAAC3C,KAA7D;;EAEA,UAAI,CAACpC,IAAL,EAAW;EACTA,QAAAA,IAAI,GAAG,IAAIsE,QAAJ,CAAa,IAAb,EAAmBS,OAAnB,CAAP;EACA3L,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,EAAuBoC,IAAvB;EACD;;EAED,UAAI,OAAO1D,MAAP,KAAkB,QAAtB,EAAgC;EAC9B0D,QAAAA,IAAI,CAACoG,EAAL,CAAQ9J,MAAR;EACD,OAFD,MAEO,IAAI,OAAOsN,MAAP,KAAkB,QAAtB,EAAgC;EACrC,YAAI,OAAO5J,IAAI,CAAC4J,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIC,SAAJ,wBAAkCD,MAAlC,QAAN;EACD;;EACD5J,QAAAA,IAAI,CAAC4J,MAAD,CAAJ;EACD,OALM,MAKA,IAAI7E,OAAO,CAAC7C,QAAR,IAAoB6C,OAAO,CAAC+E,IAAhC,EAAsC;EAC3C9J,QAAAA,IAAI,CAACqC,KAAL;EACArC,QAAAA,IAAI,CAAC+F,KAAL;EACD;EACF,KAhCM,CAAP;EAiCD;;aAEMgE,uBAAP,8BAA4B5Q,KAA5B,EAAmC;EACjC,QAAM4B,QAAQ,GAAGf,IAAI,CAACa,sBAAL,CAA4B,IAA5B,CAAjB;;EAEA,QAAI,CAACE,QAAL,EAAe;EACb;EACD;;EAED,QAAM1B,MAAM,GAAGD,CAAC,CAAC2B,QAAD,CAAD,CAAY,CAAZ,CAAf;;EAEA,QAAI,CAAC1B,MAAD,IAAW,CAACD,CAAC,CAACC,MAAD,CAAD,CAAUoG,QAAV,CAAmBnB,WAAS,CAACoF,QAA7B,CAAhB,EAAwD;EACtD;EACD;;EAED,QAAMpH,MAAM,qBACPlD,CAAC,CAACC,MAAD,CAAD,CAAU2G,IAAV,EADO,EAEP5G,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,EAFO,CAAZ;;EAIA,QAAMgK,UAAU,GAAG,KAAKhP,YAAL,CAAkB,eAAlB,CAAnB;;EAEA,QAAIgP,UAAJ,EAAgB;EACd1N,MAAAA,MAAM,CAAC4F,QAAP,GAAkB,KAAlB;EACD;;EAEDoC,IAAAA,QAAQ,CAACzE,gBAAT,CAA0BjH,IAA1B,CAA+BQ,CAAC,CAACC,MAAD,CAAhC,EAA0CiD,MAA1C;;EAEA,QAAI0N,UAAJ,EAAgB;EACd5Q,MAAAA,CAAC,CAACC,MAAD,CAAD,CAAU2G,IAAV,CAAepC,UAAf,EAAyBwI,EAAzB,CAA4B4D,UAA5B;EACD;;EAED7Q,IAAAA,KAAK,CAACgH,cAAN;EACD;;;;0BAjcoB;EACnB,aAAOxC,SAAP;EACD;;;0BAEoB;EACnB,aAAOsE,OAAP;EACD;;;;;EA8bH;;;;;;;EAMA7I,CAAC,CAACuB,QAAD,CAAD,CACGyF,EADH,CACMlC,OAAK,CAACG,cADZ,EAC4BL,UAAQ,CAACiG,UADrC,EACiDK,QAAQ,CAACyF,oBAD1D;EAGA3Q,CAAC,CAACkM,MAAD,CAAD,CAAUlF,EAAV,CAAalC,OAAK,CAACuF,aAAnB,EAAkC,YAAM;EACtC,MAAMwG,SAAS,GAAG,GAAGpC,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0BxJ,UAAQ,CAACkG,SAAnC,CAAd,CAAlB;;EACA,OAAK,IAAIgG,CAAC,GAAG,CAAR,EAAWC,GAAG,GAAGF,SAAS,CAACzD,MAAhC,EAAwC0D,CAAC,GAAGC,GAA5C,EAAiDD,CAAC,EAAlD,EAAsD;EACpD,QAAME,SAAS,GAAGhR,CAAC,CAAC6Q,SAAS,CAACC,CAAD,CAAV,CAAnB;;EACA5F,IAAAA,QAAQ,CAACzE,gBAAT,CAA0BjH,IAA1B,CAA+BwR,SAA/B,EAA0CA,SAAS,CAACpK,IAAV,EAA1C;EACD;EACF,CAND;EAQA;;;;;;EAMA5G,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAa4G,QAAQ,CAACzE,gBAAtB;EACAzG,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW2C,WAAX,GAAyBiE,QAAzB;;EACAlL,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW4C,UAAX,GAAwB,YAAM;EAC5BlH,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaK,oBAAb;EACA,SAAOuG,QAAQ,CAACzE,gBAAhB;EACD,CAHD;;EC9kBA;;;;;;EAMA,IAAMnC,MAAI,GAAkB,UAA5B;EACA,IAAMC,SAAO,GAAe,OAA5B;EACA,IAAMC,UAAQ,GAAc,aAA5B;EACA,IAAMC,WAAS,SAAiBD,UAAhC;EACA,IAAME,cAAY,GAAU,WAA5B;EACA,IAAMC,oBAAkB,GAAI3E,CAAC,CAACgB,EAAF,CAAKsD,MAAL,CAA5B;EAEA,IAAMuE,SAAO,GAAG;EACdlB,EAAAA,MAAM,EAAG,IADK;EAEd1B,EAAAA,MAAM,EAAG;EAFK,CAAhB;EAKA,IAAMmD,aAAW,GAAG;EAClBzB,EAAAA,MAAM,EAAG,SADS;EAElB1B,EAAAA,MAAM,EAAG;EAFS,CAApB;EAKA,IAAMnB,OAAK,GAAG;EACZO,EAAAA,IAAI,WAAoBZ,WADZ;EAEZwM,EAAAA,KAAK,YAAoBxM,WAFb;EAGZyM,EAAAA,IAAI,WAAoBzM,WAHZ;EAIZ0M,EAAAA,MAAM,aAAoB1M,WAJd;EAKZQ,EAAAA,cAAc,YAAWR,WAAX,GAAuBC;EALzB,CAAd;EAQA,IAAMQ,WAAS,GAAG;EAChBG,EAAAA,IAAI,EAAS,MADG;EAEhB+L,EAAAA,QAAQ,EAAK,UAFG;EAGhBC,EAAAA,UAAU,EAAG,YAHG;EAIhBC,EAAAA,SAAS,EAAI;EAJG,CAAlB;EAOA,IAAMC,SAAS,GAAG;EAChBC,EAAAA,KAAK,EAAI,OADO;EAEhBC,EAAAA,MAAM,EAAG;EAFO,CAAlB;EAKA,IAAM7M,UAAQ,GAAG;EACf8M,EAAAA,OAAO,EAAO,oBADC;EAEfnK,EAAAA,WAAW,EAAG;EAGhB;;;;;;EALiB,CAAjB;;MAWMoK;;;EACJ,oBAAYjQ,OAAZ,EAAqBwB,MAArB,EAA6B;EAC3B,SAAK0O,gBAAL,GAAwB,KAAxB;EACA,SAAKrM,QAAL,GAAwB7D,OAAxB;EACA,SAAKiK,OAAL,GAAwB,KAAKC,UAAL,CAAgB1I,MAAhB,CAAxB;EACA,SAAK2O,aAAL,GAAwB,GAAGpD,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CACpC,wCAAmC1M,OAAO,CAACoQ,EAA3C,4DAC0CpQ,OAAO,CAACoQ,EADlD,SADoC,CAAd,CAAxB;EAKA,QAAMC,UAAU,GAAG,GAAGtD,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0BxJ,UAAQ,CAAC2C,WAAnC,CAAd,CAAnB;;EACA,SAAK,IAAIuJ,CAAC,GAAG,CAAR,EAAWC,GAAG,GAAGgB,UAAU,CAAC3E,MAAjC,EAAyC0D,CAAC,GAAGC,GAA7C,EAAkDD,CAAC,EAAnD,EAAuD;EACrD,UAAMkB,IAAI,GAAGD,UAAU,CAACjB,CAAD,CAAvB;EACA,UAAMnP,QAAQ,GAAGf,IAAI,CAACa,sBAAL,CAA4BuQ,IAA5B,CAAjB;EACA,UAAMC,aAAa,GAAG,GAAGxD,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0BzM,QAA1B,CAAd,EACnBuQ,MADmB,CACZ,UAACC,SAAD;EAAA,eAAeA,SAAS,KAAKzQ,OAA7B;EAAA,OADY,CAAtB;;EAGA,UAAIC,QAAQ,KAAK,IAAb,IAAqBsQ,aAAa,CAAC7E,MAAd,GAAuB,CAAhD,EAAmD;EACjD,aAAKgF,SAAL,GAAiBzQ,QAAjB;;EACA,aAAKkQ,aAAL,CAAmBQ,IAAnB,CAAwBL,IAAxB;EACD;EACF;;EAED,SAAKM,OAAL,GAAe,KAAK3G,OAAL,CAAa1F,MAAb,GAAsB,KAAKsM,UAAL,EAAtB,GAA0C,IAAzD;;EAEA,QAAI,CAAC,KAAK5G,OAAL,CAAa1F,MAAlB,EAA0B;EACxB,WAAKuM,yBAAL,CAA+B,KAAKjN,QAApC,EAA8C,KAAKsM,aAAnD;EACD;;EAED,QAAI,KAAKlG,OAAL,CAAahE,MAAjB,EAAyB;EACvB,WAAKA,MAAL;EACD;EACF;;;;;EAYD;WAEAA,SAAA,kBAAS;EACP,QAAI3H,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAACG,IAApC,CAAJ,EAA+C;EAC7C,WAAKoN,IAAL;EACD,KAFD,MAEO;EACL,WAAKC,IAAL;EACD;EACF;;WAEDA,OAAA,gBAAO;EAAA;;EACL,QAAI,KAAKd,gBAAL,IACF5R,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAACG,IAApC,CADF,EAC6C;EAC3C;EACD;;EAED,QAAIsN,OAAJ;EACA,QAAIC,WAAJ;;EAEA,QAAI,KAAKN,OAAT,EAAkB;EAChBK,MAAAA,OAAO,GAAG,GAAGlE,KAAH,CAASjP,IAAT,CAAc,KAAK8S,OAAL,CAAalE,gBAAb,CAA8BxJ,UAAQ,CAAC8M,OAAvC,CAAd,EACPQ,MADO,CACA,UAACF,IAAD,EAAU;EAChB,YAAI,OAAO,KAAI,CAACrG,OAAL,CAAa1F,MAApB,KAA+B,QAAnC,EAA6C;EAC3C,iBAAO+L,IAAI,CAACpQ,YAAL,CAAkB,aAAlB,MAAqC,KAAI,CAAC+J,OAAL,CAAa1F,MAAzD;EACD;;EAED,eAAO+L,IAAI,CAAC/J,SAAL,CAAeC,QAAf,CAAwBhD,WAAS,CAACkM,QAAlC,CAAP;EACD,OAPO,CAAV;;EASA,UAAIuB,OAAO,CAACvF,MAAR,KAAmB,CAAvB,EAA0B;EACxBuF,QAAAA,OAAO,GAAG,IAAV;EACD;EACF;;EAED,QAAIA,OAAJ,EAAa;EACXC,MAAAA,WAAW,GAAG5S,CAAC,CAAC2S,OAAD,CAAD,CAAWE,GAAX,CAAe,KAAKT,SAApB,EAA+BxL,IAA/B,CAAoCpC,UAApC,CAAd;;EACA,UAAIoO,WAAW,IAAIA,WAAW,CAAChB,gBAA/B,EAAiD;EAC/C;EACD;EACF;;EAED,QAAMkB,UAAU,GAAG9S,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACO,IAAd,CAAnB;EACArF,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyBmQ,UAAzB;;EACA,QAAIA,UAAU,CAACjN,kBAAX,EAAJ,EAAqC;EACnC;EACD;;EAED,QAAI8M,OAAJ,EAAa;EACXhB,MAAAA,QAAQ,CAAClL,gBAAT,CAA0BjH,IAA1B,CAA+BQ,CAAC,CAAC2S,OAAD,CAAD,CAAWE,GAAX,CAAe,KAAKT,SAApB,CAA/B,EAA+D,MAA/D;;EACA,UAAI,CAACQ,WAAL,EAAkB;EAChB5S,QAAAA,CAAC,CAAC2S,OAAD,CAAD,CAAW/L,IAAX,CAAgBpC,UAAhB,EAA0B,IAA1B;EACD;EACF;;EAED,QAAMuO,SAAS,GAAG,KAAKC,aAAL,EAAlB;;EAEAhT,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CACGa,WADH,CACelB,WAAS,CAACkM,QADzB,EAEGvB,QAFH,CAEY3K,WAAS,CAACmM,UAFtB;EAIA,SAAK9L,QAAL,CAAc0N,KAAd,CAAoBF,SAApB,IAAiC,CAAjC;;EAEA,QAAI,KAAKlB,aAAL,CAAmBzE,MAAvB,EAA+B;EAC7BpN,MAAAA,CAAC,CAAC,KAAK6R,aAAN,CAAD,CACGzL,WADH,CACelB,WAAS,CAACoM,SADzB,EAEG4B,IAFH,CAEQ,eAFR,EAEyB,IAFzB;EAGD;;EAED,SAAKC,gBAAL,CAAsB,IAAtB;;EAEA,QAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAM;EACrBpT,MAAAA,CAAC,CAAC,KAAI,CAACuF,QAAN,CAAD,CACGa,WADH,CACelB,WAAS,CAACmM,UADzB,EAEGxB,QAFH,CAEY3K,WAAS,CAACkM,QAFtB,EAGGvB,QAHH,CAGY3K,WAAS,CAACG,IAHtB;EAKA,MAAA,KAAI,CAACE,QAAL,CAAc0N,KAAd,CAAoBF,SAApB,IAAiC,EAAjC;;EAEA,MAAA,KAAI,CAACI,gBAAL,CAAsB,KAAtB;;EAEAnT,MAAAA,CAAC,CAAC,KAAI,CAACuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyBmC,OAAK,CAACmM,KAA/B;EACD,KAXD;;EAaA,QAAMoC,oBAAoB,GAAGN,SAAS,CAAC,CAAD,CAAT,CAAajP,WAAb,KAA6BiP,SAAS,CAACtE,KAAV,CAAgB,CAAhB,CAA1D;EACA,QAAM6E,UAAU,cAAYD,oBAA5B;EACA,QAAMnR,kBAAkB,GAAGtB,IAAI,CAACqB,gCAAL,CAAsC,KAAKsD,QAA3C,CAA3B;EAEAvF,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CACG5E,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4BkU,QAD5B,EAEGnS,oBAFH,CAEwBiB,kBAFxB;EAIA,SAAKqD,QAAL,CAAc0N,KAAd,CAAoBF,SAApB,IAAoC,KAAKxN,QAAL,CAAc+N,UAAd,CAApC;EACD;;WAEDb,OAAA,gBAAO;EAAA;;EACL,QAAI,KAAKb,gBAAL,IACF,CAAC5R,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAACG,IAApC,CADH,EAC8C;EAC5C;EACD;;EAED,QAAMyN,UAAU,GAAG9S,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACoM,IAAd,CAAnB;EACAlR,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyBmQ,UAAzB;;EACA,QAAIA,UAAU,CAACjN,kBAAX,EAAJ,EAAqC;EACnC;EACD;;EAED,QAAMkN,SAAS,GAAG,KAAKC,aAAL,EAAlB;;EAEA,SAAKzN,QAAL,CAAc0N,KAAd,CAAoBF,SAApB,IAAoC,KAAKxN,QAAL,CAAcgO,qBAAd,GAAsCR,SAAtC,CAApC;EAEAnS,IAAAA,IAAI,CAAC6B,MAAL,CAAY,KAAK8C,QAAjB;EAEAvF,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CACGsK,QADH,CACY3K,WAAS,CAACmM,UADtB,EAEGjL,WAFH,CAEelB,WAAS,CAACkM,QAFzB,EAGGhL,WAHH,CAGelB,WAAS,CAACG,IAHzB;EAKA,QAAMmO,kBAAkB,GAAG,KAAK3B,aAAL,CAAmBzE,MAA9C;;EACA,QAAIoG,kBAAkB,GAAG,CAAzB,EAA4B;EAC1B,WAAK,IAAI1C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0C,kBAApB,EAAwC1C,CAAC,EAAzC,EAA6C;EAC3C,YAAMnO,OAAO,GAAG,KAAKkP,aAAL,CAAmBf,CAAnB,CAAhB;EACA,YAAMnP,QAAQ,GAAGf,IAAI,CAACa,sBAAL,CAA4BkB,OAA5B,CAAjB;;EAEA,YAAIhB,QAAQ,KAAK,IAAjB,EAAuB;EACrB,cAAM8R,KAAK,GAAGzT,CAAC,CAAC,GAAGyO,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0BzM,QAA1B,CAAd,CAAD,CAAf;;EACA,cAAI,CAAC8R,KAAK,CAACpN,QAAN,CAAenB,WAAS,CAACG,IAAzB,CAAL,EAAqC;EACnCrF,YAAAA,CAAC,CAAC2C,OAAD,CAAD,CAAWkN,QAAX,CAAoB3K,WAAS,CAACoM,SAA9B,EACG4B,IADH,CACQ,eADR,EACyB,KADzB;EAED;EACF;EACF;EACF;;EAED,SAAKC,gBAAL,CAAsB,IAAtB;;EAEA,QAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAM;EACrB,MAAA,MAAI,CAACD,gBAAL,CAAsB,KAAtB;;EACAnT,MAAAA,CAAC,CAAC,MAAI,CAACuF,QAAN,CAAD,CACGa,WADH,CACelB,WAAS,CAACmM,UADzB,EAEGxB,QAFH,CAEY3K,WAAS,CAACkM,QAFtB,EAGGzO,OAHH,CAGWmC,OAAK,CAACqM,MAHjB;EAID,KAND;;EAQA,SAAK5L,QAAL,CAAc0N,KAAd,CAAoBF,SAApB,IAAiC,EAAjC;EACA,QAAM7Q,kBAAkB,GAAGtB,IAAI,CAACqB,gCAAL,CAAsC,KAAKsD,QAA3C,CAA3B;EAEAvF,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CACG5E,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4BkU,QAD5B,EAEGnS,oBAFH,CAEwBiB,kBAFxB;EAGD;;WAEDiR,mBAAA,0BAAiBO,eAAjB,EAAkC;EAChC,SAAK9B,gBAAL,GAAwB8B,eAAxB;EACD;;WAED3N,UAAA,mBAAU;EACR/F,IAAAA,CAAC,CAACgG,UAAF,CAAa,KAAKT,QAAlB,EAA4Bf,UAA5B;EAEA,SAAKmH,OAAL,GAAwB,IAAxB;EACA,SAAK2G,OAAL,GAAwB,IAAxB;EACA,SAAK/M,QAAL,GAAwB,IAAxB;EACA,SAAKsM,aAAL,GAAwB,IAAxB;EACA,SAAKD,gBAAL,GAAwB,IAAxB;EACD;;;WAIDhG,aAAA,oBAAW1I,MAAX,EAAmB;EACjBA,IAAAA,MAAM,qBACD2F,SADC,EAED3F,MAFC,CAAN;EAIAA,IAAAA,MAAM,CAACyE,MAAP,GAAgB9E,OAAO,CAACK,MAAM,CAACyE,MAAR,CAAvB,CALiB;;EAMjB/G,IAAAA,IAAI,CAACoC,eAAL,CAAqBsB,MAArB,EAA2BpB,MAA3B,EAAmCkG,aAAnC;EACA,WAAOlG,MAAP;EACD;;WAED8P,gBAAA,yBAAgB;EACd,QAAMW,QAAQ,GAAG3T,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BkL,SAAS,CAACC,KAApC,CAAjB;EACA,WAAOmC,QAAQ,GAAGpC,SAAS,CAACC,KAAb,GAAqBD,SAAS,CAACE,MAA9C;EACD;;WAEDc,aAAA,sBAAa;EAAA;;EACX,QAAItM,MAAJ;;EAEA,QAAIrF,IAAI,CAACkC,SAAL,CAAe,KAAK6I,OAAL,CAAa1F,MAA5B,CAAJ,EAAyC;EACvCA,MAAAA,MAAM,GAAG,KAAK0F,OAAL,CAAa1F,MAAtB,CADuC;;EAIvC,UAAI,OAAO,KAAK0F,OAAL,CAAa1F,MAAb,CAAoB2N,MAA3B,KAAsC,WAA1C,EAAuD;EACrD3N,QAAAA,MAAM,GAAG,KAAK0F,OAAL,CAAa1F,MAAb,CAAoB,CAApB,CAAT;EACD;EACF,KAPD,MAOO;EACLA,MAAAA,MAAM,GAAG1E,QAAQ,CAACQ,aAAT,CAAuB,KAAK4J,OAAL,CAAa1F,MAApC,CAAT;EACD;;EAED,QAAMtE,QAAQ,iDAC6B,KAAKgK,OAAL,CAAa1F,MAD1C,QAAd;EAGA,QAAM2J,QAAQ,GAAG,GAAGnB,KAAH,CAASjP,IAAT,CAAcyG,MAAM,CAACmI,gBAAP,CAAwBzM,QAAxB,CAAd,CAAjB;EACA3B,IAAAA,CAAC,CAAC4P,QAAD,CAAD,CAAYlJ,IAAZ,CAAiB,UAACoK,CAAD,EAAIpP,OAAJ,EAAgB;EAC/B,MAAA,MAAI,CAAC8Q,yBAAL,CACEb,QAAQ,CAACkC,qBAAT,CAA+BnS,OAA/B,CADF,EAEE,CAACA,OAAD,CAFF;EAID,KALD;EAOA,WAAOuE,MAAP;EACD;;WAEDuM,4BAAA,mCAA0B9Q,OAA1B,EAAmCoS,YAAnC,EAAiD;EAC/C,QAAMC,MAAM,GAAG/T,CAAC,CAAC0B,OAAD,CAAD,CAAW2E,QAAX,CAAoBnB,WAAS,CAACG,IAA9B,CAAf;;EAEA,QAAIyO,YAAY,CAAC1G,MAAjB,EAAyB;EACvBpN,MAAAA,CAAC,CAAC8T,YAAD,CAAD,CACGvL,WADH,CACerD,WAAS,CAACoM,SADzB,EACoC,CAACyC,MADrC,EAEGb,IAFH,CAEQ,eAFR,EAEyBa,MAFzB;EAGD;EACF;;;aAIMF,wBAAP,+BAA6BnS,OAA7B,EAAsC;EACpC,QAAMC,QAAQ,GAAGf,IAAI,CAACa,sBAAL,CAA4BC,OAA5B,CAAjB;EACA,WAAOC,QAAQ,GAAGJ,QAAQ,CAACQ,aAAT,CAAuBJ,QAAvB,CAAH,GAAsC,IAArD;EACD;;aAEM8E,mBAAP,0BAAwBvD,MAAxB,EAAgC;EAC9B,WAAO,KAAKwD,IAAL,CAAU,YAAY;EAC3B,UAAMsN,KAAK,GAAKhU,CAAC,CAAC,IAAD,CAAjB;EACA,UAAI4G,IAAI,GAAQoN,KAAK,CAACpN,IAAN,CAAWpC,UAAX,CAAhB;;EACA,UAAMmH,OAAO,qBACR9C,SADQ,EAERmL,KAAK,CAACpN,IAAN,EAFQ,EAGR,OAAO1D,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAHxC,CAAb;;EAMA,UAAI,CAAC0D,IAAD,IAAS+E,OAAO,CAAChE,MAAjB,IAA2B,YAAY/D,IAAZ,CAAiBV,MAAjB,CAA/B,EAAyD;EACvDyI,QAAAA,OAAO,CAAChE,MAAR,GAAiB,KAAjB;EACD;;EAED,UAAI,CAACf,IAAL,EAAW;EACTA,QAAAA,IAAI,GAAG,IAAI+K,QAAJ,CAAa,IAAb,EAAmBhG,OAAnB,CAAP;EACAqI,QAAAA,KAAK,CAACpN,IAAN,CAAWpC,UAAX,EAAqBoC,IAArB;EACD;;EAED,UAAI,OAAO1D,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAO0D,IAAI,CAAC1D,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIuN,SAAJ,wBAAkCvN,MAAlC,QAAN;EACD;;EACD0D,QAAAA,IAAI,CAAC1D,MAAD,CAAJ;EACD;EACF,KAxBM,CAAP;EAyBD;;;;0BArQoB;EACnB,aAAOqB,SAAP;EACD;;;0BAEoB;EACnB,aAAOsE,SAAP;EACD;;;;;EAkQH;;;;;;;EAMA7I,CAAC,CAACuB,QAAD,CAAD,CAAYyF,EAAZ,CAAelC,OAAK,CAACG,cAArB,EAAqCL,UAAQ,CAAC2C,WAA9C,EAA2D,UAAUxH,KAAV,EAAiB;EAC1E;EACA,MAAIA,KAAK,CAACkU,aAAN,CAAoB1F,OAApB,KAAgC,GAApC,EAAyC;EACvCxO,IAAAA,KAAK,CAACgH,cAAN;EACD;;EAED,MAAMmN,QAAQ,GAAGlU,CAAC,CAAC,IAAD,CAAlB;EACA,MAAM2B,QAAQ,GAAGf,IAAI,CAACa,sBAAL,CAA4B,IAA5B,CAAjB;EACA,MAAM0S,SAAS,GAAG,GAAG1F,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0BzM,QAA1B,CAAd,CAAlB;EAEA3B,EAAAA,CAAC,CAACmU,SAAD,CAAD,CAAazN,IAAb,CAAkB,YAAY;EAC5B,QAAM0N,OAAO,GAAGpU,CAAC,CAAC,IAAD,CAAjB;EACA,QAAM4G,IAAI,GAAMwN,OAAO,CAACxN,IAAR,CAAapC,UAAb,CAAhB;EACA,QAAMtB,MAAM,GAAI0D,IAAI,GAAG,QAAH,GAAcsN,QAAQ,CAACtN,IAAT,EAAlC;;EACA+K,IAAAA,QAAQ,CAAClL,gBAAT,CAA0BjH,IAA1B,CAA+B4U,OAA/B,EAAwClR,MAAxC;EACD,GALD;EAMD,CAhBD;EAkBA;;;;;;EAMAlD,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaqN,QAAQ,CAAClL,gBAAtB;EACAzG,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW2C,WAAX,GAAyB0K,QAAzB;;EACA3R,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW4C,UAAX,GAAwB,YAAM;EAC5BlH,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaK,oBAAb;EACA,SAAOgN,QAAQ,CAAClL,gBAAhB;EACD,CAHD;;ECjYA;;;;;;EAMA,IAAMnC,MAAI,GAAuB,UAAjC;EACA,IAAMC,SAAO,GAAoB,OAAjC;EACA,IAAMC,UAAQ,GAAmB,aAAjC;EACA,IAAMC,WAAS,SAAsBD,UAArC;EACA,IAAME,cAAY,GAAe,WAAjC;EACA,IAAMC,oBAAkB,GAAS3E,CAAC,CAACgB,EAAF,CAAKsD,MAAL,CAAjC;EACA,IAAM+P,cAAc,GAAa,EAAjC;;EACA,IAAMC,aAAa,GAAc,EAAjC;;EACA,IAAMC,WAAW,GAAgB,CAAjC;;EACA,IAAMC,gBAAgB,GAAW,EAAjC;;EACA,IAAMC,kBAAkB,GAAS,EAAjC;;EACA,IAAMC,wBAAwB,GAAG,CAAjC;;EACA,IAAMC,cAAc,GAAa,IAAIhR,MAAJ,CAAc6Q,gBAAd,SAAkCC,kBAAlC,SAAwDJ,cAAxD,CAAjC;EAEA,IAAMvP,OAAK,GAAG;EACZoM,EAAAA,IAAI,WAAsBzM,WADd;EAEZ0M,EAAAA,MAAM,aAAsB1M,WAFhB;EAGZY,EAAAA,IAAI,WAAsBZ,WAHd;EAIZwM,EAAAA,KAAK,YAAsBxM,WAJf;EAKZmQ,EAAAA,KAAK,YAAsBnQ,WALf;EAMZQ,EAAAA,cAAc,YAAaR,WAAb,GAAyBC,cAN3B;EAOZmQ,EAAAA,gBAAgB,cAAapQ,WAAb,GAAyBC,cAP7B;EAQZoQ,EAAAA,cAAc,YAAarQ,WAAb,GAAyBC;EAR3B,CAAd;EAWA,IAAMQ,WAAS,GAAG;EAChB6P,EAAAA,QAAQ,EAAU,UADF;EAEhB1P,EAAAA,IAAI,EAAc,MAFF;EAGhB2P,EAAAA,MAAM,EAAY,QAHF;EAIhBC,EAAAA,SAAS,EAAS,WAJF;EAKhBC,EAAAA,QAAQ,EAAU,UALF;EAMhBC,EAAAA,SAAS,EAAS,qBANF;EAOhBC,EAAAA,QAAQ,EAAU,oBAPF;EAQhBC,EAAAA,eAAe,EAAG;EARF,CAAlB;EAWA,IAAMzQ,UAAQ,GAAG;EACf2C,EAAAA,WAAW,EAAK,0BADD;EAEf+N,EAAAA,UAAU,EAAM,gBAFD;EAGfC,EAAAA,IAAI,EAAY,gBAHD;EAIfC,EAAAA,UAAU,EAAM,aAJD;EAKfC,EAAAA,aAAa,EAAG;EALD,CAAjB;EAQA,IAAMC,aAAa,GAAG;EACpBC,EAAAA,GAAG,EAAS,WADQ;EAEpBC,EAAAA,MAAM,EAAM,SAFQ;EAGpBC,EAAAA,MAAM,EAAM,cAHQ;EAIpBC,EAAAA,SAAS,EAAG,YAJQ;EAKpBrM,EAAAA,KAAK,EAAO,aALQ;EAMpBsM,EAAAA,QAAQ,EAAI,WANQ;EAOpBvM,EAAAA,IAAI,EAAQ,YAPQ;EAQpBwM,EAAAA,OAAO,EAAK;EARQ,CAAtB;EAWA,IAAMnN,SAAO,GAAG;EACdoN,EAAAA,MAAM,EAAM,CADE;EAEdC,EAAAA,IAAI,EAAQ,IAFE;EAGdC,EAAAA,QAAQ,EAAI,cAHE;EAIdC,EAAAA,SAAS,EAAG,QAJE;EAKdC,EAAAA,OAAO,EAAK;EALE,CAAhB;EAQA,IAAMjN,aAAW,GAAG;EAClB6M,EAAAA,MAAM,EAAM,0BADM;EAElBC,EAAAA,IAAI,EAAQ,SAFM;EAGlBC,EAAAA,QAAQ,EAAI,kBAHM;EAIlBC,EAAAA,SAAS,EAAG,kBAJM;EAKlBC,EAAAA,OAAO,EAAK;EAGd;;;;;;EARoB,CAApB;;MAcMC;;;EACJ,oBAAY5U,OAAZ,EAAqBwB,MAArB,EAA6B;EAC3B,SAAKqC,QAAL,GAAiB7D,OAAjB;EACA,SAAK6U,OAAL,GAAiB,IAAjB;EACA,SAAK5K,OAAL,GAAiB,KAAKC,UAAL,CAAgB1I,MAAhB,CAAjB;EACA,SAAKsT,KAAL,GAAiB,KAAKC,eAAL,EAAjB;EACA,SAAKC,SAAL,GAAiB,KAAKC,aAAL,EAAjB;;EAEA,SAAKtK,kBAAL;EACD;;;;;EAgBD;WAEA1E,SAAA,kBAAS;EACP,QAAI,KAAKpC,QAAL,CAAcqR,QAAd,IAA0B5W,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAAC6P,QAApC,CAA9B,EAA6E;EAC3E;EACD;;EAED,QAAM9O,MAAM,GAAKqQ,QAAQ,CAACO,qBAAT,CAA+B,KAAKtR,QAApC,CAAjB;;EACA,QAAMuR,QAAQ,GAAG9W,CAAC,CAAC,KAAKwW,KAAN,CAAD,CAAcnQ,QAAd,CAAuBnB,WAAS,CAACG,IAAjC,CAAjB;;EAEAiR,IAAAA,QAAQ,CAACS,WAAT;;EAEA,QAAID,QAAJ,EAAc;EACZ;EACD;;EAED,QAAM3H,aAAa,GAAG;EACpBA,MAAAA,aAAa,EAAE,KAAK5J;EADA,KAAtB;EAGA,QAAMyR,SAAS,GAAGhX,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACO,IAAd,EAAoB8J,aAApB,CAAlB;EAEAnP,IAAAA,CAAC,CAACiG,MAAD,CAAD,CAAUtD,OAAV,CAAkBqU,SAAlB;;EAEA,QAAIA,SAAS,CAACnR,kBAAV,EAAJ,EAAoC;EAClC;EACD,KAvBM;;;EA0BP,QAAI,CAAC,KAAK6Q,SAAV,EAAqB;EACnB;;;;EAIA,UAAI,OAAOO,MAAP,KAAkB,WAAtB,EAAmC;EACjC,cAAM,IAAIxG,SAAJ,CAAc,mEAAd,CAAN;EACD;;EAED,UAAIyG,gBAAgB,GAAG,KAAK3R,QAA5B;;EAEA,UAAI,KAAKoG,OAAL,CAAayK,SAAb,KAA2B,QAA/B,EAAyC;EACvCc,QAAAA,gBAAgB,GAAGjR,MAAnB;EACD,OAFD,MAEO,IAAIrF,IAAI,CAACkC,SAAL,CAAe,KAAK6I,OAAL,CAAayK,SAA5B,CAAJ,EAA4C;EACjDc,QAAAA,gBAAgB,GAAG,KAAKvL,OAAL,CAAayK,SAAhC,CADiD;;EAIjD,YAAI,OAAO,KAAKzK,OAAL,CAAayK,SAAb,CAAuBxC,MAA9B,KAAyC,WAA7C,EAA0D;EACxDsD,UAAAA,gBAAgB,GAAG,KAAKvL,OAAL,CAAayK,SAAb,CAAuB,CAAvB,CAAnB;EACD;EACF,OApBkB;EAuBnB;EACA;;;EACA,UAAI,KAAKzK,OAAL,CAAawK,QAAb,KAA0B,cAA9B,EAA8C;EAC5CnW,QAAAA,CAAC,CAACiG,MAAD,CAAD,CAAU4J,QAAV,CAAmB3K,WAAS,CAACmQ,eAA7B;EACD;;EACD,WAAKkB,OAAL,GAAe,IAAIU,MAAJ,CAAWC,gBAAX,EAA6B,KAAKV,KAAlC,EAAyC,KAAKW,gBAAL,EAAzC,CAAf;EACD,KAvDM;EA0DP;EACA;EACA;;;EACA,QAAI,kBAAkB5V,QAAQ,CAACyC,eAA3B,IACAhE,CAAC,CAACiG,MAAD,CAAD,CAAUC,OAAV,CAAkBtB,UAAQ,CAAC4Q,UAA3B,EAAuCpI,MAAvC,KAAkD,CADtD,EACyD;EACvDpN,MAAAA,CAAC,CAACuB,QAAQ,CAAC6V,IAAV,CAAD,CAAiBxH,QAAjB,GAA4B5I,EAA5B,CAA+B,WAA/B,EAA4C,IAA5C,EAAkDhH,CAAC,CAACqX,IAApD;EACD;;EAED,SAAK9R,QAAL,CAAc8C,KAAd;;EACA,SAAK9C,QAAL,CAAc+C,YAAd,CAA2B,eAA3B,EAA4C,IAA5C;;EAEAtI,IAAAA,CAAC,CAAC,KAAKwW,KAAN,CAAD,CAAcjO,WAAd,CAA0BrD,WAAS,CAACG,IAApC;EACArF,IAAAA,CAAC,CAACiG,MAAD,CAAD,CACGsC,WADH,CACerD,WAAS,CAACG,IADzB,EAEG1C,OAFH,CAEW3C,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACmM,KAAd,EAAqB9B,aAArB,CAFX;EAGD;;WAEDuD,OAAA,gBAAO;EACL,QAAI,KAAKnN,QAAL,CAAcqR,QAAd,IAA0B5W,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAAC6P,QAApC,CAA1B,IAA2E/U,CAAC,CAAC,KAAKwW,KAAN,CAAD,CAAcnQ,QAAd,CAAuBnB,WAAS,CAACG,IAAjC,CAA/E,EAAuH;EACrH;EACD;;EAED,QAAM8J,aAAa,GAAG;EACpBA,MAAAA,aAAa,EAAE,KAAK5J;EADA,KAAtB;EAGA,QAAMyR,SAAS,GAAGhX,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACO,IAAd,EAAoB8J,aAApB,CAAlB;;EACA,QAAMlJ,MAAM,GAAGqQ,QAAQ,CAACO,qBAAT,CAA+B,KAAKtR,QAApC,CAAf;;EAEAvF,IAAAA,CAAC,CAACiG,MAAD,CAAD,CAAUtD,OAAV,CAAkBqU,SAAlB;;EAEA,QAAIA,SAAS,CAACnR,kBAAV,EAAJ,EAAoC;EAClC;EACD;;EAED7F,IAAAA,CAAC,CAAC,KAAKwW,KAAN,CAAD,CAAcjO,WAAd,CAA0BrD,WAAS,CAACG,IAApC;EACArF,IAAAA,CAAC,CAACiG,MAAD,CAAD,CACGsC,WADH,CACerD,WAAS,CAACG,IADzB,EAEG1C,OAFH,CAEW3C,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACmM,KAAd,EAAqB9B,aAArB,CAFX;EAGD;;WAEDsD,OAAA,gBAAO;EACL,QAAI,KAAKlN,QAAL,CAAcqR,QAAd,IAA0B5W,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAAC6P,QAApC,CAA1B,IAA2E,CAAC/U,CAAC,CAAC,KAAKwW,KAAN,CAAD,CAAcnQ,QAAd,CAAuBnB,WAAS,CAACG,IAAjC,CAAhF,EAAwH;EACtH;EACD;;EAED,QAAM8J,aAAa,GAAG;EACpBA,MAAAA,aAAa,EAAE,KAAK5J;EADA,KAAtB;EAGA,QAAM+R,SAAS,GAAGtX,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACoM,IAAd,EAAoB/B,aAApB,CAAlB;;EACA,QAAMlJ,MAAM,GAAGqQ,QAAQ,CAACO,qBAAT,CAA+B,KAAKtR,QAApC,CAAf;;EAEAvF,IAAAA,CAAC,CAACiG,MAAD,CAAD,CAAUtD,OAAV,CAAkB2U,SAAlB;;EAEA,QAAIA,SAAS,CAACzR,kBAAV,EAAJ,EAAoC;EAClC;EACD;;EAED7F,IAAAA,CAAC,CAAC,KAAKwW,KAAN,CAAD,CAAcjO,WAAd,CAA0BrD,WAAS,CAACG,IAApC;EACArF,IAAAA,CAAC,CAACiG,MAAD,CAAD,CACGsC,WADH,CACerD,WAAS,CAACG,IADzB,EAEG1C,OAFH,CAEW3C,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACqM,MAAd,EAAsBhC,aAAtB,CAFX;EAGD;;WAEDpJ,UAAA,mBAAU;EACR/F,IAAAA,CAAC,CAACgG,UAAF,CAAa,KAAKT,QAAlB,EAA4Bf,UAA5B;EACAxE,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB+H,GAAjB,CAAqB7I,WAArB;EACA,SAAKc,QAAL,GAAgB,IAAhB;EACA,SAAKiR,KAAL,GAAa,IAAb;;EACA,QAAI,KAAKD,OAAL,KAAiB,IAArB,EAA2B;EACzB,WAAKA,OAAL,CAAagB,OAAb;;EACA,WAAKhB,OAAL,GAAe,IAAf;EACD;EACF;;WAEDiB,SAAA,kBAAS;EACP,SAAKd,SAAL,GAAiB,KAAKC,aAAL,EAAjB;;EACA,QAAI,KAAKJ,OAAL,KAAiB,IAArB,EAA2B;EACzB,WAAKA,OAAL,CAAakB,cAAb;EACD;EACF;;;WAIDpL,qBAAA,8BAAqB;EAAA;;EACnBrM,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiByB,EAAjB,CAAoBlC,OAAK,CAAC8P,KAA1B,EAAiC,UAAC7U,KAAD,EAAW;EAC1CA,MAAAA,KAAK,CAACgH,cAAN;EACAhH,MAAAA,KAAK,CAAC2X,eAAN;;EACA,MAAA,KAAI,CAAC/P,MAAL;EACD,KAJD;EAKD;;WAEDiE,aAAA,oBAAW1I,MAAX,EAAmB;EACjBA,IAAAA,MAAM,qBACD,KAAKyU,WAAL,CAAiB9O,OADhB,EAED7I,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBqB,IAAjB,EAFC,EAGD1D,MAHC,CAAN;EAMAtC,IAAAA,IAAI,CAACoC,eAAL,CACEsB,MADF,EAEEpB,MAFF,EAGE,KAAKyU,WAAL,CAAiBvO,WAHnB;EAMA,WAAOlG,MAAP;EACD;;WAEDuT,kBAAA,2BAAkB;EAChB,QAAI,CAAC,KAAKD,KAAV,EAAiB;EACf,UAAMvQ,MAAM,GAAGqQ,QAAQ,CAACO,qBAAT,CAA+B,KAAKtR,QAApC,CAAf;;EAEA,UAAIU,MAAJ,EAAY;EACV,aAAKuQ,KAAL,GAAavQ,MAAM,CAAClE,aAAP,CAAqB6C,UAAQ,CAAC2Q,IAA9B,CAAb;EACD;EACF;;EACD,WAAO,KAAKiB,KAAZ;EACD;;WAEDoB,gBAAA,yBAAgB;EACd,QAAMC,eAAe,GAAG7X,CAAC,CAAC,KAAKuF,QAAL,CAAclB,UAAf,CAAzB;EACA,QAAIyT,SAAS,GAAGpC,aAAa,CAACG,MAA9B,CAFc;;EAKd,QAAIgC,eAAe,CAACxR,QAAhB,CAAyBnB,WAAS,CAAC8P,MAAnC,CAAJ,EAAgD;EAC9C8C,MAAAA,SAAS,GAAGpC,aAAa,CAACC,GAA1B;;EACA,UAAI3V,CAAC,CAAC,KAAKwW,KAAN,CAAD,CAAcnQ,QAAd,CAAuBnB,WAAS,CAACiQ,SAAjC,CAAJ,EAAiD;EAC/C2C,QAAAA,SAAS,GAAGpC,aAAa,CAACE,MAA1B;EACD;EACF,KALD,MAKO,IAAIiC,eAAe,CAACxR,QAAhB,CAAyBnB,WAAS,CAAC+P,SAAnC,CAAJ,EAAmD;EACxD6C,MAAAA,SAAS,GAAGpC,aAAa,CAACjM,KAA1B;EACD,KAFM,MAEA,IAAIoO,eAAe,CAACxR,QAAhB,CAAyBnB,WAAS,CAACgQ,QAAnC,CAAJ,EAAkD;EACvD4C,MAAAA,SAAS,GAAGpC,aAAa,CAAClM,IAA1B;EACD,KAFM,MAEA,IAAIxJ,CAAC,CAAC,KAAKwW,KAAN,CAAD,CAAcnQ,QAAd,CAAuBnB,WAAS,CAACiQ,SAAjC,CAAJ,EAAiD;EACtD2C,MAAAA,SAAS,GAAGpC,aAAa,CAACI,SAA1B;EACD;;EACD,WAAOgC,SAAP;EACD;;WAEDnB,gBAAA,yBAAgB;EACd,WAAO3W,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBW,OAAjB,CAAyB,SAAzB,EAAoCkH,MAApC,GAA6C,CAApD;EACD;;WAED2K,aAAA,sBAAa;EAAA;;EACX,QAAM9B,MAAM,GAAG,EAAf;;EAEA,QAAI,OAAO,KAAKtK,OAAL,CAAasK,MAApB,KAA+B,UAAnC,EAA+C;EAC7CA,MAAAA,MAAM,CAACjV,EAAP,GAAY,UAAC4F,IAAD,EAAU;EACpBA,QAAAA,IAAI,CAACoR,OAAL,qBACKpR,IAAI,CAACoR,OADV,EAEK,MAAI,CAACrM,OAAL,CAAasK,MAAb,CAAoBrP,IAAI,CAACoR,OAAzB,EAAkC,MAAI,CAACzS,QAAvC,KAAoD,EAFzD;EAKA,eAAOqB,IAAP;EACD,OAPD;EAQD,KATD,MASO;EACLqP,MAAAA,MAAM,CAACA,MAAP,GAAgB,KAAKtK,OAAL,CAAasK,MAA7B;EACD;;EAED,WAAOA,MAAP;EACD;;WAEDkB,mBAAA,4BAAmB;EACjB,QAAMc,YAAY,GAAG;EACnBH,MAAAA,SAAS,EAAE,KAAKF,aAAL,EADQ;EAEnBM,MAAAA,SAAS,EAAE;EACTjC,QAAAA,MAAM,EAAE,KAAK8B,UAAL,EADC;EAET7B,QAAAA,IAAI,EAAE;EACJiC,UAAAA,OAAO,EAAE,KAAKxM,OAAL,CAAauK;EADlB,SAFG;EAKTkC,QAAAA,eAAe,EAAE;EACfC,UAAAA,iBAAiB,EAAE,KAAK1M,OAAL,CAAawK;EADjB;EALR,OAFQ;;EAAA,KAArB;;EAcA,QAAI,KAAKxK,OAAL,CAAa0K,OAAb,KAAyB,QAA7B,EAAuC;EACrC4B,MAAAA,YAAY,CAACC,SAAb,CAAuBI,UAAvB,GAAoC;EAClCH,QAAAA,OAAO,EAAE;EADyB,OAApC;EAGD;;EAED,WAAOF,YAAP;EACD;;;aAIMxR,mBAAP,0BAAwBvD,MAAxB,EAAgC;EAC9B,WAAO,KAAKwD,IAAL,CAAU,YAAY;EAC3B,UAAIE,IAAI,GAAG5G,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,CAAX;;EACA,UAAMmH,OAAO,GAAG,OAAOzI,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,IAAtD;;EAEA,UAAI,CAAC0D,IAAL,EAAW;EACTA,QAAAA,IAAI,GAAG,IAAI0P,QAAJ,CAAa,IAAb,EAAmB3K,OAAnB,CAAP;EACA3L,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,EAAuBoC,IAAvB;EACD;;EAED,UAAI,OAAO1D,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAO0D,IAAI,CAAC1D,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIuN,SAAJ,wBAAkCvN,MAAlC,QAAN;EACD;;EACD0D,QAAAA,IAAI,CAAC1D,MAAD,CAAJ;EACD;EACF,KAfM,CAAP;EAgBD;;aAEM6T,cAAP,qBAAmBhX,KAAnB,EAA0B;EACxB,QAAIA,KAAK,KAAKA,KAAK,CAACyO,KAAN,KAAgBkG,wBAAhB,IACZ3U,KAAK,CAACgI,IAAN,KAAe,OAAf,IAA0BhI,KAAK,CAACyO,KAAN,KAAgB+F,WADnC,CAAT,EAC0D;EACxD;EACD;;EAED,QAAMgE,OAAO,GAAG,GAAG9J,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0BxJ,UAAQ,CAAC2C,WAAnC,CAAd,CAAhB;;EAEA,SAAK,IAAIuJ,CAAC,GAAG,CAAR,EAAWC,GAAG,GAAGwH,OAAO,CAACnL,MAA9B,EAAsC0D,CAAC,GAAGC,GAA1C,EAA+CD,CAAC,EAAhD,EAAoD;EAClD,UAAM7K,MAAM,GAAGqQ,QAAQ,CAACO,qBAAT,CAA+B0B,OAAO,CAACzH,CAAD,CAAtC,CAAf;;EACA,UAAM0H,OAAO,GAAGxY,CAAC,CAACuY,OAAO,CAACzH,CAAD,CAAR,CAAD,CAAclK,IAAd,CAAmBpC,UAAnB,CAAhB;EACA,UAAM2K,aAAa,GAAG;EACpBA,QAAAA,aAAa,EAAEoJ,OAAO,CAACzH,CAAD;EADF,OAAtB;;EAIA,UAAI/Q,KAAK,IAAIA,KAAK,CAACgI,IAAN,KAAe,OAA5B,EAAqC;EACnCoH,QAAAA,aAAa,CAACsJ,UAAd,GAA2B1Y,KAA3B;EACD;;EAED,UAAI,CAACyY,OAAL,EAAc;EACZ;EACD;;EAED,UAAME,YAAY,GAAGF,OAAO,CAAChC,KAA7B;;EACA,UAAI,CAACxW,CAAC,CAACiG,MAAD,CAAD,CAAUI,QAAV,CAAmBnB,WAAS,CAACG,IAA7B,CAAL,EAAyC;EACvC;EACD;;EAED,UAAItF,KAAK,KAAKA,KAAK,CAACgI,IAAN,KAAe,OAAf,IACV,kBAAkBnE,IAAlB,CAAuB7D,KAAK,CAACE,MAAN,CAAasO,OAApC,CADU,IACsCxO,KAAK,CAACgI,IAAN,KAAe,OAAf,IAA0BhI,KAAK,CAACyO,KAAN,KAAgB+F,WADrF,CAAL,IAEAvU,CAAC,CAACkI,QAAF,CAAWjC,MAAX,EAAmBlG,KAAK,CAACE,MAAzB,CAFJ,EAEsC;EACpC;EACD;;EAED,UAAMqX,SAAS,GAAGtX,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACoM,IAAd,EAAoB/B,aAApB,CAAlB;EACAnP,MAAAA,CAAC,CAACiG,MAAD,CAAD,CAAUtD,OAAV,CAAkB2U,SAAlB;;EACA,UAAIA,SAAS,CAACzR,kBAAV,EAAJ,EAAoC;EAClC;EACD,OA9BiD;EAiClD;;;EACA,UAAI,kBAAkBtE,QAAQ,CAACyC,eAA/B,EAAgD;EAC9ChE,QAAAA,CAAC,CAACuB,QAAQ,CAAC6V,IAAV,CAAD,CAAiBxH,QAAjB,GAA4BtC,GAA5B,CAAgC,WAAhC,EAA6C,IAA7C,EAAmDtN,CAAC,CAACqX,IAArD;EACD;;EAEDkB,MAAAA,OAAO,CAACzH,CAAD,CAAP,CAAWxI,YAAX,CAAwB,eAAxB,EAAyC,OAAzC;EAEAtI,MAAAA,CAAC,CAAC0Y,YAAD,CAAD,CAAgBtS,WAAhB,CAA4BlB,WAAS,CAACG,IAAtC;EACArF,MAAAA,CAAC,CAACiG,MAAD,CAAD,CACGG,WADH,CACelB,WAAS,CAACG,IADzB,EAEG1C,OAFH,CAEW3C,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACqM,MAAd,EAAsBhC,aAAtB,CAFX;EAGD;EACF;;aAEM0H,wBAAP,+BAA6BnV,OAA7B,EAAsC;EACpC,QAAIuE,MAAJ;EACA,QAAMtE,QAAQ,GAAGf,IAAI,CAACa,sBAAL,CAA4BC,OAA5B,CAAjB;;EAEA,QAAIC,QAAJ,EAAc;EACZsE,MAAAA,MAAM,GAAG1E,QAAQ,CAACQ,aAAT,CAAuBJ,QAAvB,CAAT;EACD;;EAED,WAAOsE,MAAM,IAAIvE,OAAO,CAAC2C,UAAzB;EACD;;;aAGMsU,yBAAP,gCAA8B5Y,KAA9B,EAAqC;EACnC;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAI,kBAAkB6D,IAAlB,CAAuB7D,KAAK,CAACE,MAAN,CAAasO,OAApC,IACAxO,KAAK,CAACyO,KAAN,KAAgB8F,aAAhB,IAAiCvU,KAAK,CAACyO,KAAN,KAAgB6F,cAAhB,KAClCtU,KAAK,CAACyO,KAAN,KAAgBiG,kBAAhB,IAAsC1U,KAAK,CAACyO,KAAN,KAAgBgG,gBAAtD,IACCxU,CAAC,CAACD,KAAK,CAACE,MAAP,CAAD,CAAgBiG,OAAhB,CAAwBtB,UAAQ,CAAC2Q,IAAjC,EAAuCnI,MAFN,CADjC,GAGiD,CAACuH,cAAc,CAAC/Q,IAAf,CAAoB7D,KAAK,CAACyO,KAA1B,CAHtD,EAGwF;EACtF;EACD;;EAEDzO,IAAAA,KAAK,CAACgH,cAAN;EACAhH,IAAAA,KAAK,CAAC2X,eAAN;;EAEA,QAAI,KAAKd,QAAL,IAAiB5W,CAAC,CAAC,IAAD,CAAD,CAAQqG,QAAR,CAAiBnB,WAAS,CAAC6P,QAA3B,CAArB,EAA2D;EACzD;EACD;;EAED,QAAM9O,MAAM,GAAKqQ,QAAQ,CAACO,qBAAT,CAA+B,IAA/B,CAAjB;;EACA,QAAMC,QAAQ,GAAG9W,CAAC,CAACiG,MAAD,CAAD,CAAUI,QAAV,CAAmBnB,WAAS,CAACG,IAA7B,CAAjB;;EAEA,QAAI,CAACyR,QAAD,IAAaA,QAAQ,KAAK/W,KAAK,CAACyO,KAAN,KAAgB6F,cAAhB,IAAkCtU,KAAK,CAACyO,KAAN,KAAgB8F,aAAvD,CAAzB,EAAgG;EAC9F,UAAIvU,KAAK,CAACyO,KAAN,KAAgB6F,cAApB,EAAoC;EAClC,YAAM1M,MAAM,GAAG1B,MAAM,CAAClE,aAAP,CAAqB6C,UAAQ,CAAC2C,WAA9B,CAAf;EACAvH,QAAAA,CAAC,CAAC2H,MAAD,CAAD,CAAUhF,OAAV,CAAkB,OAAlB;EACD;;EAED3C,MAAAA,CAAC,CAAC,IAAD,CAAD,CAAQ2C,OAAR,CAAgB,OAAhB;EACA;EACD;;EAED,QAAMiW,KAAK,GAAG,GAAGnK,KAAH,CAASjP,IAAT,CAAcyG,MAAM,CAACmI,gBAAP,CAAwBxJ,UAAQ,CAAC6Q,aAAjC,CAAd,CAAd;;EAEA,QAAImD,KAAK,CAACxL,MAAN,KAAiB,CAArB,EAAwB;EACtB;EACD;;EAED,QAAIH,KAAK,GAAG2L,KAAK,CAAClK,OAAN,CAAc3O,KAAK,CAACE,MAApB,CAAZ;;EAEA,QAAIF,KAAK,CAACyO,KAAN,KAAgBgG,gBAAhB,IAAoCvH,KAAK,GAAG,CAAhD,EAAmD;EAAE;EACnDA,MAAAA,KAAK;EACN;;EAED,QAAIlN,KAAK,CAACyO,KAAN,KAAgBiG,kBAAhB,IAAsCxH,KAAK,GAAG2L,KAAK,CAACxL,MAAN,GAAe,CAAjE,EAAoE;EAAE;EACpEH,MAAAA,KAAK;EACN;;EAED,QAAIA,KAAK,GAAG,CAAZ,EAAe;EACbA,MAAAA,KAAK,GAAG,CAAR;EACD;;EAED2L,IAAAA,KAAK,CAAC3L,KAAD,CAAL,CAAa5E,KAAb;EACD;;;;0BAjZoB;EACnB,aAAO9D,SAAP;EACD;;;0BAEoB;EACnB,aAAOsE,SAAP;EACD;;;0BAEwB;EACvB,aAAOO,aAAP;EACD;;;;;EA0YH;;;;;;;EAMApJ,CAAC,CAACuB,QAAD,CAAD,CACGyF,EADH,CACMlC,OAAK,CAAC+P,gBADZ,EAC8BjQ,UAAQ,CAAC2C,WADvC,EACoD+O,QAAQ,CAACqC,sBAD7D,EAEG3R,EAFH,CAEMlC,OAAK,CAAC+P,gBAFZ,EAE8BjQ,UAAQ,CAAC2Q,IAFvC,EAE6Ce,QAAQ,CAACqC,sBAFtD,EAGG3R,EAHH,CAGSlC,OAAK,CAACG,cAHf,SAGiCH,OAAK,CAACgQ,cAHvC,EAGyDwB,QAAQ,CAACS,WAHlE,EAIG/P,EAJH,CAIMlC,OAAK,CAACG,cAJZ,EAI4BL,UAAQ,CAAC2C,WAJrC,EAIkD,UAAUxH,KAAV,EAAiB;EAC/DA,EAAAA,KAAK,CAACgH,cAAN;EACAhH,EAAAA,KAAK,CAAC2X,eAAN;;EACApB,EAAAA,QAAQ,CAAC7P,gBAAT,CAA0BjH,IAA1B,CAA+BQ,CAAC,CAAC,IAAD,CAAhC,EAAwC,QAAxC;EACD,CARH,EASGgH,EATH,CASMlC,OAAK,CAACG,cATZ,EAS4BL,UAAQ,CAAC0Q,UATrC,EASiD,UAACjH,CAAD,EAAO;EACpDA,EAAAA,CAAC,CAACqJ,eAAF;EACD,CAXH;EAaA;;;;;;EAMA1X,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAagS,QAAQ,CAAC7P,gBAAtB;EACAzG,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW2C,WAAX,GAAyBqP,QAAzB;;EACAtW,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW4C,UAAX,GAAwB,YAAM;EAC5BlH,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaK,oBAAb;EACA,SAAO2R,QAAQ,CAAC7P,gBAAhB;EACD,CAHD;;EChhBA;;;;;;EAMA,IAAMnC,MAAI,GAAiB,OAA3B;EACA,IAAMC,SAAO,GAAc,OAA3B;EACA,IAAMC,UAAQ,GAAa,UAA3B;EACA,IAAMC,WAAS,SAAgBD,UAA/B;EACA,IAAME,cAAY,GAAS,WAA3B;EACA,IAAMC,oBAAkB,GAAG3E,CAAC,CAACgB,EAAF,CAAKsD,MAAL,CAA3B;EACA,IAAM+P,gBAAc,GAAO,EAA3B;;EAEA,IAAMxL,SAAO,GAAG;EACdgQ,EAAAA,QAAQ,EAAG,IADG;EAEd9P,EAAAA,QAAQ,EAAG,IAFG;EAGdV,EAAAA,KAAK,EAAM,IAHG;EAIdqK,EAAAA,IAAI,EAAO;EAJG,CAAhB;EAOA,IAAMtJ,aAAW,GAAG;EAClByP,EAAAA,QAAQ,EAAG,kBADO;EAElB9P,EAAAA,QAAQ,EAAG,SAFO;EAGlBV,EAAAA,KAAK,EAAM,SAHO;EAIlBqK,EAAAA,IAAI,EAAO;EAJO,CAApB;EAOA,IAAM5N,OAAK,GAAG;EACZoM,EAAAA,IAAI,WAAuBzM,WADf;EAEZ0M,EAAAA,MAAM,aAAuB1M,WAFjB;EAGZY,EAAAA,IAAI,WAAuBZ,WAHf;EAIZwM,EAAAA,KAAK,YAAuBxM,WAJhB;EAKZqU,EAAAA,OAAO,cAAuBrU,WALlB;EAMZsU,EAAAA,MAAM,aAAuBtU,WANjB;EAOZuU,EAAAA,aAAa,oBAAuBvU,WAPxB;EAQZwU,EAAAA,eAAe,sBAAuBxU,WAR1B;EASZyU,EAAAA,eAAe,sBAAuBzU,WAT1B;EAUZ0U,EAAAA,iBAAiB,wBAAuB1U,WAV5B;EAWZQ,EAAAA,cAAc,YAAcR,WAAd,GAA0BC;EAX5B,CAAd;EAcA,IAAMQ,WAAS,GAAG;EAChBkU,EAAAA,UAAU,EAAW,yBADL;EAEhBC,EAAAA,kBAAkB,EAAG,yBAFL;EAGhBC,EAAAA,QAAQ,EAAa,gBAHL;EAIhBC,EAAAA,IAAI,EAAiB,YAJL;EAKhBnU,EAAAA,IAAI,EAAiB,MALL;EAMhBC,EAAAA,IAAI,EAAiB;EANL,CAAlB;EASA,IAAMT,UAAQ,GAAG;EACf4U,EAAAA,MAAM,EAAW,eADF;EAEfC,EAAAA,UAAU,EAAO,aAFF;EAGflS,EAAAA,WAAW,EAAM,uBAHF;EAIfmS,EAAAA,YAAY,EAAK,wBAJF;EAKfC,EAAAA,aAAa,EAAI,mDALF;EAMfC,EAAAA,cAAc,EAAG;EAGnB;;;;;;EATiB,CAAjB;;MAeMC;;;EACJ,iBAAYnY,OAAZ,EAAqBwB,MAArB,EAA6B;EAC3B,SAAKyI,OAAL,GAA4B,KAAKC,UAAL,CAAgB1I,MAAhB,CAA5B;EACA,SAAKqC,QAAL,GAA4B7D,OAA5B;EACA,SAAKoY,OAAL,GAA4BpY,OAAO,CAACK,aAAR,CAAsB6C,UAAQ,CAAC4U,MAA/B,CAA5B;EACA,SAAKO,SAAL,GAA4B,IAA5B;EACA,SAAKC,QAAL,GAA4B,KAA5B;EACA,SAAKC,kBAAL,GAA4B,KAA5B;EACA,SAAKC,oBAAL,GAA4B,KAA5B;EACA,SAAKtI,gBAAL,GAA4B,KAA5B;EACA,SAAKuI,eAAL,GAA4B,CAA5B;EACD;;;;;EAYD;WAEAxS,SAAA,gBAAOwH,aAAP,EAAsB;EACpB,WAAO,KAAK6K,QAAL,GAAgB,KAAKvH,IAAL,EAAhB,GAA8B,KAAKC,IAAL,CAAUvD,aAAV,CAArC;EACD;;WAEDuD,OAAA,cAAKvD,aAAL,EAAoB;EAAA;;EAClB,QAAI,KAAK6K,QAAL,IAAiB,KAAKpI,gBAA1B,EAA4C;EAC1C;EACD;;EAED,QAAI5R,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAACE,IAApC,CAAJ,EAA+C;EAC7C,WAAKwM,gBAAL,GAAwB,IAAxB;EACD;;EAED,QAAMoF,SAAS,GAAGhX,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACO,IAAd,EAAoB;EACpC8J,MAAAA,aAAa,EAAbA;EADoC,KAApB,CAAlB;EAIAnP,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyBqU,SAAzB;;EAEA,QAAI,KAAKgD,QAAL,IAAiBhD,SAAS,CAACnR,kBAAV,EAArB,EAAqD;EACnD;EACD;;EAED,SAAKmU,QAAL,GAAgB,IAAhB;;EAEA,SAAKI,eAAL;;EACA,SAAKC,aAAL;;EAEA,SAAKC,aAAL;;EAEA,SAAKC,eAAL;;EACA,SAAKC,eAAL;;EAEAxa,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiByB,EAAjB,CACElC,OAAK,CAACkU,aADR,EAEEpU,UAAQ,CAAC8U,YAFX,EAGE,UAAC3Z,KAAD;EAAA,aAAW,KAAI,CAAC0S,IAAL,CAAU1S,KAAV,CAAX;EAAA,KAHF;EAMAC,IAAAA,CAAC,CAAC,KAAK8Z,OAAN,CAAD,CAAgB9S,EAAhB,CAAmBlC,OAAK,CAACqU,iBAAzB,EAA4C,YAAM;EAChDnZ,MAAAA,CAAC,CAAC,KAAI,CAACuF,QAAN,CAAD,CAAiB5E,GAAjB,CAAqBmE,OAAK,CAACoU,eAA3B,EAA4C,UAACnZ,KAAD,EAAW;EACrD,YAAIC,CAAC,CAACD,KAAK,CAACE,MAAP,CAAD,CAAgBC,EAAhB,CAAmB,KAAI,CAACqF,QAAxB,CAAJ,EAAuC;EACrC,UAAA,KAAI,CAAC2U,oBAAL,GAA4B,IAA5B;EACD;EACF,OAJD;EAKD,KAND;;EAQA,SAAKO,aAAL,CAAmB;EAAA,aAAM,KAAI,CAACC,YAAL,CAAkBvL,aAAlB,CAAN;EAAA,KAAnB;EACD;;WAEDsD,OAAA,cAAK1S,KAAL,EAAY;EAAA;;EACV,QAAIA,KAAJ,EAAW;EACTA,MAAAA,KAAK,CAACgH,cAAN;EACD;;EAED,QAAI,CAAC,KAAKiT,QAAN,IAAkB,KAAKpI,gBAA3B,EAA6C;EAC3C;EACD;;EAED,QAAM0F,SAAS,GAAGtX,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACoM,IAAd,CAAlB;EAEAlR,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyB2U,SAAzB;;EAEA,QAAI,CAAC,KAAK0C,QAAN,IAAkB1C,SAAS,CAACzR,kBAAV,EAAtB,EAAsD;EACpD;EACD;;EAED,SAAKmU,QAAL,GAAgB,KAAhB;EACA,QAAMW,UAAU,GAAG3a,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAACE,IAApC,CAAnB;;EAEA,QAAIuV,UAAJ,EAAgB;EACd,WAAK/I,gBAAL,GAAwB,IAAxB;EACD;;EAED,SAAK2I,eAAL;;EACA,SAAKC,eAAL;;EAEAxa,IAAAA,CAAC,CAACuB,QAAD,CAAD,CAAY+L,GAAZ,CAAgBxI,OAAK,CAACgU,OAAtB;EAEA9Y,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBa,WAAjB,CAA6BlB,WAAS,CAACG,IAAvC;EAEArF,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB+H,GAAjB,CAAqBxI,OAAK,CAACkU,aAA3B;EACAhZ,IAAAA,CAAC,CAAC,KAAK8Z,OAAN,CAAD,CAAgBxM,GAAhB,CAAoBxI,OAAK,CAACqU,iBAA1B;;EAGA,QAAIwB,UAAJ,EAAgB;EACd,UAAMzY,kBAAkB,GAAItB,IAAI,CAACqB,gCAAL,CAAsC,KAAKsD,QAA3C,CAA5B;EAEAvF,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CACG5E,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4B,UAACa,KAAD;EAAA,eAAW,MAAI,CAAC6a,UAAL,CAAgB7a,KAAhB,CAAX;EAAA,OAD5B,EAEGkB,oBAFH,CAEwBiB,kBAFxB;EAGD,KAND,MAMO;EACL,WAAK0Y,UAAL;EACD;EACF;;WAED7U,UAAA,mBAAU;EACR,KAACmG,MAAD,EAAS,KAAK3G,QAAd,EAAwB,KAAKuU,OAA7B,EACGe,OADH,CACW,UAACC,WAAD;EAAA,aAAiB9a,CAAC,CAAC8a,WAAD,CAAD,CAAexN,GAAf,CAAmB7I,WAAnB,CAAjB;EAAA,KADX;EAGA;;;;;;EAKAzE,IAAAA,CAAC,CAACuB,QAAD,CAAD,CAAY+L,GAAZ,CAAgBxI,OAAK,CAACgU,OAAtB;EAEA9Y,IAAAA,CAAC,CAACgG,UAAF,CAAa,KAAKT,QAAlB,EAA4Bf,UAA5B;EAEA,SAAKmH,OAAL,GAA4B,IAA5B;EACA,SAAKpG,QAAL,GAA4B,IAA5B;EACA,SAAKuU,OAAL,GAA4B,IAA5B;EACA,SAAKC,SAAL,GAA4B,IAA5B;EACA,SAAKC,QAAL,GAA4B,IAA5B;EACA,SAAKC,kBAAL,GAA4B,IAA5B;EACA,SAAKC,oBAAL,GAA4B,IAA5B;EACA,SAAKtI,gBAAL,GAA4B,IAA5B;EACA,SAAKuI,eAAL,GAA4B,IAA5B;EACD;;WAEDY,eAAA,wBAAe;EACb,SAAKT,aAAL;EACD;;;WAID1O,aAAA,oBAAW1I,MAAX,EAAmB;EACjBA,IAAAA,MAAM,qBACD2F,SADC,EAED3F,MAFC,CAAN;EAIAtC,IAAAA,IAAI,CAACoC,eAAL,CAAqBsB,MAArB,EAA2BpB,MAA3B,EAAmCkG,aAAnC;EACA,WAAOlG,MAAP;EACD;;WAEDwX,eAAA,sBAAavL,aAAb,EAA4B;EAAA;;EAC1B,QAAMwL,UAAU,GAAG3a,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAACE,IAApC,CAAnB;;EAEA,QAAI,CAAC,KAAKG,QAAL,CAAclB,UAAf,IACA,KAAKkB,QAAL,CAAclB,UAAd,CAAyBtB,QAAzB,KAAsCiY,IAAI,CAACC,YAD/C,EAC6D;EAC3D;EACA1Z,MAAAA,QAAQ,CAAC6V,IAAT,CAAc8D,WAAd,CAA0B,KAAK3V,QAA/B;EACD;;EAED,SAAKA,QAAL,CAAc0N,KAAd,CAAoBoD,OAApB,GAA8B,OAA9B;;EACA,SAAK9Q,QAAL,CAAc4V,eAAd,CAA8B,aAA9B;;EACA,SAAK5V,QAAL,CAAc+C,YAAd,CAA2B,YAA3B,EAAyC,IAAzC;;EAEA,QAAItI,CAAC,CAAC,KAAK8Z,OAAN,CAAD,CAAgBzT,QAAhB,CAAyBnB,WAAS,CAACkU,UAAnC,CAAJ,EAAoD;EAClD,WAAKU,OAAL,CAAa/X,aAAb,CAA2B6C,UAAQ,CAAC6U,UAApC,EAAgD2B,SAAhD,GAA4D,CAA5D;EACD,KAFD,MAEO;EACL,WAAK7V,QAAL,CAAc6V,SAAd,GAA0B,CAA1B;EACD;;EAED,QAAIT,UAAJ,EAAgB;EACd/Z,MAAAA,IAAI,CAAC6B,MAAL,CAAY,KAAK8C,QAAjB;EACD;;EAEDvF,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBsK,QAAjB,CAA0B3K,WAAS,CAACG,IAApC;;EAEA,QAAI,KAAKsG,OAAL,CAAatD,KAAjB,EAAwB;EACtB,WAAKgT,aAAL;EACD;;EAED,QAAMC,UAAU,GAAGtb,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACmM,KAAd,EAAqB;EACtC9B,MAAAA,aAAa,EAAbA;EADsC,KAArB,CAAnB;;EAIA,QAAMoM,kBAAkB,GAAG,SAArBA,kBAAqB,GAAM;EAC/B,UAAI,MAAI,CAAC5P,OAAL,CAAatD,KAAjB,EAAwB;EACtB,QAAA,MAAI,CAAC9C,QAAL,CAAc8C,KAAd;EACD;;EACD,MAAA,MAAI,CAACuJ,gBAAL,GAAwB,KAAxB;EACA5R,MAAAA,CAAC,CAAC,MAAI,CAACuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyB2Y,UAAzB;EACD,KAND;;EAQA,QAAIX,UAAJ,EAAgB;EACd,UAAMzY,kBAAkB,GAAItB,IAAI,CAACqB,gCAAL,CAAsC,KAAK6X,OAA3C,CAA5B;EAEA9Z,MAAAA,CAAC,CAAC,KAAK8Z,OAAN,CAAD,CACGnZ,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4Bqc,kBAD5B,EAEGta,oBAFH,CAEwBiB,kBAFxB;EAGD,KAND,MAMO;EACLqZ,MAAAA,kBAAkB;EACnB;EACF;;WAEDF,gBAAA,yBAAgB;EAAA;;EACdrb,IAAAA,CAAC,CAACuB,QAAD,CAAD,CACG+L,GADH,CACOxI,OAAK,CAACgU,OADb;EAAA,KAEG9R,EAFH,CAEMlC,OAAK,CAACgU,OAFZ,EAEqB,UAAC/Y,KAAD,EAAW;EAC5B,UAAIwB,QAAQ,KAAKxB,KAAK,CAACE,MAAnB,IACA,MAAI,CAACsF,QAAL,KAAkBxF,KAAK,CAACE,MADxB,IAEAD,CAAC,CAAC,MAAI,CAACuF,QAAN,CAAD,CAAiBiW,GAAjB,CAAqBzb,KAAK,CAACE,MAA3B,EAAmCmN,MAAnC,KAA8C,CAFlD,EAEqD;EACnD,QAAA,MAAI,CAAC7H,QAAL,CAAc8C,KAAd;EACD;EACF,KARH;EASD;;WAEDkS,kBAAA,2BAAkB;EAAA;;EAChB,QAAI,KAAKP,QAAL,IAAiB,KAAKrO,OAAL,CAAa5C,QAAlC,EAA4C;EAC1C/I,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiByB,EAAjB,CAAoBlC,OAAK,CAACmU,eAA1B,EAA2C,UAAClZ,KAAD,EAAW;EACpD,YAAIA,KAAK,CAACyO,KAAN,KAAgB6F,gBAApB,EAAoC;EAClCtU,UAAAA,KAAK,CAACgH,cAAN;;EACA,UAAA,MAAI,CAAC0L,IAAL;EACD;EACF,OALD;EAMD,KAPD,MAOO,IAAI,CAAC,KAAKuH,QAAV,EAAoB;EACzBha,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB+H,GAAjB,CAAqBxI,OAAK,CAACmU,eAA3B;EACD;EACF;;WAEDuB,kBAAA,2BAAkB;EAAA;;EAChB,QAAI,KAAKR,QAAT,EAAmB;EACjBha,MAAAA,CAAC,CAACkM,MAAD,CAAD,CAAUlF,EAAV,CAAalC,OAAK,CAACiU,MAAnB,EAA2B,UAAChZ,KAAD;EAAA,eAAW,MAAI,CAACgb,YAAL,CAAkBhb,KAAlB,CAAX;EAAA,OAA3B;EACD,KAFD,MAEO;EACLC,MAAAA,CAAC,CAACkM,MAAD,CAAD,CAAUoB,GAAV,CAAcxI,OAAK,CAACiU,MAApB;EACD;EACF;;WAED6B,aAAA,sBAAa;EAAA;;EACX,SAAKrV,QAAL,CAAc0N,KAAd,CAAoBoD,OAApB,GAA8B,MAA9B;;EACA,SAAK9Q,QAAL,CAAc+C,YAAd,CAA2B,aAA3B,EAA0C,IAA1C;;EACA,SAAK/C,QAAL,CAAc4V,eAAd,CAA8B,YAA9B;;EACA,SAAKvJ,gBAAL,GAAwB,KAAxB;;EACA,SAAK6I,aAAL,CAAmB,YAAM;EACvBza,MAAAA,CAAC,CAACuB,QAAQ,CAAC6V,IAAV,CAAD,CAAiBhR,WAAjB,CAA6BlB,WAAS,CAACqU,IAAvC;;EACA,MAAA,MAAI,CAACkC,iBAAL;;EACA,MAAA,MAAI,CAACC,eAAL;;EACA1b,MAAAA,CAAC,CAAC,MAAI,CAACuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyBmC,OAAK,CAACqM,MAA/B;EACD,KALD;EAMD;;WAEDwK,kBAAA,2BAAkB;EAChB,QAAI,KAAK5B,SAAT,EAAoB;EAClB/Z,MAAAA,CAAC,CAAC,KAAK+Z,SAAN,CAAD,CAAkBvT,MAAlB;EACA,WAAKuT,SAAL,GAAiB,IAAjB;EACD;EACF;;WAEDU,gBAAA,uBAAcmB,QAAd,EAAwB;EAAA;;EACtB,QAAMC,OAAO,GAAG7b,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAACE,IAApC,IACZF,WAAS,CAACE,IADE,GACK,EADrB;;EAGA,QAAI,KAAK4U,QAAL,IAAiB,KAAKrO,OAAL,CAAakN,QAAlC,EAA4C;EAC1C,WAAKkB,SAAL,GAAiBxY,QAAQ,CAACua,aAAT,CAAuB,KAAvB,CAAjB;EACA,WAAK/B,SAAL,CAAegC,SAAf,GAA2B7W,WAAS,CAACoU,QAArC;;EAEA,UAAIuC,OAAJ,EAAa;EACX,aAAK9B,SAAL,CAAe9R,SAAf,CAAyBqG,GAAzB,CAA6BuN,OAA7B;EACD;;EAED7b,MAAAA,CAAC,CAAC,KAAK+Z,SAAN,CAAD,CAAkBiC,QAAlB,CAA2Bza,QAAQ,CAAC6V,IAApC;EAEApX,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiByB,EAAjB,CAAoBlC,OAAK,CAACkU,aAA1B,EAAyC,UAACjZ,KAAD,EAAW;EAClD,YAAI,MAAI,CAACma,oBAAT,EAA+B;EAC7B,UAAA,MAAI,CAACA,oBAAL,GAA4B,KAA5B;EACA;EACD;;EACD,YAAIna,KAAK,CAACE,MAAN,KAAiBF,KAAK,CAACkU,aAA3B,EAA0C;EACxC;EACD;;EACD,YAAI,MAAI,CAACtI,OAAL,CAAakN,QAAb,KAA0B,QAA9B,EAAwC;EACtC,UAAA,MAAI,CAACtT,QAAL,CAAc8C,KAAd;EACD,SAFD,MAEO;EACL,UAAA,MAAI,CAACoK,IAAL;EACD;EACF,OAbD;;EAeA,UAAIoJ,OAAJ,EAAa;EACXjb,QAAAA,IAAI,CAAC6B,MAAL,CAAY,KAAKsX,SAAjB;EACD;;EAED/Z,MAAAA,CAAC,CAAC,KAAK+Z,SAAN,CAAD,CAAkBlK,QAAlB,CAA2B3K,WAAS,CAACG,IAArC;;EAEA,UAAI,CAACuW,QAAL,EAAe;EACb;EACD;;EAED,UAAI,CAACC,OAAL,EAAc;EACZD,QAAAA,QAAQ;EACR;EACD;;EAED,UAAMK,0BAA0B,GAAGrb,IAAI,CAACqB,gCAAL,CAAsC,KAAK8X,SAA3C,CAAnC;EAEA/Z,MAAAA,CAAC,CAAC,KAAK+Z,SAAN,CAAD,CACGpZ,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4B0c,QAD5B,EAEG3a,oBAFH,CAEwBgb,0BAFxB;EAGD,KA7CD,MA6CO,IAAI,CAAC,KAAKjC,QAAN,IAAkB,KAAKD,SAA3B,EAAsC;EAC3C/Z,MAAAA,CAAC,CAAC,KAAK+Z,SAAN,CAAD,CAAkB3T,WAAlB,CAA8BlB,WAAS,CAACG,IAAxC;;EAEA,UAAM6W,cAAc,GAAG,SAAjBA,cAAiB,GAAM;EAC3B,QAAA,MAAI,CAACP,eAAL;;EACA,YAAIC,QAAJ,EAAc;EACZA,UAAAA,QAAQ;EACT;EACF,OALD;;EAOA,UAAI5b,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAACE,IAApC,CAAJ,EAA+C;EAC7C,YAAM6W,2BAA0B,GAAGrb,IAAI,CAACqB,gCAAL,CAAsC,KAAK8X,SAA3C,CAAnC;;EAEA/Z,QAAAA,CAAC,CAAC,KAAK+Z,SAAN,CAAD,CACGpZ,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4Bgd,cAD5B,EAEGjb,oBAFH,CAEwBgb,2BAFxB;EAGD,OAND,MAMO;EACLC,QAAAA,cAAc;EACf;EACF,KAnBM,MAmBA,IAAIN,QAAJ,EAAc;EACnBA,MAAAA,QAAQ;EACT;EACF;EAGD;EACA;EACA;;;WAEAtB,gBAAA,yBAAgB;EACd,QAAM6B,kBAAkB,GACtB,KAAK5W,QAAL,CAAc6W,YAAd,GAA6B7a,QAAQ,CAACyC,eAAT,CAAyBqY,YADxD;;EAGA,QAAI,CAAC,KAAKpC,kBAAN,IAA4BkC,kBAAhC,EAAoD;EAClD,WAAK5W,QAAL,CAAc0N,KAAd,CAAoBqJ,WAApB,GAAqC,KAAKnC,eAA1C;EACD;;EAED,QAAI,KAAKF,kBAAL,IAA2B,CAACkC,kBAAhC,EAAoD;EAClD,WAAK5W,QAAL,CAAc0N,KAAd,CAAoBsJ,YAApB,GAAsC,KAAKpC,eAA3C;EACD;EACF;;WAEDsB,oBAAA,6BAAoB;EAClB,SAAKlW,QAAL,CAAc0N,KAAd,CAAoBqJ,WAApB,GAAkC,EAAlC;EACA,SAAK/W,QAAL,CAAc0N,KAAd,CAAoBsJ,YAApB,GAAmC,EAAnC;EACD;;WAEDnC,kBAAA,2BAAkB;EAChB,QAAMoC,IAAI,GAAGjb,QAAQ,CAAC6V,IAAT,CAAc7D,qBAAd,EAAb;EACA,SAAK0G,kBAAL,GAA0BuC,IAAI,CAACC,IAAL,GAAYD,IAAI,CAACE,KAAjB,GAAyBxQ,MAAM,CAACyQ,UAA1D;EACA,SAAKxC,eAAL,GAAuB,KAAKyC,kBAAL,EAAvB;EACD;;WAEDvC,gBAAA,yBAAgB;EAAA;;EACd,QAAI,KAAKJ,kBAAT,EAA6B;EAC3B;EACA;EACA,UAAM4C,YAAY,GAAG,GAAGpO,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0BxJ,UAAQ,CAAC+U,aAAnC,CAAd,CAArB;EACA,UAAMmD,aAAa,GAAG,GAAGrO,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0BxJ,UAAQ,CAACgV,cAAnC,CAAd,CAAtB,CAJ2B;;EAO3B5Z,MAAAA,CAAC,CAAC6c,YAAD,CAAD,CAAgBnW,IAAhB,CAAqB,UAACuG,KAAD,EAAQvL,OAAR,EAAoB;EACvC,YAAMqb,aAAa,GAAGrb,OAAO,CAACuR,KAAR,CAAcsJ,YAApC;EACA,YAAMS,iBAAiB,GAAGhd,CAAC,CAAC0B,OAAD,CAAD,CAAWS,GAAX,CAAe,eAAf,CAA1B;EACAnC,QAAAA,CAAC,CAAC0B,OAAD,CAAD,CACGkF,IADH,CACQ,eADR,EACyBmW,aADzB,EAEG5a,GAFH,CAEO,eAFP,EAE2BG,UAAU,CAAC0a,iBAAD,CAAV,GAAgC,MAAI,CAAC7C,eAFhE;EAGD,OAND,EAP2B;;EAgB3Bna,MAAAA,CAAC,CAAC8c,aAAD,CAAD,CAAiBpW,IAAjB,CAAsB,UAACuG,KAAD,EAAQvL,OAAR,EAAoB;EACxC,YAAMub,YAAY,GAAGvb,OAAO,CAACuR,KAAR,CAAciK,WAAnC;EACA,YAAMC,gBAAgB,GAAGnd,CAAC,CAAC0B,OAAD,CAAD,CAAWS,GAAX,CAAe,cAAf,CAAzB;EACAnC,QAAAA,CAAC,CAAC0B,OAAD,CAAD,CACGkF,IADH,CACQ,cADR,EACwBqW,YADxB,EAEG9a,GAFH,CAEO,cAFP,EAE0BG,UAAU,CAAC6a,gBAAD,CAAV,GAA+B,MAAI,CAAChD,eAF9D;EAGD,OAND,EAhB2B;;EAyB3B,UAAM4C,aAAa,GAAGxb,QAAQ,CAAC6V,IAAT,CAAcnE,KAAd,CAAoBsJ,YAA1C;EACA,UAAMS,iBAAiB,GAAGhd,CAAC,CAACuB,QAAQ,CAAC6V,IAAV,CAAD,CAAiBjV,GAAjB,CAAqB,eAArB,CAA1B;EACAnC,MAAAA,CAAC,CAACuB,QAAQ,CAAC6V,IAAV,CAAD,CACGxQ,IADH,CACQ,eADR,EACyBmW,aADzB,EAEG5a,GAFH,CAEO,eAFP,EAE2BG,UAAU,CAAC0a,iBAAD,CAAV,GAAgC,KAAK7C,eAFhE;EAGD;;EAEDna,IAAAA,CAAC,CAACuB,QAAQ,CAAC6V,IAAV,CAAD,CAAiBvH,QAAjB,CAA0B3K,WAAS,CAACqU,IAApC;EACD;;WAEDmC,kBAAA,2BAAkB;EAChB;EACA,QAAMmB,YAAY,GAAG,GAAGpO,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0BxJ,UAAQ,CAAC+U,aAAnC,CAAd,CAArB;EACA3Z,IAAAA,CAAC,CAAC6c,YAAD,CAAD,CAAgBnW,IAAhB,CAAqB,UAACuG,KAAD,EAAQvL,OAAR,EAAoB;EACvC,UAAM0b,OAAO,GAAGpd,CAAC,CAAC0B,OAAD,CAAD,CAAWkF,IAAX,CAAgB,eAAhB,CAAhB;EACA5G,MAAAA,CAAC,CAAC0B,OAAD,CAAD,CAAWsE,UAAX,CAAsB,eAAtB;EACAtE,MAAAA,OAAO,CAACuR,KAAR,CAAcsJ,YAAd,GAA6Ba,OAAO,GAAGA,OAAH,GAAa,EAAjD;EACD,KAJD,EAHgB;;EAUhB,QAAMC,QAAQ,GAAG,GAAG5O,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,MAA6BxJ,UAAQ,CAACgV,cAAtC,CAAd,CAAjB;EACA5Z,IAAAA,CAAC,CAACqd,QAAD,CAAD,CAAY3W,IAAZ,CAAiB,UAACuG,KAAD,EAAQvL,OAAR,EAAoB;EACnC,UAAM4b,MAAM,GAAGtd,CAAC,CAAC0B,OAAD,CAAD,CAAWkF,IAAX,CAAgB,cAAhB,CAAf;;EACA,UAAI,OAAO0W,MAAP,KAAkB,WAAtB,EAAmC;EACjCtd,QAAAA,CAAC,CAAC0B,OAAD,CAAD,CAAWS,GAAX,CAAe,cAAf,EAA+Bmb,MAA/B,EAAuCtX,UAAvC,CAAkD,cAAlD;EACD;EACF,KALD,EAXgB;;EAmBhB,QAAMoX,OAAO,GAAGpd,CAAC,CAACuB,QAAQ,CAAC6V,IAAV,CAAD,CAAiBxQ,IAAjB,CAAsB,eAAtB,CAAhB;EACA5G,IAAAA,CAAC,CAACuB,QAAQ,CAAC6V,IAAV,CAAD,CAAiBpR,UAAjB,CAA4B,eAA5B;EACAzE,IAAAA,QAAQ,CAAC6V,IAAT,CAAcnE,KAAd,CAAoBsJ,YAApB,GAAmCa,OAAO,GAAGA,OAAH,GAAa,EAAvD;EACD;;WAEDR,qBAAA,8BAAqB;EAAE;EACrB,QAAMW,SAAS,GAAGhc,QAAQ,CAACua,aAAT,CAAuB,KAAvB,CAAlB;EACAyB,IAAAA,SAAS,CAACxB,SAAV,GAAsB7W,WAAS,CAACmU,kBAAhC;EACA9X,IAAAA,QAAQ,CAAC6V,IAAT,CAAc8D,WAAd,CAA0BqC,SAA1B;EACA,QAAMC,cAAc,GAAGD,SAAS,CAAChK,qBAAV,GAAkCkK,KAAlC,GAA0CF,SAAS,CAACG,WAA3E;EACAnc,IAAAA,QAAQ,CAAC6V,IAAT,CAAcuG,WAAd,CAA0BJ,SAA1B;EACA,WAAOC,cAAP;EACD;;;UAIM/W,mBAAP,0BAAwBvD,MAAxB,EAAgCiM,aAAhC,EAA+C;EAC7C,WAAO,KAAKzI,IAAL,CAAU,YAAY;EAC3B,UAAIE,IAAI,GAAG5G,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,CAAX;;EACA,UAAMmH,OAAO,qBACR9C,SADQ,EAER7I,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,EAFQ,EAGR,OAAO1D,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAHxC,CAAb;;EAMA,UAAI,CAAC0D,IAAL,EAAW;EACTA,QAAAA,IAAI,GAAG,IAAIiT,KAAJ,CAAU,IAAV,EAAgBlO,OAAhB,CAAP;EACA3L,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,EAAuBoC,IAAvB;EACD;;EAED,UAAI,OAAO1D,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAO0D,IAAI,CAAC1D,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIuN,SAAJ,wBAAkCvN,MAAlC,QAAN;EACD;;EACD0D,QAAAA,IAAI,CAAC1D,MAAD,CAAJ,CAAaiM,aAAb;EACD,OALD,MAKO,IAAIxD,OAAO,CAAC+G,IAAZ,EAAkB;EACvB9L,QAAAA,IAAI,CAAC8L,IAAL,CAAUvD,aAAV;EACD;EACF,KArBM,CAAP;EAsBD;;;;0BA9boB;EACnB,aAAO5K,SAAP;EACD;;;0BAEoB;EACnB,aAAOsE,SAAP;EACD;;;;;EA2bH;;;;;;;EAMA7I,CAAC,CAACuB,QAAD,CAAD,CAAYyF,EAAZ,CAAelC,OAAK,CAACG,cAArB,EAAqCL,UAAQ,CAAC2C,WAA9C,EAA2D,UAAUxH,KAAV,EAAiB;EAAA;;EAC1E,MAAIE,MAAJ;EACA,MAAM0B,QAAQ,GAAGf,IAAI,CAACa,sBAAL,CAA4B,IAA5B,CAAjB;;EAEA,MAAIE,QAAJ,EAAc;EACZ1B,IAAAA,MAAM,GAAGsB,QAAQ,CAACQ,aAAT,CAAuBJ,QAAvB,CAAT;EACD;;EAED,MAAMuB,MAAM,GAAGlD,CAAC,CAACC,MAAD,CAAD,CAAU2G,IAAV,CAAepC,UAAf,IACX,QADW,qBAERxE,CAAC,CAACC,MAAD,CAAD,CAAU2G,IAAV,EAFQ,EAGR5G,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,EAHQ,CAAf;;EAMA,MAAI,KAAK2H,OAAL,KAAiB,GAAjB,IAAwB,KAAKA,OAAL,KAAiB,MAA7C,EAAqD;EACnDxO,IAAAA,KAAK,CAACgH,cAAN;EACD;;EAED,MAAMqN,OAAO,GAAGpU,CAAC,CAACC,MAAD,CAAD,CAAUU,GAAV,CAAcmE,OAAK,CAACO,IAApB,EAA0B,UAAC2R,SAAD,EAAe;EACvD,QAAIA,SAAS,CAACnR,kBAAV,EAAJ,EAAoC;EAClC;EACA;EACD;;EAEDuO,IAAAA,OAAO,CAACzT,GAAR,CAAYmE,OAAK,CAACqM,MAAlB,EAA0B,YAAM;EAC9B,UAAInR,CAAC,CAAC,OAAD,CAAD,CAAQE,EAAR,CAAW,UAAX,CAAJ,EAA4B;EAC1B,QAAA,OAAI,CAACmI,KAAL;EACD;EACF,KAJD;EAKD,GAXe,CAAhB;;EAaAwR,EAAAA,KAAK,CAACpT,gBAAN,CAAuBjH,IAAvB,CAA4BQ,CAAC,CAACC,MAAD,CAA7B,EAAuCiD,MAAvC,EAA+C,IAA/C;EACD,CAhCD;EAkCA;;;;;;EAMAlD,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAauV,KAAK,CAACpT,gBAAnB;EACAzG,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW2C,WAAX,GAAyB4S,KAAzB;;EACA7Z,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW4C,UAAX,GAAwB,YAAM;EAC5BlH,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaK,oBAAb;EACA,SAAOkV,KAAK,CAACpT,gBAAb;EACD,CAHD;;EC5kBA;;;;;;EAOA,IAAMmX,QAAQ,GAAG,CACf,YADe,EAEf,MAFe,EAGf,MAHe,EAIf,UAJe,EAKf,UALe,EAMf,QANe,EAOf,KAPe,EAQf,YARe,CAAjB;EAWA,IAAMC,sBAAsB,GAAG,gBAA/B;AAEA,EAAO,IAAMC,gBAAgB,GAAG;EAC9B;EACA,OAAK,CAAC,OAAD,EAAU,KAAV,EAAiB,IAAjB,EAAuB,MAAvB,EAA+B,MAA/B,EAAuCD,sBAAvC,CAFyB;EAG9BE,EAAAA,CAAC,EAAE,CAAC,QAAD,EAAW,MAAX,EAAmB,OAAnB,EAA4B,KAA5B,CAH2B;EAI9BC,EAAAA,IAAI,EAAE,EAJwB;EAK9BC,EAAAA,CAAC,EAAE,EAL2B;EAM9BC,EAAAA,EAAE,EAAE,EAN0B;EAO9BC,EAAAA,GAAG,EAAE,EAPyB;EAQ9BC,EAAAA,IAAI,EAAE,EARwB;EAS9BC,EAAAA,GAAG,EAAE,EATyB;EAU9BC,EAAAA,EAAE,EAAE,EAV0B;EAW9BC,EAAAA,EAAE,EAAE,EAX0B;EAY9BC,EAAAA,EAAE,EAAE,EAZ0B;EAa9BC,EAAAA,EAAE,EAAE,EAb0B;EAc9BC,EAAAA,EAAE,EAAE,EAd0B;EAe9BC,EAAAA,EAAE,EAAE,EAf0B;EAgB9BC,EAAAA,EAAE,EAAE,EAhB0B;EAiB9BC,EAAAA,EAAE,EAAE,EAjB0B;EAkB9B/N,EAAAA,CAAC,EAAE,EAlB2B;EAmB9BgO,EAAAA,GAAG,EAAE,CAAC,KAAD,EAAQ,KAAR,EAAe,OAAf,EAAwB,OAAxB,EAAiC,QAAjC,CAnByB;EAoB9BC,EAAAA,EAAE,EAAE,EApB0B;EAqB9BC,EAAAA,EAAE,EAAE,EArB0B;EAsB9BC,EAAAA,CAAC,EAAE,EAtB2B;EAuB9BC,EAAAA,GAAG,EAAE,EAvByB;EAwB9BC,EAAAA,CAAC,EAAE,EAxB2B;EAyB9BC,EAAAA,KAAK,EAAE,EAzBuB;EA0B9BC,EAAAA,IAAI,EAAE,EA1BwB;EA2B9BC,EAAAA,GAAG,EAAE,EA3ByB;EA4B9BC,EAAAA,GAAG,EAAE,EA5ByB;EA6B9BC,EAAAA,MAAM,EAAE,EA7BsB;EA8B9BC,EAAAA,CAAC,EAAE,EA9B2B;EA+B9BC,EAAAA,EAAE,EAAE;EAGN;;;;;;EAlCgC,CAAzB;EAuCP,IAAMC,gBAAgB,GAAG,6DAAzB;EAEA;;;;;;EAKA,IAAMC,gBAAgB,GAAG,qIAAzB;;EAEA,SAASC,gBAAT,CAA0B3M,IAA1B,EAAgC4M,oBAAhC,EAAsD;EACpD,MAAMC,QAAQ,GAAG7M,IAAI,CAAC8M,QAAL,CAActgB,WAAd,EAAjB;;EAEA,MAAIogB,oBAAoB,CAACpR,OAArB,CAA6BqR,QAA7B,MAA2C,CAAC,CAAhD,EAAmD;EACjD,QAAInC,QAAQ,CAAClP,OAAT,CAAiBqR,QAAjB,MAA+B,CAAC,CAApC,EAAuC;EACrC,aAAOld,OAAO,CAACqQ,IAAI,CAAC+M,SAAL,CAAexgB,KAAf,CAAqBkgB,gBAArB,KAA0CzM,IAAI,CAAC+M,SAAL,CAAexgB,KAAf,CAAqBmgB,gBAArB,CAA3C,CAAd;EACD;;EAED,WAAO,IAAP;EACD;;EAED,MAAMM,MAAM,GAAGJ,oBAAoB,CAAC5N,MAArB,CAA4B,UAACiO,SAAD;EAAA,WAAeA,SAAS,YAAYxc,MAApC;EAAA,GAA5B,CAAf,CAXoD;;EAcpD,OAAK,IAAImN,CAAC,GAAG,CAAR,EAAWsP,CAAC,GAAGF,MAAM,CAAC9S,MAA3B,EAAmC0D,CAAC,GAAGsP,CAAvC,EAA0CtP,CAAC,EAA3C,EAA+C;EAC7C,QAAIiP,QAAQ,CAACtgB,KAAT,CAAeygB,MAAM,CAACpP,CAAD,CAArB,CAAJ,EAA+B;EAC7B,aAAO,IAAP;EACD;EACF;;EAED,SAAO,KAAP;EACD;;AAED,EAAO,SAASuP,YAAT,CAAsBC,UAAtB,EAAkCC,SAAlC,EAA6CC,UAA7C,EAAyD;EAC9D,MAAIF,UAAU,CAAClT,MAAX,KAAsB,CAA1B,EAA6B;EAC3B,WAAOkT,UAAP;EACD;;EAED,MAAIE,UAAU,IAAI,OAAOA,UAAP,KAAsB,UAAxC,EAAoD;EAClD,WAAOA,UAAU,CAACF,UAAD,CAAjB;EACD;;EAED,MAAMG,SAAS,GAAG,IAAIvU,MAAM,CAACwU,SAAX,EAAlB;EACA,MAAMC,eAAe,GAAGF,SAAS,CAACG,eAAV,CAA0BN,UAA1B,EAAsC,WAAtC,CAAxB;EACA,MAAMO,aAAa,GAAGxd,MAAM,CAACyd,IAAP,CAAYP,SAAZ,CAAtB;EACA,MAAMlD,QAAQ,GAAG,GAAG5O,KAAH,CAASjP,IAAT,CAAcmhB,eAAe,CAACvJ,IAAhB,CAAqBhJ,gBAArB,CAAsC,GAAtC,CAAd,CAAjB;;EAZ8D,6BAcrD0C,CAdqD,EAc9CC,GAd8C;EAe5D,QAAMgQ,EAAE,GAAG1D,QAAQ,CAACvM,CAAD,CAAnB;EACA,QAAMkQ,MAAM,GAAGD,EAAE,CAACf,QAAH,CAAYtgB,WAAZ,EAAf;;EAEA,QAAImhB,aAAa,CAACnS,OAAd,CAAsBqS,EAAE,CAACf,QAAH,CAAYtgB,WAAZ,EAAtB,MAAqD,CAAC,CAA1D,EAA6D;EAC3DqhB,MAAAA,EAAE,CAAC1c,UAAH,CAAcsZ,WAAd,CAA0BoD,EAA1B;EAEA;EACD;;EAED,QAAME,aAAa,GAAG,GAAGxS,KAAH,CAASjP,IAAT,CAAcuhB,EAAE,CAACG,UAAjB,CAAtB;EACA,QAAMC,qBAAqB,GAAG,GAAGC,MAAH,CAAUb,SAAS,CAAC,GAAD,CAAT,IAAkB,EAA5B,EAAgCA,SAAS,CAACS,MAAD,CAAT,IAAqB,EAArD,CAA9B;EAEAC,IAAAA,aAAa,CAACpG,OAAd,CAAsB,UAAC3H,IAAD,EAAU;EAC9B,UAAI,CAAC2M,gBAAgB,CAAC3M,IAAD,EAAOiO,qBAAP,CAArB,EAAoD;EAClDJ,QAAAA,EAAE,CAAC5F,eAAH,CAAmBjI,IAAI,CAAC8M,QAAxB;EACD;EACF,KAJD;EA3B4D;;EAc9D,OAAK,IAAIlP,CAAC,GAAG,CAAR,EAAWC,GAAG,GAAGsM,QAAQ,CAACjQ,MAA/B,EAAuC0D,CAAC,GAAGC,GAA3C,EAAgDD,CAAC,EAAjD,EAAqD;EAAA,qBAA5CA,CAA4C,EAArCC,GAAqC;;EAAA,6BAOjD;EAWH;;EAED,SAAO4P,eAAe,CAACvJ,IAAhB,CAAqBiK,SAA5B;EACD;;EC/GD;;;;;;EAMA,IAAM/c,MAAI,GAAoB,SAA9B;EACA,IAAMC,SAAO,GAAiB,OAA9B;EACA,IAAMC,UAAQ,GAAgB,YAA9B;EACA,IAAMC,WAAS,SAAmBD,UAAlC;EACA,IAAMG,oBAAkB,GAAM3E,CAAC,CAACgB,EAAF,CAAKsD,MAAL,CAA9B;EACA,IAAMgd,YAAY,GAAY,YAA9B;EACA,IAAMC,kBAAkB,GAAM,IAAI5d,MAAJ,aAAqB2d,YAArB,WAAyC,GAAzC,CAA9B;EACA,IAAME,qBAAqB,GAAG,CAAC,UAAD,EAAa,WAAb,EAA0B,YAA1B,CAA9B;EAEA,IAAMpY,aAAW,GAAG;EAClBqY,EAAAA,SAAS,EAAW,SADF;EAElBC,EAAAA,QAAQ,EAAY,QAFF;EAGlBC,EAAAA,KAAK,EAAe,2BAHF;EAIlBhf,EAAAA,OAAO,EAAa,QAJF;EAKlBif,EAAAA,KAAK,EAAe,iBALF;EAMlBC,EAAAA,IAAI,EAAgB,SANF;EAOlBlgB,EAAAA,QAAQ,EAAY,kBAPF;EAQlBmW,EAAAA,SAAS,EAAW,mBARF;EASlB7B,EAAAA,MAAM,EAAc,0BATF;EAUlB6L,EAAAA,SAAS,EAAW,0BAVF;EAWlBC,EAAAA,iBAAiB,EAAG,gBAXF;EAYlB5L,EAAAA,QAAQ,EAAY,kBAZF;EAalB6L,EAAAA,QAAQ,EAAY,SAbF;EAclBxB,EAAAA,UAAU,EAAU,iBAdF;EAelBD,EAAAA,SAAS,EAAW;EAfF,CAApB;EAkBA,IAAM7K,eAAa,GAAG;EACpBuM,EAAAA,IAAI,EAAK,MADW;EAEpBtM,EAAAA,GAAG,EAAM,KAFW;EAGpBlM,EAAAA,KAAK,EAAI,OAHW;EAIpBoM,EAAAA,MAAM,EAAG,QAJW;EAKpBrM,EAAAA,IAAI,EAAK;EALW,CAAtB;EAQA,IAAMX,SAAO,GAAG;EACd4Y,EAAAA,SAAS,EAAW,IADN;EAEdC,EAAAA,QAAQ,EAAY,yCACF,2BADE,GAEF,yCAJJ;EAKd/e,EAAAA,OAAO,EAAa,aALN;EAMdgf,EAAAA,KAAK,EAAe,EANN;EAOdC,EAAAA,KAAK,EAAe,CAPN;EAQdC,EAAAA,IAAI,EAAgB,KARN;EASdlgB,EAAAA,QAAQ,EAAY,KATN;EAUdmW,EAAAA,SAAS,EAAW,KAVN;EAWd7B,EAAAA,MAAM,EAAc,CAXN;EAYd6L,EAAAA,SAAS,EAAW,KAZN;EAadC,EAAAA,iBAAiB,EAAG,MAbN;EAcd5L,EAAAA,QAAQ,EAAY,cAdN;EAed6L,EAAAA,QAAQ,EAAY,IAfN;EAgBdxB,EAAAA,UAAU,EAAU,IAhBN;EAiBdD,EAAAA,SAAS,EAAWzC;EAjBN,CAAhB;EAoBA,IAAMoE,UAAU,GAAG;EACjB7c,EAAAA,IAAI,EAAG,MADU;EAEjB8c,EAAAA,GAAG,EAAI;EAFU,CAAnB;EAKA,IAAMrd,OAAK,GAAG;EACZoM,EAAAA,IAAI,WAAgBzM,WADR;EAEZ0M,EAAAA,MAAM,aAAgB1M,WAFV;EAGZY,EAAAA,IAAI,WAAgBZ,WAHR;EAIZwM,EAAAA,KAAK,YAAgBxM,WAJT;EAKZ2d,EAAAA,QAAQ,eAAgB3d,WALZ;EAMZmQ,EAAAA,KAAK,YAAgBnQ,WANT;EAOZqU,EAAAA,OAAO,cAAgBrU,WAPX;EAQZ4d,EAAAA,QAAQ,eAAgB5d,WARZ;EASZoF,EAAAA,UAAU,iBAAgBpF,WATd;EAUZqF,EAAAA,UAAU,iBAAgBrF;EAVd,CAAd;EAaA,IAAMS,WAAS,GAAG;EAChBE,EAAAA,IAAI,EAAG,MADS;EAEhBC,EAAAA,IAAI,EAAG;EAFS,CAAlB;EAKA,IAAMT,UAAQ,GAAG;EACf0d,EAAAA,OAAO,EAAS,UADD;EAEfC,EAAAA,aAAa,EAAG,gBAFD;EAGfC,EAAAA,KAAK,EAAW;EAHD,CAAjB;EAMA,IAAMC,OAAO,GAAG;EACdC,EAAAA,KAAK,EAAI,OADK;EAEdrb,EAAAA,KAAK,EAAI,OAFK;EAGduN,EAAAA,KAAK,EAAI,OAHK;EAId+N,EAAAA,MAAM,EAAG;EAIX;;;;;;EARgB,CAAhB;;MAcMC;;;EACJ,mBAAYlhB,OAAZ,EAAqBwB,MAArB,EAA6B;EAC3B;;;;EAIA,QAAI,OAAO+T,MAAP,KAAkB,WAAtB,EAAmC;EACjC,YAAM,IAAIxG,SAAJ,CAAc,kEAAd,CAAN;EACD,KAP0B;;;EAU3B,SAAKoS,UAAL,GAAsB,IAAtB;EACA,SAAKC,QAAL,GAAsB,CAAtB;EACA,SAAKC,WAAL,GAAsB,EAAtB;EACA,SAAKC,cAAL,GAAsB,EAAtB;EACA,SAAKzM,OAAL,GAAsB,IAAtB,CAd2B;;EAiB3B,SAAK7U,OAAL,GAAeA,OAAf;EACA,SAAKwB,MAAL,GAAe,KAAK0I,UAAL,CAAgB1I,MAAhB,CAAf;EACA,SAAK+f,GAAL,GAAe,IAAf;;EAEA,SAAKC,aAAL;EACD;;;;;EAgCD;WAEAC,SAAA,kBAAS;EACP,SAAKN,UAAL,GAAkB,IAAlB;EACD;;WAEDO,UAAA,mBAAU;EACR,SAAKP,UAAL,GAAkB,KAAlB;EACD;;WAEDQ,gBAAA,yBAAgB;EACd,SAAKR,UAAL,GAAkB,CAAC,KAAKA,UAAxB;EACD;;WAEDlb,SAAA,gBAAO5H,KAAP,EAAc;EACZ,QAAI,CAAC,KAAK8iB,UAAV,EAAsB;EACpB;EACD;;EAED,QAAI9iB,KAAJ,EAAW;EACT,UAAMujB,OAAO,GAAG,KAAK3L,WAAL,CAAiBnT,QAAjC;EACA,UAAIgU,OAAO,GAAGxY,CAAC,CAACD,KAAK,CAACkU,aAAP,CAAD,CAAuBrN,IAAvB,CAA4B0c,OAA5B,CAAd;;EAEA,UAAI,CAAC9K,OAAL,EAAc;EACZA,QAAAA,OAAO,GAAG,IAAI,KAAKb,WAAT,CACR5X,KAAK,CAACkU,aADE,EAER,KAAKsP,kBAAL,EAFQ,CAAV;EAIAvjB,QAAAA,CAAC,CAACD,KAAK,CAACkU,aAAP,CAAD,CAAuBrN,IAAvB,CAA4B0c,OAA5B,EAAqC9K,OAArC;EACD;;EAEDA,MAAAA,OAAO,CAACwK,cAAR,CAAuBQ,KAAvB,GAA+B,CAAChL,OAAO,CAACwK,cAAR,CAAuBQ,KAAvD;;EAEA,UAAIhL,OAAO,CAACiL,oBAAR,EAAJ,EAAoC;EAClCjL,QAAAA,OAAO,CAACkL,MAAR,CAAe,IAAf,EAAqBlL,OAArB;EACD,OAFD,MAEO;EACLA,QAAAA,OAAO,CAACmL,MAAR,CAAe,IAAf,EAAqBnL,OAArB;EACD;EACF,KAnBD,MAmBO;EACL,UAAIxY,CAAC,CAAC,KAAK4jB,aAAL,EAAD,CAAD,CAAwBvd,QAAxB,CAAiCnB,WAAS,CAACG,IAA3C,CAAJ,EAAsD;EACpD,aAAKse,MAAL,CAAY,IAAZ,EAAkB,IAAlB;;EACA;EACD;;EAED,WAAKD,MAAL,CAAY,IAAZ,EAAkB,IAAlB;EACD;EACF;;WAED3d,UAAA,mBAAU;EACRoI,IAAAA,YAAY,CAAC,KAAK2U,QAAN,CAAZ;EAEA9iB,IAAAA,CAAC,CAACgG,UAAF,CAAa,KAAKtE,OAAlB,EAA2B,KAAKiW,WAAL,CAAiBnT,QAA5C;EAEAxE,IAAAA,CAAC,CAAC,KAAK0B,OAAN,CAAD,CAAgB4L,GAAhB,CAAoB,KAAKqK,WAAL,CAAiBlT,SAArC;EACAzE,IAAAA,CAAC,CAAC,KAAK0B,OAAN,CAAD,CAAgBwE,OAAhB,CAAwB,QAAxB,EAAkCoH,GAAlC,CAAsC,eAAtC;;EAEA,QAAI,KAAK2V,GAAT,EAAc;EACZjjB,MAAAA,CAAC,CAAC,KAAKijB,GAAN,CAAD,CAAYzc,MAAZ;EACD;;EAED,SAAKqc,UAAL,GAAsB,IAAtB;EACA,SAAKC,QAAL,GAAsB,IAAtB;EACA,SAAKC,WAAL,GAAsB,IAAtB;EACA,SAAKC,cAAL,GAAsB,IAAtB;;EACA,QAAI,KAAKzM,OAAL,KAAiB,IAArB,EAA2B;EACzB,WAAKA,OAAL,CAAagB,OAAb;EACD;;EAED,SAAKhB,OAAL,GAAe,IAAf;EACA,SAAK7U,OAAL,GAAe,IAAf;EACA,SAAKwB,MAAL,GAAe,IAAf;EACA,SAAK+f,GAAL,GAAe,IAAf;EACD;;WAEDvQ,OAAA,gBAAO;EAAA;;EACL,QAAI1S,CAAC,CAAC,KAAK0B,OAAN,CAAD,CAAgBS,GAAhB,CAAoB,SAApB,MAAmC,MAAvC,EAA+C;EAC7C,YAAM,IAAI0B,KAAJ,CAAU,qCAAV,CAAN;EACD;;EAED,QAAMmT,SAAS,GAAGhX,CAAC,CAAC8E,KAAF,CAAQ,KAAK6S,WAAL,CAAiB7S,KAAjB,CAAuBO,IAA/B,CAAlB;;EACA,QAAI,KAAKwe,aAAL,MAAwB,KAAKhB,UAAjC,EAA6C;EAC3C7iB,MAAAA,CAAC,CAAC,KAAK0B,OAAN,CAAD,CAAgBiB,OAAhB,CAAwBqU,SAAxB;EAEA,UAAM8M,UAAU,GAAGljB,IAAI,CAACmD,cAAL,CAAoB,KAAKrC,OAAzB,CAAnB;EACA,UAAMqiB,UAAU,GAAG/jB,CAAC,CAACkI,QAAF,CACjB4b,UAAU,KAAK,IAAf,GAAsBA,UAAtB,GAAmC,KAAKpiB,OAAL,CAAasiB,aAAb,CAA2BhgB,eAD7C,EAEjB,KAAKtC,OAFY,CAAnB;;EAKA,UAAIsV,SAAS,CAACnR,kBAAV,MAAkC,CAACke,UAAvC,EAAmD;EACjD;EACD;;EAED,UAAMd,GAAG,GAAK,KAAKW,aAAL,EAAd;EACA,UAAMK,KAAK,GAAGrjB,IAAI,CAACO,MAAL,CAAY,KAAKwW,WAAL,CAAiBrT,IAA7B,CAAd;EAEA2e,MAAAA,GAAG,CAAC3a,YAAJ,CAAiB,IAAjB,EAAuB2b,KAAvB;EACA,WAAKviB,OAAL,CAAa4G,YAAb,CAA0B,kBAA1B,EAA8C2b,KAA9C;EAEA,WAAKC,UAAL;;EAEA,UAAI,KAAKhhB,MAAL,CAAYue,SAAhB,EAA2B;EACzBzhB,QAAAA,CAAC,CAACijB,GAAD,CAAD,CAAOpT,QAAP,CAAgB3K,WAAS,CAACE,IAA1B;EACD;;EAED,UAAM0S,SAAS,GAAI,OAAO,KAAK5U,MAAL,CAAY4U,SAAnB,KAAiC,UAAjC,GACf,KAAK5U,MAAL,CAAY4U,SAAZ,CAAsBtY,IAAtB,CAA2B,IAA3B,EAAiCyjB,GAAjC,EAAsC,KAAKvhB,OAA3C,CADe,GAEf,KAAKwB,MAAL,CAAY4U,SAFhB;;EAIA,UAAMqM,UAAU,GAAG,KAAKC,cAAL,CAAoBtM,SAApB,CAAnB;;EACA,WAAKuM,kBAAL,CAAwBF,UAAxB;;EAEA,UAAMrC,SAAS,GAAG,KAAKwC,aAAL,EAAlB;;EACAtkB,MAAAA,CAAC,CAACijB,GAAD,CAAD,CAAOrc,IAAP,CAAY,KAAK+Q,WAAL,CAAiBnT,QAA7B,EAAuC,IAAvC;;EAEA,UAAI,CAACxE,CAAC,CAACkI,QAAF,CAAW,KAAKxG,OAAL,CAAasiB,aAAb,CAA2BhgB,eAAtC,EAAuD,KAAKif,GAA5D,CAAL,EAAuE;EACrEjjB,QAAAA,CAAC,CAACijB,GAAD,CAAD,CAAOjH,QAAP,CAAgB8F,SAAhB;EACD;;EAED9hB,MAAAA,CAAC,CAAC,KAAK0B,OAAN,CAAD,CAAgBiB,OAAhB,CAAwB,KAAKgV,WAAL,CAAiB7S,KAAjB,CAAuBsd,QAA/C;EAEA,WAAK7L,OAAL,GAAe,IAAIU,MAAJ,CAAW,KAAKvV,OAAhB,EAAyBuhB,GAAzB,EAA8B;EAC3CnL,QAAAA,SAAS,EAAEqM,UADgC;EAE3CjM,QAAAA,SAAS,EAAE;EACTjC,UAAAA,MAAM,EAAE,KAAK8B,UAAL,EADC;EAET7B,UAAAA,IAAI,EAAE;EACJqO,YAAAA,QAAQ,EAAE,KAAKrhB,MAAL,CAAY6e;EADlB,WAFG;EAKTyC,UAAAA,KAAK,EAAE;EACL9iB,YAAAA,OAAO,EAAEkD,UAAQ,CAAC4d;EADb,WALE;EAQTpK,UAAAA,eAAe,EAAE;EACfC,YAAAA,iBAAiB,EAAE,KAAKnV,MAAL,CAAYiT;EADhB;EARR,SAFgC;EAc3CsO,QAAAA,QAAQ,EAAE,kBAAC7d,IAAD,EAAU;EAClB,cAAIA,IAAI,CAAC8d,iBAAL,KAA2B9d,IAAI,CAACkR,SAApC,EAA+C;EAC7C,YAAA,KAAI,CAAC6M,4BAAL,CAAkC/d,IAAlC;EACD;EACF,SAlB0C;EAmB3Cge,QAAAA,QAAQ,EAAE,kBAAChe,IAAD;EAAA,iBAAU,KAAI,CAAC+d,4BAAL,CAAkC/d,IAAlC,CAAV;EAAA;EAnBiC,OAA9B,CAAf;EAsBA5G,MAAAA,CAAC,CAACijB,GAAD,CAAD,CAAOpT,QAAP,CAAgB3K,WAAS,CAACG,IAA1B,EA/D2C;EAkE3C;EACA;EACA;;EACA,UAAI,kBAAkB9D,QAAQ,CAACyC,eAA/B,EAAgD;EAC9ChE,QAAAA,CAAC,CAACuB,QAAQ,CAAC6V,IAAV,CAAD,CAAiBxH,QAAjB,GAA4B5I,EAA5B,CAA+B,WAA/B,EAA4C,IAA5C,EAAkDhH,CAAC,CAACqX,IAApD;EACD;;EAED,UAAMjE,QAAQ,GAAG,SAAXA,QAAW,GAAM;EACrB,YAAI,KAAI,CAAClQ,MAAL,CAAYue,SAAhB,EAA2B;EACzB,UAAA,KAAI,CAACoD,cAAL;EACD;;EACD,YAAMC,cAAc,GAAG,KAAI,CAAC/B,WAA5B;EACA,QAAA,KAAI,CAACA,WAAL,GAAuB,IAAvB;EAEA/iB,QAAAA,CAAC,CAAC,KAAI,CAAC0B,OAAN,CAAD,CAAgBiB,OAAhB,CAAwB,KAAI,CAACgV,WAAL,CAAiB7S,KAAjB,CAAuBmM,KAA/C;;EAEA,YAAI6T,cAAc,KAAK5C,UAAU,CAACC,GAAlC,EAAuC;EACrC,UAAA,KAAI,CAACwB,MAAL,CAAY,IAAZ,EAAkB,KAAlB;EACD;EACF,OAZD;;EAcA,UAAI3jB,CAAC,CAAC,KAAKijB,GAAN,CAAD,CAAY5c,QAAZ,CAAqBnB,WAAS,CAACE,IAA/B,CAAJ,EAA0C;EACxC,YAAMlD,kBAAkB,GAAGtB,IAAI,CAACqB,gCAAL,CAAsC,KAAKghB,GAA3C,CAA3B;EAEAjjB,QAAAA,CAAC,CAAC,KAAKijB,GAAN,CAAD,CACGtiB,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4BkU,QAD5B,EAEGnS,oBAFH,CAEwBiB,kBAFxB;EAGD,OAND,MAMO;EACLkR,QAAAA,QAAQ;EACT;EACF;EACF;;WAEDX,OAAA,cAAKmJ,QAAL,EAAe;EAAA;;EACb,QAAMqH,GAAG,GAAS,KAAKW,aAAL,EAAlB;EACA,QAAMtM,SAAS,GAAGtX,CAAC,CAAC8E,KAAF,CAAQ,KAAK6S,WAAL,CAAiB7S,KAAjB,CAAuBoM,IAA/B,CAAlB;;EACA,QAAMkC,QAAQ,GAAG,SAAXA,QAAW,GAAM;EACrB,UAAI,MAAI,CAAC2P,WAAL,KAAqBb,UAAU,CAAC7c,IAAhC,IAAwC4d,GAAG,CAAC5e,UAAhD,EAA4D;EAC1D4e,QAAAA,GAAG,CAAC5e,UAAJ,CAAesZ,WAAf,CAA2BsF,GAA3B;EACD;;EAED,MAAA,MAAI,CAAC8B,cAAL;;EACA,MAAA,MAAI,CAACrjB,OAAL,CAAayZ,eAAb,CAA6B,kBAA7B;;EACAnb,MAAAA,CAAC,CAAC,MAAI,CAAC0B,OAAN,CAAD,CAAgBiB,OAAhB,CAAwB,MAAI,CAACgV,WAAL,CAAiB7S,KAAjB,CAAuBqM,MAA/C;;EACA,UAAI,MAAI,CAACoF,OAAL,KAAiB,IAArB,EAA2B;EACzB,QAAA,MAAI,CAACA,OAAL,CAAagB,OAAb;EACD;;EAED,UAAIqE,QAAJ,EAAc;EACZA,QAAAA,QAAQ;EACT;EACF,KAfD;;EAiBA5b,IAAAA,CAAC,CAAC,KAAK0B,OAAN,CAAD,CAAgBiB,OAAhB,CAAwB2U,SAAxB;;EAEA,QAAIA,SAAS,CAACzR,kBAAV,EAAJ,EAAoC;EAClC;EACD;;EAED7F,IAAAA,CAAC,CAACijB,GAAD,CAAD,CAAO7c,WAAP,CAAmBlB,WAAS,CAACG,IAA7B,EA1Ba;EA6Bb;;EACA,QAAI,kBAAkB9D,QAAQ,CAACyC,eAA/B,EAAgD;EAC9ChE,MAAAA,CAAC,CAACuB,QAAQ,CAAC6V,IAAV,CAAD,CAAiBxH,QAAjB,GAA4BtC,GAA5B,CAAgC,WAAhC,EAA6C,IAA7C,EAAmDtN,CAAC,CAACqX,IAArD;EACD;;EAED,SAAK2L,cAAL,CAAoBP,OAAO,CAAC7N,KAA5B,IAAqC,KAArC;EACA,SAAKoO,cAAL,CAAoBP,OAAO,CAACpb,KAA5B,IAAqC,KAArC;EACA,SAAK2b,cAAL,CAAoBP,OAAO,CAACC,KAA5B,IAAqC,KAArC;;EAEA,QAAI1iB,CAAC,CAAC,KAAKijB,GAAN,CAAD,CAAY5c,QAAZ,CAAqBnB,WAAS,CAACE,IAA/B,CAAJ,EAA0C;EACxC,UAAMlD,kBAAkB,GAAGtB,IAAI,CAACqB,gCAAL,CAAsCghB,GAAtC,CAA3B;EAEAjjB,MAAAA,CAAC,CAACijB,GAAD,CAAD,CACGtiB,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4BkU,QAD5B,EAEGnS,oBAFH,CAEwBiB,kBAFxB;EAGD,KAND,MAMO;EACLkR,MAAAA,QAAQ;EACT;;EAED,SAAK2P,WAAL,GAAmB,EAAnB;EACD;;WAEDvL,SAAA,kBAAS;EACP,QAAI,KAAKjB,OAAL,KAAiB,IAArB,EAA2B;EACzB,WAAKA,OAAL,CAAakB,cAAb;EACD;EACF;;;WAIDoM,gBAAA,yBAAgB;EACd,WAAOhhB,OAAO,CAAC,KAAKmiB,QAAL,EAAD,CAAd;EACD;;WAEDX,qBAAA,4BAAmBF,UAAnB,EAA+B;EAC7BnkB,IAAAA,CAAC,CAAC,KAAK4jB,aAAL,EAAD,CAAD,CAAwB/T,QAAxB,CAAoCyR,YAApC,SAAoD6C,UAApD;EACD;;WAEDP,gBAAA,yBAAgB;EACd,SAAKX,GAAL,GAAW,KAAKA,GAAL,IAAYjjB,CAAC,CAAC,KAAKkD,MAAL,CAAYwe,QAAb,CAAD,CAAwB,CAAxB,CAAvB;EACA,WAAO,KAAKuB,GAAZ;EACD;;WAEDiB,aAAA,sBAAa;EACX,QAAMjB,GAAG,GAAG,KAAKW,aAAL,EAAZ;EACA,SAAKqB,iBAAL,CAAuBjlB,CAAC,CAACijB,GAAG,CAAC7U,gBAAJ,CAAqBxJ,UAAQ,CAAC2d,aAA9B,CAAD,CAAxB,EAAwE,KAAKyC,QAAL,EAAxE;EACAhlB,IAAAA,CAAC,CAACijB,GAAD,CAAD,CAAO7c,WAAP,CAAsBlB,WAAS,CAACE,IAAhC,SAAwCF,WAAS,CAACG,IAAlD;EACD;;WAED4f,oBAAA,2BAAkBte,QAAlB,EAA4Bue,OAA5B,EAAqC;EACnC,QAAI,OAAOA,OAAP,KAAmB,QAAnB,KAAgCA,OAAO,CAACniB,QAAR,IAAoBmiB,OAAO,CAACtR,MAA5D,CAAJ,EAAyE;EACvE;EACA,UAAI,KAAK1Q,MAAL,CAAY2e,IAAhB,EAAsB;EACpB,YAAI,CAAC7hB,CAAC,CAACklB,OAAD,CAAD,CAAWjf,MAAX,GAAoB/F,EAApB,CAAuByG,QAAvB,CAAL,EAAuC;EACrCA,UAAAA,QAAQ,CAACwe,KAAT,GAAiBC,MAAjB,CAAwBF,OAAxB;EACD;EACF,OAJD,MAIO;EACLve,QAAAA,QAAQ,CAAC0e,IAAT,CAAcrlB,CAAC,CAACklB,OAAD,CAAD,CAAWG,IAAX,EAAd;EACD;;EAED;EACD;;EAED,QAAI,KAAKniB,MAAL,CAAY2e,IAAhB,EAAsB;EACpB,UAAI,KAAK3e,MAAL,CAAY8e,QAAhB,EAA0B;EACxBkD,QAAAA,OAAO,GAAG7E,YAAY,CAAC6E,OAAD,EAAU,KAAKhiB,MAAL,CAAYqd,SAAtB,EAAiC,KAAKrd,MAAL,CAAYsd,UAA7C,CAAtB;EACD;;EAED7Z,MAAAA,QAAQ,CAACkb,IAAT,CAAcqD,OAAd;EACD,KAND,MAMO;EACLve,MAAAA,QAAQ,CAAC0e,IAAT,CAAcH,OAAd;EACD;EACF;;WAEDF,WAAA,oBAAW;EACT,QAAIrD,KAAK,GAAG,KAAKjgB,OAAL,CAAaE,YAAb,CAA0B,qBAA1B,CAAZ;;EAEA,QAAI,CAAC+f,KAAL,EAAY;EACVA,MAAAA,KAAK,GAAG,OAAO,KAAKze,MAAL,CAAYye,KAAnB,KAA6B,UAA7B,GACJ,KAAKze,MAAL,CAAYye,KAAZ,CAAkBniB,IAAlB,CAAuB,KAAKkC,OAA5B,CADI,GAEJ,KAAKwB,MAAL,CAAYye,KAFhB;EAGD;;EAED,WAAOA,KAAP;EACD;;;WAID5J,aAAA,sBAAa;EAAA;;EACX,QAAM9B,MAAM,GAAG,EAAf;;EAEA,QAAI,OAAO,KAAK/S,MAAL,CAAY+S,MAAnB,KAA8B,UAAlC,EAA8C;EAC5CA,MAAAA,MAAM,CAACjV,EAAP,GAAY,UAAC4F,IAAD,EAAU;EACpBA,QAAAA,IAAI,CAACoR,OAAL,qBACKpR,IAAI,CAACoR,OADV,EAEK,MAAI,CAAC9U,MAAL,CAAY+S,MAAZ,CAAmBrP,IAAI,CAACoR,OAAxB,EAAiC,MAAI,CAACtW,OAAtC,KAAkD,EAFvD;EAKA,eAAOkF,IAAP;EACD,OAPD;EAQD,KATD,MASO;EACLqP,MAAAA,MAAM,CAACA,MAAP,GAAgB,KAAK/S,MAAL,CAAY+S,MAA5B;EACD;;EAED,WAAOA,MAAP;EACD;;WAEDqO,gBAAA,yBAAgB;EACd,QAAI,KAAKphB,MAAL,CAAY4e,SAAZ,KAA0B,KAA9B,EAAqC;EACnC,aAAOvgB,QAAQ,CAAC6V,IAAhB;EACD;;EAED,QAAIxW,IAAI,CAACkC,SAAL,CAAe,KAAKI,MAAL,CAAY4e,SAA3B,CAAJ,EAA2C;EACzC,aAAO9hB,CAAC,CAAC,KAAKkD,MAAL,CAAY4e,SAAb,CAAR;EACD;;EAED,WAAO9hB,CAAC,CAACuB,QAAD,CAAD,CAAY+jB,IAAZ,CAAiB,KAAKpiB,MAAL,CAAY4e,SAA7B,CAAP;EACD;;WAEDsC,iBAAA,wBAAetM,SAAf,EAA0B;EACxB,WAAOpC,eAAa,CAACoC,SAAS,CAAChU,WAAV,EAAD,CAApB;EACD;;WAEDof,gBAAA,yBAAgB;EAAA;;EACd,QAAMqC,QAAQ,GAAG,KAAKriB,MAAL,CAAYP,OAAZ,CAAoBH,KAApB,CAA0B,GAA1B,CAAjB;EAEA+iB,IAAAA,QAAQ,CAAC1K,OAAT,CAAiB,UAAClY,OAAD,EAAa;EAC5B,UAAIA,OAAO,KAAK,OAAhB,EAAyB;EACvB3C,QAAAA,CAAC,CAAC,MAAI,CAAC0B,OAAN,CAAD,CAAgBsF,EAAhB,CACE,MAAI,CAAC2Q,WAAL,CAAiB7S,KAAjB,CAAuB8P,KADzB,EAEE,MAAI,CAAC1R,MAAL,CAAYvB,QAFd,EAGE,UAAC5B,KAAD;EAAA,iBAAW,MAAI,CAAC4H,MAAL,CAAY5H,KAAZ,CAAX;EAAA,SAHF;EAKD,OAND,MAMO,IAAI4C,OAAO,KAAK8f,OAAO,CAACE,MAAxB,EAAgC;EACrC,YAAM6C,OAAO,GAAG7iB,OAAO,KAAK8f,OAAO,CAACC,KAApB,GACZ,MAAI,CAAC/K,WAAL,CAAiB7S,KAAjB,CAAuB+E,UADX,GAEZ,MAAI,CAAC8N,WAAL,CAAiB7S,KAAjB,CAAuBgU,OAF3B;EAGA,YAAM2M,QAAQ,GAAG9iB,OAAO,KAAK8f,OAAO,CAACC,KAApB,GACb,MAAI,CAAC/K,WAAL,CAAiB7S,KAAjB,CAAuBgF,UADV,GAEb,MAAI,CAAC6N,WAAL,CAAiB7S,KAAjB,CAAuBud,QAF3B;EAIAriB,QAAAA,CAAC,CAAC,MAAI,CAAC0B,OAAN,CAAD,CACGsF,EADH,CAEIwe,OAFJ,EAGI,MAAI,CAACtiB,MAAL,CAAYvB,QAHhB,EAII,UAAC5B,KAAD;EAAA,iBAAW,MAAI,CAAC2jB,MAAL,CAAY3jB,KAAZ,CAAX;EAAA,SAJJ,EAMGiH,EANH,CAOIye,QAPJ,EAQI,MAAI,CAACviB,MAAL,CAAYvB,QARhB,EASI,UAAC5B,KAAD;EAAA,iBAAW,MAAI,CAAC4jB,MAAL,CAAY5jB,KAAZ,CAAX;EAAA,SATJ;EAWD;EACF,KA3BD;EA6BAC,IAAAA,CAAC,CAAC,KAAK0B,OAAN,CAAD,CAAgBwE,OAAhB,CAAwB,QAAxB,EAAkCc,EAAlC,CACE,eADF,EAEE,YAAM;EACJ,UAAI,MAAI,CAACtF,OAAT,EAAkB;EAChB,QAAA,MAAI,CAAC+Q,IAAL;EACD;EACF,KANH;;EASA,QAAI,KAAKvP,MAAL,CAAYvB,QAAhB,EAA0B;EACxB,WAAKuB,MAAL,qBACK,KAAKA,MADV;EAEEP,QAAAA,OAAO,EAAE,QAFX;EAGEhB,QAAAA,QAAQ,EAAE;EAHZ;EAKD,KAND,MAMO;EACL,WAAK+jB,SAAL;EACD;EACF;;WAEDA,YAAA,qBAAY;EACV,QAAMC,SAAS,GAAG,OAAO,KAAKjkB,OAAL,CAAaE,YAAb,CAA0B,qBAA1B,CAAzB;;EAEA,QAAI,KAAKF,OAAL,CAAaE,YAAb,CAA0B,OAA1B,KAAsC+jB,SAAS,KAAK,QAAxD,EAAkE;EAChE,WAAKjkB,OAAL,CAAa4G,YAAb,CACE,qBADF,EAEE,KAAK5G,OAAL,CAAaE,YAAb,CAA0B,OAA1B,KAAsC,EAFxC;EAKA,WAAKF,OAAL,CAAa4G,YAAb,CAA0B,OAA1B,EAAmC,EAAnC;EACD;EACF;;WAEDob,SAAA,gBAAO3jB,KAAP,EAAcyY,OAAd,EAAuB;EACrB,QAAM8K,OAAO,GAAG,KAAK3L,WAAL,CAAiBnT,QAAjC;EACAgU,IAAAA,OAAO,GAAGA,OAAO,IAAIxY,CAAC,CAACD,KAAK,CAACkU,aAAP,CAAD,CAAuBrN,IAAvB,CAA4B0c,OAA5B,CAArB;;EAEA,QAAI,CAAC9K,OAAL,EAAc;EACZA,MAAAA,OAAO,GAAG,IAAI,KAAKb,WAAT,CACR5X,KAAK,CAACkU,aADE,EAER,KAAKsP,kBAAL,EAFQ,CAAV;EAIAvjB,MAAAA,CAAC,CAACD,KAAK,CAACkU,aAAP,CAAD,CAAuBrN,IAAvB,CAA4B0c,OAA5B,EAAqC9K,OAArC;EACD;;EAED,QAAIzY,KAAJ,EAAW;EACTyY,MAAAA,OAAO,CAACwK,cAAR,CACEjjB,KAAK,CAACgI,IAAN,KAAe,SAAf,GAA2B0a,OAAO,CAACpb,KAAnC,GAA2Cob,OAAO,CAACC,KADrD,IAEI,IAFJ;EAGD;;EAED,QAAI1iB,CAAC,CAACwY,OAAO,CAACoL,aAAR,EAAD,CAAD,CAA2Bvd,QAA3B,CAAoCnB,WAAS,CAACG,IAA9C,KAAuDmT,OAAO,CAACuK,WAAR,KAAwBb,UAAU,CAAC7c,IAA9F,EAAoG;EAClGmT,MAAAA,OAAO,CAACuK,WAAR,GAAsBb,UAAU,CAAC7c,IAAjC;EACA;EACD;;EAED8I,IAAAA,YAAY,CAACqK,OAAO,CAACsK,QAAT,CAAZ;EAEAtK,IAAAA,OAAO,CAACuK,WAAR,GAAsBb,UAAU,CAAC7c,IAAjC;;EAEA,QAAI,CAACmT,OAAO,CAACtV,MAAR,CAAe0e,KAAhB,IAAyB,CAACpJ,OAAO,CAACtV,MAAR,CAAe0e,KAAf,CAAqBlP,IAAnD,EAAyD;EACvD8F,MAAAA,OAAO,CAAC9F,IAAR;EACA;EACD;;EAED8F,IAAAA,OAAO,CAACsK,QAAR,GAAmBjiB,UAAU,CAAC,YAAM;EAClC,UAAI2X,OAAO,CAACuK,WAAR,KAAwBb,UAAU,CAAC7c,IAAvC,EAA6C;EAC3CmT,QAAAA,OAAO,CAAC9F,IAAR;EACD;EACF,KAJ4B,EAI1B8F,OAAO,CAACtV,MAAR,CAAe0e,KAAf,CAAqBlP,IAJK,CAA7B;EAKD;;WAEDiR,SAAA,gBAAO5jB,KAAP,EAAcyY,OAAd,EAAuB;EACrB,QAAM8K,OAAO,GAAG,KAAK3L,WAAL,CAAiBnT,QAAjC;EACAgU,IAAAA,OAAO,GAAGA,OAAO,IAAIxY,CAAC,CAACD,KAAK,CAACkU,aAAP,CAAD,CAAuBrN,IAAvB,CAA4B0c,OAA5B,CAArB;;EAEA,QAAI,CAAC9K,OAAL,EAAc;EACZA,MAAAA,OAAO,GAAG,IAAI,KAAKb,WAAT,CACR5X,KAAK,CAACkU,aADE,EAER,KAAKsP,kBAAL,EAFQ,CAAV;EAIAvjB,MAAAA,CAAC,CAACD,KAAK,CAACkU,aAAP,CAAD,CAAuBrN,IAAvB,CAA4B0c,OAA5B,EAAqC9K,OAArC;EACD;;EAED,QAAIzY,KAAJ,EAAW;EACTyY,MAAAA,OAAO,CAACwK,cAAR,CACEjjB,KAAK,CAACgI,IAAN,KAAe,UAAf,GAA4B0a,OAAO,CAACpb,KAApC,GAA4Cob,OAAO,CAACC,KADtD,IAEI,KAFJ;EAGD;;EAED,QAAIlK,OAAO,CAACiL,oBAAR,EAAJ,EAAoC;EAClC;EACD;;EAEDtV,IAAAA,YAAY,CAACqK,OAAO,CAACsK,QAAT,CAAZ;EAEAtK,IAAAA,OAAO,CAACuK,WAAR,GAAsBb,UAAU,CAACC,GAAjC;;EAEA,QAAI,CAAC3J,OAAO,CAACtV,MAAR,CAAe0e,KAAhB,IAAyB,CAACpJ,OAAO,CAACtV,MAAR,CAAe0e,KAAf,CAAqBnP,IAAnD,EAAyD;EACvD+F,MAAAA,OAAO,CAAC/F,IAAR;EACA;EACD;;EAED+F,IAAAA,OAAO,CAACsK,QAAR,GAAmBjiB,UAAU,CAAC,YAAM;EAClC,UAAI2X,OAAO,CAACuK,WAAR,KAAwBb,UAAU,CAACC,GAAvC,EAA4C;EAC1C3J,QAAAA,OAAO,CAAC/F,IAAR;EACD;EACF,KAJ4B,EAI1B+F,OAAO,CAACtV,MAAR,CAAe0e,KAAf,CAAqBnP,IAJK,CAA7B;EAKD;;WAEDgR,uBAAA,gCAAuB;EACrB,SAAK,IAAM9gB,OAAX,IAAsB,KAAKqgB,cAA3B,EAA2C;EACzC,UAAI,KAAKA,cAAL,CAAoBrgB,OAApB,CAAJ,EAAkC;EAChC,eAAO,IAAP;EACD;EACF;;EAED,WAAO,KAAP;EACD;;WAEDiJ,aAAA,oBAAW1I,MAAX,EAAmB;EACjB,QAAM0iB,cAAc,GAAG5lB,CAAC,CAAC,KAAK0B,OAAN,CAAD,CAAgBkF,IAAhB,EAAvB;EAEAvD,IAAAA,MAAM,CAACyd,IAAP,CAAY8E,cAAZ,EACG/K,OADH,CACW,UAACgL,QAAD,EAAc;EACrB,UAAIrE,qBAAqB,CAAC9S,OAAtB,CAA8BmX,QAA9B,MAA4C,CAAC,CAAjD,EAAoD;EAClD,eAAOD,cAAc,CAACC,QAAD,CAArB;EACD;EACF,KALH;EAOA3iB,IAAAA,MAAM,qBACD,KAAKyU,WAAL,CAAiB9O,OADhB,EAED+c,cAFC,EAGD,OAAO1iB,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAH/C,CAAN;;EAMA,QAAI,OAAOA,MAAM,CAAC0e,KAAd,KAAwB,QAA5B,EAAsC;EACpC1e,MAAAA,MAAM,CAAC0e,KAAP,GAAe;EACblP,QAAAA,IAAI,EAAExP,MAAM,CAAC0e,KADA;EAEbnP,QAAAA,IAAI,EAAEvP,MAAM,CAAC0e;EAFA,OAAf;EAID;;EAED,QAAI,OAAO1e,MAAM,CAACye,KAAd,KAAwB,QAA5B,EAAsC;EACpCze,MAAAA,MAAM,CAACye,KAAP,GAAeze,MAAM,CAACye,KAAP,CAAapiB,QAAb,EAAf;EACD;;EAED,QAAI,OAAO2D,MAAM,CAACgiB,OAAd,KAA0B,QAA9B,EAAwC;EACtChiB,MAAAA,MAAM,CAACgiB,OAAP,GAAiBhiB,MAAM,CAACgiB,OAAP,CAAe3lB,QAAf,EAAjB;EACD;;EAEDqB,IAAAA,IAAI,CAACoC,eAAL,CACEsB,MADF,EAEEpB,MAFF,EAGE,KAAKyU,WAAL,CAAiBvO,WAHnB;;EAMA,QAAIlG,MAAM,CAAC8e,QAAX,EAAqB;EACnB9e,MAAAA,MAAM,CAACwe,QAAP,GAAkBrB,YAAY,CAACnd,MAAM,CAACwe,QAAR,EAAkBxe,MAAM,CAACqd,SAAzB,EAAoCrd,MAAM,CAACsd,UAA3C,CAA9B;EACD;;EAED,WAAOtd,MAAP;EACD;;WAEDqgB,qBAAA,8BAAqB;EACnB,QAAMrgB,MAAM,GAAG,EAAf;;EAEA,QAAI,KAAKA,MAAT,EAAiB;EACf,WAAK,IAAM4iB,GAAX,IAAkB,KAAK5iB,MAAvB,EAA+B;EAC7B,YAAI,KAAKyU,WAAL,CAAiB9O,OAAjB,CAAyBid,GAAzB,MAAkC,KAAK5iB,MAAL,CAAY4iB,GAAZ,CAAtC,EAAwD;EACtD5iB,UAAAA,MAAM,CAAC4iB,GAAD,CAAN,GAAc,KAAK5iB,MAAL,CAAY4iB,GAAZ,CAAd;EACD;EACF;EACF;;EAED,WAAO5iB,MAAP;EACD;;WAED6hB,iBAAA,0BAAiB;EACf,QAAMgB,IAAI,GAAG/lB,CAAC,CAAC,KAAK4jB,aAAL,EAAD,CAAd;EACA,QAAMoC,QAAQ,GAAGD,IAAI,CAAC7S,IAAL,CAAU,OAAV,EAAmBzT,KAAnB,CAAyB8hB,kBAAzB,CAAjB;;EACA,QAAIyE,QAAQ,KAAK,IAAb,IAAqBA,QAAQ,CAAC5Y,MAAlC,EAA0C;EACxC2Y,MAAAA,IAAI,CAAC3f,WAAL,CAAiB4f,QAAQ,CAACC,IAAT,CAAc,EAAd,CAAjB;EACD;EACF;;WAEDtB,+BAAA,sCAA6BuB,UAA7B,EAAyC;EACvC,QAAMC,cAAc,GAAGD,UAAU,CAACE,QAAlC;EACA,SAAKnD,GAAL,GAAWkD,cAAc,CAACE,MAA1B;;EACA,SAAKtB,cAAL;;EACA,SAAKV,kBAAL,CAAwB,KAAKD,cAAL,CAAoB8B,UAAU,CAACpO,SAA/B,CAAxB;EACD;;WAED+M,iBAAA,0BAAiB;EACf,QAAM5B,GAAG,GAAG,KAAKW,aAAL,EAAZ;EACA,QAAM0C,mBAAmB,GAAG,KAAKpjB,MAAL,CAAYue,SAAxC;;EAEA,QAAIwB,GAAG,CAACrhB,YAAJ,CAAiB,aAAjB,MAAoC,IAAxC,EAA8C;EAC5C;EACD;;EAED5B,IAAAA,CAAC,CAACijB,GAAD,CAAD,CAAO7c,WAAP,CAAmBlB,WAAS,CAACE,IAA7B;EACA,SAAKlC,MAAL,CAAYue,SAAZ,GAAwB,KAAxB;EACA,SAAKhP,IAAL;EACA,SAAKC,IAAL;EACA,SAAKxP,MAAL,CAAYue,SAAZ,GAAwB6E,mBAAxB;EACD;;;YAIM7f,mBAAP,0BAAwBvD,MAAxB,EAAgC;EAC9B,WAAO,KAAKwD,IAAL,CAAU,YAAY;EAC3B,UAAIE,IAAI,GAAG5G,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,CAAX;;EACA,UAAMmH,OAAO,GAAG,OAAOzI,MAAP,KAAkB,QAAlB,IAA8BA,MAA9C;;EAEA,UAAI,CAAC0D,IAAD,IAAS,eAAehD,IAAf,CAAoBV,MAApB,CAAb,EAA0C;EACxC;EACD;;EAED,UAAI,CAAC0D,IAAL,EAAW;EACTA,QAAAA,IAAI,GAAG,IAAIgc,OAAJ,CAAY,IAAZ,EAAkBjX,OAAlB,CAAP;EACA3L,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,EAAuBoC,IAAvB;EACD;;EAED,UAAI,OAAO1D,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAO0D,IAAI,CAAC1D,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIuN,SAAJ,wBAAkCvN,MAAlC,QAAN;EACD;;EACD0D,QAAAA,IAAI,CAAC1D,MAAD,CAAJ;EACD;EACF,KAnBM,CAAP;EAoBD;;;;0BA9mBoB;EACnB,aAAOqB,SAAP;EACD;;;0BAEoB;EACnB,aAAOsE,SAAP;EACD;;;0BAEiB;EAChB,aAAOvE,MAAP;EACD;;;0BAEqB;EACpB,aAAOE,UAAP;EACD;;;0BAEkB;EACjB,aAAOM,OAAP;EACD;;;0BAEsB;EACrB,aAAOL,WAAP;EACD;;;0BAEwB;EACvB,aAAO2E,aAAP;EACD;;;;;EAulBH;;;;;;;EAMApJ,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAase,OAAO,CAACnc,gBAArB;EACAzG,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW2C,WAAX,GAAyB2b,OAAzB;;EACA5iB,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW4C,UAAX,GAAwB,YAAM;EAC5BlH,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaK,oBAAb;EACA,SAAOie,OAAO,CAACnc,gBAAf;EACD,CAHD;;ECjwBA;;;;;;EAMA,IAAMnC,MAAI,GAAkB,SAA5B;EACA,IAAMC,SAAO,GAAe,OAA5B;EACA,IAAMC,UAAQ,GAAc,YAA5B;EACA,IAAMC,WAAS,SAAiBD,UAAhC;EACA,IAAMG,oBAAkB,GAAI3E,CAAC,CAACgB,EAAF,CAAKsD,MAAL,CAA5B;EACA,IAAMgd,cAAY,GAAU,YAA5B;EACA,IAAMC,oBAAkB,GAAI,IAAI5d,MAAJ,aAAqB2d,cAArB,WAAyC,GAAzC,CAA5B;;EAEA,IAAMzY,SAAO,qBACR+Z,OAAO,CAAC/Z,OADA;EAEXiP,EAAAA,SAAS,EAAG,OAFD;EAGXnV,EAAAA,OAAO,EAAK,OAHD;EAIXuiB,EAAAA,OAAO,EAAK,EAJD;EAKXxD,EAAAA,QAAQ,EAAI,yCACA,2BADA,GAEA,kCAFA,GAGA;EARD,EAAb;;EAWA,IAAMtY,aAAW,qBACZwZ,OAAO,CAACxZ,WADI;EAEf8b,EAAAA,OAAO,EAAG;EAFK,EAAjB;;EAKA,IAAMhgB,WAAS,GAAG;EAChBE,EAAAA,IAAI,EAAG,MADS;EAEhBC,EAAAA,IAAI,EAAG;EAFS,CAAlB;EAKA,IAAMT,UAAQ,GAAG;EACf2hB,EAAAA,KAAK,EAAK,iBADK;EAEfC,EAAAA,OAAO,EAAG;EAFK,CAAjB;EAKA,IAAM1hB,OAAK,GAAG;EACZoM,EAAAA,IAAI,WAAgBzM,WADR;EAEZ0M,EAAAA,MAAM,aAAgB1M,WAFV;EAGZY,EAAAA,IAAI,WAAgBZ,WAHR;EAIZwM,EAAAA,KAAK,YAAgBxM,WAJT;EAKZ2d,EAAAA,QAAQ,eAAgB3d,WALZ;EAMZmQ,EAAAA,KAAK,YAAgBnQ,WANT;EAOZqU,EAAAA,OAAO,cAAgBrU,WAPX;EAQZ4d,EAAAA,QAAQ,eAAgB5d,WARZ;EASZoF,EAAAA,UAAU,iBAAgBpF,WATd;EAUZqF,EAAAA,UAAU,iBAAgBrF;EAG5B;;;;;;EAbc,CAAd;;MAmBMgiB;;;;;;;;;;;EA+BJ;WAEA5C,gBAAA,yBAAgB;EACd,WAAO,KAAKmB,QAAL,MAAmB,KAAK0B,WAAL,EAA1B;EACD;;WAEDrC,qBAAA,4BAAmBF,UAAnB,EAA+B;EAC7BnkB,IAAAA,CAAC,CAAC,KAAK4jB,aAAL,EAAD,CAAD,CAAwB/T,QAAxB,CAAoCyR,cAApC,SAAoD6C,UAApD;EACD;;WAEDP,gBAAA,yBAAgB;EACd,SAAKX,GAAL,GAAW,KAAKA,GAAL,IAAYjjB,CAAC,CAAC,KAAKkD,MAAL,CAAYwe,QAAb,CAAD,CAAwB,CAAxB,CAAvB;EACA,WAAO,KAAKuB,GAAZ;EACD;;WAEDiB,aAAA,sBAAa;EACX,QAAM6B,IAAI,GAAG/lB,CAAC,CAAC,KAAK4jB,aAAL,EAAD,CAAd,CADW;;EAIX,SAAKqB,iBAAL,CAAuBc,IAAI,CAACT,IAAL,CAAU1gB,UAAQ,CAAC2hB,KAAnB,CAAvB,EAAkD,KAAKvB,QAAL,EAAlD;;EACA,QAAIE,OAAO,GAAG,KAAKwB,WAAL,EAAd;;EACA,QAAI,OAAOxB,OAAP,KAAmB,UAAvB,EAAmC;EACjCA,MAAAA,OAAO,GAAGA,OAAO,CAAC1lB,IAAR,CAAa,KAAKkC,OAAlB,CAAV;EACD;;EACD,SAAKujB,iBAAL,CAAuBc,IAAI,CAACT,IAAL,CAAU1gB,UAAQ,CAAC4hB,OAAnB,CAAvB,EAAoDtB,OAApD;EAEAa,IAAAA,IAAI,CAAC3f,WAAL,CAAoBlB,WAAS,CAACE,IAA9B,SAAsCF,WAAS,CAACG,IAAhD;EACD;;;WAIDqhB,cAAA,uBAAc;EACZ,WAAO,KAAKhlB,OAAL,CAAaE,YAAb,CAA0B,cAA1B,KACL,KAAKsB,MAAL,CAAYgiB,OADd;EAED;;WAEDH,iBAAA,0BAAiB;EACf,QAAMgB,IAAI,GAAG/lB,CAAC,CAAC,KAAK4jB,aAAL,EAAD,CAAd;EACA,QAAMoC,QAAQ,GAAGD,IAAI,CAAC7S,IAAL,CAAU,OAAV,EAAmBzT,KAAnB,CAAyB8hB,oBAAzB,CAAjB;;EACA,QAAIyE,QAAQ,KAAK,IAAb,IAAqBA,QAAQ,CAAC5Y,MAAT,GAAkB,CAA3C,EAA8C;EAC5C2Y,MAAAA,IAAI,CAAC3f,WAAL,CAAiB4f,QAAQ,CAACC,IAAT,CAAc,EAAd,CAAjB;EACD;EACF;;;YAIMxf,mBAAP,0BAAwBvD,MAAxB,EAAgC;EAC9B,WAAO,KAAKwD,IAAL,CAAU,YAAY;EAC3B,UAAIE,IAAI,GAAG5G,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,CAAX;;EACA,UAAMmH,OAAO,GAAG,OAAOzI,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,IAAtD;;EAEA,UAAI,CAAC0D,IAAD,IAAS,eAAehD,IAAf,CAAoBV,MAApB,CAAb,EAA0C;EACxC;EACD;;EAED,UAAI,CAAC0D,IAAL,EAAW;EACTA,QAAAA,IAAI,GAAG,IAAI6f,OAAJ,CAAY,IAAZ,EAAkB9a,OAAlB,CAAP;EACA3L,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,EAAuBoC,IAAvB;EACD;;EAED,UAAI,OAAO1D,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAO0D,IAAI,CAAC1D,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIuN,SAAJ,wBAAkCvN,MAAlC,QAAN;EACD;;EACD0D,QAAAA,IAAI,CAAC1D,MAAD,CAAJ;EACD;EACF,KAnBM,CAAP;EAoBD;;;;EAjGD;0BAEqB;EACnB,aAAOqB,SAAP;EACD;;;0BAEoB;EACnB,aAAOsE,SAAP;EACD;;;0BAEiB;EAChB,aAAOvE,MAAP;EACD;;;0BAEqB;EACpB,aAAOE,UAAP;EACD;;;0BAEkB;EACjB,aAAOM,OAAP;EACD;;;0BAEsB;EACrB,aAAOL,WAAP;EACD;;;0BAEwB;EACvB,aAAO2E,aAAP;EACD;;;;IA7BmBwZ;EAqGtB;;;;;;;EAMA5iB,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAamiB,OAAO,CAAChgB,gBAArB;EACAzG,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW2C,WAAX,GAAyBwf,OAAzB;;EACAzmB,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW4C,UAAX,GAAwB,YAAM;EAC5BlH,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaK,oBAAb;EACA,SAAO8hB,OAAO,CAAChgB,gBAAf;EACD,CAHD;;ECxKA;;;;;;EAMA,IAAMnC,MAAI,GAAiB,WAA3B;EACA,IAAMC,SAAO,GAAc,OAA3B;EACA,IAAMC,UAAQ,GAAa,cAA3B;EACA,IAAMC,WAAS,SAAgBD,UAA/B;EACA,IAAME,cAAY,GAAS,WAA3B;EACA,IAAMC,oBAAkB,GAAG3E,CAAC,CAACgB,EAAF,CAAKsD,MAAL,CAA3B;EAEA,IAAMuE,SAAO,GAAG;EACdoN,EAAAA,MAAM,EAAG,EADK;EAEd0Q,EAAAA,MAAM,EAAG,MAFK;EAGd1mB,EAAAA,MAAM,EAAG;EAHK,CAAhB;EAMA,IAAMmJ,aAAW,GAAG;EAClB6M,EAAAA,MAAM,EAAG,QADS;EAElB0Q,EAAAA,MAAM,EAAG,QAFS;EAGlB1mB,EAAAA,MAAM,EAAG;EAHS,CAApB;EAMA,IAAM6E,OAAK,GAAG;EACZ8hB,EAAAA,QAAQ,eAAmBniB,WADf;EAEZoiB,EAAAA,MAAM,aAAmBpiB,WAFb;EAGZ4F,EAAAA,aAAa,WAAU5F,WAAV,GAAsBC;EAHvB,CAAd;EAMA,IAAMQ,WAAS,GAAG;EAChB4hB,EAAAA,aAAa,EAAG,eADA;EAEhBC,EAAAA,aAAa,EAAG,eAFA;EAGhB5f,EAAAA,MAAM,EAAU;EAHA,CAAlB;EAMA,IAAMvC,UAAQ,GAAG;EACfoiB,EAAAA,QAAQ,EAAU,qBADH;EAEf7f,EAAAA,MAAM,EAAY,SAFH;EAGf8f,EAAAA,cAAc,EAAI,mBAHH;EAIfC,EAAAA,SAAS,EAAS,WAJH;EAKfC,EAAAA,SAAS,EAAS,WALH;EAMfC,EAAAA,UAAU,EAAQ,kBANH;EAOfC,EAAAA,QAAQ,EAAU,WAPH;EAQfC,EAAAA,cAAc,EAAI,gBARH;EASfC,EAAAA,eAAe,EAAG;EATH,CAAjB;EAYA,IAAMC,YAAY,GAAG;EACnBC,EAAAA,MAAM,EAAK,QADQ;EAEnBC,EAAAA,QAAQ,EAAG;EAGb;;;;;;EALqB,CAArB;;MAWMC;;;EACJ,qBAAYjmB,OAAZ,EAAqBwB,MAArB,EAA6B;EAAA;;EAC3B,SAAKqC,QAAL,GAAsB7D,OAAtB;EACA,SAAKkmB,cAAL,GAAsBlmB,OAAO,CAAC6M,OAAR,KAAoB,MAApB,GAA6BrC,MAA7B,GAAsCxK,OAA5D;EACA,SAAKiK,OAAL,GAAsB,KAAKC,UAAL,CAAgB1I,MAAhB,CAAtB;EACA,SAAKkP,SAAL,GAAyB,KAAKzG,OAAL,CAAa1L,MAAhB,SAA0B2E,UAAQ,CAACsiB,SAAnC,UACG,KAAKvb,OAAL,CAAa1L,MADhB,SAC0B2E,UAAQ,CAACwiB,UADnC,WAEG,KAAKzb,OAAL,CAAa1L,MAFhB,SAE0B2E,UAAQ,CAAC0iB,cAFnC,CAAtB;EAGA,SAAKO,QAAL,GAAsB,EAAtB;EACA,SAAKC,QAAL,GAAsB,EAAtB;EACA,SAAKC,aAAL,GAAsB,IAAtB;EACA,SAAKC,aAAL,GAAsB,CAAtB;EAEAhoB,IAAAA,CAAC,CAAC,KAAK4nB,cAAN,CAAD,CAAuB5gB,EAAvB,CAA0BlC,OAAK,CAAC+hB,MAAhC,EAAwC,UAAC9mB,KAAD;EAAA,aAAW,KAAI,CAACkoB,QAAL,CAAcloB,KAAd,CAAX;EAAA,KAAxC;EAEA,SAAKmoB,OAAL;;EACA,SAAKD,QAAL;EACD;;;;;EAYD;WAEAC,UAAA,mBAAU;EAAA;;EACR,QAAMC,UAAU,GAAG,KAAKP,cAAL,KAAwB,KAAKA,cAAL,CAAoB1b,MAA5C,GACfsb,YAAY,CAACC,MADE,GACOD,YAAY,CAACE,QADvC;EAGA,QAAMU,YAAY,GAAG,KAAKzc,OAAL,CAAagb,MAAb,KAAwB,MAAxB,GACjBwB,UADiB,GACJ,KAAKxc,OAAL,CAAagb,MAD9B;EAGA,QAAM0B,UAAU,GAAGD,YAAY,KAAKZ,YAAY,CAACE,QAA9B,GACf,KAAKY,aAAL,EADe,GACQ,CAD3B;EAGA,SAAKT,QAAL,GAAgB,EAAhB;EACA,SAAKC,QAAL,GAAgB,EAAhB;EAEA,SAAKE,aAAL,GAAqB,KAAKO,gBAAL,EAArB;EAEA,QAAMC,OAAO,GAAG,GAAG/Z,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0B,KAAKgE,SAA/B,CAAd,CAAhB;EAEAoW,IAAAA,OAAO,CACJC,GADH,CACO,UAAC/mB,OAAD,EAAa;EAChB,UAAIzB,MAAJ;EACA,UAAMyoB,cAAc,GAAG9nB,IAAI,CAACa,sBAAL,CAA4BC,OAA5B,CAAvB;;EAEA,UAAIgnB,cAAJ,EAAoB;EAClBzoB,QAAAA,MAAM,GAAGsB,QAAQ,CAACQ,aAAT,CAAuB2mB,cAAvB,CAAT;EACD;;EAED,UAAIzoB,MAAJ,EAAY;EACV,YAAM0oB,SAAS,GAAG1oB,MAAM,CAACsT,qBAAP,EAAlB;;EACA,YAAIoV,SAAS,CAAClL,KAAV,IAAmBkL,SAAS,CAACC,MAAjC,EAAyC;EACvC;EACA,iBAAO,CACL5oB,CAAC,CAACC,MAAD,CAAD,CAAUmoB,YAAV,IAA0BS,GAA1B,GAAgCR,UAD3B,EAELK,cAFK,CAAP;EAID;EACF;;EACD,aAAO,IAAP;EACD,KApBH,EAqBGxW,MArBH,CAqBU,UAAC4W,IAAD;EAAA,aAAUA,IAAV;EAAA,KArBV,EAsBGC,IAtBH,CAsBQ,UAAChL,CAAD,EAAIE,CAAJ;EAAA,aAAUF,CAAC,CAAC,CAAD,CAAD,GAAOE,CAAC,CAAC,CAAD,CAAlB;EAAA,KAtBR,EAuBGpD,OAvBH,CAuBW,UAACiO,IAAD,EAAU;EACjB,MAAA,MAAI,CAACjB,QAAL,CAAcxV,IAAd,CAAmByW,IAAI,CAAC,CAAD,CAAvB;;EACA,MAAA,MAAI,CAAChB,QAAL,CAAczV,IAAd,CAAmByW,IAAI,CAAC,CAAD,CAAvB;EACD,KA1BH;EA2BD;;WAED/iB,UAAA,mBAAU;EACR/F,IAAAA,CAAC,CAACgG,UAAF,CAAa,KAAKT,QAAlB,EAA4Bf,UAA5B;EACAxE,IAAAA,CAAC,CAAC,KAAK4nB,cAAN,CAAD,CAAuBta,GAAvB,CAA2B7I,WAA3B;EAEA,SAAKc,QAAL,GAAsB,IAAtB;EACA,SAAKqiB,cAAL,GAAsB,IAAtB;EACA,SAAKjc,OAAL,GAAsB,IAAtB;EACA,SAAKyG,SAAL,GAAsB,IAAtB;EACA,SAAKyV,QAAL,GAAsB,IAAtB;EACA,SAAKC,QAAL,GAAsB,IAAtB;EACA,SAAKC,aAAL,GAAsB,IAAtB;EACA,SAAKC,aAAL,GAAsB,IAAtB;EACD;;;WAIDpc,aAAA,oBAAW1I,MAAX,EAAmB;EACjBA,IAAAA,MAAM,qBACD2F,SADC,EAED,OAAO3F,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAF/C,CAAN;;EAKA,QAAI,OAAOA,MAAM,CAACjD,MAAd,KAAyB,QAA7B,EAAuC;EACrC,UAAI6R,EAAE,GAAG9R,CAAC,CAACkD,MAAM,CAACjD,MAAR,CAAD,CAAiBiT,IAAjB,CAAsB,IAAtB,CAAT;;EACA,UAAI,CAACpB,EAAL,EAAS;EACPA,QAAAA,EAAE,GAAGlR,IAAI,CAACO,MAAL,CAAYmD,MAAZ,CAAL;EACAtE,QAAAA,CAAC,CAACkD,MAAM,CAACjD,MAAR,CAAD,CAAiBiT,IAAjB,CAAsB,IAAtB,EAA4BpB,EAA5B;EACD;;EACD5O,MAAAA,MAAM,CAACjD,MAAP,SAAoB6R,EAApB;EACD;;EAEDlR,IAAAA,IAAI,CAACoC,eAAL,CAAqBsB,MAArB,EAA2BpB,MAA3B,EAAmCkG,aAAnC;EAEA,WAAOlG,MAAP;EACD;;WAEDolB,gBAAA,yBAAgB;EACd,WAAO,KAAKV,cAAL,KAAwB1b,MAAxB,GACH,KAAK0b,cAAL,CAAoBoB,WADjB,GAC+B,KAAKpB,cAAL,CAAoBxM,SAD1D;EAED;;WAEDmN,mBAAA,4BAAmB;EACjB,WAAO,KAAKX,cAAL,CAAoBxL,YAApB,IAAoC/a,IAAI,CAAC4nB,GAAL,CACzC1nB,QAAQ,CAAC6V,IAAT,CAAcgF,YAD2B,EAEzC7a,QAAQ,CAACyC,eAAT,CAAyBoY,YAFgB,CAA3C;EAID;;WAED8M,mBAAA,4BAAmB;EACjB,WAAO,KAAKtB,cAAL,KAAwB1b,MAAxB,GACHA,MAAM,CAACid,WADJ,GACkB,KAAKvB,cAAL,CAAoBrU,qBAApB,GAA4CqV,MADrE;EAED;;WAEDX,WAAA,oBAAW;EACT,QAAM7M,SAAS,GAAM,KAAKkN,aAAL,KAAuB,KAAK3c,OAAL,CAAasK,MAAzD;;EACA,QAAMmG,YAAY,GAAG,KAAKmM,gBAAL,EAArB;;EACA,QAAMa,SAAS,GAAM,KAAKzd,OAAL,CAAasK,MAAb,GACnBmG,YADmB,GAEnB,KAAK8M,gBAAL,EAFF;;EAIA,QAAI,KAAKlB,aAAL,KAAuB5L,YAA3B,EAAyC;EACvC,WAAK8L,OAAL;EACD;;EAED,QAAI9M,SAAS,IAAIgO,SAAjB,EAA4B;EAC1B,UAAMnpB,MAAM,GAAG,KAAK6nB,QAAL,CAAc,KAAKA,QAAL,CAAc1a,MAAd,GAAuB,CAArC,CAAf;;EAEA,UAAI,KAAK2a,aAAL,KAAuB9nB,MAA3B,EAAmC;EACjC,aAAKopB,SAAL,CAAeppB,MAAf;EACD;;EACD;EACD;;EAED,QAAI,KAAK8nB,aAAL,IAAsB3M,SAAS,GAAG,KAAKyM,QAAL,CAAc,CAAd,CAAlC,IAAsD,KAAKA,QAAL,CAAc,CAAd,IAAmB,CAA7E,EAAgF;EAC9E,WAAKE,aAAL,GAAqB,IAArB;;EACA,WAAKuB,MAAL;;EACA;EACD;;EAED,QAAMC,YAAY,GAAG,KAAK1B,QAAL,CAAcza,MAAnC;;EACA,SAAK,IAAI0D,CAAC,GAAGyY,YAAb,EAA2BzY,CAAC,EAA5B,GAAiC;EAC/B,UAAM0Y,cAAc,GAAG,KAAKzB,aAAL,KAAuB,KAAKD,QAAL,CAAchX,CAAd,CAAvB,IACnBsK,SAAS,IAAI,KAAKyM,QAAL,CAAc/W,CAAd,CADM,KAElB,OAAO,KAAK+W,QAAL,CAAc/W,CAAC,GAAG,CAAlB,CAAP,KAAgC,WAAhC,IACGsK,SAAS,GAAG,KAAKyM,QAAL,CAAc/W,CAAC,GAAG,CAAlB,CAHG,CAAvB;;EAKA,UAAI0Y,cAAJ,EAAoB;EAClB,aAAKH,SAAL,CAAe,KAAKvB,QAAL,CAAchX,CAAd,CAAf;EACD;EACF;EACF;;WAEDuY,YAAA,mBAAUppB,MAAV,EAAkB;EAChB,SAAK8nB,aAAL,GAAqB9nB,MAArB;;EAEA,SAAKqpB,MAAL;;EAEA,QAAMG,OAAO,GAAG,KAAKrX,SAAL,CACb5P,KADa,CACP,GADO,EAEbimB,GAFa,CAET,UAAC9mB,QAAD;EAAA,aAAiBA,QAAjB,uBAA0C1B,MAA1C,YAAsD0B,QAAtD,gBAAwE1B,MAAxE;EAAA,KAFS,CAAhB;;EAIA,QAAMypB,KAAK,GAAG1pB,CAAC,CAAC,GAAGyO,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0Bqb,OAAO,CAACxD,IAAR,CAAa,GAAb,CAA1B,CAAd,CAAD,CAAf;;EAEA,QAAIyD,KAAK,CAACrjB,QAAN,CAAenB,WAAS,CAAC4hB,aAAzB,CAAJ,EAA6C;EAC3C4C,MAAAA,KAAK,CAACxjB,OAAN,CAActB,UAAQ,CAACyiB,QAAvB,EAAiC/B,IAAjC,CAAsC1gB,UAAQ,CAAC2iB,eAA/C,EAAgE1X,QAAhE,CAAyE3K,WAAS,CAACiC,MAAnF;EACAuiB,MAAAA,KAAK,CAAC7Z,QAAN,CAAe3K,WAAS,CAACiC,MAAzB;EACD,KAHD,MAGO;EACL;EACAuiB,MAAAA,KAAK,CAAC7Z,QAAN,CAAe3K,WAAS,CAACiC,MAAzB,EAFK;EAIL;;EACAuiB,MAAAA,KAAK,CAACC,OAAN,CAAc/kB,UAAQ,CAACqiB,cAAvB,EAAuCva,IAAvC,CAA+C9H,UAAQ,CAACsiB,SAAxD,UAAsEtiB,UAAQ,CAACwiB,UAA/E,EAA6FvX,QAA7F,CAAsG3K,WAAS,CAACiC,MAAhH,EALK;;EAOLuiB,MAAAA,KAAK,CAACC,OAAN,CAAc/kB,UAAQ,CAACqiB,cAAvB,EAAuCva,IAAvC,CAA4C9H,UAAQ,CAACuiB,SAArD,EAAgEvX,QAAhE,CAAyEhL,UAAQ,CAACsiB,SAAlF,EAA6FrX,QAA7F,CAAsG3K,WAAS,CAACiC,MAAhH;EACD;;EAEDnH,IAAAA,CAAC,CAAC,KAAK4nB,cAAN,CAAD,CAAuBjlB,OAAvB,CAA+BmC,OAAK,CAAC8hB,QAArC,EAA+C;EAC7CzX,MAAAA,aAAa,EAAElP;EAD8B,KAA/C;EAGD;;WAEDqpB,SAAA,kBAAS;EACP,OAAG7a,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0B,KAAKgE,SAA/B,CAAd,EACGF,MADH,CACU,UAAC0X,IAAD;EAAA,aAAUA,IAAI,CAAC3hB,SAAL,CAAeC,QAAf,CAAwBhD,WAAS,CAACiC,MAAlC,CAAV;EAAA,KADV,EAEG0T,OAFH,CAEW,UAAC+O,IAAD;EAAA,aAAUA,IAAI,CAAC3hB,SAAL,CAAezB,MAAf,CAAsBtB,WAAS,CAACiC,MAAhC,CAAV;EAAA,KAFX;EAGD;;;cAIMV,mBAAP,0BAAwBvD,MAAxB,EAAgC;EAC9B,WAAO,KAAKwD,IAAL,CAAU,YAAY;EAC3B,UAAIE,IAAI,GAAG5G,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,CAAX;;EACA,UAAMmH,OAAO,GAAG,OAAOzI,MAAP,KAAkB,QAAlB,IAA8BA,MAA9C;;EAEA,UAAI,CAAC0D,IAAL,EAAW;EACTA,QAAAA,IAAI,GAAG,IAAI+gB,SAAJ,CAAc,IAAd,EAAoBhc,OAApB,CAAP;EACA3L,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQ4G,IAAR,CAAapC,UAAb,EAAuBoC,IAAvB;EACD;;EAED,UAAI,OAAO1D,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAO0D,IAAI,CAAC1D,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIuN,SAAJ,wBAAkCvN,MAAlC,QAAN;EACD;;EACD0D,QAAAA,IAAI,CAAC1D,MAAD,CAAJ;EACD;EACF,KAfM,CAAP;EAgBD;;;;0BA1MoB;EACnB,aAAOqB,SAAP;EACD;;;0BAEoB;EACnB,aAAOsE,SAAP;EACD;;;;;EAuMH;;;;;;;EAMA7I,CAAC,CAACkM,MAAD,CAAD,CAAUlF,EAAV,CAAalC,OAAK,CAACuF,aAAnB,EAAkC,YAAM;EACtC,MAAMwf,UAAU,GAAG,GAAGpb,KAAH,CAASjP,IAAT,CAAc+B,QAAQ,CAAC6M,gBAAT,CAA0BxJ,UAAQ,CAACoiB,QAAnC,CAAd,CAAnB;EACA,MAAM8C,gBAAgB,GAAGD,UAAU,CAACzc,MAApC;;EAEA,OAAK,IAAI0D,CAAC,GAAGgZ,gBAAb,EAA+BhZ,CAAC,EAAhC,GAAqC;EACnC,QAAMiZ,IAAI,GAAG/pB,CAAC,CAAC6pB,UAAU,CAAC/Y,CAAD,CAAX,CAAd;;EACA6W,IAAAA,SAAS,CAAClhB,gBAAV,CAA2BjH,IAA3B,CAAgCuqB,IAAhC,EAAsCA,IAAI,CAACnjB,IAAL,EAAtC;EACD;EACF,CARD;EAUA;;;;;;EAMA5G,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaqjB,SAAS,CAAClhB,gBAAvB;EACAzG,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW2C,WAAX,GAAyB0gB,SAAzB;;EACA3nB,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW4C,UAAX,GAAwB,YAAM;EAC5BlH,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaK,oBAAb;EACA,SAAOgjB,SAAS,CAAClhB,gBAAjB;EACD,CAHD;;ECtTA;;;;;;EAMA,IAAMnC,MAAI,GAAiB,KAA3B;EACA,IAAMC,SAAO,GAAc,OAA3B;EACA,IAAMC,UAAQ,GAAa,QAA3B;EACA,IAAMC,WAAS,SAAgBD,UAA/B;EACA,IAAME,cAAY,GAAS,WAA3B;EACA,IAAMC,oBAAkB,GAAG3E,CAAC,CAACgB,EAAF,CAAKsD,MAAL,CAA3B;EAEA,IAAMQ,OAAK,GAAG;EACZoM,EAAAA,IAAI,WAAoBzM,WADZ;EAEZ0M,EAAAA,MAAM,aAAoB1M,WAFd;EAGZY,EAAAA,IAAI,WAAoBZ,WAHZ;EAIZwM,EAAAA,KAAK,YAAoBxM,WAJb;EAKZQ,EAAAA,cAAc,YAAWR,WAAX,GAAuBC;EALzB,CAAd;EAQA,IAAMQ,WAAS,GAAG;EAChB6hB,EAAAA,aAAa,EAAG,eADA;EAEhB5f,EAAAA,MAAM,EAAU,QAFA;EAGhB4N,EAAAA,QAAQ,EAAQ,UAHA;EAIhB3P,EAAAA,IAAI,EAAY,MAJA;EAKhBC,EAAAA,IAAI,EAAY;EALA,CAAlB;EAQA,IAAMT,UAAQ,GAAG;EACfyiB,EAAAA,QAAQ,EAAgB,WADT;EAEfJ,EAAAA,cAAc,EAAU,mBAFT;EAGf9f,EAAAA,MAAM,EAAkB,SAHT;EAIf6iB,EAAAA,SAAS,EAAe,gBAJT;EAKfziB,EAAAA,WAAW,EAAa,iEALT;EAMfggB,EAAAA,eAAe,EAAS,kBANT;EAOf0C,EAAAA,qBAAqB,EAAG;EAG1B;;;;;;EAViB,CAAjB;;MAgBMC;;;EACJ,eAAYxoB,OAAZ,EAAqB;EACnB,SAAK6D,QAAL,GAAgB7D,OAAhB;EACD;;;;;EAQD;WAEAgR,OAAA,gBAAO;EAAA;;EACL,QAAI,KAAKnN,QAAL,CAAclB,UAAd,IACA,KAAKkB,QAAL,CAAclB,UAAd,CAAyBtB,QAAzB,KAAsCiY,IAAI,CAACC,YAD3C,IAEAjb,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAACiC,MAApC,CAFA,IAGAnH,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBc,QAAjB,CAA0BnB,WAAS,CAAC6P,QAApC,CAHJ,EAGmD;EACjD;EACD;;EAED,QAAI9U,MAAJ;EACA,QAAIkqB,QAAJ;EACA,QAAMC,WAAW,GAAGpqB,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBW,OAAjB,CAAyBtB,UAAQ,CAACqiB,cAAlC,EAAkD,CAAlD,CAApB;EACA,QAAMtlB,QAAQ,GAAGf,IAAI,CAACa,sBAAL,CAA4B,KAAK8D,QAAjC,CAAjB;;EAEA,QAAI6kB,WAAJ,EAAiB;EACf,UAAMC,YAAY,GAAGD,WAAW,CAACpK,QAAZ,KAAyB,IAAzB,IAAiCoK,WAAW,CAACpK,QAAZ,KAAyB,IAA1D,GAAiEpb,UAAQ,CAAColB,SAA1E,GAAsFplB,UAAQ,CAACuC,MAApH;EACAgjB,MAAAA,QAAQ,GAAGnqB,CAAC,CAACsqB,SAAF,CAAYtqB,CAAC,CAACoqB,WAAD,CAAD,CAAe9E,IAAf,CAAoB+E,YAApB,CAAZ,CAAX;EACAF,MAAAA,QAAQ,GAAGA,QAAQ,CAACA,QAAQ,CAAC/c,MAAT,GAAkB,CAAnB,CAAnB;EACD;;EAED,QAAMkK,SAAS,GAAGtX,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACoM,IAAd,EAAoB;EACpC/B,MAAAA,aAAa,EAAE,KAAK5J;EADgB,KAApB,CAAlB;EAIA,QAAMyR,SAAS,GAAGhX,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACO,IAAd,EAAoB;EACpC8J,MAAAA,aAAa,EAAEgb;EADqB,KAApB,CAAlB;;EAIA,QAAIA,QAAJ,EAAc;EACZnqB,MAAAA,CAAC,CAACmqB,QAAD,CAAD,CAAYxnB,OAAZ,CAAoB2U,SAApB;EACD;;EAEDtX,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyBqU,SAAzB;;EAEA,QAAIA,SAAS,CAACnR,kBAAV,MACAyR,SAAS,CAACzR,kBAAV,EADJ,EACoC;EAClC;EACD;;EAED,QAAIlE,QAAJ,EAAc;EACZ1B,MAAAA,MAAM,GAAGsB,QAAQ,CAACQ,aAAT,CAAuBJ,QAAvB,CAAT;EACD;;EAED,SAAK0nB,SAAL,CACE,KAAK9jB,QADP,EAEE6kB,WAFF;;EAKA,QAAMhX,QAAQ,GAAG,SAAXA,QAAW,GAAM;EACrB,UAAMmX,WAAW,GAAGvqB,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACqM,MAAd,EAAsB;EACxChC,QAAAA,aAAa,EAAE,KAAI,CAAC5J;EADoB,OAAtB,CAApB;EAIA,UAAM+V,UAAU,GAAGtb,CAAC,CAAC8E,KAAF,CAAQA,OAAK,CAACmM,KAAd,EAAqB;EACtC9B,QAAAA,aAAa,EAAEgb;EADuB,OAArB,CAAnB;EAIAnqB,MAAAA,CAAC,CAACmqB,QAAD,CAAD,CAAYxnB,OAAZ,CAAoB4nB,WAApB;EACAvqB,MAAAA,CAAC,CAAC,KAAI,CAACuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyB2Y,UAAzB;EACD,KAXD;;EAaA,QAAIrb,MAAJ,EAAY;EACV,WAAKopB,SAAL,CAAeppB,MAAf,EAAuBA,MAAM,CAACoE,UAA9B,EAA0C+O,QAA1C;EACD,KAFD,MAEO;EACLA,MAAAA,QAAQ;EACT;EACF;;WAEDrN,UAAA,mBAAU;EACR/F,IAAAA,CAAC,CAACgG,UAAF,CAAa,KAAKT,QAAlB,EAA4Bf,UAA5B;EACA,SAAKe,QAAL,GAAgB,IAAhB;EACD;;;WAID8jB,YAAA,mBAAU3nB,OAAV,EAAmBogB,SAAnB,EAA8BlG,QAA9B,EAAwC;EAAA;;EACtC,QAAM4O,cAAc,GAAG1I,SAAS,KAAKA,SAAS,CAAC9B,QAAV,KAAuB,IAAvB,IAA+B8B,SAAS,CAAC9B,QAAV,KAAuB,IAA3D,CAAT,GACnBhgB,CAAC,CAAC8hB,SAAD,CAAD,CAAawD,IAAb,CAAkB1gB,UAAQ,CAAColB,SAA3B,CADmB,GAEnBhqB,CAAC,CAAC8hB,SAAD,CAAD,CAAalS,QAAb,CAAsBhL,UAAQ,CAACuC,MAA/B,CAFJ;EAIA,QAAMsjB,MAAM,GAAGD,cAAc,CAAC,CAAD,CAA7B;EACA,QAAM9W,eAAe,GAAGkI,QAAQ,IAAK6O,MAAM,IAAIzqB,CAAC,CAACyqB,MAAD,CAAD,CAAUpkB,QAAV,CAAmBnB,WAAS,CAACE,IAA7B,CAA/C;;EACA,QAAMgO,QAAQ,GAAG,SAAXA,QAAW;EAAA,aAAM,MAAI,CAACsX,mBAAL,CACrBhpB,OADqB,EAErB+oB,MAFqB,EAGrB7O,QAHqB,CAAN;EAAA,KAAjB;;EAMA,QAAI6O,MAAM,IAAI/W,eAAd,EAA+B;EAC7B,UAAMxR,kBAAkB,GAAGtB,IAAI,CAACqB,gCAAL,CAAsCwoB,MAAtC,CAA3B;EAEAzqB,MAAAA,CAAC,CAACyqB,MAAD,CAAD,CACGrkB,WADH,CACelB,WAAS,CAACG,IADzB,EAEG1E,GAFH,CAEOC,IAAI,CAAC1B,cAFZ,EAE4BkU,QAF5B,EAGGnS,oBAHH,CAGwBiB,kBAHxB;EAID,KAPD,MAOO;EACLkR,MAAAA,QAAQ;EACT;EACF;;WAEDsX,sBAAA,6BAAoBhpB,OAApB,EAA6B+oB,MAA7B,EAAqC7O,QAArC,EAA+C;EAC7C,QAAI6O,MAAJ,EAAY;EACVzqB,MAAAA,CAAC,CAACyqB,MAAD,CAAD,CAAUrkB,WAAV,CAAsBlB,WAAS,CAACiC,MAAhC;EAEA,UAAMwjB,aAAa,GAAG3qB,CAAC,CAACyqB,MAAM,CAACpmB,UAAR,CAAD,CAAqBihB,IAArB,CACpB1gB,UAAQ,CAACqlB,qBADW,EAEpB,CAFoB,CAAtB;;EAIA,UAAIU,aAAJ,EAAmB;EACjB3qB,QAAAA,CAAC,CAAC2qB,aAAD,CAAD,CAAiBvkB,WAAjB,CAA6BlB,WAAS,CAACiC,MAAvC;EACD;;EAED,UAAIsjB,MAAM,CAAC7oB,YAAP,CAAoB,MAApB,MAAgC,KAApC,EAA2C;EACzC6oB,QAAAA,MAAM,CAACniB,YAAP,CAAoB,eAApB,EAAqC,KAArC;EACD;EACF;;EAEDtI,IAAAA,CAAC,CAAC0B,OAAD,CAAD,CAAWmO,QAAX,CAAoB3K,WAAS,CAACiC,MAA9B;;EACA,QAAIzF,OAAO,CAACE,YAAR,CAAqB,MAArB,MAAiC,KAArC,EAA4C;EAC1CF,MAAAA,OAAO,CAAC4G,YAAR,CAAqB,eAArB,EAAsC,IAAtC;EACD;;EAED1H,IAAAA,IAAI,CAAC6B,MAAL,CAAYf,OAAZ;;EAEA,QAAIA,OAAO,CAACuG,SAAR,CAAkBC,QAAlB,CAA2BhD,WAAS,CAACE,IAArC,CAAJ,EAAgD;EAC9C1D,MAAAA,OAAO,CAACuG,SAAR,CAAkBqG,GAAlB,CAAsBpJ,WAAS,CAACG,IAAhC;EACD;;EAED,QAAI3D,OAAO,CAAC2C,UAAR,IAAsBrE,CAAC,CAAC0B,OAAO,CAAC2C,UAAT,CAAD,CAAsBgC,QAAtB,CAA+BnB,WAAS,CAAC6hB,aAAzC,CAA1B,EAAmF;EACjF,UAAM6D,eAAe,GAAG5qB,CAAC,CAAC0B,OAAD,CAAD,CAAWwE,OAAX,CAAmBtB,UAAQ,CAACyiB,QAA5B,EAAsC,CAAtC,CAAxB;;EAEA,UAAIuD,eAAJ,EAAqB;EACnB,YAAMC,kBAAkB,GAAG,GAAGpc,KAAH,CAASjP,IAAT,CAAcorB,eAAe,CAACxc,gBAAhB,CAAiCxJ,UAAQ,CAAC2iB,eAA1C,CAAd,CAA3B;EAEAvnB,QAAAA,CAAC,CAAC6qB,kBAAD,CAAD,CAAsBhb,QAAtB,CAA+B3K,WAAS,CAACiC,MAAzC;EACD;;EAEDzF,MAAAA,OAAO,CAAC4G,YAAR,CAAqB,eAArB,EAAsC,IAAtC;EACD;;EAED,QAAIsT,QAAJ,EAAc;EACZA,MAAAA,QAAQ;EACT;EACF;;;QAIMnV,mBAAP,0BAAwBvD,MAAxB,EAAgC;EAC9B,WAAO,KAAKwD,IAAL,CAAU,YAAY;EAC3B,UAAMsN,KAAK,GAAGhU,CAAC,CAAC,IAAD,CAAf;EACA,UAAI4G,IAAI,GAAGoN,KAAK,CAACpN,IAAN,CAAWpC,UAAX,CAAX;;EAEA,UAAI,CAACoC,IAAL,EAAW;EACTA,QAAAA,IAAI,GAAG,IAAIsjB,GAAJ,CAAQ,IAAR,CAAP;EACAlW,QAAAA,KAAK,CAACpN,IAAN,CAAWpC,UAAX,EAAqBoC,IAArB;EACD;;EAED,UAAI,OAAO1D,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAO0D,IAAI,CAAC1D,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIuN,SAAJ,wBAAkCvN,MAAlC,QAAN;EACD;;EACD0D,QAAAA,IAAI,CAAC1D,MAAD,CAAJ;EACD;EACF,KAfM,CAAP;EAgBD;;;;0BAzKoB;EACnB,aAAOqB,SAAP;EACD;;;;;EA0KH;;;;;;;EAMAvE,CAAC,CAACuB,QAAD,CAAD,CACGyF,EADH,CACMlC,OAAK,CAACG,cADZ,EAC4BL,UAAQ,CAAC2C,WADrC,EACkD,UAAUxH,KAAV,EAAiB;EAC/DA,EAAAA,KAAK,CAACgH,cAAN;;EACAmjB,EAAAA,GAAG,CAACzjB,gBAAJ,CAAqBjH,IAArB,CAA0BQ,CAAC,CAAC,IAAD,CAA3B,EAAmC,MAAnC;EACD,CAJH;EAMA;;;;;;EAMAA,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAa4lB,GAAG,CAACzjB,gBAAjB;EACAzG,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW2C,WAAX,GAAyBijB,GAAzB;;EACAlqB,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW4C,UAAX,GAAwB,YAAM;EAC5BlH,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaK,oBAAb;EACA,SAAOulB,GAAG,CAACzjB,gBAAX;EACD,CAHD;;ECpPA;;;;;;EAMA,IAAMnC,MAAI,GAAiB,OAA3B;EACA,IAAMC,SAAO,GAAc,OAA3B;EACA,IAAMC,UAAQ,GAAa,UAA3B;EACA,IAAMC,WAAS,SAAgBD,UAA/B;EACA,IAAMG,oBAAkB,GAAG3E,CAAC,CAACgB,EAAF,CAAKsD,MAAL,CAA3B;EAEA,IAAMQ,OAAK,GAAG;EACZkU,EAAAA,aAAa,oBAAmBvU,WADpB;EAEZyM,EAAAA,IAAI,WAAmBzM,WAFX;EAGZ0M,EAAAA,MAAM,aAAmB1M,WAHb;EAIZY,EAAAA,IAAI,WAAmBZ,WAJX;EAKZwM,EAAAA,KAAK,YAAmBxM;EALZ,CAAd;EAQA,IAAMS,WAAS,GAAG;EAChBE,EAAAA,IAAI,EAAM,MADM;EAEhB8L,EAAAA,IAAI,EAAM,MAFM;EAGhB7L,EAAAA,IAAI,EAAM,MAHM;EAIhBylB,EAAAA,OAAO,EAAG;EAJM,CAAlB;EAOA,IAAM1hB,aAAW,GAAG;EAClBqY,EAAAA,SAAS,EAAG,SADM;EAElBsJ,EAAAA,QAAQ,EAAI,SAFM;EAGlBnJ,EAAAA,KAAK,EAAO;EAHM,CAApB;EAMA,IAAM/Y,SAAO,GAAG;EACd4Y,EAAAA,SAAS,EAAG,IADE;EAEdsJ,EAAAA,QAAQ,EAAI,IAFE;EAGdnJ,EAAAA,KAAK,EAAO;EAHE,CAAhB;EAMA,IAAMhd,UAAQ,GAAG;EACf8U,EAAAA,YAAY,EAAG;EAGjB;;;;;;EAJiB,CAAjB;;MAUMsR;;;EACJ,iBAAYtpB,OAAZ,EAAqBwB,MAArB,EAA6B;EAC3B,SAAKqC,QAAL,GAAgB7D,OAAhB;EACA,SAAKiK,OAAL,GAAgB,KAAKC,UAAL,CAAgB1I,MAAhB,CAAhB;EACA,SAAK4f,QAAL,GAAgB,IAAhB;;EACA,SAAKI,aAAL;EACD;;;;;EAgBD;WAEAxQ,OAAA,gBAAO;EAAA;;EACL1S,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyBmC,OAAK,CAACO,IAA/B;;EAEA,QAAI,KAAKsG,OAAL,CAAa8V,SAAjB,EAA4B;EAC1B,WAAKlc,QAAL,CAAc0C,SAAd,CAAwBqG,GAAxB,CAA4BpJ,WAAS,CAACE,IAAtC;EACD;;EAED,QAAMgO,QAAQ,GAAG,SAAXA,QAAW,GAAM;EACrB,MAAA,KAAI,CAAC7N,QAAL,CAAc0C,SAAd,CAAwBzB,MAAxB,CAA+BtB,WAAS,CAAC4lB,OAAzC;;EACA,MAAA,KAAI,CAACvlB,QAAL,CAAc0C,SAAd,CAAwBqG,GAAxB,CAA4BpJ,WAAS,CAACG,IAAtC;;EAEArF,MAAAA,CAAC,CAAC,KAAI,CAACuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyBmC,OAAK,CAACmM,KAA/B;;EAEA,UAAI,KAAI,CAACtF,OAAL,CAAaof,QAAjB,EAA2B;EACzB,QAAA,KAAI,CAACtY,IAAL;EACD;EACF,KATD;;EAWA,SAAKlN,QAAL,CAAc0C,SAAd,CAAwBzB,MAAxB,CAA+BtB,WAAS,CAACgM,IAAzC;;EACA,SAAK3L,QAAL,CAAc0C,SAAd,CAAwBqG,GAAxB,CAA4BpJ,WAAS,CAAC4lB,OAAtC;;EACA,QAAI,KAAKnf,OAAL,CAAa8V,SAAjB,EAA4B;EAC1B,UAAMvf,kBAAkB,GAAGtB,IAAI,CAACqB,gCAAL,CAAsC,KAAKsD,QAA3C,CAA3B;EAEAvF,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CACG5E,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4BkU,QAD5B,EAEGnS,oBAFH,CAEwBiB,kBAFxB;EAGD,KAND,MAMO;EACLkR,MAAAA,QAAQ;EACT;EACF;;WAEDX,OAAA,cAAKwY,cAAL,EAAqB;EAAA;;EACnB,QAAI,CAAC,KAAK1lB,QAAL,CAAc0C,SAAd,CAAwBC,QAAxB,CAAiChD,WAAS,CAACG,IAA3C,CAAL,EAAuD;EACrD;EACD;;EAEDrF,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyBmC,OAAK,CAACoM,IAA/B;;EAEA,QAAI+Z,cAAJ,EAAoB;EAClB,WAAKC,MAAL;EACD,KAFD,MAEO;EACL,WAAKpI,QAAL,GAAgBjiB,UAAU,CAAC,YAAM;EAC/B,QAAA,MAAI,CAACqqB,MAAL;EACD,OAFyB,EAEvB,KAAKvf,OAAL,CAAaiW,KAFU,CAA1B;EAGD;EACF;;WAED7b,UAAA,mBAAU;EACRoI,IAAAA,YAAY,CAAC,KAAK2U,QAAN,CAAZ;EACA,SAAKA,QAAL,GAAgB,IAAhB;;EAEA,QAAI,KAAKvd,QAAL,CAAc0C,SAAd,CAAwBC,QAAxB,CAAiChD,WAAS,CAACG,IAA3C,CAAJ,EAAsD;EACpD,WAAKE,QAAL,CAAc0C,SAAd,CAAwBzB,MAAxB,CAA+BtB,WAAS,CAACG,IAAzC;EACD;;EAEDrF,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiB+H,GAAjB,CAAqBxI,OAAK,CAACkU,aAA3B;EAEAhZ,IAAAA,CAAC,CAACgG,UAAF,CAAa,KAAKT,QAAlB,EAA4Bf,UAA5B;EACA,SAAKe,QAAL,GAAgB,IAAhB;EACA,SAAKoG,OAAL,GAAgB,IAAhB;EACD;;;WAIDC,aAAA,oBAAW1I,MAAX,EAAmB;EACjBA,IAAAA,MAAM,qBACD2F,SADC,EAED7I,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiBqB,IAAjB,EAFC,EAGD,OAAO1D,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAH/C,CAAN;EAMAtC,IAAAA,IAAI,CAACoC,eAAL,CACEsB,MADF,EAEEpB,MAFF,EAGE,KAAKyU,WAAL,CAAiBvO,WAHnB;EAMA,WAAOlG,MAAP;EACD;;WAEDggB,gBAAA,yBAAgB;EAAA;;EACdljB,IAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CAAiByB,EAAjB,CACElC,OAAK,CAACkU,aADR,EAEEpU,UAAQ,CAAC8U,YAFX,EAGE;EAAA,aAAM,MAAI,CAACjH,IAAL,CAAU,IAAV,CAAN;EAAA,KAHF;EAKD;;WAEDyY,SAAA,kBAAS;EAAA;;EACP,QAAM9X,QAAQ,GAAG,SAAXA,QAAW,GAAM;EACrB,MAAA,MAAI,CAAC7N,QAAL,CAAc0C,SAAd,CAAwBqG,GAAxB,CAA4BpJ,WAAS,CAACgM,IAAtC;;EACAlR,MAAAA,CAAC,CAAC,MAAI,CAACuF,QAAN,CAAD,CAAiB5C,OAAjB,CAAyBmC,OAAK,CAACqM,MAA/B;EACD,KAHD;;EAKA,SAAK5L,QAAL,CAAc0C,SAAd,CAAwBzB,MAAxB,CAA+BtB,WAAS,CAACG,IAAzC;;EACA,QAAI,KAAKsG,OAAL,CAAa8V,SAAjB,EAA4B;EAC1B,UAAMvf,kBAAkB,GAAGtB,IAAI,CAACqB,gCAAL,CAAsC,KAAKsD,QAA3C,CAA3B;EAEAvF,MAAAA,CAAC,CAAC,KAAKuF,QAAN,CAAD,CACG5E,GADH,CACOC,IAAI,CAAC1B,cADZ,EAC4BkU,QAD5B,EAEGnS,oBAFH,CAEwBiB,kBAFxB;EAGD,KAND,MAMO;EACLkR,MAAAA,QAAQ;EACT;EACF;;;UAIM3M,mBAAP,0BAAwBvD,MAAxB,EAAgC;EAC9B,WAAO,KAAKwD,IAAL,CAAU,YAAY;EAC3B,UAAMC,QAAQ,GAAG3G,CAAC,CAAC,IAAD,CAAlB;EACA,UAAI4G,IAAI,GAASD,QAAQ,CAACC,IAAT,CAAcpC,UAAd,CAAjB;;EACA,UAAMmH,OAAO,GAAI,OAAOzI,MAAP,KAAkB,QAAlB,IAA8BA,MAA/C;;EAEA,UAAI,CAAC0D,IAAL,EAAW;EACTA,QAAAA,IAAI,GAAG,IAAIokB,KAAJ,CAAU,IAAV,EAAgBrf,OAAhB,CAAP;EACAhF,QAAAA,QAAQ,CAACC,IAAT,CAAcpC,UAAd,EAAwBoC,IAAxB;EACD;;EAED,UAAI,OAAO1D,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAO0D,IAAI,CAAC1D,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIuN,SAAJ,wBAAkCvN,MAAlC,QAAN;EACD;;EAED0D,QAAAA,IAAI,CAAC1D,MAAD,CAAJ,CAAa,IAAb;EACD;EACF,KAjBM,CAAP;EAkBD;;;;0BA7IoB;EACnB,aAAOqB,SAAP;EACD;;;0BAEwB;EACvB,aAAO6E,aAAP;EACD;;;0BAEoB;EACnB,aAAOP,SAAP;EACD;;;;;EAsIH;;;;;;;EAMA7I,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAyB0mB,KAAK,CAACvkB,gBAA/B;EACAzG,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW2C,WAAX,GAAyB+jB,KAAzB;;EACAhrB,CAAC,CAACgB,EAAF,CAAKsD,MAAL,EAAW4C,UAAX,GAAyB,YAAM;EAC7BlH,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,MAAL,IAAaK,oBAAb;EACA,SAAOqmB,KAAK,CAACvkB,gBAAb;EACD,CAHD;;EC/MA;;;;;;;EAOA,CAAC,YAAM;EACL,MAAI,OAAOzG,CAAP,KAAa,WAAjB,EAA8B;EAC5B,UAAM,IAAIyQ,SAAJ,CAAc,kGAAd,CAAN;EACD;;EAED,MAAM0a,OAAO,GAAGnrB,CAAC,CAACgB,EAAF,CAAK4S,MAAL,CAAYpR,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,EAA0BA,KAA1B,CAAgC,GAAhC,CAAhB;EACA,MAAM4oB,QAAQ,GAAG,CAAjB;EACA,MAAMC,OAAO,GAAG,CAAhB;EACA,MAAMC,QAAQ,GAAG,CAAjB;EACA,MAAMC,QAAQ,GAAG,CAAjB;EACA,MAAMC,QAAQ,GAAG,CAAjB;;EAEA,MAAIL,OAAO,CAAC,CAAD,CAAP,GAAaE,OAAb,IAAwBF,OAAO,CAAC,CAAD,CAAP,GAAaG,QAArC,IAAiDH,OAAO,CAAC,CAAD,CAAP,KAAeC,QAAf,IAA2BD,OAAO,CAAC,CAAD,CAAP,KAAeG,QAA1C,IAAsDH,OAAO,CAAC,CAAD,CAAP,GAAaI,QAApH,IAAgIJ,OAAO,CAAC,CAAD,CAAP,IAAcK,QAAlJ,EAA4J;EAC1J,UAAM,IAAI3nB,KAAJ,CAAU,8EAAV,CAAN;EACD;EACF,CAfD;;;;;;;;;;;;;;;;;;;;;;;"} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /*! |
| | | * Bootstrap v4.3.1 (https://getbootstrap.com/) |
| | | * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) |
| | | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
| | | */ |
| | | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t=t||self).bootstrap={},t.jQuery,t.Popper)}(this,function(t,g,u){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}g=g&&g.hasOwnProperty("default")?g.default:g,u=u&&u.hasOwnProperty("default")?u.default:u;var e="transitionend";function n(t){var e=this,n=!1;return g(this).one(_.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||_.triggerTransitionEnd(e)},t),this}var _={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=g(t).css("transition-duration"),n=g(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){g(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&_.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?_.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};g.fn.emulateTransitionEnd=n,g.event.special[_.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(g(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o="alert",r="bs.alert",a="."+r,c=g.fn[o],h={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},f="alert",d="fade",m="show",p=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){g.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=_.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=g(t).closest("."+f)[0]),n},t._triggerCloseEvent=function(t){var e=g.Event(h.CLOSE);return g(t).trigger(e),e},t._removeElement=function(e){var n=this;if(g(e).removeClass(m),g(e).hasClass(d)){var t=_.getTransitionDurationFromElement(e);g(e).one(_.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){g(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();g(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',p._handleDismiss(new p)),g.fn[o]=p._jQueryInterface,g.fn[o].Constructor=p,g.fn[o].noConflict=function(){return g.fn[o]=c,p._jQueryInterface};var v="button",y="bs.button",E="."+y,C=".data-api",T=g.fn[v],S="active",b="btn",I="focus",D='[data-toggle^="button"]',w='[data-toggle="buttons"]',A='input:not([type="hidden"])',N=".active",O=".btn",k={CLICK_DATA_API:"click"+E+C,FOCUS_BLUR_DATA_API:"focus"+E+C+" blur"+E+C},P=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=g(this._element).closest(w)[0];if(n){var i=this._element.querySelector(A);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(S))t=!1;else{var o=n.querySelector(N);o&&g(o).removeClass(S)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains(S),g(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(S)),t&&g(this._element).toggleClass(S)},t.dispose=function(){g.removeData(this._element,y),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(y);t||(t=new n(this),g(this).data(y,t)),"toggle"===e&&t[e]()})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),n}();g(document).on(k.CLICK_DATA_API,D,function(t){t.preventDefault();var e=t.target;g(e).hasClass(b)||(e=g(e).closest(O)),P._jQueryInterface.call(g(e),"toggle")}).on(k.FOCUS_BLUR_DATA_API,D,function(t){var e=g(t.target).closest(O)[0];g(e).toggleClass(I,/^focus(in)?$/.test(t.type))}),g.fn[v]=P._jQueryInterface,g.fn[v].Constructor=P,g.fn[v].noConflict=function(){return g.fn[v]=T,P._jQueryInterface};var L="carousel",j="bs.carousel",H="."+j,R=".data-api",x=g.fn[L],F={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},U={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},W="next",q="prev",M="left",K="right",Q={SLIDE:"slide"+H,SLID:"slid"+H,KEYDOWN:"keydown"+H,MOUSEENTER:"mouseenter"+H,MOUSELEAVE:"mouseleave"+H,TOUCHSTART:"touchstart"+H,TOUCHMOVE:"touchmove"+H,TOUCHEND:"touchend"+H,POINTERDOWN:"pointerdown"+H,POINTERUP:"pointerup"+H,DRAG_START:"dragstart"+H,LOAD_DATA_API:"load"+H+R,CLICK_DATA_API:"click"+H+R},B="carousel",V="active",Y="slide",z="carousel-item-right",X="carousel-item-left",$="carousel-item-next",G="carousel-item-prev",J="pointer-event",Z=".active",tt=".active.carousel-item",et=".carousel-item",nt=".carousel-item img",it=".carousel-item-next, .carousel-item-prev",ot=".carousel-indicators",rt="[data-slide], [data-slide-to]",st='[data-ride="carousel"]',at={TOUCH:"touch",PEN:"pen"},lt=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(ot),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(W)},t.nextWhenVisible=function(){!document.hidden&&g(this._element).is(":visible")&&"hidden"!==g(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(q)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(it)&&(_.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector(tt);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)g(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?W:q;this._slide(i,this._items[t])}},t.dispose=function(){g(this._element).off(H),g.removeData(this._element,j),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l({},F,t),_.typeCheckConfig(L,t,U),t},t._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;0<e&&this.prev(),e<0&&this.next()}},t._addEventListeners=function(){var e=this;this._config.keyboard&&g(this._element).on(Q.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&g(this._element).on(Q.MOUSEENTER,function(t){return e.pause(t)}).on(Q.MOUSELEAVE,function(t){return e.cycle(t)}),this._config.touch&&this._addTouchEventListeners()},t._addTouchEventListeners=function(){var n=this;if(this._touchSupported){var e=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},i=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),"hover"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))};g(this._element.querySelectorAll(nt)).on(Q.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(g(this._element).on(Q.POINTERDOWN,function(t){return e(t)}),g(this._element).on(Q.POINTERUP,function(t){return i(t)}),this._element.classList.add(J)):(g(this._element).on(Q.TOUCHSTART,function(t){return e(t)}),g(this._element).on(Q.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),g(this._element).on(Q.TOUCHEND,function(t){return i(t)}))}},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(et)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===W,i=t===q,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===q?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(tt)),o=g.Event(Q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return g(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(Z));g(e).removeClass(V);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&g(n).addClass(V)}},t._slide=function(t,e){var n,i,o,r=this,s=this._element.querySelector(tt),a=this._getItemIndex(s),l=e||s&&this._getItemByDirection(t,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=t===W?(n=X,i=$,M):(n=z,i=G,K),l&&g(l).hasClass(V))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=g.Event(Q.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(g(this._element).hasClass(Y)){g(l).addClass(i),_.reflow(l),g(s).addClass(n),g(l).addClass(n);var f=parseInt(l.getAttribute("data-interval"),10);this._config.interval=f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,f):this._config.defaultInterval||this._config.interval;var d=_.getTransitionDurationFromElement(s);g(s).one(_.TRANSITION_END,function(){g(l).removeClass(n+" "+i).addClass(V),g(s).removeClass(V+" "+i+" "+n),r._isSliding=!1,setTimeout(function(){return g(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else g(s).removeClass(V),g(l).addClass(V),this._isSliding=!1,g(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var t=g(this).data(j),e=l({},F,g(this).data());"object"==typeof i&&(e=l({},e,i));var n="string"==typeof i?i:e.slide;if(t||(t=new r(this,e),g(this).data(j,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&e.ride&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e=_.getSelectorFromElement(this);if(e){var n=g(e)[0];if(n&&g(n).hasClass(B)){var i=l({},g(n).data(),g(this).data()),o=this.getAttribute("data-slide-to");o&&(i.interval=!1),r._jQueryInterface.call(g(n),i),o&&g(n).data(j).to(o),t.preventDefault()}}},s(r,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return F}}]),r}();g(document).on(Q.CLICK_DATA_API,rt,lt._dataApiClickHandler),g(window).on(Q.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(st)),e=0,n=t.length;e<n;e++){var i=g(t[e]);lt._jQueryInterface.call(i,i.data())}}),g.fn[L]=lt._jQueryInterface,g.fn[L].Constructor=lt,g.fn[L].noConflict=function(){return g.fn[L]=x,lt._jQueryInterface};var ct="collapse",ht="bs.collapse",ut="."+ht,ft=g.fn[ct],dt={toggle:!0,parent:""},gt={toggle:"boolean",parent:"(string|element)"},_t={SHOW:"show"+ut,SHOWN:"shown"+ut,HIDE:"hide"+ut,HIDDEN:"hidden"+ut,CLICK_DATA_API:"click"+ut+".data-api"},mt="show",pt="collapse",vt="collapsing",yt="collapsed",Et="width",Ct="height",Tt=".show, .collapsing",St='[data-toggle="collapse"]',bt=function(){function a(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(St)),i=0,o=n.length;i<o;i++){var r=n[i],s=_.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(t){return t===e});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){g(this._element).hasClass(mt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!g(this._element).hasClass(mt)&&(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(Tt)).filter(function(t){return"string"==typeof n._config.parent?t.getAttribute("data-parent")===n._config.parent:t.classList.contains(pt)})).length&&(t=null),!(t&&(e=g(t).not(this._selector).data(ht))&&e._isTransitioning))){var i=g.Event(_t.SHOW);if(g(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(g(t).not(this._selector),"hide"),e||g(t).data(ht,null));var o=this._getDimension();g(this._element).removeClass(pt).addClass(vt),this._element.style[o]=0,this._triggerArray.length&&g(this._triggerArray).removeClass(yt).attr("aria-expanded",!0),this.setTransitioning(!0);var r="scroll"+(o[0].toUpperCase()+o.slice(1)),s=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){g(n._element).removeClass(vt).addClass(pt).addClass(mt),n._element.style[o]="",n.setTransitioning(!1),g(n._element).trigger(_t.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+"px"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&g(this._element).hasClass(mt)){var e=g.Event(_t.HIDE);if(g(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",_.reflow(this._element),g(this._element).addClass(vt).removeClass(pt).removeClass(mt);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=_.getSelectorFromElement(r);if(null!==s)g([].slice.call(document.querySelectorAll(s))).hasClass(mt)||g(r).addClass(yt).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var a=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){t.setTransitioning(!1),g(t._element).removeClass(vt).addClass(pt).trigger(_t.HIDDEN)}).emulateTransitionEnd(a)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){g.removeData(this._element,ht),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l({},dt,t)).toggle=Boolean(t.toggle),_.typeCheckConfig(ct,t,gt),t},t._getDimension=function(){return g(this._element).hasClass(Et)?Et:Ct},t._getParent=function(){var t,n=this;_.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(t.querySelectorAll(e));return g(i).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=g(t).hasClass(mt);e.length&&g(e).toggleClass(yt,!n).attr("aria-expanded",n)},a._getTargetFromElement=function(t){var e=_.getSelectorFromElement(t);return e?document.querySelector(e):null},a._jQueryInterface=function(i){return this.each(function(){var t=g(this),e=t.data(ht),n=l({},dt,t.data(),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(ht,e)),"string"==typeof i){if("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return dt}}]),a}();g(document).on(_t.CLICK_DATA_API,St,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=g(this),e=_.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));g(i).each(function(){var t=g(this),e=t.data(ht)?"toggle":n.data();bt._jQueryInterface.call(t,e)})}),g.fn[ct]=bt._jQueryInterface,g.fn[ct].Constructor=bt,g.fn[ct].noConflict=function(){return g.fn[ct]=ft,bt._jQueryInterface};var It="dropdown",Dt="bs.dropdown",wt="."+Dt,At=".data-api",Nt=g.fn[It],Ot=new RegExp("38|40|27"),kt={HIDE:"hide"+wt,HIDDEN:"hidden"+wt,SHOW:"show"+wt,SHOWN:"shown"+wt,CLICK:"click"+wt,CLICK_DATA_API:"click"+wt+At,KEYDOWN_DATA_API:"keydown"+wt+At,KEYUP_DATA_API:"keyup"+wt+At},Pt="disabled",Lt="show",jt="dropup",Ht="dropright",Rt="dropleft",xt="dropdown-menu-right",Ft="position-static",Ut='[data-toggle="dropdown"]',Wt=".dropdown form",qt=".dropdown-menu",Mt=".navbar-nav",Kt=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Qt="top-start",Bt="top-end",Vt="bottom-start",Yt="bottom-end",zt="right-start",Xt="left-start",$t={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},Gt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},Jt=function(){function c(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=c.prototype;return t.toggle=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)){var t=c._getParentFromElement(this._element),e=g(this._menu).hasClass(Lt);if(c._clearMenus(),!e){var n={relatedTarget:this._element},i=g.Event(kt.SHOW,n);if(g(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof u)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=t:_.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&g(t).addClass(Ft),this._popper=new u(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===g(t).closest(Mt).length&&g(document.body).children().on("mouseover",null,g.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),g(this._menu).toggleClass(Lt),g(t).toggleClass(Lt).trigger(g.Event(kt.SHOWN,n))}}}},t.show=function(){if(!(this._element.disabled||g(this._element).hasClass(Pt)||g(this._menu).hasClass(Lt))){var t={relatedTarget:this._element},e=g.Event(kt.SHOW,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(kt.SHOWN,t)))}},t.hide=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)&&g(this._menu).hasClass(Lt)){var t={relatedTarget:this._element},e=g.Event(kt.HIDE,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(kt.HIDDEN,t)))}},t.dispose=function(){g.removeData(this._element,Dt),g(this._element).off(wt),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;g(this._element).on(kt.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l({},this.constructor.Default,g(this._element).data(),t),_.typeCheckConfig(It,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=c._getParentFromElement(this._element);t&&(this._menu=t.querySelector(qt))}return this._menu},t._getPlacement=function(){var t=g(this._element.parentNode),e=Vt;return t.hasClass(jt)?(e=Qt,g(this._menu).hasClass(xt)&&(e=Bt)):t.hasClass(Ht)?e=zt:t.hasClass(Rt)?e=Xt:g(this._menu).hasClass(xt)&&(e=Yt),e},t._detectNavbar=function(){return 0<g(this._element).closest(".navbar").length},t._getOffset=function(){var e=this,t={};return"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e._config.offset(t.offsets,e._element)||{}),t}:t.offset=this._config.offset,t},t._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),t},c._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(Dt);if(t||(t=new c(this,"object"==typeof e?e:null),g(this).data(Dt,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},c._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(Ut)),n=0,i=e.length;n<i;n++){var o=c._getParentFromElement(e[n]),r=g(e[n]).data(Dt),s={relatedTarget:e[n]};if(t&&"click"===t.type&&(s.clickEvent=t),r){var a=r._menu;if(g(o).hasClass(Lt)&&!(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&g.contains(o,t.target))){var l=g.Event(kt.HIDE,s);g(o).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),e[n].setAttribute("aria-expanded","false"),g(a).removeClass(Lt),g(o).removeClass(Lt).trigger(g.Event(kt.HIDDEN,s)))}}}},c._getParentFromElement=function(t){var e,n=_.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},c._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||g(t.target).closest(qt).length)):Ot.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!g(this).hasClass(Pt))){var e=c._getParentFromElement(this),n=g(e).hasClass(Lt);if(n&&(!n||27!==t.which&&32!==t.which)){var i=[].slice.call(e.querySelectorAll(Kt));if(0!==i.length){var o=i.indexOf(t.target);38===t.which&&0<o&&o--,40===t.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===t.which){var r=e.querySelector(Ut);g(r).trigger("focus")}g(this).trigger("click")}}},s(c,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return $t}},{key:"DefaultType",get:function(){return Gt}}]),c}();g(document).on(kt.KEYDOWN_DATA_API,Ut,Jt._dataApiKeydownHandler).on(kt.KEYDOWN_DATA_API,qt,Jt._dataApiKeydownHandler).on(kt.CLICK_DATA_API+" "+kt.KEYUP_DATA_API,Jt._clearMenus).on(kt.CLICK_DATA_API,Ut,function(t){t.preventDefault(),t.stopPropagation(),Jt._jQueryInterface.call(g(this),"toggle")}).on(kt.CLICK_DATA_API,Wt,function(t){t.stopPropagation()}),g.fn[It]=Jt._jQueryInterface,g.fn[It].Constructor=Jt,g.fn[It].noConflict=function(){return g.fn[It]=Nt,Jt._jQueryInterface};var Zt="modal",te="bs.modal",ee="."+te,ne=g.fn[Zt],ie={backdrop:!0,keyboard:!0,focus:!0,show:!0},oe={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},re={HIDE:"hide"+ee,HIDDEN:"hidden"+ee,SHOW:"show"+ee,SHOWN:"shown"+ee,FOCUSIN:"focusin"+ee,RESIZE:"resize"+ee,CLICK_DISMISS:"click.dismiss"+ee,KEYDOWN_DISMISS:"keydown.dismiss"+ee,MOUSEUP_DISMISS:"mouseup.dismiss"+ee,MOUSEDOWN_DISMISS:"mousedown.dismiss"+ee,CLICK_DATA_API:"click"+ee+".data-api"},se="modal-dialog-scrollable",ae="modal-scrollbar-measure",le="modal-backdrop",ce="modal-open",he="fade",ue="show",fe=".modal-dialog",de=".modal-body",ge='[data-toggle="modal"]',_e='[data-dismiss="modal"]',me=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",pe=".sticky-top",ve=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(fe),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){g(this._element).hasClass(he)&&(this._isTransitioning=!0);var n=g.Event(re.SHOW,{relatedTarget:t});g(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),g(this._element).on(re.CLICK_DISMISS,_e,function(t){return e.hide(t)}),g(this._dialog).on(re.MOUSEDOWN_DISMISS,function(){g(e._element).one(re.MOUSEUP_DISMISS,function(t){g(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=g.Event(re.HIDE);if(g(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=g(this._element).hasClass(he);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),g(document).off(re.FOCUSIN),g(this._element).removeClass(ue),g(this._element).off(re.CLICK_DISMISS),g(this._dialog).off(re.MOUSEDOWN_DISMISS),i){var o=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(o)}else this._hideModal()}}},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return g(t).off(ee)}),g(document).off(re.FOCUSIN),g.removeData(this._element,te),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l({},ie,t),_.typeCheckConfig(Zt,t,oe),t},t._showElement=function(t){var e=this,n=g(this._element).hasClass(he);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),g(this._dialog).hasClass(se)?this._dialog.querySelector(de).scrollTop=0:this._element.scrollTop=0,n&&_.reflow(this._element),g(this._element).addClass(ue),this._config.focus&&this._enforceFocus();var i=g.Event(re.SHOWN,{relatedTarget:t}),o=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,g(e._element).trigger(i)};if(n){var r=_.getTransitionDurationFromElement(this._dialog);g(this._dialog).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()},t._enforceFocus=function(){var e=this;g(document).off(re.FOCUSIN).on(re.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===g(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?g(this._element).on(re.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||g(this._element).off(re.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?g(window).on(re.RESIZE,function(t){return e.handleUpdate(t)}):g(window).off(re.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){g(document.body).removeClass(ce),t._resetAdjustments(),t._resetScrollbar(),g(t._element).trigger(re.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(g(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=g(this._element).hasClass(he)?he:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=le,n&&this._backdrop.classList.add(n),g(this._backdrop).appendTo(document.body),g(this._element).on(re.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._element.focus():e.hide())}),n&&_.reflow(this._backdrop),g(this._backdrop).addClass(ue),!t)return;if(!n)return void t();var i=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){g(this._backdrop).removeClass(ue);var o=function(){e._removeBackdrop(),t&&t()};if(g(this._element).hasClass(he)){var r=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var t=[].slice.call(document.querySelectorAll(me)),e=[].slice.call(document.querySelectorAll(pe));g(t).each(function(t,e){var n=e.style.paddingRight,i=g(e).css("padding-right");g(e).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),g(e).each(function(t,e){var n=e.style.marginRight,i=g(e).css("margin-right");g(e).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=g(document.body).css("padding-right");g(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}g(document.body).addClass(ce)},t._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(me));g(t).each(function(t,e){var n=g(e).data("padding-right");g(e).removeData("padding-right"),e.style.paddingRight=n||""});var e=[].slice.call(document.querySelectorAll(""+pe));g(e).each(function(t,e){var n=g(e).data("margin-right");"undefined"!=typeof n&&g(e).css("margin-right",n).removeData("margin-right")});var n=g(document.body).data("padding-right");g(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=ae,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=g(this).data(te),e=l({},ie,g(this).data(),"object"==typeof n&&n?n:{});if(t||(t=new o(this,e),g(this).data(te,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return ie}}]),o}();g(document).on(re.CLICK_DATA_API,ge,function(t){var e,n=this,i=_.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=g(e).data(te)?"toggle":l({},g(e).data(),g(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var r=g(e).one(re.SHOW,function(t){t.isDefaultPrevented()||r.one(re.HIDDEN,function(){g(n).is(":visible")&&n.focus()})});ve._jQueryInterface.call(g(e),o,this)}),g.fn[Zt]=ve._jQueryInterface,g.fn[Zt].Constructor=ve,g.fn[Zt].noConflict=function(){return g.fn[Zt]=ne,ve._jQueryInterface};var ye=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Ee={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Ce=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Te=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function Se(t,s,e){if(0===t.length)return t;if(e&&"function"==typeof e)return e(t);for(var n=(new window.DOMParser).parseFromString(t,"text/html"),a=Object.keys(s),l=[].slice.call(n.body.querySelectorAll("*")),i=function(t,e){var n=l[t],i=n.nodeName.toLowerCase();if(-1===a.indexOf(n.nodeName.toLowerCase()))return n.parentNode.removeChild(n),"continue";var o=[].slice.call(n.attributes),r=[].concat(s["*"]||[],s[i]||[]);o.forEach(function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===ye.indexOf(n)||Boolean(t.nodeValue.match(Ce)||t.nodeValue.match(Te));for(var i=e.filter(function(t){return t instanceof RegExp}),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return!0;return!1})(t,r)||n.removeAttribute(t.nodeName)})},o=0,r=l.length;o<r;o++)i(o);return n.body.innerHTML}var be="tooltip",Ie="bs.tooltip",De="."+Ie,we=g.fn[be],Ae="bs-tooltip",Ne=new RegExp("(^|\\s)"+Ae+"\\S+","g"),Oe=["sanitize","whiteList","sanitizeFn"],ke={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object"},Pe={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Le={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Ee},je="show",He="out",Re={HIDE:"hide"+De,HIDDEN:"hidden"+De,SHOW:"show"+De,SHOWN:"shown"+De,INSERTED:"inserted"+De,CLICK:"click"+De,FOCUSIN:"focusin"+De,FOCUSOUT:"focusout"+De,MOUSEENTER:"mouseenter"+De,MOUSELEAVE:"mouseleave"+De},xe="fade",Fe="show",Ue=".tooltip-inner",We=".arrow",qe="hover",Me="focus",Ke="click",Qe="manual",Be=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(xe);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:We},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===He&&e._leave(null,e)};if(g(this.tip).hasClass(xe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==je&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[Ke]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[qe]=!1,g(this.tip).hasClass(xe)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ae+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ue)),this.getTitle()),g(t).removeClass(xe+" "+Fe)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Se(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Pe[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Qe){var e=t===qe?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===qe?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Me:qe]=!0),g(e.getTipElement()).hasClass(Fe)||e._hoverState===je?e._hoverState=je:(clearTimeout(e._timeout),e._hoverState=je,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===je&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Me:qe]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===He&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==Oe.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(be,t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ne);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(xe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ie),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ie,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Le}},{key:"NAME",get:function(){return be}},{key:"DATA_KEY",get:function(){return Ie}},{key:"Event",get:function(){return Re}},{key:"EVENT_KEY",get:function(){return De}},{key:"DefaultType",get:function(){return ke}}]),i}();g.fn[be]=Be._jQueryInterface,g.fn[be].Constructor=Be,g.fn[be].noConflict=function(){return g.fn[be]=we,Be._jQueryInterface};var Ve="popover",Ye="bs.popover",ze="."+Ye,Xe=g.fn[Ve],$e="bs-popover",Ge=new RegExp("(^|\\s)"+$e+"\\S+","g"),Je=l({},Be.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),Ze=l({},Be.DefaultType,{content:"(string|element|function)"}),tn="fade",en="show",nn=".popover-header",on=".popover-body",rn={HIDE:"hide"+ze,HIDDEN:"hidden"+ze,SHOW:"show"+ze,SHOWN:"shown"+ze,INSERTED:"inserted"+ze,CLICK:"click"+ze,FOCUSIN:"focusin"+ze,FOCUSOUT:"focusout"+ze,MOUSEENTER:"mouseenter"+ze,MOUSELEAVE:"mouseleave"+ze},sn=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass($e+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(nn),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(on),e),t.removeClass(tn+" "+en)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ge);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ye),e="object"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ye,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Je}},{key:"NAME",get:function(){return Ve}},{key:"DATA_KEY",get:function(){return Ye}},{key:"Event",get:function(){return rn}},{key:"EVENT_KEY",get:function(){return ze}},{key:"DefaultType",get:function(){return Ze}}]),i}(Be);g.fn[Ve]=sn._jQueryInterface,g.fn[Ve].Constructor=sn,g.fn[Ve].noConflict=function(){return g.fn[Ve]=Xe,sn._jQueryInterface};var an="scrollspy",ln="bs.scrollspy",cn="."+ln,hn=g.fn[an],un={offset:10,method:"auto",target:""},fn={offset:"number",method:"string",target:"(string|element)"},dn={ACTIVATE:"activate"+cn,SCROLL:"scroll"+cn,LOAD_DATA_API:"load"+cn+".data-api"},gn="dropdown-item",_n="active",mn='[data-spy="scroll"]',pn=".nav, .list-group",vn=".nav-link",yn=".nav-item",En=".list-group-item",Cn=".dropdown",Tn=".dropdown-item",Sn=".dropdown-toggle",bn="offset",In="position",Dn=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+vn+","+this._config.target+" "+En+","+this._config.target+" "+Tn,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,g(this._scrollElement).on(dn.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?bn:In,o="auto"===this._config.method?t:this._config.method,r=o===In?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=_.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[g(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){g.removeData(this._element,ln),g(this._scrollElement).off(cn),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if("string"!=typeof(t=l({},un,"object"==typeof t&&t?t:{})).target){var e=g(t.target).attr("id");e||(e=_.getUID(an),g(t.target).attr("id",e)),t.target="#"+e}return _.typeCheckConfig(an,t,fn),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",").map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'}),n=g([].slice.call(document.querySelectorAll(t.join(","))));n.hasClass(gn)?(n.closest(Cn).find(Sn).addClass(_n),n.addClass(_n)):(n.addClass(_n),n.parents(pn).prev(vn+", "+En).addClass(_n),n.parents(pn).prev(yn).children(vn).addClass(_n)),g(this._scrollElement).trigger(dn.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(_n)}).forEach(function(t){return t.classList.remove(_n)})},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(ln);if(t||(t=new n(this,"object"==typeof e&&e),g(this).data(ln,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return un}}]),n}();g(window).on(dn.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(mn)),e=t.length;e--;){var n=g(t[e]);Dn._jQueryInterface.call(n,n.data())}}),g.fn[an]=Dn._jQueryInterface,g.fn[an].Constructor=Dn,g.fn[an].noConflict=function(){return g.fn[an]=hn,Dn._jQueryInterface};var wn="bs.tab",An="."+wn,Nn=g.fn.tab,On={HIDE:"hide"+An,HIDDEN:"hidden"+An,SHOW:"show"+An,SHOWN:"shown"+An,CLICK_DATA_API:"click"+An+".data-api"},kn="dropdown-menu",Pn="active",Ln="disabled",jn="fade",Hn="show",Rn=".dropdown",xn=".nav, .list-group",Fn=".active",Un="> li > .active",Wn='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',qn=".dropdown-toggle",Mn="> .dropdown-menu .active",Kn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&g(this._element).hasClass(Pn)||g(this._element).hasClass(Ln))){var t,i,e=g(this._element).closest(xn)[0],o=_.getSelectorFromElement(this._element);if(e){var r="UL"===e.nodeName||"OL"===e.nodeName?Un:Fn;i=(i=g.makeArray(g(e).find(r)))[i.length-1]}var s=g.Event(On.HIDE,{relatedTarget:this._element}),a=g.Event(On.SHOW,{relatedTarget:i});if(i&&g(i).trigger(s),g(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=g.Event(On.HIDDEN,{relatedTarget:n._element}),e=g.Event(On.SHOWN,{relatedTarget:i});g(i).trigger(t),g(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){g.removeData(this._element,wn),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?g(e).children(Fn):g(e).find(Un))[0],r=n&&o&&g(o).hasClass(jn),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=_.getTransitionDurationFromElement(o);g(o).removeClass(Hn).one(_.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){g(e).removeClass(Pn);var i=g(e.parentNode).find(Mn)[0];i&&g(i).removeClass(Pn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(g(t).addClass(Pn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),_.reflow(t),t.classList.contains(jn)&&t.classList.add(Hn),t.parentNode&&g(t.parentNode).hasClass(kn)){var o=g(t).closest(Rn)[0];if(o){var r=[].slice.call(o.querySelectorAll(qn));g(r).addClass(Pn)}t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(wn);if(e||(e=new i(this),t.data(wn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();g(document).on(On.CLICK_DATA_API,Wn,function(t){t.preventDefault(),Kn._jQueryInterface.call(g(this),"show")}),g.fn.tab=Kn._jQueryInterface,g.fn.tab.Constructor=Kn,g.fn.tab.noConflict=function(){return g.fn.tab=Nn,Kn._jQueryInterface};var Qn="toast",Bn="bs.toast",Vn="."+Bn,Yn=g.fn[Qn],zn={CLICK_DISMISS:"click.dismiss"+Vn,HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn},Xn="fade",$n="hide",Gn="show",Jn="showing",Zn={animation:"boolean",autohide:"boolean",delay:"number"},ti={animation:!0,autohide:!0,delay:500},ei='[data-dismiss="toast"]',ni=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;g(this._element).trigger(zn.SHOW),this._config.animation&&this._element.classList.add(Xn);var e=function(){t._element.classList.remove(Jn),t._element.classList.add(Gn),g(t._element).trigger(zn.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove($n),this._element.classList.add(Jn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(Gn)&&(g(this._element).trigger(zn.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(Gn)&&this._element.classList.remove(Gn),g(this._element).off(zn.CLICK_DISMISS),g.removeData(this._element,Bn),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},ti,g(this._element).data(),"object"==typeof t&&t?t:{}),_.typeCheckConfig(Qn,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;g(this._element).on(zn.CLICK_DISMISS,ei,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add($n),g(t._element).trigger(zn.HIDDEN)};if(this._element.classList.remove(Gn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(Bn);if(e||(e=new i(this,"object"==typeof n&&n),t.data(Bn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"DefaultType",get:function(){return Zn}},{key:"Default",get:function(){return ti}}]),i}();g.fn[Qn]=ni._jQueryInterface,g.fn[Qn].Constructor=ni,g.fn[Qn].noConflict=function(){return g.fn[Qn]=Yn,ni._jQueryInterface},function(){if("undefined"==typeof g)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=g.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),t.Util=_,t.Alert=p,t.Button=P,t.Carousel=lt,t.Collapse=bt,t.Dropdown=Jt,t.Modal=ve,t.Popover=sn,t.Scrollspy=Dn,t.Tab=Kn,t.Toast=ni,t.Tooltip=Be,Object.defineProperty(t,"__esModule",{value:!0})}); |
| | | //# sourceMappingURL=bootstrap.min.js.map |
¶Ô±ÈÐÂÎļþ |
| | |
| | | {"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/index.js"],"names":["TRANSITION_END","transitionEndEmulator","duration","_this","this","called","$","one","Util","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","ShadowRoot","parentNode","root","fn","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","Alert","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","DATA_API_KEY","Selector","FOCUS_BLUR_DATA_API","Button","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","hasAttribute","focus","setAttribute","toggleClass","button","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","window","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","length","direction","off","_objectSpread","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","end","clearTimeout","querySelectorAll","e","add","tagName","which","slice","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","parseInt","defaultInterval","action","TypeError","ride","_dataApiClickHandler","slideIndex","carousels","i","len","$carousel","SHOW","SHOWN","HIDE","HIDDEN","Dimension","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","AttachmentMap","offset","flip","boundary","reference","display","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","Popper","referenceElement","_getPopperConfig","body","noop","hideEvent","destroy","update","scheduleUpdate","stopPropagation","constructor","_getPlacement","$parentDropdown","placement","_getOffset","offsets","popperConfig","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","forEach","htmlElement","handleUpdate","Node","ELEMENT_NODE","appendChild","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","has","_this5","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this8","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","rect","left","right","innerWidth","_getScrollbarWidth","_this9","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","_this10","uriAttrs","DefaultWhitelist","*","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","keys","_loop","el","elName","nodeName","attributeList","attributes","whitelistedAttributes","concat","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","l","allowedAttribute","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","container","fallbackPlacement","sanitize","AUTO","TOP","RIGHT","BOTTOM","LEFT","HoverState","INSERTED","FOCUSOUT","Trigger","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","text","empty","append","find","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","key","$tip","tabClass","join","popperData","popperInstance","instance","popper","initConfigAnimation","Popover","_getContent","method","ACTIVATE","SCROLL","OffsetMethod","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","map","targetSelector","targetBCR","height","top","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","parents","node","scrollSpys","$spy","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","autohide","Toast","withoutTimeout","_close","version"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n }\n}\n\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n}\n\nconst Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n}\n\nconst Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input:not([type=\"hidden\"])',\n ACTIVE : '.active',\n BUTTON : '.btn'\n}\n\nconst Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLE\n )[0]\n\n if (rootElement) {\n const input = this._element.querySelector(Selector.INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(Selector.ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n input.checked = !this._element.classList.contains(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !this._element.classList.contains(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true,\n touch : true\n}\n\nconst DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean',\n touch : 'boolean'\n}\n\nconst Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n}\n\nconst Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHSTART : `touchstart${EVENT_KEY}`,\n TOUCHMOVE : `touchmove${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n POINTERDOWN : `pointerdown${EVENT_KEY}`,\n POINTERUP : `pointerup${EVENT_KEY}`,\n DRAG_START : `dragstart${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item',\n POINTER_EVENT : 'pointer-event'\n}\n\nconst Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n ITEM_IMG : '.carousel-item img',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n}\n\nconst PointerType = {\n TOUCH : 'touch',\n PEN : 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(Selector.INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(Selector.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = (event) => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, (e) => e.preventDefault())\n if (this._pointerEvent) {\n $(this._element).on(Event.POINTERDOWN, (event) => start(event))\n $(this._element).on(Event.POINTERUP, (event) => end(event))\n\n this._element.classList.add(ClassName.POINTER_EVENT)\n } else {\n $(this._element).on(Event.TOUCHSTART, (event) => start(event))\n $(this._element).on(Event.TOUCHMOVE, (event) => move(event))\n $(this._element).on(Event.TOUCHEND, (event) => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n $(indicators)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle : true,\n parent : ''\n}\n\nconst DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n}\n\nconst Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n}\n\nconst Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n}\n\nconst Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES))\n .filter((elem) => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(ClassName.COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n const children = [].slice.call(parent.querySelectorAll(selector))\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n}\n\nconst Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n}\n\nconst AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n}\n\nconst Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic'\n}\n\nconst DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n show() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(Selector.MENU)\n }\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets, this._element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = parent.querySelector(Selector.DATA_TOGGLE)\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SCROLLABLE : 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DIALOG : '.modal-dialog',\n MODAL_BODY : '.modal-body',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(Selector.DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n $(document).off(Event.FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n\n if ($(this._dialog).hasClass(ClassName.SCROLLABLE)) {\n this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(ClassName.OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n}\n\nconst HoverState = {\n SHOW : 'show',\n OUT : 'out'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n}\n\nconst Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n}\n\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal')\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => this._handlePopperPlacementChange(data)\n })\n\n $(tip).addClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(Selector.TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n })\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => {\n if (this.element) {\n this.hide()\n }\n }\n )\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const popperInstance = popperData.instance\n this.tip = popperInstance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset : 10,\n method : 'auto',\n target : ''\n}\n\nconst DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n}\n\nconst Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n}\n\nconst Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n}\n\nconst OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n [].slice.call(document.querySelectorAll(this._selector))\n .filter((node) => node.classList.contains(ClassName.ACTIVE))\n .forEach((node) => node.classList.remove(ClassName.ACTIVE))\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY))\n const scrollSpysLength = scrollSpys.length\n\n for (let i = scrollSpysLength; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL')\n ? $(container).find(Selector.ACTIVE_UL)\n : $(container).children(Selector.ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && $(active).hasClass(ClassName.FADE))\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n $(active)\n .removeClass(ClassName.SHOW)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(ClassName.ACTIVE)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n\n if (element.classList.contains(ClassName.FADE)) {\n element.classList.add(ClassName.SHOW)\n }\n\n if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n\n if (dropdownElement) {\n const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector.DROPDOWN_TOGGLE))\n\n $(dropdownToggleList).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n}\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n HIDE : 'hide',\n SHOW : 'show',\n SHOWING : 'showing'\n}\n\nconst DefaultType = {\n animation : 'boolean',\n autohide : 'boolean',\n delay : 'number'\n}\n\nconst Default = {\n animation : true,\n autohide : true,\n delay : 500\n}\n\nconst Selector = {\n DATA_DISMISS : '[data-dismiss=\"toast\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast {\n constructor(element, config) {\n this._element = element\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n show() {\n $(this._element).trigger(Event.SHOW)\n\n if (this._config.animation) {\n this._element.classList.add(ClassName.FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(ClassName.SHOWING)\n this._element.classList.add(ClassName.SHOW)\n\n $(this._element).trigger(Event.SHOWN)\n\n if (this._config.autohide) {\n this.hide()\n }\n }\n\n this._element.classList.remove(ClassName.HIDE)\n this._element.classList.add(ClassName.SHOWING)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n hide(withoutTimeout) {\n if (!this._element.classList.contains(ClassName.SHOW)) {\n return\n }\n\n $(this._element).trigger(Event.HIDE)\n\n if (withoutTimeout) {\n this._close()\n } else {\n this._timeout = setTimeout(() => {\n this._close()\n }, this._config.delay)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n this._timeout = null\n\n if (this._element.classList.contains(ClassName.SHOW)) {\n this._element.classList.remove(ClassName.SHOW)\n }\n\n $(this._element).off(Event.CLICK_DISMISS)\n\n $.removeData(this._element, DATA_KEY)\n this._element = null\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...$(this._element).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _setListeners() {\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n () => this.hide(true)\n )\n }\n\n _close() {\n const complete = () => {\n this._element.classList.add(ClassName.HIDE)\n $(this._element).trigger(Event.HIDDEN)\n }\n\n this._element.classList.remove(ClassName.SHOW)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Toast._jQueryInterface\n$.fn[NAME].Constructor = Toast\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast._jQueryInterface\n}\n\nexport default Toast\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Toast from './toast'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(() => {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n})()\n\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Toast,\n Tooltip\n}\n"]} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Bootstrap Duallistbox - v4.0.1 |
| | | * A responsive dual listbox widget optimized for Twitter Bootstrap. It works on all modern browsers and on touch devices. |
| | | * http://www.virtuosoft.eu/code/bootstrap-duallistbox/ |
| | | * |
| | | * Made by István Ujj-Mészáros |
| | | * Under Apache License v2.0 License |
| | | */ |
| | | .bootstrap-duallistbox-container .buttons { |
| | | width: 100%; |
| | | margin-bottom: -1px; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container label { |
| | | display: block; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container .info { |
| | | display: inline-block; |
| | | margin-bottom: 5px; |
| | | font-size: 11px; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container .clear1, |
| | | .bootstrap-duallistbox-container .clear2 { |
| | | display: none; |
| | | font-size: 10px; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container .box1.filtered .clear1, |
| | | .bootstrap-duallistbox-container .box2.filtered .clear2 { |
| | | display: inline-block; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container .move, |
| | | .bootstrap-duallistbox-container .remove { |
| | | width: 50%; |
| | | box-sizing: content-box; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container .btn-group .btn { |
| | | border-bottom-left-radius: 0; |
| | | border-bottom-right-radius: 0; |
| | | } |
| | | .bootstrap-duallistbox-container:not(.moveonselect) select { |
| | | border-top-left-radius: 0; |
| | | border-top-right-radius: 0; |
| | | } |
| | | .bootstrap-duallistbox-container .moveall, |
| | | .bootstrap-duallistbox-container .removeall { |
| | | width: 50%; |
| | | box-sizing: content-box; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container.bs2compatible .btn-group > .btn + .btn { |
| | | margin-left: 0; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container select { |
| | | width: 100%; |
| | | height: 300px; |
| | | padding: 0; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container .filter { |
| | | display: inline-block; |
| | | width: 100%; |
| | | height: 31px; |
| | | margin: 0 0 5px 0; |
| | | -webkit-box-sizing: border-box; |
| | | -moz-box-sizing: border-box; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container .filter.placeholder { |
| | | color: #aaa; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container.moveonselect .move, |
| | | .bootstrap-duallistbox-container.moveonselect .remove { |
| | | display:none; |
| | | } |
| | | |
| | | .bootstrap-duallistbox-container.moveonselect .moveall, |
| | | .bootstrap-duallistbox-container.moveonselect .removeall { |
| | | width: 100%; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | .bootstrap-duallistbox-container .buttons{width:100%;margin-bottom:-1px}.bootstrap-duallistbox-container label{display:block}.bootstrap-duallistbox-container .info{display:inline-block;margin-bottom:5px;font-size:11px}.bootstrap-duallistbox-container .clear1,.bootstrap-duallistbox-container .clear2{display:none;font-size:10px}.bootstrap-duallistbox-container .box1.filtered .clear1,.bootstrap-duallistbox-container .box2.filtered .clear2{display:inline-block}.bootstrap-duallistbox-container .move,.bootstrap-duallistbox-container .remove{width:50%;box-sizing:content-box}.bootstrap-duallistbox-container .btn-group .btn{border-bottom-left-radius:0;border-bottom-right-radius:0}.bootstrap-duallistbox-container:not(.moveonselect) select{border-top-left-radius:0;border-top-right-radius:0}.bootstrap-duallistbox-container .moveall,.bootstrap-duallistbox-container .removeall{width:50%;box-sizing:content-box}.bootstrap-duallistbox-container.bs2compatible .btn-group>.btn+.btn{margin-left:0}.bootstrap-duallistbox-container select{width:100%;height:300px;padding:0}.bootstrap-duallistbox-container .filter{display:inline-block;width:100%;height:31px;margin:0 0 5px 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-duallistbox-container .filter.placeholder{color:#aaa}.bootstrap-duallistbox-container.moveonselect .move,.bootstrap-duallistbox-container.moveonselect .remove{display:none}.bootstrap-duallistbox-container.moveonselect .moveall,.bootstrap-duallistbox-container.moveonselect .removeall{width:100%} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Bootstrap Duallistbox - v4.0.1 |
| | | * A responsive dual listbox widget optimized for Twitter Bootstrap. It works on all modern browsers and on touch devices. |
| | | * http://www.virtuosoft.eu/code/bootstrap-duallistbox/ |
| | | * |
| | | * Made by István Ujj-Mészáros |
| | | * Under Apache License v2.0 License |
| | | */ |
| | | (function(factory) { |
| | | if (typeof define === 'function' && define.amd) { |
| | | define(['jquery'], factory); |
| | | } else if (typeof module === 'object' && module.exports) { |
| | | module.exports = function(root, jQuery) { |
| | | if (jQuery === undefined) { |
| | | if (typeof window !== 'undefined') { |
| | | jQuery = require('jquery'); |
| | | } |
| | | else { |
| | | jQuery = require('jquery')(root); |
| | | } |
| | | } |
| | | factory(jQuery); |
| | | return jQuery; |
| | | }; |
| | | } else { |
| | | factory(jQuery); |
| | | } |
| | | }(function($) { |
| | | // Create the defaults once |
| | | var pluginName = 'bootstrapDualListbox', |
| | | defaults = { |
| | | filterTextClear: 'show all', |
| | | filterPlaceHolder: 'Filter', |
| | | moveSelectedLabel: 'Move selected', |
| | | moveAllLabel: 'Move all', |
| | | removeSelectedLabel: 'Remove selected', |
| | | removeAllLabel: 'Remove all', |
| | | moveOnSelect: true, // true/false (forced true on androids, see the comment later) |
| | | moveOnDoubleClick: true, // true/false (forced false on androids, cause moveOnSelect is forced to true) |
| | | preserveSelectionOnMove: false, // 'all' / 'moved' / false |
| | | selectedListLabel: false, // 'string', false |
| | | nonSelectedListLabel: false, // 'string', false |
| | | helperSelectNamePostfix: '_helper', // 'string_of_postfix' / false |
| | | selectorMinimalHeight: 100, |
| | | showFilterInputs: true, // whether to show filter inputs |
| | | nonSelectedFilter: '', // string, filter the non selected options |
| | | selectedFilter: '', // string, filter the selected options |
| | | infoText: 'Showing all {0}', // text when all options are visible / false for no info text |
| | | infoTextFiltered: '<span class="badge badge-warning">Filtered</span> {0} from {1}', // when not all of the options are visible due to the filter |
| | | infoTextEmpty: 'Empty list', // when there are no options present in the list |
| | | filterOnValues: false, // filter by selector's values, boolean |
| | | sortByInputOrder: false, |
| | | eventMoveOverride: false, // boolean, allows user to unbind default event behaviour and run their own instead |
| | | eventMoveAllOverride: false, // boolean, allows user to unbind default event behaviour and run their own instead |
| | | eventRemoveOverride: false, // boolean, allows user to unbind default event behaviour and run their own instead |
| | | eventRemoveAllOverride: false, // boolean, allows user to unbind default event behaviour and run their own instead |
| | | btnClass: 'btn-outline-secondary', // sets the button style class for all the buttons |
| | | btnMoveText: '>', // string, sets the text for the "Move" button |
| | | btnRemoveText: '<', // string, sets the text for the "Remove" button |
| | | btnMoveAllText: '>>', // string, sets the text for the "Move All" button |
| | | btnRemoveAllText: '<<' // string, sets the text for the "Remove All" button |
| | | }, |
| | | // Selections are invisible on android if the containing select is styled with CSS |
| | | // http://code.google.com/p/android/issues/detail?id=16922 |
| | | isBuggyAndroid = /android/i.test(navigator.userAgent.toLowerCase()); |
| | | |
| | | // The actual plugin constructor |
| | | function BootstrapDualListbox(element, options) { |
| | | this.element = $(element); |
| | | // jQuery has an extend method which merges the contents of two or |
| | | // more objects, storing the result in the first object. The first object |
| | | // is generally empty as we don't want to alter the default options for |
| | | // future instances of the plugin |
| | | this.settings = $.extend({}, defaults, options); |
| | | this._defaults = defaults; |
| | | this._name = pluginName; |
| | | this.init(); |
| | | } |
| | | |
| | | function triggerChangeEvent(dualListbox) { |
| | | dualListbox.element.trigger('change'); |
| | | } |
| | | |
| | | function updateSelectionStates(dualListbox) { |
| | | dualListbox.element.find('option').each(function(index, item) { |
| | | var $item = $(item); |
| | | if (typeof($item.data('original-index')) === 'undefined') { |
| | | $item.data('original-index', dualListbox.elementCount++); |
| | | } |
| | | if (typeof($item.data('_selected')) === 'undefined') { |
| | | $item.data('_selected', false); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function changeSelectionState(dualListbox, original_index, selected) { |
| | | dualListbox.element.find('option').each(function(index, item) { |
| | | var $item = $(item); |
| | | if ($item.data('original-index') === original_index) { |
| | | $item.prop('selected', selected); |
| | | if(selected){ |
| | | $item.attr('data-sortindex', dualListbox.sortIndex); |
| | | dualListbox.sortIndex++; |
| | | } else { |
| | | $item.removeAttr('data-sortindex'); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function formatString(s, args) { |
| | | console.log(s, args); |
| | | return s.replace(/{(\d+)}/g, function(match, number) { |
| | | return typeof args[number] !== 'undefined' ? args[number] : match; |
| | | }); |
| | | } |
| | | |
| | | function refreshInfo(dualListbox) { |
| | | if (!dualListbox.settings.infoText) { |
| | | return; |
| | | } |
| | | |
| | | var visible1 = dualListbox.elements.select1.find('option').length, |
| | | visible2 = dualListbox.elements.select2.find('option').length, |
| | | all1 = dualListbox.element.find('option').length - dualListbox.selectedElements, |
| | | all2 = dualListbox.selectedElements, |
| | | content = ''; |
| | | |
| | | if (all1 === 0) { |
| | | content = dualListbox.settings.infoTextEmpty; |
| | | } else if (visible1 === all1) { |
| | | content = formatString(dualListbox.settings.infoText, [visible1, all1]); |
| | | } else { |
| | | content = formatString(dualListbox.settings.infoTextFiltered, [visible1, all1]); |
| | | } |
| | | |
| | | dualListbox.elements.info1.html(content); |
| | | dualListbox.elements.box1.toggleClass('filtered', !(visible1 === all1 || all1 === 0)); |
| | | |
| | | if (all2 === 0) { |
| | | content = dualListbox.settings.infoTextEmpty; |
| | | } else if (visible2 === all2) { |
| | | content = formatString(dualListbox.settings.infoText, [visible2, all2]); |
| | | } else { |
| | | content = formatString(dualListbox.settings.infoTextFiltered, [visible2, all2]); |
| | | } |
| | | |
| | | dualListbox.elements.info2.html(content); |
| | | dualListbox.elements.box2.toggleClass('filtered', !(visible2 === all2 || all2 === 0)); |
| | | } |
| | | |
| | | function refreshSelects(dualListbox) { |
| | | dualListbox.selectedElements = 0; |
| | | |
| | | dualListbox.elements.select1.empty(); |
| | | dualListbox.elements.select2.empty(); |
| | | |
| | | dualListbox.element.find('option').each(function(index, item) { |
| | | var $item = $(item); |
| | | if ($item.prop('selected')) { |
| | | dualListbox.selectedElements++; |
| | | dualListbox.elements.select2.append($item.clone(true).prop('selected', $item.data('_selected'))); |
| | | } else { |
| | | dualListbox.elements.select1.append($item.clone(true).prop('selected', $item.data('_selected'))); |
| | | } |
| | | }); |
| | | |
| | | if (dualListbox.settings.showFilterInputs) { |
| | | filter(dualListbox, 1); |
| | | filter(dualListbox, 2); |
| | | } |
| | | refreshInfo(dualListbox); |
| | | } |
| | | |
| | | function filter(dualListbox, selectIndex) { |
| | | if (!dualListbox.settings.showFilterInputs) { |
| | | return; |
| | | } |
| | | |
| | | saveSelections(dualListbox, selectIndex); |
| | | |
| | | dualListbox.elements['select'+selectIndex].empty().scrollTop(0); |
| | | var regex, |
| | | allOptions = dualListbox.element.find('option'), |
| | | options = dualListbox.element; |
| | | |
| | | if (selectIndex === 1) { |
| | | options = allOptions.not(':selected'); |
| | | } else { |
| | | options = options.find('option:selected'); |
| | | } |
| | | |
| | | try { |
| | | regex = new RegExp($.trim(dualListbox.elements['filterInput'+selectIndex].val()), 'gi'); |
| | | } |
| | | catch(e) { |
| | | // a regex to match nothing |
| | | regex = new RegExp('/a^/', 'gi'); |
| | | } |
| | | |
| | | options.each(function(index, item) { |
| | | var $item = $(item), |
| | | isFiltered = true; |
| | | if (item.text.match(regex) || (dualListbox.settings.filterOnValues && $item.attr('value').match(regex) ) ) { |
| | | isFiltered = false; |
| | | dualListbox.elements['select'+selectIndex].append($item.clone(true).prop('selected', $item.data('_selected'))); |
| | | } |
| | | allOptions.eq($item.data('original-index')).data('filtered'+selectIndex, isFiltered); |
| | | }); |
| | | |
| | | refreshInfo(dualListbox); |
| | | } |
| | | |
| | | function saveSelections(dualListbox, selectIndex) { |
| | | var options = dualListbox.element.find('option'); |
| | | dualListbox.elements['select'+selectIndex].find('option').each(function(index, item) { |
| | | var $item = $(item); |
| | | options.eq($item.data('original-index')).data('_selected', $item.prop('selected')); |
| | | }); |
| | | } |
| | | |
| | | function sortOptionsByInputOrder(select){ |
| | | var selectopt = select.children('option'); |
| | | |
| | | selectopt.sort(function(a,b){ |
| | | var an = parseInt(a.getAttribute('data-sortindex')), |
| | | bn = parseInt(b.getAttribute('data-sortindex')); |
| | | |
| | | if(an > bn) { |
| | | return 1; |
| | | } |
| | | if(an < bn) { |
| | | return -1; |
| | | } |
| | | return 0; |
| | | }); |
| | | |
| | | selectopt.detach().appendTo(select); |
| | | } |
| | | |
| | | function sortOptions(select) { |
| | | select.find('option').sort(function(a, b) { |
| | | return ($(a).data('original-index') > $(b).data('original-index')) ? 1 : -1; |
| | | }).appendTo(select); |
| | | } |
| | | |
| | | function clearSelections(dualListbox) { |
| | | dualListbox.elements.select1.find('option').each(function() { |
| | | dualListbox.element.find('option').data('_selected', false); |
| | | }); |
| | | } |
| | | |
| | | function move(dualListbox) { |
| | | if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) { |
| | | saveSelections(dualListbox, 1); |
| | | saveSelections(dualListbox, 2); |
| | | } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) { |
| | | saveSelections(dualListbox, 1); |
| | | } |
| | | |
| | | dualListbox.elements.select1.find('option:selected').each(function(index, item) { |
| | | var $item = $(item); |
| | | if (!$item.data('filtered1')) { |
| | | changeSelectionState(dualListbox, $item.data('original-index'), true); |
| | | } |
| | | }); |
| | | |
| | | refreshSelects(dualListbox); |
| | | triggerChangeEvent(dualListbox); |
| | | if(dualListbox.settings.sortByInputOrder){ |
| | | sortOptionsByInputOrder(dualListbox.elements.select2); |
| | | } else { |
| | | sortOptions(dualListbox.elements.select2); |
| | | } |
| | | } |
| | | |
| | | function remove(dualListbox) { |
| | | if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) { |
| | | saveSelections(dualListbox, 1); |
| | | saveSelections(dualListbox, 2); |
| | | } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) { |
| | | saveSelections(dualListbox, 2); |
| | | } |
| | | |
| | | dualListbox.elements.select2.find('option:selected').each(function(index, item) { |
| | | var $item = $(item); |
| | | if (!$item.data('filtered2')) { |
| | | changeSelectionState(dualListbox, $item.data('original-index'), false); |
| | | } |
| | | }); |
| | | |
| | | refreshSelects(dualListbox); |
| | | triggerChangeEvent(dualListbox); |
| | | sortOptions(dualListbox.elements.select1); |
| | | if(dualListbox.settings.sortByInputOrder){ |
| | | sortOptionsByInputOrder(dualListbox.elements.select2); |
| | | } |
| | | } |
| | | |
| | | function moveAll(dualListbox) { |
| | | if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) { |
| | | saveSelections(dualListbox, 1); |
| | | saveSelections(dualListbox, 2); |
| | | } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) { |
| | | saveSelections(dualListbox, 1); |
| | | } |
| | | |
| | | dualListbox.element.find('option').each(function(index, item) { |
| | | var $item = $(item); |
| | | if (!$item.data('filtered1')) { |
| | | $item.prop('selected', true); |
| | | $item.attr('data-sortindex', dualListbox.sortIndex); |
| | | dualListbox.sortIndex++; |
| | | } |
| | | }); |
| | | |
| | | refreshSelects(dualListbox); |
| | | triggerChangeEvent(dualListbox); |
| | | } |
| | | |
| | | function removeAll(dualListbox) { |
| | | if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) { |
| | | saveSelections(dualListbox, 1); |
| | | saveSelections(dualListbox, 2); |
| | | } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) { |
| | | saveSelections(dualListbox, 2); |
| | | } |
| | | |
| | | dualListbox.element.find('option').each(function(index, item) { |
| | | var $item = $(item); |
| | | if (!$item.data('filtered2')) { |
| | | $item.prop('selected', false); |
| | | $item.removeAttr('data-sortindex'); |
| | | } |
| | | }); |
| | | |
| | | refreshSelects(dualListbox); |
| | | triggerChangeEvent(dualListbox); |
| | | } |
| | | |
| | | function bindEvents(dualListbox) { |
| | | dualListbox.elements.form.submit(function(e) { |
| | | if (dualListbox.elements.filterInput1.is(':focus')) { |
| | | e.preventDefault(); |
| | | dualListbox.elements.filterInput1.focusout(); |
| | | } else if (dualListbox.elements.filterInput2.is(':focus')) { |
| | | e.preventDefault(); |
| | | dualListbox.elements.filterInput2.focusout(); |
| | | } |
| | | }); |
| | | |
| | | dualListbox.element.on('bootstrapDualListbox.refresh', function(e, mustClearSelections){ |
| | | dualListbox.refresh(mustClearSelections); |
| | | }); |
| | | |
| | | dualListbox.elements.filterClear1.on('click', function() { |
| | | dualListbox.setNonSelectedFilter('', true); |
| | | }); |
| | | |
| | | dualListbox.elements.filterClear2.on('click', function() { |
| | | dualListbox.setSelectedFilter('', true); |
| | | }); |
| | | |
| | | if (dualListbox.settings.eventMoveOverride === false) { |
| | | dualListbox.elements.moveButton.on('click', function() { |
| | | move(dualListbox); |
| | | }); |
| | | } |
| | | |
| | | if (dualListbox.settings.eventMoveAllOverride === false) { |
| | | dualListbox.elements.moveAllButton.on('click', function() { |
| | | moveAll(dualListbox); |
| | | }); |
| | | } |
| | | |
| | | if (dualListbox.settings.eventRemoveOverride === false) { |
| | | dualListbox.elements.removeButton.on('click', function() { |
| | | remove(dualListbox); |
| | | }); |
| | | } |
| | | |
| | | if (dualListbox.settings.eventRemoveAllOverride === false) { |
| | | dualListbox.elements.removeAllButton.on('click', function() { |
| | | removeAll(dualListbox); |
| | | }); |
| | | } |
| | | |
| | | dualListbox.elements.filterInput1.on('change keyup', function() { |
| | | filter(dualListbox, 1); |
| | | }); |
| | | |
| | | dualListbox.elements.filterInput2.on('change keyup', function() { |
| | | filter(dualListbox, 2); |
| | | }); |
| | | } |
| | | |
| | | BootstrapDualListbox.prototype = { |
| | | init: function () { |
| | | // Add the custom HTML template |
| | | this.container = $('' + |
| | | '<div class="bootstrap-duallistbox-container row">' + |
| | | ' <div class="box1 col-md-6">' + |
| | | ' <label></label>' + |
| | | ' <span class="info-container">' + |
| | | ' <span class="info"></span>' + |
| | | ' <button type="button" class="btn btn-sm clear1" style="float:right!important;"></button>' + |
| | | ' </span>' + |
| | | ' <input class="form-control filter" type="text">' + |
| | | ' <div class="btn-group buttons">' + |
| | | ' <button type="button" class="btn moveall"></button>' + |
| | | ' <button type="button" class="btn move"></button>' + |
| | | ' </div>' + |
| | | ' <select multiple="multiple"></select>' + |
| | | ' </div>' + |
| | | ' <div class="box2 col-md-6">' + |
| | | ' <label></label>' + |
| | | ' <span class="info-container">' + |
| | | ' <span class="info"></span>' + |
| | | ' <button type="button" class="btn btn-sm clear2" style="float:right!important;"></button>' + |
| | | ' </span>' + |
| | | ' <input class="form-control filter" type="text">' + |
| | | ' <div class="btn-group buttons">' + |
| | | ' <button type="button" class="btn remove"></button>' + |
| | | ' <button type="button" class="btn removeall"></button>' + |
| | | ' </div>' + |
| | | ' <select multiple="multiple"></select>' + |
| | | ' </div>' + |
| | | '</div>') |
| | | .insertBefore(this.element); |
| | | |
| | | // Cache the inner elements |
| | | this.elements = { |
| | | originalSelect: this.element, |
| | | box1: $('.box1', this.container), |
| | | box2: $('.box2', this.container), |
| | | filterInput1: $('.box1 .filter', this.container), |
| | | filterInput2: $('.box2 .filter', this.container), |
| | | filterClear1: $('.box1 .clear1', this.container), |
| | | filterClear2: $('.box2 .clear2', this.container), |
| | | label1: $('.box1 > label', this.container), |
| | | label2: $('.box2 > label', this.container), |
| | | info1: $('.box1 .info', this.container), |
| | | info2: $('.box2 .info', this.container), |
| | | select1: $('.box1 select', this.container), |
| | | select2: $('.box2 select', this.container), |
| | | moveButton: $('.box1 .move', this.container), |
| | | removeButton: $('.box2 .remove', this.container), |
| | | moveAllButton: $('.box1 .moveall', this.container), |
| | | removeAllButton: $('.box2 .removeall', this.container), |
| | | form: $($('.box1 .filter', this.container)[0].form) |
| | | }; |
| | | |
| | | // Set select IDs |
| | | this.originalSelectName = this.element.attr('name') || ''; |
| | | var select1Id = 'bootstrap-duallistbox-nonselected-list_' + this.originalSelectName, |
| | | select2Id = 'bootstrap-duallistbox-selected-list_' + this.originalSelectName; |
| | | this.elements.select1.attr('id', select1Id); |
| | | this.elements.select2.attr('id', select2Id); |
| | | this.elements.label1.attr('for', select1Id); |
| | | this.elements.label2.attr('for', select2Id); |
| | | |
| | | // Apply all settings |
| | | this.selectedElements = 0; |
| | | this.sortIndex = 0; |
| | | this.elementCount = 0; |
| | | this.setFilterTextClear(this.settings.filterTextClear); |
| | | this.setFilterPlaceHolder(this.settings.filterPlaceHolder); |
| | | this.setMoveSelectedLabel(this.settings.moveSelectedLabel); |
| | | this.setMoveAllLabel(this.settings.moveAllLabel); |
| | | this.setRemoveSelectedLabel(this.settings.removeSelectedLabel); |
| | | this.setRemoveAllLabel(this.settings.removeAllLabel); |
| | | this.setMoveOnSelect(this.settings.moveOnSelect); |
| | | this.setMoveOnDoubleClick(this.settings.moveOnDoubleClick); |
| | | this.setPreserveSelectionOnMove(this.settings.preserveSelectionOnMove); |
| | | this.setSelectedListLabel(this.settings.selectedListLabel); |
| | | this.setNonSelectedListLabel(this.settings.nonSelectedListLabel); |
| | | this.setHelperSelectNamePostfix(this.settings.helperSelectNamePostfix); |
| | | this.setSelectOrMinimalHeight(this.settings.selectorMinimalHeight); |
| | | |
| | | updateSelectionStates(this); |
| | | |
| | | this.setShowFilterInputs(this.settings.showFilterInputs); |
| | | this.setNonSelectedFilter(this.settings.nonSelectedFilter); |
| | | this.setSelectedFilter(this.settings.selectedFilter); |
| | | this.setInfoText(this.settings.infoText); |
| | | this.setInfoTextFiltered(this.settings.infoTextFiltered); |
| | | this.setInfoTextEmpty(this.settings.infoTextEmpty); |
| | | this.setFilterOnValues(this.settings.filterOnValues); |
| | | this.setSortByInputOrder(this.settings.sortByInputOrder); |
| | | this.setEventMoveOverride(this.settings.eventMoveOverride); |
| | | this.setEventMoveAllOverride(this.settings.eventMoveAllOverride); |
| | | this.setEventRemoveOverride(this.settings.eventRemoveOverride); |
| | | this.setEventRemoveAllOverride(this.settings.eventRemoveAllOverride); |
| | | this.setBtnClass(this.settings.btnClass); |
| | | this.setBtnMoveText(this.settings.btnMoveText); |
| | | this.setBtnRemoveText(this.settings.btnRemoveText); |
| | | this.setBtnMoveAllText(this.settings.btnMoveAllText); |
| | | this.setBtnRemoveAllText(this.settings.btnRemoveAllText); |
| | | |
| | | // Hide the original select |
| | | this.element.hide(); |
| | | |
| | | bindEvents(this); |
| | | refreshSelects(this); |
| | | |
| | | return this.element; |
| | | }, |
| | | setFilterTextClear: function(value, refresh) { |
| | | this.settings.filterTextClear = value; |
| | | this.elements.filterClear1.html(value); |
| | | this.elements.filterClear2.html(value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setFilterPlaceHolder: function(value, refresh) { |
| | | this.settings.filterPlaceHolder = value; |
| | | this.elements.filterInput1.attr('placeholder', value); |
| | | this.elements.filterInput2.attr('placeholder', value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setMoveSelectedLabel: function(value, refresh) { |
| | | this.settings.moveSelectedLabel = value; |
| | | this.elements.moveButton.attr('title', value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setMoveAllLabel: function(value, refresh) { |
| | | this.settings.moveAllLabel = value; |
| | | this.elements.moveAllButton.attr('title', value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setRemoveSelectedLabel: function(value, refresh) { |
| | | this.settings.removeSelectedLabel = value; |
| | | this.elements.removeButton.attr('title', value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setRemoveAllLabel: function(value, refresh) { |
| | | this.settings.removeAllLabel = value; |
| | | this.elements.removeAllButton.attr('title', value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setMoveOnSelect: function(value, refresh) { |
| | | if (isBuggyAndroid) { |
| | | value = true; |
| | | } |
| | | this.settings.moveOnSelect = value; |
| | | if (this.settings.moveOnSelect) { |
| | | this.container.addClass('moveonselect'); |
| | | var self = this; |
| | | this.elements.select1.on('change', function() { |
| | | move(self); |
| | | }); |
| | | this.elements.select2.on('change', function() { |
| | | remove(self); |
| | | }); |
| | | this.elements.moveButton.detach(); |
| | | this.elements.removeButton.detach(); |
| | | } else { |
| | | this.container.removeClass('moveonselect'); |
| | | this.elements.select1.off('change'); |
| | | this.elements.select2.off('change'); |
| | | this.elements.moveButton.insertAfter(this.elements.moveAllButton); |
| | | this.elements.removeButton.insertBefore(this.elements.removeAllButton); |
| | | } |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setMoveOnDoubleClick: function(value, refresh) { |
| | | if (isBuggyAndroid) { |
| | | value = false; |
| | | } |
| | | this.settings.moveOnDoubleClick = value; |
| | | if (this.settings.moveOnDoubleClick) { |
| | | this.container.addClass('moveondoubleclick'); |
| | | var self = this; |
| | | this.elements.select1.on('dblclick', function() { |
| | | move(self); |
| | | }); |
| | | this.elements.select2.on('dblclick', function() { |
| | | remove(self); |
| | | }); |
| | | } else { |
| | | this.container.removeClass('moveondoubleclick'); |
| | | this.elements.select1.off('dblclick'); |
| | | this.elements.select2.off('dblclick'); |
| | | } |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setPreserveSelectionOnMove: function(value, refresh) { |
| | | // We are forcing to move on select and disabling preserveSelectionOnMove on Android |
| | | if (isBuggyAndroid) { |
| | | value = false; |
| | | } |
| | | this.settings.preserveSelectionOnMove = value; |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setSelectedListLabel: function(value, refresh) { |
| | | this.settings.selectedListLabel = value; |
| | | if (value) { |
| | | this.elements.label2.show().html(value); |
| | | } else { |
| | | this.elements.label2.hide().html(value); |
| | | } |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setNonSelectedListLabel: function(value, refresh) { |
| | | this.settings.nonSelectedListLabel = value; |
| | | if (value) { |
| | | this.elements.label1.show().html(value); |
| | | } else { |
| | | this.elements.label1.hide().html(value); |
| | | } |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setHelperSelectNamePostfix: function(value, refresh) { |
| | | this.settings.helperSelectNamePostfix = value; |
| | | if (value) { |
| | | this.elements.select1.attr('name', this.originalSelectName + value + '1'); |
| | | this.elements.select2.attr('name', this.originalSelectName + value + '2'); |
| | | } else { |
| | | this.elements.select1.removeAttr('name'); |
| | | this.elements.select2.removeAttr('name'); |
| | | } |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setSelectOrMinimalHeight: function(value, refresh) { |
| | | this.settings.selectorMinimalHeight = value; |
| | | var height = this.element.height(); |
| | | if (this.element.height() < value) { |
| | | height = value; |
| | | } |
| | | this.elements.select1.height(height); |
| | | this.elements.select2.height(height); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setShowFilterInputs: function(value, refresh) { |
| | | if (!value) { |
| | | this.setNonSelectedFilter(''); |
| | | this.setSelectedFilter(''); |
| | | refreshSelects(this); |
| | | this.elements.filterInput1.hide(); |
| | | this.elements.filterInput2.hide(); |
| | | } else { |
| | | this.elements.filterInput1.show(); |
| | | this.elements.filterInput2.show(); |
| | | } |
| | | this.settings.showFilterInputs = value; |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setNonSelectedFilter: function(value, refresh) { |
| | | if (this.settings.showFilterInputs) { |
| | | this.settings.nonSelectedFilter = value; |
| | | this.elements.filterInput1.val(value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | } |
| | | }, |
| | | setSelectedFilter: function(value, refresh) { |
| | | if (this.settings.showFilterInputs) { |
| | | this.settings.selectedFilter = value; |
| | | this.elements.filterInput2.val(value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | } |
| | | }, |
| | | setInfoText: function(value, refresh) { |
| | | this.settings.infoText = value; |
| | | if (value) { |
| | | this.elements.info1.show(); |
| | | this.elements.info2.show(); |
| | | } else { |
| | | this.elements.info1.hide(); |
| | | this.elements.info2.hide(); |
| | | } |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setInfoTextFiltered: function(value, refresh) { |
| | | this.settings.infoTextFiltered = value; |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setInfoTextEmpty: function(value, refresh) { |
| | | this.settings.infoTextEmpty = value; |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setFilterOnValues: function(value, refresh) { |
| | | this.settings.filterOnValues = value; |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setSortByInputOrder: function(value, refresh){ |
| | | this.settings.sortByInputOrder = value; |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setEventMoveOverride: function(value, refresh) { |
| | | this.settings.eventMoveOverride = value; |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setEventMoveAllOverride: function(value, refresh) { |
| | | this.settings.eventMoveAllOverride = value; |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setEventRemoveOverride: function(value, refresh) { |
| | | this.settings.eventRemoveOverride = value; |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setEventRemoveAllOverride: function(value, refresh) { |
| | | this.settings.eventRemoveAllOverride = value; |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setBtnClass: function(value, refresh) { |
| | | this.settings.btnClass = value; |
| | | this.elements.moveButton.attr('class', 'btn move').addClass(value); |
| | | this.elements.removeButton.attr('class', 'btn remove').addClass(value); |
| | | this.elements.moveAllButton.attr('class', 'btn moveall').addClass(value); |
| | | this.elements.removeAllButton.attr('class', 'btn removeall').addClass(value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setBtnMoveText: function(value, refresh) { |
| | | this.settings.btnMoveText = value; |
| | | this.elements.moveButton.html(value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setBtnRemoveText: function(value, refresh) { |
| | | this.settings.btnMoveText = value; |
| | | this.elements.removeButton.html(value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setBtnMoveAllText: function(value, refresh) { |
| | | this.settings.btnMoveText = value; |
| | | this.elements.moveAllButton.html(value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | setBtnRemoveAllText: function(value, refresh) { |
| | | this.settings.btnMoveText = value; |
| | | this.elements.removeAllButton.html(value); |
| | | if (refresh) { |
| | | refreshSelects(this); |
| | | } |
| | | return this.element; |
| | | }, |
| | | getContainer: function() { |
| | | return this.container; |
| | | }, |
| | | refresh: function(mustClearSelections) { |
| | | updateSelectionStates(this); |
| | | |
| | | if (!mustClearSelections) { |
| | | saveSelections(this, 1); |
| | | saveSelections(this, 2); |
| | | } else { |
| | | clearSelections(this); |
| | | } |
| | | |
| | | refreshSelects(this); |
| | | }, |
| | | destroy: function() { |
| | | this.container.remove(); |
| | | this.element.show(); |
| | | $.data(this, 'plugin_' + pluginName, null); |
| | | return this.element; |
| | | } |
| | | }; |
| | | |
| | | // A really lightweight plugin wrapper around the constructor, |
| | | // preventing against multiple instantiations |
| | | $.fn[ pluginName ] = function (options) { |
| | | var args = arguments; |
| | | |
| | | // Is the first parameter an object (options), or was omitted, instantiate a new instance of the plugin. |
| | | if (options === undefined || typeof options === 'object') { |
| | | return this.each(function () { |
| | | // If this is not a select |
| | | if (!$(this).is('select')) { |
| | | $(this).find('select').each(function(index, item) { |
| | | // For each nested select, instantiate the Dual List Box |
| | | $(item).bootstrapDualListbox(options); |
| | | }); |
| | | } else if (!$.data(this, 'plugin_' + pluginName)) { |
| | | // Only allow the plugin to be instantiated once so we check that the element has no plugin instantiation yet |
| | | |
| | | // if it has no instance, create a new one, pass options to our plugin constructor, |
| | | // and store the plugin instance in the elements jQuery data object. |
| | | $.data(this, 'plugin_' + pluginName, new BootstrapDualListbox(this, options)); |
| | | } |
| | | }); |
| | | // If the first parameter is a string and it doesn't start with an underscore or "contains" the `init`-function, |
| | | // treat this as a call to a public method. |
| | | } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') { |
| | | |
| | | // Cache the method call to make it possible to return a value |
| | | var returns; |
| | | |
| | | this.each(function () { |
| | | var instance = $.data(this, 'plugin_' + pluginName); |
| | | // Tests that there's already a plugin-instance and checks that the requested public method exists |
| | | if (instance instanceof BootstrapDualListbox && typeof instance[options] === 'function') { |
| | | // Call the method of our plugin instance, and pass it the supplied arguments. |
| | | returns = instance[options].apply(instance, Array.prototype.slice.call(args, 1)); |
| | | } |
| | | }); |
| | | |
| | | // If the earlier cached method gives a value back return the value, |
| | | // otherwise return this to preserve chainability. |
| | | return returns !== undefined ? returns : this; |
| | | } |
| | | |
| | | }; |
| | | |
| | | })); |
wgcloud-server/src/main/resources/static/AdminLTE/plugins/bootstrap4-duallistbox/jquery.bootstrap-duallistbox.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/bs-custom-file-input/bs-custom-file-input.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/bs-custom-file-input/bs-custom-file-input.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/bs-custom-file-input/bs-custom-file-input.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/bs-custom-file-input/bs-custom-file-input.min.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/chart.js/Chart.bundle.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/chart.js/Chart.bundle.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/chart.js/Chart.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/chart.js/Chart.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/chart.js/Chart.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/chart.js/Chart.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-autofill/css/autoFill.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-autofill/css/autoFill.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-autofill/js/autoFill.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-autofill/js/autoFill.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-autofill/js/dataTables.autoFill.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-autofill/js/dataTables.autoFill.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-bs4/css/dataTables.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-bs4/js/dataTables.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/css/buttons.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/css/buttons.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/buttons.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/buttons.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/buttons.colVis.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/buttons.colVis.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/buttons.flash.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/buttons.flash.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/buttons.html5.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/buttons.html5.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/buttons.print.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/buttons.print.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/dataTables.buttons.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-buttons/js/dataTables.buttons.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-colreorder/css/colReorder.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-colreorder/css/colReorder.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-colreorder/js/colReorder.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-colreorder/js/colReorder.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-colreorder/js/dataTables.colReorder.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-colreorder/js/dataTables.colReorder.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedcolumns/css/fixedColumns.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedcolumns/css/fixedColumns.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedcolumns/js/dataTables.fixedColumns.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedcolumns/js/dataTables.fixedColumns.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedcolumns/js/fixedColumns.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedcolumns/js/fixedColumns.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedheader/css/fixedHeader.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedheader/css/fixedHeader.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedheader/js/dataTables.fixedHeader.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedheader/js/dataTables.fixedHeader.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedheader/js/fixedHeader.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-fixedheader/js/fixedHeader.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-keytable/css/keyTable.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-keytable/css/keyTable.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-keytable/js/dataTables.keyTable.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-keytable/js/dataTables.keyTable.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-keytable/js/keyTable.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-keytable/js/keyTable.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-responsive/css/responsive.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-responsive/css/responsive.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-responsive/js/dataTables.responsive.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-responsive/js/dataTables.responsive.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-responsive/js/responsive.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-responsive/js/responsive.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowgroup/css/rowGroup.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowgroup/css/rowGroup.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowgroup/js/dataTables.rowGroup.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowgroup/js/dataTables.rowGroup.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowgroup/js/rowGroup.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowgroup/js/rowGroup.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowreorder/css/rowReorder.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowreorder/css/rowReorder.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowreorder/js/dataTables.rowReorder.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowreorder/js/dataTables.rowReorder.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowreorder/js/rowReorder.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-rowreorder/js/rowReorder.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-scroller/css/scroller.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-scroller/css/scroller.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-scroller/js/dataTables.scroller.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-scroller/js/dataTables.scroller.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-scroller/js/scroller.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-scroller/js/scroller.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-select/css/select.bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-select/css/select.bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-select/js/dataTables.select.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-select/js/dataTables.select.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-select/js/select.bootstrap4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables-select/js/select.bootstrap4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables/jquery.dataTables.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/datatables/jquery.dataTables.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/bower.json
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/daterangepicker.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/daterangepicker.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/drp.png
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/example/amd/index.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/example/amd/main.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/example/amd/require.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/example/browserify/README.md
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/example/browserify/bundle.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/example/browserify/index.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/example/browserify/main.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/moment.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/package.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/website.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/website.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/website/index.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/website/website.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/daterangepicker/website/website.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ekko-lightbox/ekko-lightbox.min.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fastclick/fastclick.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/ActiveFilter.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/BrowserWindow.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/EventReceiver.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterContainer.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterContainer/FilterContainer.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterContainer/StyledFilterContainer.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterContainer/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterContainer/styles.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterControls.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterItem.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterItem/FilterItem.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterItem/StyledFilterItem.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterItem/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterItem/styles.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterItems.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterItems/FilterItems.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterItems/StyledFilterItems.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterItems/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/Filterizr.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/Filterizr/Filterizr.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/Filterizr/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/Filterizr/installAsJQueryPlugin.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterizrElement.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterizrOptions/FilterizrOptions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterizrOptions/defaultOptions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/FilterizrOptions/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/Spinner/Spinner.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/Spinner/StyledSpinner.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/Spinner/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/Spinner/makeSpinner.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/StyledFilterizrElement.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/StyledFilterizrElements.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/animate.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/config/cssEasingValuesRegexp.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/config/filterizrState.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/config/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/config/layout.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/filterizr.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/getLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/index.jquery.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/installAsJQueryPlugin.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/jquery.filterizr.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/layouts/Packer.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/layouts/getHorizontalLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/layouts/getPackedLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/layouts/getSameHeightLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/layouts/getSameSizeLayoutPosition.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/layouts/getSameWidthLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/layouts/getVerticalLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/makeLayoutPositions/Packer.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/makeLayoutPositions/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/makeLayoutPositions/makeHorizontalLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/makeLayoutPositions/makeLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/makeLayoutPositions/makePackedLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameHeightLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameSizeLayoutPosition.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/makeLayoutPositions/makeSameWidthLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/makeLayoutPositions/makeVerticalLayoutPositions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/BaseOptions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/ContainerLayout.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/Destructible.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/Dictionary.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/Dimensions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/Options.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/Position.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/RawOptions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/RawOptionsCallbacks.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/Resizable.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/SpinnerOptions.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/Styleable.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/types/interfaces/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/allStringsOfArray1InArray2.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/checkOptionForErrors.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/debounce.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/filterItemArraysHaveSameSorting.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/getDataAttributesOfHTMLNode.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/getHTMLElement.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/index.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/intersection.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/merge.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/noop.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/setStyles.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/shuffle.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/utils/sortBy.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/filterizr/vanilla.filterizr.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/css/flag-icon.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/css/flag-icon.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ad.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ae.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/af.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ag.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ai.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/al.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/am.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ao.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/aq.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ar.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/as.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/at.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/au.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/aw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ax.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/az.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ba.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bb.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bd.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/be.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bi.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bj.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bo.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bq.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/br.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bs.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/by.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/bz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ca.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cd.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ch.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ci.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ck.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/co.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cx.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cy.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/cz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/de.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/dj.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/dk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/dm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/do.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/dz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ec.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ee.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/eg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/eh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/er.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/es-ca.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/es.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/et.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/eu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/fi.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/fj.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/fk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/fm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/fo.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/fr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ga.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-eng.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-nir.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-sct.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gb-wls.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gb.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gd.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ge.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gi.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gp.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gq.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gs.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/gy.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/hk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/hm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/hn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/hr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ht.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/hu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/id.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ie.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/il.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/im.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/in.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/io.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/iq.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ir.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/is.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/it.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/je.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/jm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/jo.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/jp.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ke.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/kg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/kh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ki.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/km.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/kn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/kp.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/kr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/kw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ky.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/kz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/la.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/lb.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/lc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/li.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/lk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/lr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ls.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/lt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/lu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/lv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ly.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ma.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/md.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/me.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ml.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mo.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mp.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mq.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ms.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mx.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/my.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/mz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/na.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/nc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ne.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/nf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ng.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ni.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/nl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/no.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/np.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/nr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/nu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/nz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/om.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/pa.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/pe.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/pf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/pg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ph.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/pk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/pl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/pm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/pn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/pr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ps.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/pt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/pw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/py.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/qa.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/re.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ro.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/rs.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ru.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/rw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sa.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sb.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sd.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/se.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/si.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sj.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/so.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ss.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/st.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sx.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sy.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/sz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/td.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/th.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tj.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/to.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/tz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ua.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ug.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/um.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/un.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/us.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/uy.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/uz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/va.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/vc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ve.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/vg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/vi.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/vn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/vu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/wf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ws.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/xk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/ye.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/yt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/za.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/zm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/1x1/zw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ad.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ae.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/af.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ag.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ai.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/al.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/am.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ao.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/aq.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ar.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/as.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/at.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/au.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/aw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ax.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/az.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ba.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bb.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bd.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/be.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bi.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bj.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bo.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bq.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/br.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bs.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/by.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/bz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ca.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cd.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ch.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ci.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ck.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/co.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cx.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cy.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/cz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/de.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/dj.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/dk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/dm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/do.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/dz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ec.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ee.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/eg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/eh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/er.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/es-ca.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/es.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/et.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/eu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/fi.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/fj.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/fk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/fm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/fo.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/fr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ga.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-eng.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-nir.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-sct.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gb-wls.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gb.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gd.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ge.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gi.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gp.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gq.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gs.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/gy.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/hk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/hm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/hn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/hr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ht.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/hu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/id.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ie.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/il.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/im.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/in.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/io.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/iq.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ir.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/is.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/it.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/je.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/jm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/jo.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/jp.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ke.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/kg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/kh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ki.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/km.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/kn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/kp.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/kr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/kw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ky.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/kz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/la.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/lb.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/lc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/li.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/lk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/lr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ls.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/lt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/lu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/lv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ly.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ma.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/md.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/me.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ml.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mo.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mp.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mq.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ms.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mx.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/my.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/mz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/na.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/nc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ne.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/nf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ng.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ni.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/nl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/no.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/np.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/nr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/nu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/nz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/om.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/pa.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/pe.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/pf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/pg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ph.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/pk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/pl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/pm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/pn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/pr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ps.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/pt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/pw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/py.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/qa.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/re.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ro.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/rs.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ru.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/rw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sa.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sb.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sd.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/se.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sh.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/si.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sj.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/so.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ss.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/st.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sx.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sy.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/sz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/td.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/th.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tj.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tl.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/to.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tr.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tv.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/tz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ua.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ug.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/um.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/un.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/us.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/uy.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/uz.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/va.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/vc.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ve.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/vg.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/vi.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/vn.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/vu.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/wf.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ws.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/xk.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/ye.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/yt.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/za.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/zm.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flag-icon-css/flags/4x3/zw.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/excanvas.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/excanvas.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.colorhelpers.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.colorhelpers.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.canvas.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.canvas.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.categories.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.categories.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.crosshair.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.crosshair.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.errorbars.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.errorbars.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.fillbetween.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.fillbetween.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.image.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.image.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.navigate.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.navigate.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.pie.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.pie.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.resize.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.resize.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.selection.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.selection.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.stack.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.stack.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.symbol.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.symbol.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.threshold.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.threshold.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.time.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot-old/jquery.flot.time.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/flot/jquery.flot.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/all.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/all.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/brands.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/brands.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/fontawesome.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/fontawesome.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/regular.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/regular.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/solid.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/solid.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/svg-with-js.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/svg-with-js.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/v4-shims.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/css/v4-shims.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-brands-400.eot
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-brands-400.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-brands-400.ttf
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-brands-400.woff
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-brands-400.woff2
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-regular-400.eot
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-regular-400.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-regular-400.ttf
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-regular-400.woff
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-regular-400.woff2
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-solid-900.eot
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-solid-900.svg
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-solid-900.ttf
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-solid-900.woff
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fontawesome-free/webfonts/fa-solid-900.woff2
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-bootstrap/LICENSE.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-bootstrap/main.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-bootstrap/main.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-bootstrap/main.esm.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-bootstrap/main.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-bootstrap/main.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-bootstrap/main.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-daygrid/LICENSE.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-daygrid/main.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-daygrid/main.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-daygrid/main.esm.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-daygrid/main.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-daygrid/main.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-daygrid/main.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-interaction/LICENSE.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-interaction/main.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-interaction/main.esm.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-interaction/main.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-interaction/main.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-timegrid/LICENSE.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-timegrid/main.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-timegrid/main.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-timegrid/main.esm.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-timegrid/main.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-timegrid/main.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar-timegrid/main.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/LICENSE.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales-all.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales-all.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/af.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ar-dz.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ar-kw.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ar-ly.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ar-ma.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ar-sa.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ar-tn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ar.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/bg.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/bs.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ca.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/cs.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/da.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/de.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/el.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/en-au.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/en-gb.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/en-nz.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/es-us.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/es.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/et.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/eu.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/fa.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/fi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/fr-ca.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/fr-ch.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/fr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/gl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/he.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/hi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/hr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/hu.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/id.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/is.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/it.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ja.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ka.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/kk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ko.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/lb.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/lt.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/lv.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/mk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ms.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/nb.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/nl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/nn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/pl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/pt-br.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/pt.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ro.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/ru.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/sk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/sl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/sq.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/sr-cyrl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/sr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/sv.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/th.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/tr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/uk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/vi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/zh-cn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/locales/zh-tw.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/main.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/main.d.ts
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/main.esm.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/main.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/main.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/fullcalendar/main.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/icheck-bootstrap/LICENSE
wgcloud-server/src/main/resources/static/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/icheck-bootstrap/icheck-bootstrap.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/inputmask/bindings/inputmask.binding.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/inputmask/dependencyLibs/inputmask.dependencyLib.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/inputmask/global/window.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/inputmask/inputmask.date.extensions.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/inputmask/inputmask.extensions.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/inputmask/inputmask.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/inputmask/inputmask.numeric.extensions.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/inputmask/jquery.inputmask.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/jquery.inputmask.bundle.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/min/inputmask/bindings/inputmask.binding.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/min/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/min/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/min/inputmask/dependencyLibs/inputmask.dependencyLib.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/min/inputmask/global/window.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/min/inputmask/inputmask.date.extensions.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/min/inputmask/inputmask.extensions.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/min/inputmask/inputmask.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/min/inputmask/inputmask.numeric.extensions.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/min/inputmask/jquery.inputmask.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/inputmask/min/jquery.inputmask.bundle.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/.editorconfig
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/css/ion.rangeSlider.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/css/ion.rangeSlider.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/js/ion.rangeSlider.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/js/ion.rangeSlider.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/less/_base.less
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/less/_mixins.less
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/less/irs.less
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/less/skins/big.less
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/less/skins/flat.less
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/less/skins/modern.less
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/less/skins/round.less
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/less/skins/sharp.less
wgcloud-server/src/main/resources/static/AdminLTE/plugins/ion-rangeslider/less/skins/square.less
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-knob/jquery.knob.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/jquery.mapael.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/jquery.mapael.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/maps/README.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/maps/france_departments.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/maps/france_departments.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/maps/usa_states.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/maps/usa_states.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/maps/world_countries.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/maps/world_countries.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/maps/world_countries_mercator.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/maps/world_countries_mercator.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/maps/world_countries_miller.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mapael/maps/world_countries_miller.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mousewheel/LICENSE.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-mousewheel/jquery.mousewheel.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/AUTHORS.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/LICENSE.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/external/jquery/jquery.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/images/ui-icons_444444_256x240.png
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/images/ui-icons_555555_256x240.png
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/images/ui-icons_777620_256x240.png
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/images/ui-icons_777777_256x240.png
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/images/ui-icons_cc0000_256x240.png
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/images/ui-icons_ffffff_256x240.png
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/jquery-ui.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/jquery-ui.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/jquery-ui.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/jquery-ui.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/jquery-ui.structure.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/jquery-ui.structure.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/jquery-ui.theme.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-ui/jquery-ui.theme.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/additional-methods.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/additional-methods.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/jquery.validate.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/jquery.validate.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ar.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ar.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_az.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_az.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_bg.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_bg.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_bn_BD.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_bn_BD.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ca.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ca.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_cs.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_cs.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_da.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_da.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_de.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_de.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_el.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_el.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_es.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_es.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_es_AR.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_es_AR.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_es_PE.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_es_PE.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_et.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_et.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_eu.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_eu.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_fa.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_fa.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_fi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_fi.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_fr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_fr.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ge.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ge.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_gl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_gl.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_he.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_he.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_hr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_hr.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_hu.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_hu.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_hy_AM.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_hy_AM.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_id.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_id.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_is.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_is.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_it.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_it.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ja.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ja.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ka.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ka.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_kk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_kk.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ko.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ko.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_lt.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_lt.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_lv.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_lv.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_mk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_mk.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_my.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_my.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_nl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_nl.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_no.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_no.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_pl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_pl.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_pt_BR.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_pt_BR.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_pt_PT.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_pt_PT.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ro.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ro.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ru.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ru.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sd.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sd.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_si.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_si.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sk.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sl.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sr.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sr_lat.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sr_lat.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sv.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_sv.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_th.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_th.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_tj.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_tj.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_tr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_tr.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_uk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_uk.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ur.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_ur.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_vi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_vi.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_zh.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_zh.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_zh_TW.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/messages_zh_TW.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_de.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_de.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_es_CL.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_es_CL.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_fi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_fi.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_it.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_it.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_nl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_nl.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_pt.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery-validation/localization/methods_pt.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery/core.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery/jquery.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery/jquery.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery/jquery.min.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery/jquery.slim.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery/jquery.slim.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jquery/jquery.slim.min.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/jquery.vmap.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/jquery.vmap.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/jqvmap.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/jqvmap.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/continents/jquery.vmap.africa.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/continents/jquery.vmap.asia.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/continents/jquery.vmap.australia.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/continents/jquery.vmap.europe.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/continents/jquery.vmap.north-america.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/continents/jquery.vmap.south-america.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.algeria.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.argentina.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.brazil.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.canada.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.croatia.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.europe.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.france.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.germany.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.greece.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.indonesia.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.iran.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.iraq.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.new_regions_france.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.russia.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.serbia.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.tunisia.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.turkey.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.ukraine.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.usa.counties.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.usa.districts.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.usa.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jqvmap/maps/jquery.vmap.world.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/basic.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/batch-delete.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/custom-grid-field.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/custom-load-indicator.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/custom-row-renderer.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/custom-view.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/data-manipulation.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/db.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/demos.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/external-pager.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/index.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/loading-by-page.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/localization.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/odata-service.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/rows-reordering.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/sorting.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/static-data.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/demos/validation.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-de.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-es.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-fr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-he.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-ja.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-ka.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-pl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-pt-br.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-pt.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-ru.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-tr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-zh-cn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/i18n/jsgrid-zh-tw.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/jsgrid-theme.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/jsgrid-theme.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/jsgrid.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/jsgrid.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/jsgrid.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jsgrid/jsgrid.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jszip/jszip.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/jszip/jszip.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/af.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ar-dz.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ar-kw.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ar-ly.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ar-ma.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ar-sa.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ar-tn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ar.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/az.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/be.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/bg.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/bm.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/bn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/bo.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/br.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/bs.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ca.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/cs.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/cv.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/cy.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/da.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/de-at.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/de-ch.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/de.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/dv.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/el.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/en-SG.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/en-au.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/en-ca.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/en-gb.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/en-ie.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/en-il.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/en-nz.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/eo.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/es-do.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/es-us.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/es.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/et.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/eu.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/fa.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/fi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/fo.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/fr-ca.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/fr-ch.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/fr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/fy.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ga.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/gd.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/gl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/gom-latn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/gu.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/he.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/hi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/hr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/hu.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/hy-am.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/id.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/is.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/it-ch.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/it.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ja.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/jv.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ka.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/kk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/km.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/kn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ko.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ku.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ky.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/lb.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/lo.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/lt.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/lv.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/me.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/mi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/mk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ml.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/mn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/mr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ms-my.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ms.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/mt.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/my.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/nb.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ne.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/nl-be.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/nl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/nn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/pa-in.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/pl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/pt-br.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/pt.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ro.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ru.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/sd.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/se.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/si.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/sk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/sl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/sq.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/sr-cyrl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/sr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ss.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/sv.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/sw.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ta.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/te.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/tet.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/tg.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/th.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/tl-ph.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/tlh.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/tr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/tzl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/tzm-latn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/tzm.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ug-cn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/uk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/ur.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/uz-latn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/uz.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/vi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/x-pseudo.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/yo.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/zh-cn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/zh-hk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locale/zh-tw.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locales.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/locales.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/moment-with-locales.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/moment-with-locales.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/moment/moment.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/overlayScrollbars/css/OverlayScrollbars.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/overlayScrollbars/js/OverlayScrollbars.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/overlayScrollbars/js/OverlayScrollbars.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/overlayScrollbars/js/jquery.overlayScrollbars.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/overlayScrollbars/js/jquery.overlayScrollbars.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/pace.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/pace.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-barber-shop.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-big-counter.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-bounce.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-center-atom.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-center-circle.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-center-radar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-center-simple.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-corner-indicator.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-fill-left.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-flash.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-flat-top.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-loading-bar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-mac-osx.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-material.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/black/pace-theme-minimal.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-barber-shop.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-big-counter.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-bounce.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-center-atom.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-center-circle.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-center-radar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-center-simple.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-corner-indicator.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-fill-left.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-flash.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-flat-top.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-loading-bar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-mac-osx.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-material.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/blue/pace-theme-minimal.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-barber-shop.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-big-counter.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-bounce.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-center-atom.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-center-circle.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-center-radar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-center-simple.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-corner-indicator.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-fill-left.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-flash.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-flat-top.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-loading-bar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-mac-osx.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-material.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/green/pace-theme-minimal.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-barber-shop.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-big-counter.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-bounce.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-center-atom.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-center-circle.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-center-radar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-center-simple.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-corner-indicator.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-fill-left.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-flash.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-flat-top.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-loading-bar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-mac-osx.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-material.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/orange/pace-theme-minimal.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-barber-shop.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-big-counter.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-bounce.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-center-atom.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-center-circle.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-center-radar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-center-simple.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-corner-indicator.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-fill-left.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-flash.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-flat-top.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-loading-bar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-mac-osx.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-material.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/pink/pace-theme-minimal.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-barber-shop.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-big-counter.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-bounce.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-center-atom.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-center-circle.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-center-radar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-center-simple.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-corner-indicator.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-fill-left.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-flash.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-flat-top.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-loading-bar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-mac-osx.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-material.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/purple/pace-theme-minimal.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-barber-shop.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-big-counter.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-bounce.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-center-atom.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-center-circle.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-center-radar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-center-simple.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-corner-indicator.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-fill-left.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-flash.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-flat-top.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-loading-bar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-mac-osx.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-material.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/red/pace-theme-minimal.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-barber-shop.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-big-counter.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-bounce.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-center-atom.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-center-circle.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-center-radar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-center-simple.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-corner-indicator.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-fill-left.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-flash.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-flat-top.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-loading-bar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-mac-osx.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-material.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/silver/pace-theme-minimal.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-barber-shop.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-big-counter.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-bounce.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-center-atom.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-center-circle.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-center-radar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-center-simple.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-corner-indicator.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-fill-left.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-flash.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-flat-top.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-loading-bar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-mac-osx.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-material.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/white/pace-theme-minimal.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-barber-shop.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-big-counter.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-bounce.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-center-atom.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-center-circle.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-center-radar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-center-simple.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-corner-indicator.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-fill-left.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-flash.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-flat-top.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-loading-bar.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-mac-osx.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-material.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pace-progress/themes/yellow/pace-theme-minimal.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pdfmake/pdfmake.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pdfmake/pdfmake.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pdfmake/pdfmake.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pdfmake/pdfmake.min.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/pdfmake/vfs_fonts.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/esm/popper-utils.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/esm/popper-utils.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/esm/popper-utils.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/esm/popper-utils.min.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/esm/popper.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/esm/popper.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/esm/popper.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/esm/popper.min.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/popper-utils.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/popper-utils.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/popper-utils.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/popper-utils.min.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/popper.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/popper.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/popper.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/popper.min.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/umd/popper-utils.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/umd/popper-utils.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/umd/popper-utils.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/umd/popper-utils.min.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/umd/popper.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/umd/popper.js.flow
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/umd/popper.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/umd/popper.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/popper/umd/popper.min.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/.eslintrc.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/Gruntfile.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/bower.json
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/dev/banner.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/dev/raphael.amd.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/dev/raphael.core.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/dev/raphael.svg.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/dev/raphael.vml.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/dev/raphaelTest.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/dev/test/index.html
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/dev/test/svg/dom.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/dev/test/vml/dom.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/license.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/raphael.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/raphael.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/raphael.no-deps.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/raphael.no-deps.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/raphael/webpack.config.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2-bootstrap4-theme/select2-bootstrap4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2-bootstrap4-theme/select2-bootstrap4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/css/select2.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/css/select2.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/af.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/ar.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/az.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/bg.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/bn.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/bs.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/build.txt
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/ca.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/cs.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/da.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/de.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/dsb.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/el.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/en.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/es.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/et.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/eu.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/fa.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/fi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/fr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/gl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/he.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/hi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/hr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/hsb.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/hu.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/hy.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/id.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/is.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/it.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/ja.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/ka.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/km.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/ko.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/lt.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/lv.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/mk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/ms.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/nb.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/ne.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/nl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/pl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/ps.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/pt-BR.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/pt.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/ro.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/ru.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/sk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/sl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/sq.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/sr-Cyrl.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/sr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/sv.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/th.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/tk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/tr.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/uk.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/vi.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/zh-CN.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/i18n/zh-TW.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/select2.full.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/select2.full.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/select2.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/select2/js/select2.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/sparklines/sparkline.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/font/summernote.eot
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/font/summernote.ttf
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/font/summernote.woff
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ar-AR.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ar-AR.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-bg-BG.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-bg-BG.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ca-ES.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ca-ES.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-cs-CZ.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-cs-CZ.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-da-DK.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-da-DK.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-de-DE.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-de-DE.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-el-GR.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-el-GR.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-es-ES.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-es-ES.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-es-EU.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-es-EU.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-fa-IR.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-fa-IR.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-fi-FI.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-fi-FI.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-fr-FR.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-fr-FR.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-gl-ES.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-gl-ES.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-he-IL.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-he-IL.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-hr-HR.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-hr-HR.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-hu-HU.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-hu-HU.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-id-ID.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-id-ID.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-it-IT.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-it-IT.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ja-JP.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ja-JP.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ko-KR.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ko-KR.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-lt-LT.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-lt-LT.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-lt-LV.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-lt-LV.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-mn-MN.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-mn-MN.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-nb-NO.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-nb-NO.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-nl-NL.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-nl-NL.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-pl-PL.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-pl-PL.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-pt-BR.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-pt-BR.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-pt-PT.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-pt-PT.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ro-RO.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ro-RO.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ru-RU.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ru-RU.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-sk-SK.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-sk-SK.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-sl-SI.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-sl-SI.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-sr-RS-Latin.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-sr-RS-Latin.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-sr-RS.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-sr-RS.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-sv-SE.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-sv-SE.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ta-IN.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-ta-IN.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-th-TH.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-th-TH.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-tr-TR.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-tr-TR.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-uk-UA.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-uk-UA.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-uz-UZ.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-uz-UZ.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-vi-VN.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-vi-VN.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-zh-CN.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-zh-CN.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-zh-TW.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/lang/summernote-zh-TW.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote-bs4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote-bs4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote-bs4.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote-bs4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote-lite.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote-lite.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote-lite.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote-lite.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/summernote/summernote.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/sweetalert2-theme-bootstrap-4/bootstrap-4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/sweetalert2-theme-bootstrap-4/bootstrap-4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/sweetalert2-theme-bootstrap-4/bootstrap-4.scss
wgcloud-server/src/main/resources/static/AdminLTE/plugins/sweetalert2/sweetalert2.all.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/sweetalert2/sweetalert2.all.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/sweetalert2/sweetalert2.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/sweetalert2/sweetalert2.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/sweetalert2/sweetalert2.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/sweetalert2/sweetalert2.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js
wgcloud-server/src/main/resources/static/AdminLTE/plugins/toastr/toastr.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/toastr/toastr.js.map
wgcloud-server/src/main/resources/static/AdminLTE/plugins/toastr/toastr.min.css
wgcloud-server/src/main/resources/static/AdminLTE/plugins/toastr/toastr.min.js
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/WdatePicker.js
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/calendar.js
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/lang/en.js
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/lang/zh-cn.js
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/lang/zh-tw.js
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/skin/WdatePicker.css
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/skin/datePicker.gif
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/skin/default/datepicker.css
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/skin/default/img.gif
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/skin/twoer/datepicker-dev.css
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/skin/twoer/datepicker.css
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/skin/twoer/img.gif
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/skin/twoer/img.png
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/skin/whyGreen/bg.jpg
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/skin/whyGreen/datepicker.css
wgcloud-server/src/main/resources/static/common/My97DatePicker/4.8/skin/whyGreen/img.gif
wgcloud-server/src/main/resources/static/common/antv/data-set.min.js
wgcloud-server/src/main/resources/static/common/antv/g2.min.js
wgcloud-server/src/main/resources/static/common/antv/jquery-3.2.1.min.js
wgcloud-server/src/main/resources/static/common/code.css
wgcloud-server/src/main/resources/static/common/md5.js
wgcloud-server/src/main/resources/static/js/app.js
wgcloud-server/src/main/resources/static/js/dbinfo.js
wgcloud-server/src/main/resources/static/js/dbtable.js
wgcloud-server/src/main/resources/static/js/heath.js
wgcloud-server/src/main/resources/static/js/host.js
wgcloud-server/src/main/resources/static/js/jQuery/jquery-3.2.0.min.js
wgcloud-server/src/main/resources/static/js/jQuery/jquery.form.min.js
wgcloud-server/src/main/resources/static/js/jQuery/jquery.validationEngine-zh_CN.js
wgcloud-server/src/main/resources/static/js/jQuery/jquery.validationEngine.js
wgcloud-server/src/main/resources/static/js/jQuery/validationEngine.jquery.css
wgcloud-server/src/main/resources/static/js/log.js
wgcloud-server/src/main/resources/static/js/login.js
wgcloud-server/src/main/resources/static/js/mail.js
wgcloud-server/src/main/resources/static/logincss/atmosfero.css
wgcloud-server/src/main/resources/static/logincss/bootstrap.min.css
wgcloud-server/src/main/resources/static/logincss/components.css
wgcloud-server/src/main/resources/static/logincss/favicon.png
wgcloud-server/src/main/resources/static/logincss/fix.css
wgcloud-server/src/main/resources/static/logincss/font-awesome.min.css
wgcloud-server/src/main/resources/static/logincss/glyphicons-halflings-regular.eot
wgcloud-server/src/main/resources/static/logincss/glyphicons-halflings-regular.svg
wgcloud-server/src/main/resources/static/logincss/glyphicons-halflings-regular.ttf
wgcloud-server/src/main/resources/static/logincss/glyphicons-halflings-regular.woff
wgcloud-server/src/main/resources/static/logincss/glyphicons-halflings-regular.woff2
wgcloud-server/src/main/resources/static/logincss/ionicons.min.css
wgcloud-server/src/main/resources/static/logincss/logo.png
wgcloud-server/src/main/resources/static/logincss/suri-bootstrap.css
wgcloud-server/src/main/resources/templates/app/add.html
wgcloud-server/src/main/resources/templates/app/list.html
wgcloud-server/src/main/resources/templates/app/view.html
wgcloud-server/src/main/resources/templates/common/aside.html
wgcloud-server/src/main/resources/templates/common/chart.html
wgcloud-server/src/main/resources/templates/common/dashViewFooter.html
wgcloud-server/src/main/resources/templates/common/footer.html
wgcloud-server/src/main/resources/templates/common/header.html
wgcloud-server/src/main/resources/templates/common/navbar.html
wgcloud-server/src/main/resources/templates/common/page.html
wgcloud-server/src/main/resources/templates/dashView/index.html
wgcloud-server/src/main/resources/templates/dashView/list.html
wgcloud-server/src/main/resources/templates/dashView/view.html
wgcloud-server/src/main/resources/templates/dashView/viewChart.html
wgcloud-server/src/main/resources/templates/error/404.html
wgcloud-server/src/main/resources/templates/error/500.html
wgcloud-server/src/main/resources/templates/heath/add.html
wgcloud-server/src/main/resources/templates/heath/list.html
wgcloud-server/src/main/resources/templates/heath/view.html
wgcloud-server/src/main/resources/templates/host/list.html
wgcloud-server/src/main/resources/templates/host/view.html
wgcloud-server/src/main/resources/templates/host/viewChart.html
wgcloud-server/src/main/resources/templates/index.html
wgcloud-server/src/main/resources/templates/log/list.html
wgcloud-server/src/main/resources/templates/log/view.html
wgcloud-server/src/main/resources/templates/login/login.html
wgcloud-server/src/main/resources/templates/mail/view.html
wgcloud-server/src/main/resources/templates/mysql/add.html
wgcloud-server/src/main/resources/templates/mysql/dblist.html
wgcloud-server/src/main/resources/templates/mysql/init.html
wgcloud-server/src/main/resources/templates/mysql/list.html
wgcloud-server/src/main/resources/templates/mysql/view.html |