Compare commits
78 Commits
modeSelect
...
main
| Author | SHA1 | Date |
|---|---|---|
|
|
86cb40439f | |
|
|
f3aed91025 | |
|
|
b43a29ff1c | |
|
|
3a9084da0b | |
|
|
9995299331 | |
|
|
ec6f564d72 | |
|
|
1cac190b8d | |
|
|
116e2c5e55 | |
|
|
201497b4a8 | |
|
|
9588847c72 | |
|
|
bc909c3ba5 | |
|
|
b6a74b957e | |
|
|
700213a465 | |
|
|
dc72fe5f0a | |
|
|
101b5e7d19 | |
|
|
043e8b5090 | |
|
|
516ecb1b10 | |
|
|
73768473e1 | |
|
|
100cf4712c | |
|
|
518ff09d45 | |
|
|
dc6e6d311b | |
|
|
cdf993d998 | |
|
|
2afe8d406c | |
|
|
dc288ee95e | |
|
|
b44d2e636f | |
|
|
f3cd880c9e | |
|
|
039a5756ee | |
|
|
cf0d56847b | |
|
|
cf1513c162 | |
|
|
2a7d7dd16b | |
|
|
82a10a46fc | |
|
|
0806be66e7 | |
|
|
6d1aa274ac | |
|
|
232a4e9936 | |
|
|
bee5b22ac1 | |
|
|
ff893396fe | |
|
|
cd89c3b131 | |
|
|
a506f2230d | |
|
|
596a3a4dea | |
|
|
f0fdbb0668 | |
|
|
346b413a7d | |
|
|
8be6bc3112 | |
|
|
5e81b65f51 | |
|
|
cbad409db7 | |
|
|
d5cfa77e09 | |
|
|
724cde3fd0 | |
|
|
e8bb9e1eee | |
|
|
452a39bf6b | |
|
|
d4e56ea2b6 | |
|
|
6c748bcaa5 | |
|
|
46a2ff98f2 | |
|
|
64cf321511 | |
|
|
8cb621d804 | |
|
|
cf4e465b10 | |
|
|
0a46fc763f | |
|
|
22e5f10039 | |
|
|
fb40f3019b | |
|
|
593b0e9fbe | |
|
|
e043546ee4 | |
|
|
6c2ef85556 | |
|
|
01ed4f0a91 | |
|
|
12623b5b8f | |
|
|
392d704729 | |
|
|
e709659e45 | |
|
|
96778e589c | |
|
|
8fddab12c3 | |
|
|
3cf3ad2159 | |
|
|
7fcf514d7a | |
|
|
a536482dbf | |
|
|
96e5648833 | |
|
|
bffb1ff60f | |
|
|
077f4a2505 | |
|
|
8a9c60c38f | |
|
|
9993dd659f | |
|
|
367f8fcd4d | |
|
|
583d6d5cc3 | |
|
|
dba9354121 | |
|
|
c341e9dd81 |
19
.classpath
|
|
@ -36,7 +36,22 @@
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="lib" path="com.jgoodies.common_1.8.1.v20240327-0800.jar"/>
|
<classpathentry kind="src" path="target/generated-sources/annotations">
|
||||||
<classpathentry kind="lib" path="com.jgoodies.forms_1.9.0.v20240327-0800.jar"/>
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
<classpathentry kind="output" path="target/classes"/>
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
||||||
13
.project
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<projectDescription>
|
<projectDescription>
|
||||||
<name>Schach</name>
|
<name>SchachMVN</name>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
<projects>
|
<projects>
|
||||||
</projects>
|
</projects>
|
||||||
|
|
@ -20,4 +20,15 @@
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
</natures>
|
</natures>
|
||||||
|
<filteredResources>
|
||||||
|
<filter>
|
||||||
|
<id>1750157105125</id>
|
||||||
|
<name></name>
|
||||||
|
<type>30</type>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||||
|
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||||
|
</matcher>
|
||||||
|
</filter>
|
||||||
|
</filteredResources>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
|
|
|
||||||
5
quellen
|
|
@ -1,2 +1,5 @@
|
||||||
JFileChoser in UI: (mit GPT)
|
JFileChoser in UI: (mit GPT)
|
||||||
Prompt: "Wie kann ich in swing in java Files aus einem Explorer auswählen?".
|
Prompt: "Wie kann ich in swing in java Files aus einem Explorer auswählen und speichern?".
|
||||||
|
|
||||||
|
JButton mit Text und Icon gleichzeitig belegen:
|
||||||
|
Pompt: "Kann ich einem button einen text und ein bild gleichzeigtig geben?".
|
||||||
33
scrum
|
|
@ -11,4 +11,37 @@ Was werden wir diese Woche machen:
|
||||||
|
|
||||||
Ziel: stehende Grundstruktur mit möglicher Ausführungsmöglichkeit (kleiner Prototyp wie ein einfaches Schachbrett)
|
Ziel: stehende Grundstruktur mit möglicher Ausführungsmöglichkeit (kleiner Prototyp wie ein einfaches Schachbrett)
|
||||||
|
|
||||||
|
---
|
||||||
|
Scrum von 11.06.25
|
||||||
|
|
||||||
|
Was haben wir bisher gemacht:
|
||||||
|
- Schachbrett mit Figuren / Curser anzeige angelegt
|
||||||
|
- simple clock mit ui
|
||||||
|
- einfach SPiellogikschnittstelle
|
||||||
|
|
||||||
|
|
||||||
|
Was werden wir diese Woche machen:
|
||||||
|
- Bewegbare Schachfiguren
|
||||||
|
- Anzeige welche Züge möglich sind
|
||||||
|
- Clock einfügen
|
||||||
|
- Spieleinlese planen
|
||||||
|
|
||||||
|
Ziel: Singleplayer Spielbarer Zustand
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
Scrum von 17.06.25
|
||||||
|
|
||||||
|
Was haben wir bisher gemacht:
|
||||||
|
- legal moves anzeige auf gui
|
||||||
|
- clock ist funktionsfähig
|
||||||
|
|
||||||
|
|
||||||
|
Was werden wir diese Woche machen:
|
||||||
|
- ziehbare spielfiguren | ui refactor / Dominik
|
||||||
|
- win conditions | promotion / Marius
|
||||||
|
- spiel ui statistic ausgaben | history / Matias
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Ziel: Singleplayer Spielbarer Zustand + statistic Anzeige
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,32 @@
|
||||||
package de.mannheim.th.chess;
|
package de.mannheim.th.chess;
|
||||||
|
|
||||||
import de.mannheim.th.chess.ui.MainFrame;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import de.mannheim.th.chess.ui.MainFrame;
|
||||||
import org.apache.logging.log4j.Logger;
|
import de.mannheim.th.chess.utl.OpeningRecognizer;
|
||||||
|
|
||||||
|
// import org.apache.logging.log4j.LogManager;
|
||||||
|
// import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Eine einfache Schach App mithilfe von {@linkplain https://github.com/bhlangonijr/chesslib} entwickelt.
|
* Eine einfache Schach App mithilfe von
|
||||||
|
* {@linkplain https://github.com/bhlangonijr/chesslib} entwickelt.
|
||||||
|
*
|
||||||
* @author Matias Mas Viehl, Dominik Stuck und Marius Guendel
|
* @author Matias Mas Viehl, Dominik Stuck und Marius Guendel
|
||||||
* @version 0.0.1
|
* @version 0.0.1
|
||||||
*/
|
*/
|
||||||
public class App {
|
public class App {
|
||||||
|
|
||||||
private static final Logger logger = LogManager.getLogger(App.class);
|
// private static final Logger logger = LogManager.getLogger(App.class);
|
||||||
|
|
||||||
private static MainFrame userinterface;
|
|
||||||
/**
|
/**
|
||||||
* Main-Methode.
|
* Main-Methode.
|
||||||
|
*
|
||||||
* @param args
|
* @param args
|
||||||
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) throws IOException {
|
||||||
logger.info("Hello World.");
|
OpeningRecognizer.loadOpenings();
|
||||||
userinterface = new MainFrame();
|
new MainFrame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
package de.mannheim.th.chess.controller;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.App;
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame.BoardMode;
|
||||||
|
|
||||||
|
public class ButtonAufgebenListener extends JFrame implements ActionListener {
|
||||||
|
|
||||||
|
private static final Logger logger = LogManager.getLogger(App.class);
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
private SpielFrame sf;
|
||||||
|
private Game g;
|
||||||
|
|
||||||
|
public ButtonAufgebenListener(SpielFrame sf, Game g) {
|
||||||
|
this.sf = sf;
|
||||||
|
this.g = g;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
Object source = e.getSource();
|
||||||
|
|
||||||
|
g.stopClock();
|
||||||
|
|
||||||
|
// weil nur der aktive Spieler button drücken darf
|
||||||
|
if (source == sf.getAufgeben()) {
|
||||||
|
logger.info("Spieler 1 will aufgeben.");
|
||||||
|
sf.getAufgeben2().setEnabled(false);
|
||||||
|
sf.showResult("Spieler 2 hat gewonnen!");
|
||||||
|
} else if (source == sf.getAufgeben2()) {
|
||||||
|
logger.info("Spieler 2 will aufgeben.");
|
||||||
|
sf.getAufgeben().setEnabled(false);
|
||||||
|
sf.showResult("Spieler 1 hat gewonnen!");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.sf.setBoardMode(BoardMode.finished);
|
||||||
|
this.sf.enableControlPanelButtons();
|
||||||
|
|
||||||
|
sf.setButtonsActions();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
package de.mannheim.th.chess.controller;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javax.swing.JFileChooser;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.ui.ModeSelectionFrame;
|
||||||
|
|
||||||
|
public class ButtonFileLoaderListener implements ActionListener {
|
||||||
|
|
||||||
|
private ModeSelectionFrame msf;
|
||||||
|
|
||||||
|
public ButtonFileLoaderListener(ModeSelectionFrame msf) {
|
||||||
|
this.msf = msf;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
JFileChooser dateiWaehler = new JFileChooser();
|
||||||
|
JFrame jfFile = new JFrame();
|
||||||
|
int auswahl = dateiWaehler.showOpenDialog(jfFile);
|
||||||
|
|
||||||
|
if (auswahl == JFileChooser.APPROVE_OPTION) {
|
||||||
|
File ausgewaehlteDatei = dateiWaehler.getSelectedFile();
|
||||||
|
JOptionPane.showMessageDialog(jfFile, "Gewählte Datei:\n" + ausgewaehlteDatei.getAbsolutePath());
|
||||||
|
|
||||||
|
try {
|
||||||
|
BufferedReader br = new BufferedReader(new FileReader(ausgewaehlteDatei));
|
||||||
|
|
||||||
|
msf.setFen(br.readLine());
|
||||||
|
|
||||||
|
br.close();
|
||||||
|
|
||||||
|
} catch (FileNotFoundException e1) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e1.printStackTrace();
|
||||||
|
} catch (IOException e1) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
package de.mannheim.th.chess.controller;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.io.BufferedWriter;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javax.swing.JFileChooser;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.App;
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
|
||||||
|
public class ButtonFileSaverListener implements ActionListener {
|
||||||
|
|
||||||
|
private static final Logger logger = LogManager.getLogger(App.class);
|
||||||
|
|
||||||
|
private Game g;
|
||||||
|
private JFrame sf;
|
||||||
|
|
||||||
|
public ButtonFileSaverListener(JFrame sf, Game g) {
|
||||||
|
this.sf = sf;
|
||||||
|
this.g = g;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
|
||||||
|
logger.info("Spiel wird gespeichert.");
|
||||||
|
|
||||||
|
JFileChooser chooser = new JFileChooser();
|
||||||
|
chooser.setCurrentDirectory(new File(System.getProperty("user.home") + "/Documents"));
|
||||||
|
|
||||||
|
chooser.setDialogTitle("Datei speichern");
|
||||||
|
int userSelection = chooser.showSaveDialog(sf);
|
||||||
|
|
||||||
|
if (userSelection == JFileChooser.APPROVE_OPTION) {
|
||||||
|
File fileToSave = chooser.getSelectedFile();
|
||||||
|
|
||||||
|
try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileToSave))) {
|
||||||
|
|
||||||
|
writer.write(g.getFen());
|
||||||
|
|
||||||
|
logger.info(g.getFen());
|
||||||
|
} catch (IOException e1) {
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.info("Speichern fehlgeschlagen.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
package de.mannheim.th.chess.controller;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import com.github.bhlangonijr.chesslib.move.Move;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame.BoardMode;
|
||||||
|
|
||||||
|
public class ButtonMovePieceListener implements ActionListener {
|
||||||
|
private SpielFrame sf;
|
||||||
|
private Game game;
|
||||||
|
private Move mv;
|
||||||
|
|
||||||
|
public ButtonMovePieceListener(SpielFrame sf, Game game, Move mv) {
|
||||||
|
this.sf = sf;
|
||||||
|
this.game = game;
|
||||||
|
this.mv = mv;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (game.isPromotionMove(this.mv))
|
||||||
|
game.doPromotionMove(this.sf.showPromotion(), mv.getFrom(), mv.getTo());
|
||||||
|
else
|
||||||
|
this.game.playMove(this.mv);
|
||||||
|
|
||||||
|
this.game.setViewPointer(this.game.getMoveList().size() - 1);
|
||||||
|
|
||||||
|
if (this.game.isDraw()) {
|
||||||
|
this.game.stopClock();
|
||||||
|
this.sf.setBoardMode(BoardMode.finished);
|
||||||
|
this.sf.enableControlPanelButtons();
|
||||||
|
this.sf.showResult("Unentschieden!");
|
||||||
|
} else if (this.game.isMate()) {
|
||||||
|
this.game.stopClock();
|
||||||
|
this.sf.setBoardMode(BoardMode.finished);
|
||||||
|
this.sf.enableControlPanelButtons();
|
||||||
|
this.sf.showResult("Spieler " + game.getActivePlayer() + " hat gewonnen!");
|
||||||
|
} else {
|
||||||
|
this.sf.setBoardMode(BoardMode.normal);
|
||||||
|
if (game.getLastMove() != null) {
|
||||||
|
sf.aktualisiereAusgabe();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.sf.setCursor(null);
|
||||||
|
|
||||||
|
// hier rotieren markieren
|
||||||
|
|
||||||
|
if (game.isRotieren())
|
||||||
|
sf.setWechsel(!sf.isWechsel());
|
||||||
|
|
||||||
|
this.sf.erstelleBrett();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
package de.mannheim.th.chess.controller;
|
||||||
|
|
||||||
|
import java.awt.Cursor;
|
||||||
|
import java.awt.Image;
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.awt.Toolkit;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import com.github.bhlangonijr.chesslib.Square;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame;
|
||||||
|
|
||||||
|
public class ButtonSelectPieceListener implements ActionListener {
|
||||||
|
private SpielFrame sf;
|
||||||
|
private Square selectedSquare;
|
||||||
|
|
||||||
|
public ButtonSelectPieceListener(SpielFrame sf, Square sq) {
|
||||||
|
this.sf = sf;
|
||||||
|
this.selectedSquare = sq;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
sf.setBoardMode(SpielFrame.BoardMode.pieceSelected);
|
||||||
|
sf.setSelectedSquare(this.selectedSquare);
|
||||||
|
|
||||||
|
String symbolChoosed = sf.getBelegung().get(e.getSource());
|
||||||
|
|
||||||
|
// setzt cursor auf spielfigur für die animation
|
||||||
|
String pfad = "src/main/resources/" + (int) symbolChoosed.toCharArray()[2] + ".png";
|
||||||
|
|
||||||
|
// Bild laden und Cursor im gesamten Frame setzen
|
||||||
|
Image image = Toolkit.getDefaultToolkit().getImage(pfad);
|
||||||
|
Image scaled = image.getScaledInstance(32, 32, Image.SCALE_SMOOTH);
|
||||||
|
Cursor figurCursor = Toolkit.getDefaultToolkit().createCustomCursor(scaled, new Point(0, 0),
|
||||||
|
"figurCursor");
|
||||||
|
sf.setCursor(figurCursor);
|
||||||
|
|
||||||
|
sf.erstelleBrett();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
package de.mannheim.th.chess.controller;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame.BoardMode;
|
||||||
|
|
||||||
|
public class ButtonToNormalListener implements ActionListener {
|
||||||
|
private SpielFrame sf;
|
||||||
|
|
||||||
|
public ButtonToNormalListener(SpielFrame sf) {
|
||||||
|
this.sf = sf;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
this.sf.setBoardMode(BoardMode.normal);
|
||||||
|
this.sf.setSelectedSquare(null);
|
||||||
|
this.sf.setCursor(null);
|
||||||
|
this.sf.erstelleBrett();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
package de.mannheim.th.chess.controller;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.App;
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame.BoardMode;
|
||||||
|
|
||||||
|
public class ButtonUndoMoveListener implements ActionListener {
|
||||||
|
|
||||||
|
private static final Logger logger = LogManager.getLogger(App.class);
|
||||||
|
|
||||||
|
private SpielFrame sf;
|
||||||
|
private Game game;
|
||||||
|
|
||||||
|
public ButtonUndoMoveListener(SpielFrame sf, Game game) {
|
||||||
|
this.sf = sf;
|
||||||
|
this.game = game;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
Object source = e.getSource();
|
||||||
|
|
||||||
|
if (sf.getMode() != BoardMode.normal || !game.movesNotNull()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (source == sf.getUndo()) { // Spieler 2 drückt seinen Button
|
||||||
|
if (sf.getUndo().getText().equals("Zug zurücknehmen") && game.getActivePlayer() == 1) {
|
||||||
|
sf.getUndo2().setText("Zurücknahme genehmigen?");
|
||||||
|
sf.getUndo2().setEnabled(true);
|
||||||
|
logger.info("Spieler 2 hat zurücknahme angefordert.");
|
||||||
|
} else if (sf.getUndo().getText().equals("Zurücknahme genehmigen?")) {
|
||||||
|
logger.info("Zug zurücknehmen wurde von Spieler 2 genehmigt.");
|
||||||
|
sf.getUndo().setText("Zug zurücknehmen");
|
||||||
|
sf.getUndo2().setText("Zug zurücknehmen");
|
||||||
|
sf.getUndo2().setEnabled(false);
|
||||||
|
game.undo();
|
||||||
|
sf.getClock().switchClock();
|
||||||
|
sf.deleteLastAusgabe();
|
||||||
|
sf.erstelleBrett();
|
||||||
|
}
|
||||||
|
} else if (source == sf.getUndo2()) { // Spieler 1 drückt seinen Button
|
||||||
|
if (sf.getUndo2().getText().equals("Zug zurücknehmen") && game.getActivePlayer() == 2) {
|
||||||
|
sf.getUndo().setText("Zurücknahme genehmigen?");
|
||||||
|
sf.getUndo().setEnabled(true);
|
||||||
|
logger.info("Spieler 1 hat zurücknahme angefordert.");
|
||||||
|
} else if (sf.getUndo2().getText().equals("Zurücknahme genehmigen?")) {
|
||||||
|
logger.info("Zug zurücknehmen wurde von Spieler 1 genehmigt.");
|
||||||
|
sf.getUndo2().setText("Zug zurücknehmen");
|
||||||
|
sf.getUndo().setText("Zug zurücknehmen");
|
||||||
|
sf.getUndo().setEnabled(false);
|
||||||
|
game.undo();
|
||||||
|
sf.getClock().switchClock();
|
||||||
|
sf.deleteLastAusgabe();
|
||||||
|
sf.erstelleBrett();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package de.mannheim.th.chess.controller.controlPanel;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame;
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
|
||||||
|
public abstract class BaseButtonViewListener {
|
||||||
|
protected SpielFrame sf;
|
||||||
|
protected Game game;
|
||||||
|
|
||||||
|
public BaseButtonViewListener(Game game, SpielFrame sf) {
|
||||||
|
this.sf = sf;
|
||||||
|
this.game = game;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads the gamestate and renders the board
|
||||||
|
*/
|
||||||
|
protected void updateView() {
|
||||||
|
this.game.loadView();
|
||||||
|
this.sf.setDefaultButtons();
|
||||||
|
this.sf.applyBoardButtons();
|
||||||
|
this.sf.ladeBrett();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package de.mannheim.th.chess.controller.controlPanel;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame;
|
||||||
|
|
||||||
|
public class ButtonQuickloadListener implements ActionListener {
|
||||||
|
private Game game;
|
||||||
|
private SpielFrame sf;
|
||||||
|
|
||||||
|
public ButtonQuickloadListener(Game game, SpielFrame sf) {
|
||||||
|
this.game = game;
|
||||||
|
this.sf = sf;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
this.game.quickload();
|
||||||
|
this.sf.erstelleBrett();
|
||||||
|
this.sf.aktualisiereAusgabe();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
package de.mannheim.th.chess.controller.controlPanel;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
|
||||||
|
public class ButtonQuicksaveListener implements ActionListener {
|
||||||
|
private Game game;
|
||||||
|
|
||||||
|
public ButtonQuicksaveListener(Game game) {
|
||||||
|
this.game = game;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
this.game.quicksave();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package de.mannheim.th.chess.controller.controlPanel;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame;
|
||||||
|
|
||||||
|
public class ButtonViewBackListener extends BaseButtonViewListener implements ActionListener {
|
||||||
|
|
||||||
|
public ButtonViewBackListener(Game game, SpielFrame sf) {
|
||||||
|
super(game, sf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (this.game.getViewPointer() > 0) {
|
||||||
|
this.game.setViewPointer(this.game.getViewPointer() - 1);
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package de.mannheim.th.chess.controller.controlPanel;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame;
|
||||||
|
|
||||||
|
public class ButtonViewFirstListener extends BaseButtonViewListener implements ActionListener {
|
||||||
|
|
||||||
|
public ButtonViewFirstListener(Game game, SpielFrame sf) {
|
||||||
|
super(game, sf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
this.game.setViewPointer(0);
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package de.mannheim.th.chess.controller.controlPanel;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame;
|
||||||
|
|
||||||
|
public class ButtonViewForwardListener extends BaseButtonViewListener implements ActionListener {
|
||||||
|
|
||||||
|
public ButtonViewForwardListener(Game game, SpielFrame sf) {
|
||||||
|
super(game, sf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (this.game.getMoveList().size() > this.game.getViewPointer()) {
|
||||||
|
this.game.setViewPointer(this.game.getViewPointer() + 1);
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
package de.mannheim.th.chess.controller.controlPanel;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
import de.mannheim.th.chess.ui.SpielFrame;
|
||||||
|
|
||||||
|
public class ButtonViewLastListener extends BaseButtonViewListener implements ActionListener {
|
||||||
|
|
||||||
|
public ButtonViewLastListener(Game game, SpielFrame sf) {
|
||||||
|
super(game, sf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
this.game.setViewPointer(this.game.getMoveList().size());
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,41 +1,105 @@
|
||||||
package de.mannheim.th.chess.domain;
|
package de.mannheim.th.chess.domain;
|
||||||
|
|
||||||
import com.github.bhlangonijr.chesslib.Board;
|
|
||||||
import com.github.bhlangonijr.chesslib.Square;
|
|
||||||
import com.github.bhlangonijr.chesslib.move.Move;
|
|
||||||
import com.github.bhlangonijr.chesslib.move.MoveList;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import com.github.bhlangonijr.chesslib.Board;
|
||||||
|
import com.github.bhlangonijr.chesslib.Piece;
|
||||||
|
import com.github.bhlangonijr.chesslib.Rank;
|
||||||
|
import com.github.bhlangonijr.chesslib.Side;
|
||||||
|
import com.github.bhlangonijr.chesslib.Square;
|
||||||
|
import com.github.bhlangonijr.chesslib.move.Move;
|
||||||
|
import com.github.bhlangonijr.chesslib.move.MoveList;
|
||||||
|
|
||||||
|
import de.mannheim.th.chess.App;
|
||||||
import de.mannheim.th.chess.utl.Clock;
|
import de.mannheim.th.chess.utl.Clock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ist die zentrale Klasse für ein einzelnes Spiel. Ist praktisch die zentrale Steuerung davon.
|
* Ist die zentrale Klasse für ein einzelnes Spiel. Ist praktisch die zentrale
|
||||||
|
* Steuerung davon.
|
||||||
*/
|
*/
|
||||||
public class Game{
|
public class Game {
|
||||||
|
|
||||||
|
private static final Logger logger = LogManager.getLogger(App.class);
|
||||||
|
|
||||||
private Board board;
|
private Board board;
|
||||||
private Clock clock;
|
private Clock clock;
|
||||||
private ArrayList<String> moves;
|
private boolean rotieren, zuruecknahme;
|
||||||
private ArrayList<Move> movelist = new ArrayList<>();
|
|
||||||
|
|
||||||
|
ArrayList<Piece> removedPieces;
|
||||||
|
|
||||||
|
private MoveList movelist;
|
||||||
|
private int viewPointer;
|
||||||
|
|
||||||
|
private MoveList savestate;
|
||||||
|
private String startPosFen;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Conststructs a new standard GameBoard.
|
||||||
|
*/
|
||||||
public Game() {
|
public Game() {
|
||||||
board = new Board();
|
|
||||||
|
this.board = new Board();
|
||||||
|
this.movelist = new MoveList();
|
||||||
|
this.startPosFen = this.board.getFen();
|
||||||
|
removedPieces = new ArrayList<>();
|
||||||
|
|
||||||
clock = new Clock("blitz");
|
clock = new Clock("blitz");
|
||||||
|
clock.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void doMove(Square sq1, Square sq2) {
|
public Game(String modus, boolean rotieren, boolean zuruecknahme, String fen) {
|
||||||
|
this.rotieren = rotieren;
|
||||||
|
this.zuruecknahme = zuruecknahme;
|
||||||
|
|
||||||
|
this.board = new Board();
|
||||||
|
|
||||||
|
if (fen == null)
|
||||||
|
fen = board.getFen();
|
||||||
|
|
||||||
|
this.board.loadFromFen(fen);
|
||||||
|
|
||||||
|
this.startPosFen = this.board.getFen();
|
||||||
|
this.movelist = new MoveList();
|
||||||
|
|
||||||
|
clock = new Clock(modus);
|
||||||
|
removedPieces = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toFEN() {
|
/**
|
||||||
return board.getFen();
|
* Constructs a new standard GameBoard and applies the provides moves.
|
||||||
|
*
|
||||||
|
* @param movelist The list of moves that get played.
|
||||||
|
*/
|
||||||
|
public Game(MoveList movelist) {
|
||||||
|
this.board = new Board();
|
||||||
|
|
||||||
|
this.startPosFen = this.board.getFen();
|
||||||
|
this.movelist = movelist;
|
||||||
|
|
||||||
|
for (Move move : movelist) {
|
||||||
|
this.board.doMove(move);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.clock = new Clock("blitz");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new GameBoard with the provided fen String as the positions.
|
||||||
|
*
|
||||||
|
* @param fen The fen String that provides the customs formation.
|
||||||
|
*/
|
||||||
|
public Game(String fen) {
|
||||||
|
this.board = new Board();
|
||||||
|
this.board.loadFromFen(fen);
|
||||||
|
|
||||||
|
this.movelist = new MoveList();
|
||||||
|
this.startPosFen = this.board.getFen();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plays the move on the board and adds it to the movelist
|
* Plays the move on the board and adds it to the movelist
|
||||||
|
|
@ -43,8 +107,17 @@ public class Game{
|
||||||
* @param move the move to be played
|
* @param move the move to be played
|
||||||
*/
|
*/
|
||||||
public void playMove(Move move) {
|
public void playMove(Move move) {
|
||||||
|
Piece removedPiece = board.getPiece(move.getTo());
|
||||||
|
if (removedPiece != Piece.NONE) {
|
||||||
|
int removedPiecesCount = removedPieces.size();
|
||||||
|
removedPieces.add(removedPiece);
|
||||||
|
if (removedPiecesCount + 1 < removedPieces.size()) {
|
||||||
|
removedPieces.removeLast();
|
||||||
|
}
|
||||||
|
}
|
||||||
this.board.doMove(move);
|
this.board.doMove(move);
|
||||||
this.movelist.add(move);
|
this.movelist.add(move);
|
||||||
|
clock.pressClock();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -53,10 +126,131 @@ public class Game{
|
||||||
* @param origin The square from wich it moves from.
|
* @param origin The square from wich it moves from.
|
||||||
* @param desination The square where it will move to.
|
* @param desination The square where it will move to.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
public void undo() {
|
||||||
|
this.board.undoMove();
|
||||||
|
Move lastMove = this.movelist.removeLast();
|
||||||
|
Piece removedPiece = board.getPiece(lastMove.getTo());
|
||||||
|
if (removedPiece != Piece.NONE) {
|
||||||
|
removedPieces.remove(removedPiece);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copies the current move list to the savestate
|
||||||
|
*/
|
||||||
|
public void quicksave() {
|
||||||
|
// TODO: save the current clocktime
|
||||||
|
this.savestate = new MoveList(this.movelist);
|
||||||
|
|
||||||
|
logger.info("Quicksaved...");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads the save state
|
||||||
|
*
|
||||||
|
* @brief creates a new board with the startPosFen and then plays all the moves
|
||||||
|
* from the savestate
|
||||||
|
*/
|
||||||
|
public void quickload() {
|
||||||
|
if (this.savestate != null) {
|
||||||
|
|
||||||
|
this.board = new Board();
|
||||||
|
this.movelist.clear();
|
||||||
|
this.board.loadFromFen(startPosFen);
|
||||||
|
|
||||||
|
for (Move move : savestate) {
|
||||||
|
this.playMove(move);
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.info("Quickloaded...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plays the move on the board and adds it to the movelist
|
||||||
|
*
|
||||||
|
* @param origin The square from which it moves from.
|
||||||
|
* @param desination The square where it will move to.
|
||||||
|
*/
|
||||||
public void playMove(Square origin, Square desination) {
|
public void playMove(Square origin, Square desination) {
|
||||||
Move move = new Move(origin, desination);
|
Move move = new Move(origin, desination);
|
||||||
|
Piece removedPiece = board.getPiece(desination);
|
||||||
|
if (removedPiece != Piece.NONE) {
|
||||||
|
int removedPiecesCount = removedPieces.size();
|
||||||
|
removedPieces.add(removedPiece);
|
||||||
|
if (removedPieces.size() > removedPiecesCount + 1) {
|
||||||
|
removedPieces.removeLast();
|
||||||
|
}
|
||||||
|
}
|
||||||
this.board.doMove(move);
|
this.board.doMove(move);
|
||||||
this.movelist.add(move);
|
this.movelist.add(move);
|
||||||
|
clock.pressClock();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void doPromotionMove(int piece, Square origin, Square destination) {
|
||||||
|
System.out.println(piece);
|
||||||
|
Piece promotedTo;
|
||||||
|
switch (piece) {
|
||||||
|
case 7:
|
||||||
|
promotedTo = Piece.BLACK_KNIGHT;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
promotedTo = Piece.BLACK_QUEEN;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
promotedTo = Piece.BLACK_ROOK;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
promotedTo = Piece.BLACK_BISHOP;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
promotedTo = Piece.WHITE_KNIGHT;
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
promotedTo = Piece.WHITE_QUEEN;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
promotedTo = Piece.WHITE_ROOK;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
promotedTo = Piece.WHITE_BISHOP;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
promotedTo = Piece.WHITE_QUEEN;
|
||||||
|
}
|
||||||
|
Move promotionMove = new Move(origin, destination, promotedTo);
|
||||||
|
playMove(promotionMove);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads the current view
|
||||||
|
*
|
||||||
|
* @brief Creates a new gameboard from the start pos and playes moves until it
|
||||||
|
* reaches the viewPointer
|
||||||
|
*/
|
||||||
|
public void loadView() {
|
||||||
|
this.board = new Board();
|
||||||
|
this.board.loadFromFen(this.startPosFen);
|
||||||
|
for (int i = 0; i < this.viewPointer; i++) {
|
||||||
|
this.board.doMove(this.movelist.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isMate() {
|
||||||
|
return board.isMated();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDraw() {
|
||||||
|
return board.isDraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getActivePlayer() {
|
||||||
|
if (board.getSideToMove() == Side.WHITE) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -67,12 +261,97 @@ public class Game{
|
||||||
* @return A list of legal moves that originate from the specified square.
|
* @return A list of legal moves that originate from the specified square.
|
||||||
*/
|
*/
|
||||||
public List<Move> getLegalMoves(Square square) {
|
public List<Move> getLegalMoves(Square square) {
|
||||||
return this.board.legalMoves().stream()
|
return this.board.legalMoves().stream().filter(move -> move.getFrom() == square).collect(Collectors.toList());
|
||||||
.filter(move -> move.getFrom() == square)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void stopClock() {
|
||||||
|
clock.endGame();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPromotionMove(Move move) {
|
||||||
|
return ((move.getTo().getRank().equals(Rank.RANK_8) || move.getTo().getRank().equals(Rank.RANK_1)) &&
|
||||||
|
(board.getPiece(move.getFrom()) == Piece.BLACK_PAWN || board.getPiece(move.getFrom()) == Piece.WHITE_PAWN));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a list of all legal moveable squares from the current board state.
|
||||||
|
*
|
||||||
|
* @return a List of Square objects representing all legal moveable squares.
|
||||||
|
*/
|
||||||
|
public List<Square> getAllLegalMoveableSquares() {
|
||||||
|
return this.board.legalMoves().stream().map(move -> move.getFrom()).distinct().collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a list of legal moveable squares for a given square.
|
||||||
|
*
|
||||||
|
* @param square the Square from which to retrieve legal moveable squares
|
||||||
|
* @return a List of Square objects representing the legal moveable squares
|
||||||
|
* from the specified square.
|
||||||
|
*/
|
||||||
|
public List<Square> getLegalMoveableSquares(Square square) {
|
||||||
|
return this.board.legalMoves().stream()
|
||||||
|
.filter(move -> move.getFrom() == square)
|
||||||
|
.map(move -> move.getTo())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Clock getClock() {
|
||||||
|
return this.clock;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isZuruecknahme() {
|
||||||
|
return zuruecknahme;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean movesNotNull() {
|
||||||
|
if (movelist.getLast() != null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFen() {
|
||||||
|
return this.board.getFen();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Move getLastMove() {
|
||||||
|
logger.info(this.movelist.getLast().toString());
|
||||||
|
return this.movelist.getLast();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MoveList getMoveList() {
|
||||||
|
return this.movelist;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Board getBoard() {
|
||||||
|
return this.board;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toFEN() {
|
||||||
|
board.toString();
|
||||||
|
return board.getFen();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUnicodeFromMove(Move move) {
|
||||||
|
return board.getPiece(move.getTo()).getFanSymbol().toUpperCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setViewPointer(int i) {
|
||||||
|
this.viewPointer = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getViewPointer() {
|
||||||
|
return this.viewPointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Piece> getRemovedPieces() {
|
||||||
|
return removedPieces;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isRotieren() {
|
||||||
|
return rotieren;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
package de.mannheim.th.chess.domain;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Ueberprueft, ob ein Zug gueltig ist.
|
|
||||||
*/
|
|
||||||
public class MoveChecker{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
package de.mannheim.th.chess.domain;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Liest einen Zug ein.
|
|
||||||
*/
|
|
||||||
public class MoveReader{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
package de.mannheim.th.chess.model;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Speichert Spielstaende, bisher gespielte Spiele und weiteres in einem File.
|
|
||||||
*/
|
|
||||||
public class Database{
|
|
||||||
|
|
||||||
public Database() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
package de.mannheim.th.chess.ui;
|
|
||||||
|
|
||||||
import de.mannheim.th.chess.model.Database;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ???
|
|
||||||
*/
|
|
||||||
public class Creator{
|
|
||||||
|
|
||||||
private Database database = new Database();
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
package de.mannheim.th.chess.ui;
|
|
||||||
|
|
||||||
import de.mannheim.th.chess.domain.Game;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Zeigt das Spielbrett mit den Stats rechts daneben an.
|
|
||||||
*/
|
|
||||||
public class GameWindow{
|
|
||||||
|
|
||||||
private Game gamelogic = new Game();
|
|
||||||
|
|
||||||
public GameWindow() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,64 +1,48 @@
|
||||||
package de.mannheim.th.chess.ui;
|
package de.mannheim.th.chess.ui;
|
||||||
|
|
||||||
import java.awt.EventQueue;
|
|
||||||
|
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.border.EmptyBorder;
|
import javax.swing.border.EmptyBorder;
|
||||||
import javax.swing.JTextField;
|
|
||||||
import javax.swing.JLabel;
|
|
||||||
import javax.swing.JOptionPane;
|
|
||||||
|
|
||||||
import java.awt.GridLayout;
|
// import org.apache.logging.log4j.LogManager;
|
||||||
|
// import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
// import de.mannheim.th.chess.App;
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.io.File;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
import javax.swing.Box;
|
import javax.swing.Box;
|
||||||
import javax.swing.BoxLayout;
|
import javax.swing.BoxLayout;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JFileChooser;
|
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
|
||||||
import java.awt.Component;
|
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.Graphics;
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
|
||||||
public class MainFrame extends JFrame {
|
public class MainFrame extends JFrame {
|
||||||
|
|
||||||
private ArrayList<SpielFrame> spiele = new ArrayList<>();
|
// private static final Logger logger = LogManager.getLogger(App.class);
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private JPanel contentPane;
|
private JPanel contentPane;
|
||||||
|
private Game game;
|
||||||
/**
|
|
||||||
* Launch the application.
|
|
||||||
*/
|
|
||||||
public static void main(String[] args) {
|
|
||||||
EventQueue.invokeLater(new Runnable() {
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
MainFrame frame = new MainFrame();
|
|
||||||
frame.setVisible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create the frame.
|
* Create the frame.
|
||||||
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public MainFrame() {
|
public MainFrame() {
|
||||||
|
|
||||||
|
|
||||||
setBackground(Color.LIGHT_GRAY);
|
setBackground(Color.LIGHT_GRAY);
|
||||||
setResizable(true);
|
setResizable(true);
|
||||||
setAlwaysOnTop(true);
|
setAlwaysOnTop(true);
|
||||||
setTitle("Schach");
|
setTitle("Schach");
|
||||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||||
setBounds(100, 100, 500, 500);
|
setBounds(100, 100, 500, 500);
|
||||||
|
|
||||||
contentPane = new JPanel();
|
contentPane = new JPanel();
|
||||||
|
|
@ -75,14 +59,14 @@ public class MainFrame extends JFrame {
|
||||||
JLabel lblNewLabel = new JLabel("Schach");
|
JLabel lblNewLabel = new JLabel("Schach");
|
||||||
lblNewLabel.setForeground(Color.BLACK);
|
lblNewLabel.setForeground(Color.BLACK);
|
||||||
lblNewLabel.setFont(new Font("Serif", Font.BOLD, 60));
|
lblNewLabel.setFont(new Font("Serif", Font.BOLD, 60));
|
||||||
lblNewLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
|
lblNewLabel.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
contentPane.add(lblNewLabel);
|
contentPane.add(lblNewLabel);
|
||||||
|
|
||||||
contentPane.add(Box.createVerticalStrut(10));
|
contentPane.add(Box.createVerticalStrut(10));
|
||||||
|
|
||||||
JLabel lblNewLabel_1 = new JLabel("by Dominik, Marius und Matias");
|
JLabel lblNewLabel_1 = new JLabel("by Dominik, Marius und Matias");
|
||||||
lblNewLabel_1.setFont(new Font("Calibri", Font.ITALIC, 24));
|
lblNewLabel_1.setFont(new Font("Calibri", Font.ITALIC, 24));
|
||||||
lblNewLabel_1.setAlignmentX(Component.CENTER_ALIGNMENT);
|
lblNewLabel_1.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
contentPane.add(lblNewLabel_1);
|
contentPane.add(lblNewLabel_1);
|
||||||
|
|
||||||
contentPane.add(Box.createVerticalStrut(75));
|
contentPane.add(Box.createVerticalStrut(75));
|
||||||
|
|
@ -92,15 +76,12 @@ public class MainFrame extends JFrame {
|
||||||
btnNewButton.setBackground(Color.LIGHT_GRAY);
|
btnNewButton.setBackground(Color.LIGHT_GRAY);
|
||||||
btnNewButton.setForeground(Color.BLACK);
|
btnNewButton.setForeground(Color.BLACK);
|
||||||
btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 16));
|
btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
btnNewButton.setAlignmentX(Component.CENTER_ALIGNMENT);
|
btnNewButton.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
btnNewButton.addActionListener(new ActionListener() {
|
btnNewButton.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
openSelectModeFrame();
|
||||||
SpielFrame sp = new SpielFrame();
|
|
||||||
spiele.add(sp);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
@ -108,41 +89,22 @@ public class MainFrame extends JFrame {
|
||||||
|
|
||||||
contentPane.add(Box.createVerticalStrut(15));
|
contentPane.add(Box.createVerticalStrut(15));
|
||||||
|
|
||||||
JButton btnNewButton_1 = new JButton("Vergangenes Spiel laden");
|
JButton pgnLoaderButton = new JButton("Lade aus PGN Datei");
|
||||||
|
pgnLoaderButton.setBackground(Color.LIGHT_GRAY);
|
||||||
btnNewButton_1.setBackground(Color.LIGHT_GRAY);
|
pgnLoaderButton.setForeground(Color.BLACK);
|
||||||
btnNewButton_1.setForeground(Color.BLACK);
|
pgnLoaderButton.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
btnNewButton_1.setFont(new Font("Tahoma", Font.BOLD, 16));
|
pgnLoaderButton.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
btnNewButton_1.setAlignmentX(Component.CENTER_ALIGNMENT);
|
pgnLoaderButton.addActionListener(e -> openPgnSelectFrame());
|
||||||
btnNewButton_1.addActionListener(new ActionListener() {
|
contentPane.add(pgnLoaderButton);
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
JFileChooser dateiWaehler = new JFileChooser();
|
|
||||||
JFrame jfFile = new JFrame();
|
|
||||||
int auswahl = dateiWaehler.showOpenDialog(jfFile);
|
|
||||||
|
|
||||||
if (auswahl == JFileChooser.APPROVE_OPTION) {
|
|
||||||
File ausgewaehlteDatei = dateiWaehler.getSelectedFile();
|
|
||||||
JOptionPane.showMessageDialog(jfFile, "Gewählte Datei:\n" + ausgewaehlteDatei.getAbsolutePath());
|
|
||||||
|
|
||||||
// Uebergabe zu Logik zum extrahieren der Daten
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
contentPane.add(btnNewButton_1);
|
|
||||||
|
|
||||||
contentPane.add(Box.createVerticalStrut(15));
|
contentPane.add(Box.createVerticalStrut(15));
|
||||||
|
|
||||||
JButton btnNewButton_2 = new JButton("Spiel beenden");
|
JButton btnNewButton_2 = new JButton("App beenden");
|
||||||
|
|
||||||
btnNewButton_2.setBackground(Color.LIGHT_GRAY);
|
btnNewButton_2.setBackground(Color.LIGHT_GRAY);
|
||||||
btnNewButton_2.setForeground(Color.BLACK);
|
btnNewButton_2.setForeground(Color.BLACK);
|
||||||
btnNewButton_2.setFont(new Font("Tahoma", Font.BOLD, 16));
|
btnNewButton_2.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
btnNewButton_2.setAlignmentX(Component.CENTER_ALIGNMENT);
|
btnNewButton_2.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
btnNewButton_2.addActionListener(new ActionListener() {
|
btnNewButton_2.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -155,4 +117,45 @@ public class MainFrame extends JFrame {
|
||||||
contentPane.add(btnNewButton_2);
|
contentPane.add(btnNewButton_2);
|
||||||
setVisible(true);
|
setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the spielframe and game in playmode
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public void startGame() {
|
||||||
|
if (this.game != null) {
|
||||||
|
//this.game.stopClock();
|
||||||
|
new SpielFrame(this.game);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the spielframe and game in view mode
|
||||||
|
*/
|
||||||
|
public void startView() {
|
||||||
|
if (this.game != null) {
|
||||||
|
this.game.stopClock();
|
||||||
|
SpielFrame sf = new SpielFrame(this.game);
|
||||||
|
sf.setMode(SpielFrame.BoardMode.finished);
|
||||||
|
sf.enableControlPanelButtons();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGame(Game game) {
|
||||||
|
this.game = game;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* opens the selectmodeframe
|
||||||
|
*/
|
||||||
|
private void openSelectModeFrame() {
|
||||||
|
new ModeSelectionFrame(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens the pgnselectorframe
|
||||||
|
*/
|
||||||
|
private void openPgnSelectFrame() {
|
||||||
|
new PGNLoaderFrame(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,132 @@
|
||||||
|
package de.mannheim.th.chess.ui;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import javax.swing.*;
|
||||||
|
import javax.swing.border.EmptyBorder;
|
||||||
|
|
||||||
|
// import org.apache.logging.log4j.LogManager;
|
||||||
|
// import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
// import de.mannheim.th.chess.App;
|
||||||
|
import de.mannheim.th.chess.controller.ButtonFileLoaderListener;
|
||||||
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
|
||||||
|
public class ModeSelectionFrame extends JFrame {
|
||||||
|
|
||||||
|
// private static final Logger logger = LogManager.getLogger(App.class);
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
private final JPanel contentPane;
|
||||||
|
private String fen;
|
||||||
|
|
||||||
|
public ModeSelectionFrame(MainFrame mf) {
|
||||||
|
// Frame-Eigenschaften
|
||||||
|
setTitle("Modusauswahl");
|
||||||
|
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||||
|
setBounds(100, 100, 600, 600);
|
||||||
|
setResizable(true);
|
||||||
|
setAlwaysOnTop(true);
|
||||||
|
|
||||||
|
// Panel konfigurieren
|
||||||
|
contentPane = new JPanel();
|
||||||
|
contentPane.setBackground(new Color(90, 90, 90));
|
||||||
|
contentPane.setBorder(new EmptyBorder(20, 20, 20, 20));
|
||||||
|
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
|
||||||
|
setContentPane(contentPane);
|
||||||
|
|
||||||
|
// Überschrift
|
||||||
|
JLabel jl = new JLabel("Welchen Modus wollen Sie spielen?");
|
||||||
|
jl.setFont(new Font("Calibri", Font.BOLD, 20));
|
||||||
|
jl.setForeground(Color.BLACK);
|
||||||
|
jl.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
contentPane.add(jl);
|
||||||
|
contentPane.add(Box.createVerticalStrut(15));
|
||||||
|
|
||||||
|
// Modusauswahl
|
||||||
|
String[] modi = { "Blitz", "Schnellschach", "Klassisch" };
|
||||||
|
JComboBox<String> jcb1 = new JComboBox<>(modi);
|
||||||
|
jcb1.setMaximumSize(new Dimension(150, 30));
|
||||||
|
jcb1.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
contentPane.add(jcb1);
|
||||||
|
contentPane.add(Box.createVerticalStrut(15));
|
||||||
|
|
||||||
|
// Spielbrettdrehen
|
||||||
|
JLabel jl2 = new JLabel("Soll das Spielbrett nach jedem Zug gedreht werden?");
|
||||||
|
jl2.setFont(new Font("Calibri", Font.BOLD, 20));
|
||||||
|
jl2.setForeground(Color.BLACK);
|
||||||
|
jl2.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
contentPane.add(jl2);
|
||||||
|
|
||||||
|
JCheckBox jb1 = new JCheckBox();
|
||||||
|
jb1.setOpaque(false);
|
||||||
|
jb1.setFocusPainted(false);
|
||||||
|
jb1.setForeground(Color.BLACK);
|
||||||
|
jb1.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
jb1.setMaximumSize(new Dimension(30, 30));
|
||||||
|
contentPane.add(jb1);
|
||||||
|
contentPane.add(Box.createVerticalStrut(15));
|
||||||
|
|
||||||
|
// Zurücknahmeoption
|
||||||
|
JLabel jl3 = new JLabel("Sollen Zurücknahmen erlaubt sein?");
|
||||||
|
jl3.setFont(new Font("Calibri", Font.BOLD, 20));
|
||||||
|
jl3.setForeground(Color.BLACK);
|
||||||
|
jl3.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
contentPane.add(jl3);
|
||||||
|
|
||||||
|
JCheckBox jb2 = new JCheckBox();
|
||||||
|
jb2.setOpaque(false);
|
||||||
|
jb2.setFocusPainted(false);
|
||||||
|
jb2.setForeground(Color.BLACK);
|
||||||
|
jb2.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
jb2.setMaximumSize(new Dimension(30, 30));
|
||||||
|
contentPane.add(jb2);
|
||||||
|
|
||||||
|
contentPane.add(Box.createVerticalStrut(15));
|
||||||
|
|
||||||
|
JButton btnNewButton_1 = new JButton("Vergangenes Spiel laden");
|
||||||
|
|
||||||
|
btnNewButton_1.setBackground(Color.LIGHT_GRAY);
|
||||||
|
btnNewButton_1.setForeground(Color.BLACK);
|
||||||
|
btnNewButton_1.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
|
btnNewButton_1.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
btnNewButton_1.addActionListener(new ButtonFileLoaderListener(this));
|
||||||
|
|
||||||
|
contentPane.add(btnNewButton_1);
|
||||||
|
|
||||||
|
contentPane.add(Box.createVerticalStrut(25));
|
||||||
|
|
||||||
|
// Spiel starten Button
|
||||||
|
JButton btnNewButton = new JButton("Spiel starten");
|
||||||
|
btnNewButton.setBackground(Color.LIGHT_GRAY);
|
||||||
|
btnNewButton.setForeground(Color.BLACK);
|
||||||
|
btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
|
btnNewButton.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
contentPane.add(btnNewButton);
|
||||||
|
|
||||||
|
// Button-Listener
|
||||||
|
btnNewButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
String modus = (String) jcb1.getSelectedItem();
|
||||||
|
boolean rotieren = jb1.isSelected();
|
||||||
|
boolean zuruecknahme = jb2.isSelected();
|
||||||
|
|
||||||
|
Game game = new Game(modus, rotieren, zuruecknahme, fen);
|
||||||
|
mf.setGame(game);
|
||||||
|
mf.startGame();
|
||||||
|
|
||||||
|
// spiele.add(game);
|
||||||
|
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFen(String fen) {
|
||||||
|
this.fen = fen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,154 @@
|
||||||
|
package de.mannheim.th.chess.ui;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import javax.swing.BoxLayout;
|
||||||
|
import javax.swing.DefaultListModel;
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFileChooser;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JList;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JProgressBar;
|
||||||
|
import javax.swing.JScrollPane;
|
||||||
|
import javax.swing.ListSelectionModel;
|
||||||
|
import javax.swing.SwingWorker;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import com.github.bhlangonijr.chesslib.game.Game;
|
||||||
|
import com.github.bhlangonijr.chesslib.pgn.PgnHolder;
|
||||||
|
import com.github.bhlangonijr.chesslib.pgn.PgnLoadListener;
|
||||||
|
|
||||||
|
public class PGNLoaderFrame extends JFrame {
|
||||||
|
|
||||||
|
private static final Logger logger = LogManager.getLogger(PGNLoaderFrame.class);
|
||||||
|
|
||||||
|
private PgnHolder pgn;
|
||||||
|
private File selectedFile;
|
||||||
|
private List<Game> games;
|
||||||
|
private DefaultListModel<String> gameListModel;
|
||||||
|
private JPanel contentPane;
|
||||||
|
private JList<String> gameList;
|
||||||
|
private JProgressBar progressBar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens the PNGLoaderFrame
|
||||||
|
*/
|
||||||
|
public PGNLoaderFrame(MainFrame mf) {
|
||||||
|
|
||||||
|
// ----- Style -----
|
||||||
|
setResizable(true);
|
||||||
|
setAlwaysOnTop(true);
|
||||||
|
setTitle("PGNLoader");
|
||||||
|
setBounds(100, 100, 500, 500);
|
||||||
|
|
||||||
|
// ----- contentPane -----
|
||||||
|
contentPane = new JPanel();
|
||||||
|
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
|
||||||
|
|
||||||
|
setContentPane(contentPane);
|
||||||
|
|
||||||
|
// ----- FileSelector -----
|
||||||
|
JButton fileSelectButton = new JButton("Select File");
|
||||||
|
fileSelectButton.addActionListener(e -> {
|
||||||
|
JFileChooser fileChooser = new JFileChooser();
|
||||||
|
int returnValue = fileChooser.showOpenDialog(null);
|
||||||
|
if (returnValue == JFileChooser.APPROVE_OPTION) {
|
||||||
|
selectedFile = fileChooser.getSelectedFile();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
contentPane.add(fileSelectButton);
|
||||||
|
|
||||||
|
// ----- LoadButton -----
|
||||||
|
JButton loadPgnButton = new JButton("Load file");
|
||||||
|
loadPgnButton.addActionListener(e -> loadFile());
|
||||||
|
contentPane.add(loadPgnButton);
|
||||||
|
|
||||||
|
// ----- SelectionList -----
|
||||||
|
gameListModel = new DefaultListModel<>();
|
||||||
|
gameList = new JList<>(gameListModel);
|
||||||
|
gameList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||||
|
gameList.setVisibleRowCount(5);
|
||||||
|
JScrollPane scrollPane = new JScrollPane(gameList);
|
||||||
|
contentPane.add(scrollPane);
|
||||||
|
|
||||||
|
// ----- ProgressBar -----
|
||||||
|
progressBar = new JProgressBar(0, 100);
|
||||||
|
progressBar.setValue(0);
|
||||||
|
progressBar.setStringPainted(true);
|
||||||
|
contentPane.add(progressBar);
|
||||||
|
|
||||||
|
// ----- StartButton -----
|
||||||
|
JButton startGameButton = new JButton("Starte Spiel");
|
||||||
|
startGameButton.addActionListener(e -> {
|
||||||
|
int index = gameList.getSelectedIndex();
|
||||||
|
de.mannheim.th.chess.domain.Game game = new de.mannheim.th.chess.domain.Game(games.get(index).getHalfMoves());
|
||||||
|
|
||||||
|
mf.setGame(game);
|
||||||
|
mf.startView();
|
||||||
|
});
|
||||||
|
contentPane.add(startGameButton);
|
||||||
|
|
||||||
|
this.setVisible(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadFile() {
|
||||||
|
if (this.selectedFile != null) {
|
||||||
|
pgn = new PgnHolder(this.selectedFile.getAbsolutePath());
|
||||||
|
|
||||||
|
LoadPGNWorker loadPGNWorker = new LoadPGNWorker();
|
||||||
|
loadPGNWorker.addPropertyChangeListener(e -> {
|
||||||
|
progressBar.setIndeterminate(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
pgn.getListener().add(loadPGNWorker);
|
||||||
|
loadPGNWorker.execute();
|
||||||
|
|
||||||
|
gameList.revalidate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class LoadPGNWorker extends SwingWorker<Integer, Integer> implements PgnLoadListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Integer doInBackground() throws Exception {
|
||||||
|
try {
|
||||||
|
pgn.loadPgn();
|
||||||
|
games = pgn.getGames();
|
||||||
|
int totalGames = games.size();
|
||||||
|
for (int i = 0; i < totalGames; i++) {
|
||||||
|
publish(i);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.info("Could not load pgn file!");
|
||||||
|
}
|
||||||
|
return pgn.getSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void process(List<Integer> chunks) {
|
||||||
|
for (Integer index : chunks) {
|
||||||
|
gameListModel.addElement("Game: " + index);
|
||||||
|
setProgress(Math.min(90, index * 100 / games.size()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void done() {
|
||||||
|
setProgress(100);
|
||||||
|
progressBar.setValue(100);
|
||||||
|
progressBar.setIndeterminate(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyProgress(int games) {
|
||||||
|
setProgress(Math.min(90, games));
|
||||||
|
progressBar.setValue(Math.min(90, games));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,87 +1,101 @@
|
||||||
package de.mannheim.th.chess.ui;
|
package de.mannheim.th.chess.ui;
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
// import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
// import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import com.github.bhlangonijr.chesslib.Board;
|
|
||||||
import com.github.bhlangonijr.chesslib.File;
|
|
||||||
import com.github.bhlangonijr.chesslib.Rank;
|
|
||||||
import com.github.bhlangonijr.chesslib.Square;
|
import com.github.bhlangonijr.chesslib.Square;
|
||||||
|
import com.github.bhlangonijr.chesslib.move.Move;
|
||||||
|
import com.github.bhlangonijr.chesslib.move.MoveList;
|
||||||
|
import com.github.bhlangonijr.chesslib.Piece;
|
||||||
|
import com.github.bhlangonijr.chesslib.Side;
|
||||||
|
|
||||||
import de.mannheim.th.chess.App;
|
|
||||||
import de.mannheim.th.chess.domain.Game;
|
import de.mannheim.th.chess.domain.Game;
|
||||||
|
import de.mannheim.th.chess.utl.Clock;
|
||||||
|
import de.mannheim.th.chess.utl.OpeningRecognizer;
|
||||||
|
import de.mannheim.th.chess.controller.ButtonAufgebenListener;
|
||||||
|
import de.mannheim.th.chess.controller.ButtonFileSaverListener;
|
||||||
|
import de.mannheim.th.chess.controller.ButtonMovePieceListener;
|
||||||
|
import de.mannheim.th.chess.controller.controlPanel.ButtonQuickloadListener;
|
||||||
|
import de.mannheim.th.chess.controller.controlPanel.ButtonQuicksaveListener;
|
||||||
|
import de.mannheim.th.chess.controller.ButtonSelectPieceListener;
|
||||||
|
import de.mannheim.th.chess.controller.ButtonToNormalListener;
|
||||||
|
import de.mannheim.th.chess.controller.ButtonUndoMoveListener;
|
||||||
|
import de.mannheim.th.chess.controller.controlPanel.ButtonViewBackListener;
|
||||||
|
import de.mannheim.th.chess.controller.controlPanel.ButtonViewFirstListener;
|
||||||
|
import de.mannheim.th.chess.controller.controlPanel.ButtonViewForwardListener;
|
||||||
|
import de.mannheim.th.chess.controller.controlPanel.ButtonViewLastListener;
|
||||||
|
|
||||||
import java.awt.EventQueue;
|
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
|
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.BorderFactory;
|
||||||
|
import javax.swing.Box;
|
||||||
|
import javax.swing.BoxLayout;
|
||||||
import javax.swing.ImageIcon;
|
import javax.swing.ImageIcon;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JDialog;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JSplitPane;
|
import javax.swing.JSplitPane;
|
||||||
|
import javax.swing.JTextArea;
|
||||||
|
import javax.swing.SwingConstants;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Cursor;
|
import java.awt.Component;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.FlowLayout;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.awt.GridLayout;
|
import java.awt.GridLayout;
|
||||||
import java.awt.Image;
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.Toolkit;
|
import java.awt.Toolkit;
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
|
|
||||||
public class SpielFrame extends JFrame {
|
public class SpielFrame extends JFrame {
|
||||||
|
|
||||||
private static final Logger logger = LogManager.getLogger(App.class);
|
// private static final Logger logger = LogManager.getLogger(App.class);
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private JPanel contentPane;
|
|
||||||
private ArrayList<JButton> buttons = new ArrayList<>();
|
private ArrayList<JButton> buttons = new ArrayList<>();
|
||||||
private List<Integer> clickableButtons = new ArrayList<>();
|
|
||||||
private HashMap<JButton, Integer> positions = new HashMap<>();
|
|
||||||
private HashMap<JButton, String> belegungen = new HashMap<>();
|
private HashMap<JButton, String> belegungen = new HashMap<>();
|
||||||
private HashMap<JButton, Color> farben = new HashMap<>();
|
private JPanel panelLinks, panelRechts, contentPane, controlPanel;
|
||||||
private JPanel panelLinks, panelRechts;
|
private JButton undo, undo2, aufgeben, aufgeben2;
|
||||||
|
private JTextArea ausgabe, blackRemovedPieces, whiteRemovedPieces;
|
||||||
private Game game;
|
private Game game;
|
||||||
private String symbolChoosed;
|
private Clock clock;
|
||||||
private JButton buttonChoosed;
|
private String opening;
|
||||||
private boolean playerWhite = true;
|
private ArrayList<String> anzeigeMoves = new ArrayList<String>();
|
||||||
private boolean moveFinished = false;
|
private boolean wechsel = false;
|
||||||
|
|
||||||
/**
|
private BoardMode mode;
|
||||||
* Launch the application. Die Main-Methode für den WindowBuilder.
|
private Square selectedSquare;
|
||||||
*/
|
|
||||||
public static void main(String[] args) {
|
public enum BoardMode {
|
||||||
EventQueue.invokeLater(new Runnable() {
|
normal, pieceSelected, finished
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
SpielFrame frame = new SpielFrame();
|
|
||||||
frame.setVisible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create the frame.
|
* Create the frame.
|
||||||
*/
|
*/
|
||||||
public SpielFrame() {
|
public SpielFrame(Game game) {
|
||||||
|
opening = "unbekannte Eröffnung";
|
||||||
|
this.game = game;
|
||||||
|
this.clock = game.getClock();
|
||||||
|
this.clock.start();
|
||||||
|
|
||||||
game = new Game();
|
mode = BoardMode.normal;
|
||||||
|
|
||||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||||
setBounds(100, 100, 1920, 1080);
|
|
||||||
|
//setBounds(100, 100, 1920, 1080);
|
||||||
|
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
|
||||||
|
setBounds(0,0, d.width, d.height);
|
||||||
|
setExtendedState(JFrame.MAXIMIZED_BOTH);
|
||||||
setTitle("Schach");
|
setTitle("Schach");
|
||||||
setAlwaysOnTop(true);
|
setAlwaysOnTop(true);
|
||||||
|
|
||||||
JPanel contentPane = new JPanel();
|
contentPane = new JPanel();
|
||||||
contentPane.setLayout(new BorderLayout());
|
contentPane.setLayout(new BorderLayout());
|
||||||
setContentPane(contentPane);
|
setContentPane(contentPane);
|
||||||
|
|
||||||
|
|
@ -92,217 +106,654 @@ public class SpielFrame extends JFrame {
|
||||||
|
|
||||||
// Rechtes Panel für Steuerung oder zusätzliche Eingaben
|
// Rechtes Panel für Steuerung oder zusätzliche Eingaben
|
||||||
panelRechts = new JPanel();
|
panelRechts = new JPanel();
|
||||||
panelRechts.setBackground(Color.LIGHT_GRAY);
|
panelRechts.setBackground(new Color(90, 90, 90));
|
||||||
|
panelRechts.setLayout(new BoxLayout(panelRechts, BoxLayout.Y_AXIS));
|
||||||
|
|
||||||
|
// Panel für alle Eingaben von Player 2
|
||||||
|
panelRechts.add(getUiPlayerTwo());
|
||||||
|
|
||||||
|
panelRechts.add(createControlPanel());
|
||||||
|
|
||||||
|
// Panel für Statistikanzeigen
|
||||||
|
panelRechts.add(getUiStatistik());
|
||||||
|
|
||||||
|
// Panel für alle Eingaben von Player 1
|
||||||
|
panelRechts.add(getUiPlayerOne());
|
||||||
|
|
||||||
// JSplitPane horizontal (linke und rechte Hälfte)
|
// JSplitPane horizontal (linke und rechte Hälfte)
|
||||||
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panelLinks, panelRechts);
|
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panelLinks, panelRechts);
|
||||||
splitPane.setResizeWeight(0.70);
|
splitPane.setResizeWeight(0.75);
|
||||||
splitPane.setDividerSize(5);
|
splitPane.setBackground(Color.BLACK);
|
||||||
|
splitPane.setDividerSize(1);
|
||||||
splitPane.setEnabled(false);
|
splitPane.setEnabled(false);
|
||||||
|
|
||||||
contentPane.add(splitPane, BorderLayout.CENTER);
|
contentPane.add(splitPane, BorderLayout.CENTER);
|
||||||
|
|
||||||
setVisible(true);
|
setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Erstellt alle Buttons und fügt sie dem Frame hinzu.
|
* Erstellt alle Buttons und fügt sie dem Frame hinzu.
|
||||||
*/
|
*/
|
||||||
private void erstelleBrett() {
|
public void erstelleBrett() {
|
||||||
for (int i = 0; i < 64; i++) {
|
|
||||||
JButton b = new JButton();
|
|
||||||
b.setFocusPainted(false);
|
|
||||||
b.setFont(new Font("Arial", Font.PLAIN, 30));
|
|
||||||
|
|
||||||
if ((i / 8 + i % 8) % 2 == 0) {
|
this.setDefaultButtons();
|
||||||
logger.info("Helles Feld erstellt." + i);
|
this.setButtonsActions();
|
||||||
b.setBackground(new Color(90, 90, 90));
|
this.applyBoardButtons();
|
||||||
} else {
|
|
||||||
logger.info("Dunkles Feld erstellt." + i);
|
|
||||||
b.setBackground(new Color(65, 65, 65));
|
|
||||||
}
|
|
||||||
|
|
||||||
b.setForeground(Color.WHITE);
|
this.ladeBrett();
|
||||||
b.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
|
|
||||||
b.addActionListener(new ActionListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
|
|
||||||
// setzt alle Roten Felder zurück
|
|
||||||
for (JButton b : farben.keySet()) {
|
|
||||||
|
|
||||||
if (b.getBackground().equals(new Color(230, 100, 100))) {
|
|
||||||
|
|
||||||
b.setBackground(farben.get(b));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// wenn weiß dran
|
|
||||||
if (playerWhite) {
|
|
||||||
|
|
||||||
// wenn gerade Figur ausgewählt wird...
|
|
||||||
buttonChoosed = (JButton) e.getSource();
|
|
||||||
symbolChoosed = belegungen.get(buttonChoosed);
|
|
||||||
|
|
||||||
// setzt cursor auf spielfigur für die animation
|
|
||||||
String pfad = "src/main/resources/" + (int) symbolChoosed.toCharArray()[2] + ".png";
|
|
||||||
|
|
||||||
// Bild laden und Cursor im gesamten Frame setzen
|
|
||||||
Image image = Toolkit.getDefaultToolkit().getImage(pfad);
|
|
||||||
Image scaled = image.getScaledInstance(32, 32, Image.SCALE_SMOOTH);
|
|
||||||
Cursor figurCursor = Toolkit.getDefaultToolkit().createCustomCursor(scaled, new Point(0, 0),
|
|
||||||
"figurCursor");
|
|
||||||
setCursor(figurCursor);
|
|
||||||
|
|
||||||
// filtert möglichen Züge heraus
|
|
||||||
int position = positions.get(buttonChoosed);
|
|
||||||
|
|
||||||
clickableButtons = game
|
|
||||||
.getLegalMoves(
|
|
||||||
Square.encode(Rank.allRanks[7 - position / 8], File.allFiles[position % 8]))
|
|
||||||
.stream().peek(System.out::println).map(m -> m.getTo()).peek(System.out::println)
|
|
||||||
.map(s -> 56 - s.getRank().ordinal() * 8 + s.getFile().ordinal())
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
//filtert mögliche Züge und nicht mögliche Züge in eine Map aus Listen
|
|
||||||
Map<Boolean, List<JButton>> buttonsSeperated = buttons.stream()
|
|
||||||
.collect(Collectors.partitioningBy(b -> clickableButtons.contains(buttons.indexOf(b))));
|
|
||||||
|
|
||||||
for(Boolean list: buttonsSeperated.keySet()) {
|
|
||||||
|
|
||||||
if(list) {
|
|
||||||
//alle möglichen felder rot markieren
|
|
||||||
for (JButton b : positions.keySet()) {
|
|
||||||
// wenn button ein möglicher zug ist
|
|
||||||
if (clickableButtons.contains(positions.get(b))) {
|
|
||||||
farben.put(b, b.getBackground()); // damit sich gemerkt werden kann welches feld welche farbe vorher hatte
|
|
||||||
b.setBackground(new Color(230, 100, 100));
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}else {
|
|
||||||
//den rest der buttons ausser die möglichen züge deaktivieren
|
|
||||||
List<JButton> andere = buttonsSeperated.get(list);
|
|
||||||
|
|
||||||
for(JButton b: andere) {
|
|
||||||
if(!belegungen.get(b).split("-")[0].equals("w")) {
|
|
||||||
b.setEnabled(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// alle weisen squares deaktivieren, damit dannach klar ist wer dran ist
|
|
||||||
for (JButton b : belegungen.keySet()) {
|
|
||||||
if (belegungen.get(b).split("-")[0].equals("b")) {
|
|
||||||
b.setEnabled(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// wenn gerade Figur ausgewählt wird...
|
|
||||||
buttonChoosed = (JButton) e.getSource();
|
|
||||||
symbolChoosed = belegungen.get(buttonChoosed);
|
|
||||||
// System.out.println(symbolChoosed+" wurde gewählt.");
|
|
||||||
// setzt cursor auf spielfigur für die animation
|
|
||||||
String pfad = "src/main/resources/" + (int) symbolChoosed.toCharArray()[2] + ".png";
|
|
||||||
|
|
||||||
// Bild laden und Cursor im gesamten Frame setzen
|
|
||||||
Image image = Toolkit.getDefaultToolkit().getImage(pfad);
|
|
||||||
Image scaled = image.getScaledInstance(32, 32, Image.SCALE_SMOOTH);
|
|
||||||
Cursor figurCursor = Toolkit.getDefaultToolkit().createCustomCursor(scaled, new Point(0, 0),
|
|
||||||
"figurCursor");
|
|
||||||
setCursor(figurCursor);
|
|
||||||
|
|
||||||
// filtert möglichen Züge heraus
|
|
||||||
int position = positions.get(buttonChoosed);
|
|
||||||
List<Integer> clickableButtons = new ArrayList<>();
|
|
||||||
clickableButtons = game
|
|
||||||
.getLegalMoves(
|
|
||||||
Square.encode(Rank.allRanks[7 - position / 8], File.allFiles[position % 8]))
|
|
||||||
.stream().peek(System.out::println).map(m -> m.getTo()).peek(System.out::println)
|
|
||||||
.map(s -> 56 - s.getRank().ordinal() * 8 + s.getFile().ordinal())
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
for (JButton b : positions.keySet()) {
|
|
||||||
// wenn button ein möglicher zug ist
|
|
||||||
if (clickableButtons.contains(positions.get(b))) {
|
|
||||||
b.setBackground(new Color(230, 100, 100));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// alle schwarzen squares deaktivieren, damit dannach klar ist wer dran ist
|
|
||||||
for (JButton b : belegungen.keySet()) {
|
|
||||||
if (belegungen.get(b).split("-")[0].equals("w")) {
|
|
||||||
b.setEnabled(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// alle anderen Buttons nicht ckickbar zu machen
|
/**
|
||||||
|
* Sets the to default buttons
|
||||||
// Button Icon zurücksetzen
|
*/
|
||||||
|
public void setDefaultButtons() {
|
||||||
// Buttonposition merken (in MoveListe oder so)
|
this.clearButtons();
|
||||||
|
this.setDefaultBackground();
|
||||||
// wenn Button platzierd werden soll...
|
|
||||||
|
|
||||||
// neuen Button in Moveliste eintragen
|
|
||||||
|
|
||||||
// Icon ändern
|
|
||||||
|
|
||||||
// Modus auf auswählen setzen und spielerwechsel markieren
|
|
||||||
|
|
||||||
// spielerwechsel
|
|
||||||
if (moveFinished)
|
|
||||||
playerWhite = !playerWhite;
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
panelLinks.add(b);
|
|
||||||
buttons.add(b);
|
|
||||||
positions.put(b, i);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ladeBrett();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* holt sich FEN-Zeichenkette und extrahiert daraus die Positionen der Figuren
|
* holt sich FEN-Zeichenkette und extrahiert daraus die Positionen der Figuren
|
||||||
*/
|
*/
|
||||||
private void ladeBrett() {
|
public void ladeBrett() {
|
||||||
// System.out.println(game.toFEN());
|
|
||||||
|
|
||||||
char[] fen = game.toFEN().replaceAll("/", "").split(" ")[0].toCharArray();
|
char[] fen = game.toFEN().replaceAll("/", "").split(" ")[0].toCharArray();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (int j = 0; j < fen.length; j++) {
|
for (int j = 0; j < fen.length; j++) {
|
||||||
if (Character.isDigit(fen[j])) {
|
if (Character.isDigit(fen[j])) {
|
||||||
int leerfelder = Character.getNumericValue(fen[j]);
|
int leerfelder = Character.getNumericValue(fen[j]);
|
||||||
for (int k = 0; k < leerfelder; k++) {
|
for (int k = 0; k < leerfelder; k++) {
|
||||||
belegungen.put(buttons.get(i), "n-n");
|
int idx;
|
||||||
buttons.get(i).setEnabled(false); // erstmal deaktivieren, weil leere Felder nicht ckickbar sein sollten.
|
if (game.isRotieren())
|
||||||
|
idx = wechsel ? mirrowedGrid(i) : i;
|
||||||
|
else
|
||||||
|
idx = i;
|
||||||
|
belegungen.put(buttons.get(idx), "n-n");
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}else if (fen[j] >= 65 && fen[j] <= 90) { // ein Großbuchstabe, also
|
} else if (fen[j] >= 65 && fen[j] <= 90) { // Großbuchstabe = weiß
|
||||||
belegungen.put(buttons.get(i), "w-" + fen[j]);
|
int idx;
|
||||||
} else if (fen[j] >= 97 && fen[j] <= 122) { // ein Kleinbuchstabe, also
|
if (game.isRotieren())
|
||||||
belegungen.put(buttons.get(i), "b-" + fen[j]);
|
idx = wechsel ? mirrowedGrid(i) : i;
|
||||||
buttons.get(i).setEnabled(false); // erstmal deaktivieren, damit weiß beginnen kann
|
else
|
||||||
|
idx = i;
|
||||||
|
belegungen.put(buttons.get(idx), "w-" + fen[j]);
|
||||||
|
} else if (fen[j] >= 97 && fen[j] <= 122) { // Kleinbuchstabe = schwarz
|
||||||
|
int idx;
|
||||||
|
if (game.isRotieren())
|
||||||
|
idx = wechsel ? mirrowedGrid(i) : i;
|
||||||
|
else
|
||||||
|
idx = i;
|
||||||
|
belegungen.put(buttons.get(idx), "b-" + fen[j]);
|
||||||
}
|
}
|
||||||
buttons.get(i).setIcon(new ImageIcon("src/main/resources/" + (int) fen[j] + ".png"));
|
int idx;
|
||||||
|
if (game.isRotieren())
|
||||||
|
idx = wechsel ? mirrowedGrid(i) : i;
|
||||||
|
else
|
||||||
|
idx = i;
|
||||||
|
buttons.get(idx).setIcon(new ImageIcon("src/main/resources/" + (int) fen[j] + ".png"));
|
||||||
|
buttons.get(idx).setDisabledIcon(new ImageIcon("src/main/resources/" + (int) fen[j] + ".png"));
|
||||||
i++;
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Switches the button actions depending on the boardmode
|
||||||
|
*/
|
||||||
|
public void setButtonsActions() {
|
||||||
|
|
||||||
|
List<Square> selectables;
|
||||||
|
|
||||||
|
switch (this.mode) {
|
||||||
|
case normal:
|
||||||
|
selectables = game.getAllLegalMoveableSquares();
|
||||||
|
for (Square square : selectables) {
|
||||||
|
int idx;
|
||||||
|
|
||||||
|
if (game.isRotieren())
|
||||||
|
idx = wechsel ? square.ordinal() : mirrowedGrid(square.ordinal());
|
||||||
|
else
|
||||||
|
idx = this.mirrowedGrid(square.ordinal());
|
||||||
|
|
||||||
|
JButton b = buttons.get(idx);
|
||||||
|
b.setEnabled(true);
|
||||||
|
b.addActionListener(new ButtonSelectPieceListener(this, square));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case pieceSelected:
|
||||||
|
int idxSelected;
|
||||||
|
|
||||||
|
if (game.isRotieren())
|
||||||
|
idxSelected = wechsel ? selectedSquare.ordinal() : mirrowedGrid(selectedSquare.ordinal());
|
||||||
|
else
|
||||||
|
idxSelected = mirrowedGrid(selectedSquare.ordinal());
|
||||||
|
|
||||||
|
JButton s = buttons.get(idxSelected);
|
||||||
|
s.setEnabled(true);
|
||||||
|
s.setBackground(new Color(165, 42, 42));
|
||||||
|
s.addActionListener(new ButtonToNormalListener(this));
|
||||||
|
|
||||||
|
selectables = game.getLegalMoveableSquares(selectedSquare);
|
||||||
|
for (Square square : selectables) {
|
||||||
|
int idx;
|
||||||
|
if (game.isRotieren())
|
||||||
|
idx = wechsel ? square.ordinal() : mirrowedGrid(square.ordinal());
|
||||||
|
else
|
||||||
|
idx = mirrowedGrid(square.ordinal());
|
||||||
|
final Move move = new Move(selectedSquare, square);
|
||||||
|
JButton b = buttons.get(idx);
|
||||||
|
b.setEnabled(true);
|
||||||
|
b.setBackground(new Color(230, 100, 100));
|
||||||
|
b.addActionListener(new ButtonMovePieceListener(this, this.game, move));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case finished:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inverts the Enabled property of the controlpanelButtons
|
||||||
|
*/
|
||||||
|
public void enableControlPanelButtons() {
|
||||||
|
for (Component c : this.controlPanel.getComponents()) {
|
||||||
|
if (c instanceof JButton) {
|
||||||
|
c.setEnabled(!c.isEnabled());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the buttons to the boardpanel
|
||||||
|
*/
|
||||||
|
public void applyBoardButtons() {
|
||||||
|
for (JButton b : buttons) {
|
||||||
|
panelLinks.add(b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public void showWin(int player) {
|
||||||
|
JFrame frame = new JFrame("Result");
|
||||||
|
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||||
|
frame.setSize(300, 150);
|
||||||
|
frame.setLayout(null);
|
||||||
|
|
||||||
|
JLabel jl = new JLabel(String.format("%d - %d", player / 2, player % 2));
|
||||||
|
jl.setBounds(50, 30, 200, 25);
|
||||||
|
jl.setFont(new Font("Tahoma", Font.BOLD, 20));
|
||||||
|
frame.add(jl);
|
||||||
|
frame.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showResult(String res) {
|
||||||
|
|
||||||
|
ausgabe.setFont(new Font("Calibri", Font.BOLD, 40));
|
||||||
|
ausgabe.setForeground(new Color(178, 34, 34));
|
||||||
|
ausgabe.setText(" " + res);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int showPromotion() {
|
||||||
|
final int[] result = { -1 };
|
||||||
|
|
||||||
|
JDialog dialog = new JDialog(this, "Wähle eine Figur", true);
|
||||||
|
dialog.setLayout(new GridLayout(2, 2));
|
||||||
|
dialog.setSize(300, 200);
|
||||||
|
|
||||||
|
int[] pictures = { 81, 82, 66, 78, 113, 114, 98, 110 };
|
||||||
|
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
int index = (game.getActivePlayer() - 1) * 4 + i;
|
||||||
|
JButton jb = new JButton();
|
||||||
|
jb.setIcon(new ImageIcon("src/main/resources/" + pictures[index] + ".png"));
|
||||||
|
int selectedPiece = index;
|
||||||
|
jb.addActionListener(e -> {
|
||||||
|
result[0] = selectedPiece;
|
||||||
|
dialog.dispose();
|
||||||
|
});
|
||||||
|
dialog.add(jb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dialog.setLocationRelativeTo(null);
|
||||||
|
dialog.setVisible(true);
|
||||||
|
|
||||||
|
return result[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public HashMap<JButton, String> getBelegung() {
|
||||||
|
return this.belegungen;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isWechsel() {
|
||||||
|
return wechsel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JButton getUndo() {
|
||||||
|
return undo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JButton getUndo2() {
|
||||||
|
return undo2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BoardMode getMode() {
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Clock getClock() {
|
||||||
|
return clock;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JButton getAufgeben() {
|
||||||
|
return aufgeben;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JButton getAufgeben2() {
|
||||||
|
return aufgeben2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMode(BoardMode mode) {
|
||||||
|
this.mode = mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBoardMode(BoardMode bm) {
|
||||||
|
this.mode = bm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedSquare(Square sq) {
|
||||||
|
this.selectedSquare = sq;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAufgeben(JButton aufgeben) {
|
||||||
|
this.aufgeben = aufgeben;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAufgeben2(JButton aufgeben2) {
|
||||||
|
this.aufgeben2 = aufgeben2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWechsel(boolean wechsel) {
|
||||||
|
this.wechsel = wechsel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int mirrowedGrid(int i) {
|
||||||
|
return 63 - (((i / 8) * 8) + (7 - i % 8));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the controlPanel and its Buttons
|
||||||
|
*/
|
||||||
|
private JPanel createControlPanel() {
|
||||||
|
this.controlPanel = new JPanel();
|
||||||
|
this.controlPanel.setBackground(new Color(90, 90, 90));
|
||||||
|
this.controlPanel.setLayout(new FlowLayout());
|
||||||
|
|
||||||
|
this.controlPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, controlPanel.getPreferredSize().height));
|
||||||
|
|
||||||
|
// ----- ViewQuicksaveButton -----
|
||||||
|
JButton quicksave = new JButton("Quicksave");
|
||||||
|
quicksave.setBackground(Color.LIGHT_GRAY);
|
||||||
|
quicksave.setForeground(Color.BLACK);
|
||||||
|
quicksave.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
|
quicksave.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
quicksave.setEnabled(true);
|
||||||
|
quicksave.addActionListener(new ButtonQuicksaveListener(this.game));
|
||||||
|
this.controlPanel.add(quicksave);
|
||||||
|
|
||||||
|
// ----- ViewFirstButton -----
|
||||||
|
JButton viewFirstButton = new JButton("<<");
|
||||||
|
viewFirstButton.setBackground(Color.LIGHT_GRAY);
|
||||||
|
viewFirstButton.setForeground(Color.BLACK);
|
||||||
|
viewFirstButton.setFont(new Font("Calibri", Font.BOLD, 16));
|
||||||
|
viewFirstButton.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
viewFirstButton.setEnabled(false);
|
||||||
|
viewFirstButton.addActionListener(new ButtonViewFirstListener(this.game, this));
|
||||||
|
this.controlPanel.add(viewFirstButton);
|
||||||
|
|
||||||
|
// ----- ViewBackButton -----
|
||||||
|
JButton viewBackButton = new JButton("←");
|
||||||
|
viewBackButton.setBackground(Color.LIGHT_GRAY);
|
||||||
|
viewBackButton.setForeground(Color.BLACK);
|
||||||
|
viewBackButton.setFont(new Font("Calibri", Font.BOLD, 16));
|
||||||
|
viewBackButton.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
viewBackButton.setEnabled(false);
|
||||||
|
viewBackButton.addActionListener(new ButtonViewBackListener(this.game, this));
|
||||||
|
this.controlPanel.add(viewBackButton);
|
||||||
|
|
||||||
|
// ----- ViewForwardButton -----
|
||||||
|
JButton viewForwardButton = new JButton("→");
|
||||||
|
viewForwardButton.setBackground(Color.LIGHT_GRAY);
|
||||||
|
viewForwardButton.setForeground(Color.BLACK);
|
||||||
|
viewForwardButton.setFont(new Font("Calibri", Font.BOLD, 16));
|
||||||
|
viewForwardButton.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
viewForwardButton.setEnabled(false);
|
||||||
|
viewForwardButton.addActionListener(new ButtonViewForwardListener(this.game, this));
|
||||||
|
this.controlPanel.add(viewForwardButton);
|
||||||
|
|
||||||
|
// ----- ViewLastButton -----
|
||||||
|
JButton viewLastButton = new JButton(">>");
|
||||||
|
viewLastButton.setBackground(Color.LIGHT_GRAY);
|
||||||
|
viewLastButton.setForeground(Color.BLACK);
|
||||||
|
viewLastButton.setFont(new Font("Calibri", Font.BOLD, 16));
|
||||||
|
viewLastButton.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
viewLastButton.setEnabled(false);
|
||||||
|
viewLastButton.addActionListener(new ButtonViewLastListener(this.game, this));
|
||||||
|
this.controlPanel.add(viewLastButton);
|
||||||
|
|
||||||
|
// ----- ViewQuickloadButton -----
|
||||||
|
JButton quickload = new JButton("Quickload");
|
||||||
|
quickload.setBackground(Color.LIGHT_GRAY);
|
||||||
|
quickload.setForeground(Color.BLACK);
|
||||||
|
quickload.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
|
quickload.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
quickload.setEnabled(true);
|
||||||
|
quickload.addActionListener(new ButtonQuickloadListener(this.game, this));
|
||||||
|
this.controlPanel.add(quickload);
|
||||||
|
|
||||||
|
return controlPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getUiPlayerTwo() {
|
||||||
|
|
||||||
|
JPanel playerTwo = new JPanel();
|
||||||
|
playerTwo.setBackground(new Color(90, 90, 90));
|
||||||
|
playerTwo.setLayout(new BoxLayout(playerTwo, BoxLayout.Y_AXIS));
|
||||||
|
|
||||||
|
playerTwo.add(Box.createVerticalStrut(15));
|
||||||
|
|
||||||
|
JLabel pl2 = new JLabel("Player 2:");
|
||||||
|
pl2.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0));
|
||||||
|
pl2.setFont(new Font("Calibri", Font.BOLD, 35));
|
||||||
|
pl2.setForeground(Color.BLACK);
|
||||||
|
pl2.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
playerTwo.add(pl2);
|
||||||
|
|
||||||
|
playerTwo.add(Box.createVerticalStrut(10));
|
||||||
|
|
||||||
|
JLabel clock1 = clock.getClock2();
|
||||||
|
playerTwo.add(clock1);
|
||||||
|
|
||||||
|
playerTwo.add(Box.createVerticalStrut(10));
|
||||||
|
|
||||||
|
// Button zurücknahme und aufgeben für Player 2
|
||||||
|
JPanel aufgebenUndo = new JPanel();
|
||||||
|
aufgebenUndo.setBackground(new Color(90, 90, 90));
|
||||||
|
aufgebenUndo.setLayout(new BoxLayout(aufgebenUndo, BoxLayout.X_AXIS));
|
||||||
|
|
||||||
|
if (game.isZuruecknahme()) {
|
||||||
|
undo = new JButton("Zug zurücknehmen");
|
||||||
|
undo.setBackground(Color.LIGHT_GRAY);
|
||||||
|
undo.setForeground(Color.BLACK);
|
||||||
|
undo.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
|
undo.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
aufgebenUndo.add(undo);
|
||||||
|
|
||||||
|
// Button-Listener
|
||||||
|
undo.addActionListener(new ButtonUndoMoveListener(this, this.game));
|
||||||
|
}
|
||||||
|
|
||||||
|
aufgebenUndo.add(Box.createHorizontalStrut(10));
|
||||||
|
|
||||||
|
aufgeben2 = new JButton("Aufgeben");
|
||||||
|
aufgeben2.setBackground(Color.LIGHT_GRAY);
|
||||||
|
aufgeben2.setForeground(Color.BLACK);
|
||||||
|
aufgeben2.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
|
aufgeben2.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
|
||||||
|
aufgeben2.addActionListener(new ButtonAufgebenListener(this, this.game));
|
||||||
|
aufgebenUndo.add(aufgeben2);
|
||||||
|
|
||||||
|
aufgebenUndo.add(Box.createHorizontalStrut(10));
|
||||||
|
|
||||||
|
JButton safe = new JButton("Spielstand sichern");
|
||||||
|
safe.setBackground(Color.LIGHT_GRAY);
|
||||||
|
safe.setForeground(Color.BLACK);
|
||||||
|
safe.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
|
safe.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
aufgebenUndo.add(safe);
|
||||||
|
|
||||||
|
// Button-Listener
|
||||||
|
safe.addActionListener(new ButtonFileSaverListener(this, this.game));
|
||||||
|
|
||||||
|
playerTwo.add(aufgebenUndo);
|
||||||
|
|
||||||
|
playerTwo.add(Box.createVerticalStrut(10));
|
||||||
|
|
||||||
|
return playerTwo;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getUiStatistik() {
|
||||||
|
|
||||||
|
JPanel statistik = new JPanel();
|
||||||
|
statistik.setBackground(new Color(90, 90, 90));
|
||||||
|
statistik.setLayout(new BoxLayout(statistik, BoxLayout.Y_AXIS));
|
||||||
|
|
||||||
|
|
||||||
|
ausgabe = new JTextArea();
|
||||||
|
ausgabe.setEditable(false);
|
||||||
|
ausgabe.setBackground(new Color(75, 75, 75));
|
||||||
|
ausgabe.setBorder(BorderFactory.createLineBorder(Color.GRAY, 1));
|
||||||
|
ausgabe.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 20));
|
||||||
|
ausgabe.setForeground(Color.BLACK);
|
||||||
|
ausgabe.setText("\n Bisherige Züge:\n");
|
||||||
|
|
||||||
|
whiteRemovedPieces = new JTextArea();
|
||||||
|
whiteRemovedPieces.setPreferredSize(new Dimension(300, 100));
|
||||||
|
whiteRemovedPieces.setEditable(false);
|
||||||
|
whiteRemovedPieces.setBackground(new Color(75, 75, 75));
|
||||||
|
whiteRemovedPieces.setBorder(BorderFactory.createLineBorder(Color.GRAY, 1));
|
||||||
|
whiteRemovedPieces.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 40));
|
||||||
|
whiteRemovedPieces.setForeground(Color.WHITE);
|
||||||
|
|
||||||
|
blackRemovedPieces = new JTextArea();
|
||||||
|
blackRemovedPieces.setPreferredSize(new Dimension(300, 100));
|
||||||
|
blackRemovedPieces.setEditable(false);
|
||||||
|
blackRemovedPieces.setBackground(new Color(75, 75, 75));
|
||||||
|
blackRemovedPieces.setBorder(BorderFactory.createLineBorder(Color.GRAY, 1));
|
||||||
|
blackRemovedPieces.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 40));
|
||||||
|
blackRemovedPieces.setForeground(Color.BLACK);
|
||||||
|
|
||||||
|
JScrollPane scrollPane = new JScrollPane(ausgabe);
|
||||||
|
scrollPane.setPreferredSize(new Dimension(500, 1000));
|
||||||
|
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
|
||||||
|
|
||||||
|
statistik.add(whiteRemovedPieces);
|
||||||
|
statistik.add(scrollPane);
|
||||||
|
statistik.add(blackRemovedPieces);
|
||||||
|
|
||||||
|
return statistik;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void aktualisiereAusgabe() {
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
opening = OpeningRecognizer.compareOpening(game.getMoveList(), opening);
|
||||||
|
sb.append("\n Bisherige Züge: " + opening + "\n");
|
||||||
|
|
||||||
|
MoveList l = game.getMoveList();
|
||||||
|
anzeigeMoves.add(" " + game.getUnicodeFromMove(l.getLast()) + ": " + l.getLast().toString() + "\n");
|
||||||
|
|
||||||
|
for (String line : anzeigeMoves) {
|
||||||
|
sb.append(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuilder whitePieces = new StringBuilder();
|
||||||
|
StringBuilder blackPieces = new StringBuilder();
|
||||||
|
for (Piece piece: game.getRemovedPieces()) {
|
||||||
|
if (piece.getPieceSide() == Side.BLACK) {
|
||||||
|
blackPieces.append(piece.getFanSymbol().toUpperCase());
|
||||||
|
} else {
|
||||||
|
whitePieces.append(piece.getFanSymbol().toUpperCase());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
blackRemovedPieces.setText(blackPieces.toString());
|
||||||
|
whiteRemovedPieces.setText(whitePieces.toString());
|
||||||
|
|
||||||
|
ausgabe.setText(sb.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteLastAusgabe() {
|
||||||
|
String[] zeilen = ausgabe.getText().split("\n");
|
||||||
|
|
||||||
|
// es müssen immer mind 5 Zeilen existieren, dass also 1 Zug löschbar ist
|
||||||
|
if (zeilen.length <= 2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (int i = 0; i < zeilen.length - 1; i++) {
|
||||||
|
sb.append(zeilen[i]).append("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
ausgabe.setText(sb.toString());
|
||||||
|
anzeigeMoves.removeLast();
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel getUiPlayerOne() {
|
||||||
|
|
||||||
|
JPanel playerOne = new JPanel();
|
||||||
|
playerOne.setBackground(new Color(90, 90, 90));
|
||||||
|
playerOne.setLayout(new BoxLayout(playerOne, BoxLayout.Y_AXIS));
|
||||||
|
|
||||||
|
playerOne.add(Box.createVerticalStrut(10));
|
||||||
|
|
||||||
|
// Button zurücknahme und aufgeben für Player 1
|
||||||
|
JPanel aufgebenUndo = new JPanel();
|
||||||
|
aufgebenUndo.setBackground(new Color(90, 90, 90));
|
||||||
|
aufgebenUndo.setLayout(new BoxLayout(aufgebenUndo, BoxLayout.X_AXIS));
|
||||||
|
|
||||||
|
if (game.isZuruecknahme()) {
|
||||||
|
undo2 = new JButton("Zug zurücknehmen");
|
||||||
|
undo2.setBackground(Color.LIGHT_GRAY);
|
||||||
|
undo2.setForeground(Color.BLACK);
|
||||||
|
undo2.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
|
undo2.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
aufgebenUndo.add(undo2);
|
||||||
|
|
||||||
|
// Button-Listener
|
||||||
|
undo2.addActionListener(new ButtonUndoMoveListener(this, this.game));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
aufgebenUndo.add(Box.createHorizontalStrut(10));
|
||||||
|
|
||||||
|
aufgeben = new JButton("Aufgeben");
|
||||||
|
aufgeben.setBackground(Color.LIGHT_GRAY);
|
||||||
|
aufgeben.setForeground(Color.BLACK);
|
||||||
|
aufgeben.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
|
aufgeben.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
aufgeben.addActionListener(new ButtonAufgebenListener(this, this.game));
|
||||||
|
|
||||||
|
aufgebenUndo.add(aufgeben);
|
||||||
|
|
||||||
|
aufgebenUndo.add(Box.createHorizontalStrut(10));
|
||||||
|
|
||||||
|
JButton safe = new JButton("Spielstand sichern");
|
||||||
|
safe.setBackground(Color.LIGHT_GRAY);
|
||||||
|
safe.setForeground(Color.BLACK);
|
||||||
|
safe.setFont(new Font("Tahoma", Font.BOLD, 16));
|
||||||
|
safe.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
aufgebenUndo.add(safe);
|
||||||
|
|
||||||
|
// Button-Listener
|
||||||
|
safe.addActionListener(new ButtonFileSaverListener(this, this.game));
|
||||||
|
|
||||||
|
playerOne.add(aufgebenUndo);
|
||||||
|
|
||||||
|
playerOne.add(Box.createVerticalStrut(15));
|
||||||
|
|
||||||
|
JLabel clock1 = clock.getClock1();
|
||||||
|
playerOne.add(clock1);
|
||||||
|
|
||||||
|
playerOne.add(Box.createVerticalStrut(10));
|
||||||
|
|
||||||
|
JLabel pl2 = new JLabel("Player 1:");
|
||||||
|
pl2.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0));
|
||||||
|
pl2.setFont(new Font("Calibri", Font.BOLD, 35));
|
||||||
|
pl2.setForeground(Color.BLACK);
|
||||||
|
pl2.setAlignmentX(CENTER_ALIGNMENT);
|
||||||
|
playerOne.add(pl2);
|
||||||
|
|
||||||
|
return playerOne;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the default background color for the buttons in the grid.
|
||||||
|
*/
|
||||||
|
private void setDefaultBackground() {
|
||||||
|
int counter = 8;
|
||||||
|
for (int i = 0; i < 64; i++) {
|
||||||
|
JButton b = buttons.get(i);
|
||||||
|
if ((i / 8 + i % 8) % 2 == 0) {
|
||||||
|
// logger.info("Helles Feld erstellt." + i);
|
||||||
|
b.setBackground(new Color(90, 90, 90));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// logger.info("Dunkles Feld erstellt." + i);
|
||||||
|
b.setBackground(new Color(65, 65, 65));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i % 8 == 0) {
|
||||||
|
b.setHorizontalAlignment(SwingConstants.CENTER);
|
||||||
|
b.setVerticalAlignment(SwingConstants.CENTER);
|
||||||
|
|
||||||
|
b.setHorizontalTextPosition(SwingConstants.LEFT); // Text rechts vom Icon
|
||||||
|
b.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||||
|
|
||||||
|
b.setIconTextGap(5);
|
||||||
|
|
||||||
|
b.setText(String.valueOf(counter) + b.getText());
|
||||||
|
counter--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char buchstabe = 'a';
|
||||||
|
for (int j = 0; j < 8; j++) {
|
||||||
|
JButton button = buttons.get(mirrowedGrid(j));
|
||||||
|
|
||||||
|
button.setHorizontalAlignment(SwingConstants.CENTER);
|
||||||
|
button.setVerticalAlignment(SwingConstants.CENTER);
|
||||||
|
|
||||||
|
button.setHorizontalTextPosition(SwingConstants.RIGHT); // Text rechts vom Icon
|
||||||
|
button.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||||
|
|
||||||
|
button.setIconTextGap(5);
|
||||||
|
|
||||||
|
button.setText(String.valueOf(buchstabe));
|
||||||
|
buchstabe++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears the existing buttons from the button list, panellinks and fills them
|
||||||
|
* with new blank ones.
|
||||||
|
*/
|
||||||
|
private void clearButtons() {
|
||||||
|
|
||||||
|
buttons.clear();
|
||||||
|
panelLinks.removeAll();
|
||||||
|
|
||||||
|
for (int i = 0; i < 64; i++) {
|
||||||
|
JButton b = new JButton();
|
||||||
|
|
||||||
|
b.setEnabled(false);
|
||||||
|
|
||||||
|
// style
|
||||||
|
b.setFocusPainted(false);
|
||||||
|
b.setFont(new Font("Arial", Font.PLAIN, 30));
|
||||||
|
b.setForeground(Color.WHITE);
|
||||||
|
b.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
|
||||||
|
b.setName(i + "");
|
||||||
|
|
||||||
|
buttons.add(b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,13 @@ package de.mannheim.th.chess.utl;
|
||||||
/**
|
/**
|
||||||
* Zeigt die Zeitangabe während eines Spiels eines Spielers an.
|
* Zeigt die Zeitangabe während eines Spiels eines Spielers an.
|
||||||
*/
|
*/
|
||||||
import java.awt.BorderLayout;
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.Component;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import javax.swing.JFrame;
|
import javax.swing.BorderFactory;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
|
||||||
import javax.swing.JSplitPane;
|
|
||||||
import javax.swing.Timer;
|
import javax.swing.Timer;
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
|
@ -22,10 +20,12 @@ public class Clock extends Thread implements Runnable {
|
||||||
private volatile boolean gameHasFinished = false;
|
private volatile boolean gameHasFinished = false;
|
||||||
private static final Logger clockLogger = LogManager.getLogger(Clock.class);
|
private static final Logger clockLogger = LogManager.getLogger(Clock.class);
|
||||||
private int minutes;
|
private int minutes;
|
||||||
|
private StringBuilder clockShower;
|
||||||
|
private JLabel clock1, clock2;
|
||||||
|
|
||||||
public Clock(String mode) {
|
public Clock(String mode) {
|
||||||
|
|
||||||
setMode(mode);
|
setMode(mode);
|
||||||
//run();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pressClock() {
|
public void pressClock() {
|
||||||
|
|
@ -42,38 +42,42 @@ public class Clock extends Thread implements Runnable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
JFrame clockFrame = new JFrame("Clock");
|
// JFrame clockFrame = new JFrame("Clock");
|
||||||
|
//
|
||||||
|
// JPanel player1Panel = new JPanel();
|
||||||
|
// player1Panel.setBackground(Color.BLACK);
|
||||||
|
// JPanel player2Panel = new JPanel();
|
||||||
|
// player2Panel.setBackground(Color.BLACK);
|
||||||
|
// clockFrame.setBounds(1000, 500, 10000, 10000);
|
||||||
|
// clockFrame.setLayout(new BorderLayout());
|
||||||
|
clock1 = new JLabel("" + minutes + ":00 ");
|
||||||
|
clock1.setBorder(BorderFactory.createEmptyBorder(0, 40, 0, 0));
|
||||||
|
clock1.setForeground(Color.BLACK);
|
||||||
|
clock1.setFont(new Font("Calibri", Font.BOLD, 40));
|
||||||
|
clock1.setAlignmentX(Component.CENTER_ALIGNMENT);
|
||||||
|
|
||||||
JPanel player1Panel = new JPanel();
|
clock2 = new JLabel("" + minutes + ":00 ");
|
||||||
player1Panel.setBackground(Color.BLACK);
|
clock2.setBorder(BorderFactory.createEmptyBorder(0, 40, 0, 0));
|
||||||
JPanel player2Panel = new JPanel();
|
clock2.setForeground(Color.BLACK);
|
||||||
player2Panel.setBackground(Color.BLACK);
|
clock2.setFont(new Font("Calibri", Font.BOLD, 40));
|
||||||
clockFrame.setBounds(1000, 500, 10000, 10000);
|
clock2.setAlignmentX(Component.CENTER_ALIGNMENT);
|
||||||
clockFrame.setLayout(new BorderLayout());
|
// player1Panel.add(clock1);
|
||||||
JLabel clock1 = new JLabel(" " + minutes + ":00 ");
|
// player2Panel.add(clock2);
|
||||||
clock1.setForeground(Color.WHITE);
|
// JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, player1Panel,
|
||||||
clock1.setFont(new Font("Arial", Font.BOLD, 50));
|
// player2Panel);
|
||||||
JLabel clock2 = new JLabel(" " + minutes + ":00 ");
|
// split.setFont(new Font("Arial", Font.BOLD, 50));
|
||||||
clock2.setForeground(Color.WHITE);
|
// clockFrame.add(split);
|
||||||
clock2.setFont(new Font("Arial", Font.BOLD, 50));
|
|
||||||
player1Panel.add(clock1);
|
|
||||||
player2Panel.add(clock2);
|
|
||||||
JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, player1Panel, player2Panel);
|
|
||||||
split.setFont(new Font("Arial", Font.BOLD, 50));
|
|
||||||
clockFrame.add(split);
|
|
||||||
|
|
||||||
var min1 = new AtomicInteger(minutes);
|
var min1 = new AtomicInteger(minutes);
|
||||||
var sec1 = new AtomicInteger(0);
|
var sec1 = new AtomicInteger(0);
|
||||||
var min2 = new AtomicInteger(minutes);
|
var min2 = new AtomicInteger(minutes);
|
||||||
var sec2 = new AtomicInteger(0);
|
var sec2 = new AtomicInteger(0);
|
||||||
clockFrame.pack();
|
|
||||||
clockFrame.setVisible(true);
|
|
||||||
|
|
||||||
var t = new Timer(1000, (ae) -> {
|
var t = new Timer(1000, (ae) -> {
|
||||||
|
|
||||||
if (!gameHasFinished) {
|
if (!gameHasFinished) {
|
||||||
|
|
||||||
StringBuilder clockShower = new StringBuilder();
|
clockShower = new StringBuilder();
|
||||||
if (whiteToMove) {
|
if (whiteToMove) {
|
||||||
if (sec1.intValue() == 00) {
|
if (sec1.intValue() == 00) {
|
||||||
sec1.set(60);
|
sec1.set(60);
|
||||||
|
|
@ -106,35 +110,45 @@ public class Clock extends Thread implements Runnable {
|
||||||
clockShower.append(sec2.decrementAndGet());
|
clockShower.append(sec2.decrementAndGet());
|
||||||
clock2.setText(clockShower.toString());
|
clock2.setText(clockShower.toString());
|
||||||
}
|
}
|
||||||
clockFrame.repaint();
|
// sp.repaint();
|
||||||
if ((sec1.intValue() == 0 && min1.intValue() == 0) || (sec2.intValue() == 0 && min2.intValue() == 0)) {
|
if ((sec1.intValue() == 0 && min1.intValue() == 0) || (sec2.intValue() == 0 && min2.intValue() == 0)) {
|
||||||
endGame();
|
endGame();
|
||||||
}
|
}
|
||||||
} });
|
}
|
||||||
|
});
|
||||||
|
|
||||||
t.start();
|
t.start();
|
||||||
}
|
}
|
||||||
public static void main(String[] args) throws InterruptedException {
|
|
||||||
Clock st = new Clock("classic");
|
|
||||||
st.start();
|
|
||||||
st.pressClock();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setMode(String mode) {
|
private void setMode(String mode) {
|
||||||
switch(mode) {
|
switch (mode.toLowerCase()) {
|
||||||
case "blitz":
|
case "blitz":
|
||||||
minutes = 5;
|
minutes = 5;
|
||||||
clockLogger.info("Neue Blitz-Uhr wurde erstellt");
|
clockLogger.info("Neue Blitz-Uhr wurde erstellt");
|
||||||
break;
|
break;
|
||||||
case "rapid":
|
case "schnellschach":
|
||||||
minutes = 10;
|
minutes = 10;
|
||||||
clockLogger.info("Neue Schnellschach-Uhr wurde erstellt");
|
clockLogger.info("Neue Schnellschach-Uhr wurde erstellt");
|
||||||
break;
|
break;
|
||||||
case "classic":
|
case "klassisch":
|
||||||
minutes = 120;
|
minutes = 120;
|
||||||
clockLogger.info("Neue klassische Schachuhr wurde erstellt");
|
clockLogger.info("Neue klassische Schachuhr wurde erstellt");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void switchClock() {
|
||||||
|
whiteToMove = !whiteToMove;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JLabel getClock1() {
|
||||||
|
|
||||||
|
return clock1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JLabel getClock2() {
|
||||||
|
|
||||||
|
return clock2;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
package de.mannheim.th.chess.utl;
|
|
||||||
|
|
||||||
import de.mannheim.th.chess.model.Database;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Liest ein schon vordefinierten Spielstand ein.
|
|
||||||
*/
|
|
||||||
public class GameReader{
|
|
||||||
|
|
||||||
private Database database = new Database();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
package de.mannheim.th.chess.utl;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.github.bhlangonijr.chesslib.move.MoveList;
|
||||||
|
|
||||||
|
public class OpeningRecognizer {
|
||||||
|
private static class Opening {
|
||||||
|
String name;
|
||||||
|
String moves;
|
||||||
|
|
||||||
|
Opening(String name, String moves) {
|
||||||
|
this.name = name;
|
||||||
|
this.moves = moves;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<Opening> openingList = new ArrayList<>();
|
||||||
|
|
||||||
|
public static void loadOpenings() throws IOException {
|
||||||
|
BufferedReader openingReader = new BufferedReader(new FileReader("src/main/resources/openings.pgn"));
|
||||||
|
StringBuilder openingName = new StringBuilder();
|
||||||
|
String moves = null;
|
||||||
|
String line;
|
||||||
|
while ((line = openingReader.readLine()) != null) {
|
||||||
|
if ((line.startsWith("[Site") && openingName.toString().equals("")) || line.equals("") ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (line.startsWith("[Site")) {
|
||||||
|
openingList.add(new Opening(openingName.toString(), moves));
|
||||||
|
moves = null;
|
||||||
|
openingName.delete(0, openingName.length());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (line.startsWith("[White")) {
|
||||||
|
openingName.append(line.split("\"")[1].trim());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (line.startsWith("[Black")) {
|
||||||
|
openingName.append(":").append(line.split("\"")[1].trim());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
moves = line;
|
||||||
|
|
||||||
|
}
|
||||||
|
openingReader.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String compareOpening(MoveList moves, String openingBefore) {
|
||||||
|
for (Opening o: openingList) {
|
||||||
|
if (o.moves.equals(moves.toSanWithMoveNumbers().trim())) {
|
||||||
|
return o.name;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return openingBefore;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Configuration status="WARN">
|
||||||
|
<Appenders>
|
||||||
|
<Console name="Console" target="SYSTEM_OUT">
|
||||||
|
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
|
||||||
|
</Console>
|
||||||
|
</Appenders>
|
||||||
|
<Loggers>
|
||||||
|
<Root level="info">
|
||||||
|
<AppenderRef ref="Console"/>
|
||||||
|
</Root>
|
||||||
|
</Loggers>
|
||||||
|
</Configuration>
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
package de.mannheim.th.chess.domain;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import com.github.bhlangonijr.chesslib.Square;
|
||||||
|
import com.github.bhlangonijr.chesslib.move.Move;
|
||||||
|
|
||||||
|
public class GameTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getLegalMovesTest() {
|
||||||
|
Game game = new Game();
|
||||||
|
List<Move> list;
|
||||||
|
|
||||||
|
list = game.getLegalMoves(Square.B1);
|
||||||
|
assertEquals("b1a3", list.getFirst().toString());
|
||||||
|
|
||||||
|
list = game.getLegalMoves(Square.A2);
|
||||||
|
assertEquals("a2a3", list.getFirst().toString());
|
||||||
|
assertEquals("a2a4", list.getLast().toString());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getLegalMoveableSquaresTest() {
|
||||||
|
Game game = new Game();
|
||||||
|
Square square = Square.A2;
|
||||||
|
|
||||||
|
List<Square> controllList = Arrays.asList(Square.A3, Square.A4);
|
||||||
|
assertEquals(controllList, game.getLegalMoveableSquares(square));
|
||||||
|
|
||||||
|
game = new Game("k7/8/8/8/8/8/8/K6N w - - 0 1");
|
||||||
|
square = Square.H1;
|
||||||
|
controllList = Arrays.asList(Square.F2, Square.G3);
|
||||||
|
assertEquals(controllList, game.getLegalMoveableSquares(square));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getAllLegalMoveableSquaresTest() {
|
||||||
|
Game game = new Game();
|
||||||
|
|
||||||
|
List<Square> controllList = Arrays.asList(Square.A2, Square.B2, Square.C2, Square.D2, Square.E2, Square.F2,
|
||||||
|
Square.G2, Square.H2, Square.B1, Square.G1);
|
||||||
|
assertEquals(controllList, game.getAllLegalMoveableSquares());
|
||||||
|
|
||||||
|
game = new Game("k7/8/8/8/8/8/8/K6N w - - 0 1");
|
||||||
|
controllList = Arrays.asList(Square.H1, Square.A1);
|
||||||
|
assertEquals(controllList, game.getAllLegalMoveableSquares());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getUnicodeFromMoveTest() {
|
||||||
|
|
||||||
|
Game g = new Game();
|
||||||
|
Move m = new Move(Square.A2, Square.A4);
|
||||||
|
g.getBoard().doMove(m);
|
||||||
|
assertEquals("♙", g.getUnicodeFromMove(m));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
package de.mannheim.th.chess.ui;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class SpielFrameTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void mirrowedGridTest() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
package de.mannheim.th.chess.utl;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import com.github.bhlangonijr.chesslib.Square;
|
||||||
|
import com.github.bhlangonijr.chesslib.move.Move;
|
||||||
|
import com.github.bhlangonijr.chesslib.move.MoveList;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class OpeningRecognizerTest {
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void prepareOpenings() throws IOException {
|
||||||
|
OpeningRecognizer.loadOpenings();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test() {
|
||||||
|
Move m = new Move(Square.E2, Square.E4);
|
||||||
|
MoveList moves = new MoveList();
|
||||||
|
moves.add(m);
|
||||||
|
assertEquals(OpeningRecognizer.compareOpening(moves, "Unknown"), "King's pawn Opening");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#Generated by Maven
|
|
||||||
#Thu Jun 05 10:54:33 CEST 2025
|
|
||||||
artifactId=SchachMVN
|
|
||||||
groupId=de.mannheim.th.chess
|
|
||||||
version=0.0.1-SNAPSHOT
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
de\mannheim\th\chess\App.class
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\App.java
|
|
||||||
C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\domain\Game.java
|
|
||||||
C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\domain\MoveChecker.java
|
|
||||||
C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\domain\MoveReader.java
|
|
||||||
C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\model\Database.java
|
|
||||||
C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\ui\Creator.java
|
|
||||||
C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\ui\GameWindow.java
|
|
||||||
C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\ui\Ui.java
|
|
||||||
C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\utl\Clock.java
|
|
||||||
C:\Users\matia\git\Schach\src\main\java\de\mannheim\th\chess\utl\GameReader.java
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
de/mannheim/th/chess/AppTest.class
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
/home/dominik/studium/2semester/prog/projects/chess/Schach/chess/src/test/java/de/mannheim/th/chess/AppTest.java
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<pmd xmlns="http://pmd.sourceforge.net/report/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pmd.sourceforge.net/report/2.0.0 https://pmd.github.io/schema/report_2_0_0.xsd" version="7.7.0" timestamp="2025-06-05T10:57:50.423">
|
|
||||||
</pmd>
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
or more contributor license agreements. See the NOTICE file
|
|
||||||
distributed with this work for additional information
|
|
||||||
regarding copyright ownership. The ASF licenses this file
|
|
||||||
to you under the Apache License, Version 2.0 (the
|
|
||||||
"License"); you may not use this file except in compliance
|
|
||||||
with the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing,
|
|
||||||
software distributed under the License is distributed on an
|
|
||||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
KIND, either express or implied. See the License for the
|
|
||||||
specific language governing permissions and limitations
|
|
||||||
under the License.
|
|
||||||
-->
|
|
||||||
<ruleset name="Default Maven PMD Plugin Ruleset"
|
|
||||||
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
|
|
||||||
|
|
||||||
<description>
|
|
||||||
The default ruleset used by the Maven PMD Plugin, when no other ruleset is specified.
|
|
||||||
It contains the rules of the old (pre PMD 6.0.0) rulesets java-basic, java-empty, java-imports,
|
|
||||||
java-unnecessary, java-unusedcode.
|
|
||||||
|
|
||||||
This ruleset might be used as a starting point for an own customized ruleset [0].
|
|
||||||
|
|
||||||
[0] https://pmd.github.io/latest/pmd_userdocs_making_rulesets.html
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<rule ref="category/java/bestpractices.xml/AvoidUsingHardCodedIP" />
|
|
||||||
<rule ref="category/java/bestpractices.xml/CheckResultSet" />
|
|
||||||
<rule ref="category/java/bestpractices.xml/PrimitiveWrapperInstantiation" />
|
|
||||||
<rule ref="category/java/bestpractices.xml/UnusedFormalParameter" />
|
|
||||||
<rule ref="category/java/bestpractices.xml/UnusedLocalVariable" />
|
|
||||||
<rule ref="category/java/bestpractices.xml/UnusedPrivateField" />
|
|
||||||
<rule ref="category/java/bestpractices.xml/UnusedPrivateMethod" />
|
|
||||||
|
|
||||||
<rule ref="category/java/codestyle.xml/EmptyControlStatement" />
|
|
||||||
<rule ref="category/java/codestyle.xml/ExtendsObject" />
|
|
||||||
<rule ref="category/java/codestyle.xml/ForLoopShouldBeWhileLoop" />
|
|
||||||
<rule ref="category/java/codestyle.xml/TooManyStaticImports" />
|
|
||||||
<rule ref="category/java/codestyle.xml/UnnecessaryFullyQualifiedName" />
|
|
||||||
<rule ref="category/java/codestyle.xml/UnnecessaryImport" />
|
|
||||||
<rule ref="category/java/codestyle.xml/UnnecessaryModifier" />
|
|
||||||
<rule ref="category/java/codestyle.xml/UnnecessaryReturn" />
|
|
||||||
<rule ref="category/java/codestyle.xml/UnnecessarySemicolon" />
|
|
||||||
<rule ref="category/java/codestyle.xml/UselessParentheses" />
|
|
||||||
<rule ref="category/java/codestyle.xml/UselessQualifiedThis" />
|
|
||||||
|
|
||||||
<rule ref="category/java/design.xml/CollapsibleIfStatements" />
|
|
||||||
<rule ref="category/java/design.xml/SimplifiedTernary" />
|
|
||||||
<rule ref="category/java/design.xml/UselessOverridingMethod" />
|
|
||||||
|
|
||||||
<rule ref="category/java/errorprone.xml/AvoidBranchingStatementAsLastInLoop" />
|
|
||||||
<rule ref="category/java/errorprone.xml/AvoidDecimalLiteralsInBigDecimalConstructor" />
|
|
||||||
<rule ref="category/java/errorprone.xml/AvoidMultipleUnaryOperators" />
|
|
||||||
<rule ref="category/java/errorprone.xml/AvoidUsingOctalValues" />
|
|
||||||
<rule ref="category/java/errorprone.xml/BrokenNullCheck" />
|
|
||||||
<rule ref="category/java/errorprone.xml/CheckSkipResult" />
|
|
||||||
<rule ref="category/java/errorprone.xml/ClassCastExceptionWithToArray" />
|
|
||||||
<rule ref="category/java/errorprone.xml/DontUseFloatTypeForLoopIndices" />
|
|
||||||
<rule ref="category/java/errorprone.xml/EmptyCatchBlock" />
|
|
||||||
<rule ref="category/java/errorprone.xml/JumbledIncrementer" />
|
|
||||||
<rule ref="category/java/errorprone.xml/MisplacedNullCheck" />
|
|
||||||
<rule ref="category/java/errorprone.xml/OverrideBothEqualsAndHashcode" />
|
|
||||||
<rule ref="category/java/errorprone.xml/ReturnFromFinallyBlock" />
|
|
||||||
<rule ref="category/java/errorprone.xml/UnconditionalIfStatement" />
|
|
||||||
<rule ref="category/java/errorprone.xml/UnnecessaryConversionTemporary" />
|
|
||||||
<rule ref="category/java/errorprone.xml/UnusedNullCheckInEquals" />
|
|
||||||
<rule ref="category/java/errorprone.xml/UselessOperationOnImmutable" />
|
|
||||||
|
|
||||||
<rule ref="category/java/multithreading.xml/AvoidThreadGroup" />
|
|
||||||
<rule ref="category/java/multithreading.xml/DontCallThreadRun" />
|
|
||||||
<rule ref="category/java/multithreading.xml/DoubleCheckedLocking" />
|
|
||||||
|
|
||||||
<rule ref="category/java/performance.xml/BigIntegerInstantiation" />
|
|
||||||
|
|
||||||
</ruleset>
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
/*
|
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
* or more contributor license agreements. See the NOTICE file
|
|
||||||
* distributed with this work for additional information
|
|
||||||
* regarding copyright ownership. The ASF licenses this file
|
|
||||||
* to you under the Apache License, Version 2.0 (the
|
|
||||||
* "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#banner,
|
|
||||||
#footer,
|
|
||||||
#leftcol,
|
|
||||||
#breadcrumbs,
|
|
||||||
.docs #toc,
|
|
||||||
.docs .courtesylinks,
|
|
||||||
#leftColumn,
|
|
||||||
#navColumn {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bodyColumn,
|
|
||||||
body.docs div.docs {
|
|
||||||
margin: 0 !important;
|
|
||||||
border: none !important;
|
|
||||||
}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
/* You can override this file with your own styles */
|
|
||||||
|
|
@ -1,229 +0,0 @@
|
||||||
<?xml version="1.0" standalone="no"?>
|
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<metadata></metadata>
|
|
||||||
<defs>
|
|
||||||
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
|
|
||||||
<font-face units-per-em="1200" ascent="960" descent="-240" />
|
|
||||||
<missing-glyph horiz-adv-x="500" />
|
|
||||||
<glyph />
|
|
||||||
<glyph />
|
|
||||||
<glyph unicode="
" />
|
|
||||||
<glyph unicode=" " />
|
|
||||||
<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
|
|
||||||
<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
|
|
||||||
<glyph unicode=" " />
|
|
||||||
<glyph unicode=" " horiz-adv-x="652" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="1304" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="652" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="1304" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="434" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="326" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="217" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="217" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="163" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="260" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="72" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="260" />
|
|
||||||
<glyph unicode=" " horiz-adv-x="326" />
|
|
||||||
<glyph unicode="€" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" />
|
|
||||||
<glyph unicode="−" d="M200 400h900v300h-900v-300z" />
|
|
||||||
<glyph unicode="☁" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" />
|
|
||||||
<glyph unicode="✉" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
|
|
||||||
<glyph unicode="✏" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" />
|
|
||||||
<glyph unicode="" horiz-adv-x="500" d="M0 0z" />
|
|
||||||
<glyph unicode="" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" />
|
|
||||||
<glyph unicode="" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 -75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" />
|
|
||||||
<glyph unicode="" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
|
|
||||||
<glyph unicode="" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
|
|
||||||
<glyph unicode="" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" />
|
|
||||||
<glyph unicode="" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
|
|
||||||
<glyph unicode="" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" />
|
|
||||||
<glyph unicode="" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
|
|
||||||
<glyph unicode="" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" />
|
|
||||||
<glyph unicode="" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 450v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5z" />
|
|
||||||
<glyph unicode="" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" />
|
|
||||||
<glyph unicode="" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" />
|
|
||||||
<glyph unicode="" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
|
|
||||||
<glyph unicode="" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
|
|
||||||
<glyph unicode="" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 299q-120 -77 -261 -77q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" />
|
|
||||||
<glyph unicode="" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
|
|
||||||
<glyph unicode="" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
|
|
||||||
<glyph unicode="" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" />
|
|
||||||
<glyph unicode="" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
|
|
||||||
<glyph unicode="" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
|
|
||||||
<glyph unicode="" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
|
|
||||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
|
|
||||||
<glyph unicode="" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
|
|
||||||
<glyph unicode="" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" />
|
|
||||||
<glyph unicode="" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" />
|
|
||||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" />
|
|
||||||
<glyph unicode="" d="M0 25v475l200 700h800q199 -700 200 -700v-475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" />
|
|
||||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
|
|
||||||
<glyph unicode="" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" />
|
|
||||||
<glyph unicode="" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" />
|
|
||||||
<glyph unicode="" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" />
|
|
||||||
<glyph unicode="" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
|
|
||||||
<glyph unicode="" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
|
|
||||||
<glyph unicode="" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" />
|
|
||||||
<glyph unicode="" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" />
|
|
||||||
<glyph unicode="" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
|
|
||||||
<glyph unicode="" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" />
|
|
||||||
<glyph unicode="" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" />
|
|
||||||
<glyph unicode="" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" />
|
|
||||||
<glyph unicode="" d="M1 700v475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
|
|
||||||
<glyph unicode="" d="M2 700v475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
|
|
||||||
<glyph unicode="" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" />
|
|
||||||
<glyph unicode="" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
|
|
||||||
<glyph unicode="" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" />
|
|
||||||
<glyph unicode="" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
|
|
||||||
<glyph unicode="" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
|
|
||||||
<glyph unicode="" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v70h471q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
|
|
||||||
<glyph unicode="" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
|
|
||||||
<glyph unicode="" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
|
|
||||||
<glyph unicode="" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
|
|
||||||
<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
|
|
||||||
<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
|
|
||||||
<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" />
|
|
||||||
<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
|
|
||||||
<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
|
|
||||||
<glyph unicode="" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" />
|
|
||||||
<glyph unicode="" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" />
|
|
||||||
<glyph unicode="" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" />
|
|
||||||
<glyph unicode="" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
|
|
||||||
<glyph unicode="" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" />
|
|
||||||
<glyph unicode="" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
|
|
||||||
<glyph unicode="" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 138.5t-64 210.5zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" />
|
|
||||||
<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
|
|
||||||
<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
|
|
||||||
<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l566 567l-136 137l-430 -431l-147 147z" />
|
|
||||||
<glyph unicode="" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" />
|
|
||||||
<glyph unicode="" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
|
|
||||||
<glyph unicode="" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
|
|
||||||
<glyph unicode="" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" />
|
|
||||||
<glyph unicode="" d="M200 0l900 550l-900 550v-1100z" />
|
|
||||||
<glyph unicode="" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
|
|
||||||
<glyph unicode="" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
|
|
||||||
<glyph unicode="" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
|
|
||||||
<glyph unicode="" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
|
|
||||||
<glyph unicode="" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
|
|
||||||
<glyph unicode="" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" />
|
|
||||||
<glyph unicode="" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" />
|
|
||||||
<glyph unicode="" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" />
|
|
||||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
|
|
||||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM300 500h600v200h-600v-200z" />
|
|
||||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141z" />
|
|
||||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
|
|
||||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM363 700h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26 q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-105 0 -172 -56t-67 -183zM500 300h200v100h-200v-100z" />
|
|
||||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" />
|
|
||||||
<glyph unicode="" d="M0 500v200h194q15 60 36 104.5t55.5 86t88 69t126.5 40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200 v-206q149 48 201 206h-201v200h200q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 -77.5t-79 -125.5h209v-200h-210z" />
|
|
||||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
|
|
||||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" />
|
|
||||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
|
|
||||||
<glyph unicode="" d="M0 547l600 453v-300h600v-300h-600v-301z" />
|
|
||||||
<glyph unicode="" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" />
|
|
||||||
<glyph unicode="" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" />
|
|
||||||
<glyph unicode="" d="M104 600h296v600h300v-600h298l-449 -600z" />
|
|
||||||
<glyph unicode="" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" />
|
|
||||||
<glyph unicode="" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
|
|
||||||
<glyph unicode="" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
|
|
||||||
<glyph unicode="" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-33 14.5h-207q-20 0 -32 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
|
|
||||||
<glyph unicode="" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111v6t-1 15t-3 18l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6h-111v-100z M100 0h400v400h-400v-400zM200 900q-3 0 14 48t35 96l18 47l214 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" />
|
|
||||||
<glyph unicode="" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" />
|
|
||||||
<glyph unicode="" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" />
|
|
||||||
<glyph unicode="" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" />
|
|
||||||
<glyph unicode="" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" />
|
|
||||||
<glyph unicode="" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" />
|
|
||||||
<glyph unicode="" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 78h-222l-94 -78q-19 -9 -32 -1t-13 29v64 q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" />
|
|
||||||
<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" />
|
|
||||||
<glyph unicode="" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
|
|
||||||
<glyph unicode="" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
|
|
||||||
<glyph unicode="" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
|
|
||||||
<glyph unicode="" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" />
|
|
||||||
<glyph unicode="" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" />
|
|
||||||
<glyph unicode="" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" />
|
|
||||||
<glyph unicode="" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" />
|
|
||||||
<glyph unicode="" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
|
|
||||||
<glyph unicode="" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" />
|
|
||||||
<glyph unicode="" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
|
|
||||||
<glyph unicode="" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" />
|
|
||||||
<glyph unicode="" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" />
|
|
||||||
<glyph unicode="" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM99 500v250v5q0 13 0.5 18.5t2.5 13t8 10.5t15 3h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351z M1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" />
|
|
||||||
<glyph unicode="" d="M74 350q0 21 13.5 35.5t33.5 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37 t-251.5 -23t-245.5 20.5t-178.5 41.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
|
|
||||||
<glyph unicode="" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
|
|
||||||
<glyph unicode="" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 212l100 213h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
|
|
||||||
<glyph unicode="" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
|
|
||||||
<glyph unicode="" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" />
|
|
||||||
<glyph unicode="" d="M-101 651q0 72 54 110t139 37h302l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 16.5 -10.5t26 -26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l106 89v502l-342 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM999 201v600h200v-600h-200z" />
|
|
||||||
<glyph unicode="" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
|
|
||||||
<glyph unicode="" d="M1 585q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM76 565l237 339h503l89 -100v-294l-340 -130 q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" />
|
|
||||||
<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 500h300l-2 -194l402 294l-402 298v-197h-298v-201z" />
|
|
||||||
<glyph unicode="" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l400 -294v194h302v201h-300v197z" />
|
|
||||||
<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" />
|
|
||||||
<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" />
|
|
||||||
<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -34 5.5 -93t7.5 -87q0 -9 17 -44t16 -60q12 0 23 -5.5 t23 -15t20 -13.5q20 -10 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55.5t-20 -57.5q12 -21 22.5 -34.5t28 -27t36.5 -17.5q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q101 -2 221 111q31 30 47 48t34 49t21 62q-14 9 -37.5 9.5t-35.5 7.5q-14 7 -49 15t-52 19 q-9 0 -39.5 -0.5t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q8 16 22 22q6 -1 26 -1.5t33.5 -4.5t19.5 -13q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5 t5.5 57.5q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 41 1 44q31 -13 58.5 -14.5t39.5 3.5l11 4q6 36 -17 53.5t-64 28.5t-56 23 q-19 -3 -37 0q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -46 0t-45 -3q-20 -6 -51.5 -25.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79zM518 915q3 12 16 30.5t16 25.5q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -18 8 -42.5t16.5 -44 t9.5 -23.5q-6 1 -39 5t-53.5 10t-36.5 16z" />
|
|
||||||
<glyph unicode="" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
|
|
||||||
<glyph unicode="" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" />
|
|
||||||
<glyph unicode="" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
|
|
||||||
<glyph unicode="" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" />
|
|
||||||
<glyph unicode="" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" />
|
|
||||||
<glyph unicode="" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM513 609q0 32 21 56.5t52 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-16 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5q-37 0 -62.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" />
|
|
||||||
<glyph unicode="" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36 q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60l517 511 q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" />
|
|
||||||
<glyph unicode="" d="M79 784q0 131 99 229.5t230 98.5q144 0 242 -129q103 129 245 129q130 0 227 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100l-84.5 84.5t-68 74t-60 78t-33.5 70.5t-15 78z M250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-106 48.5q-73 0 -131 -83l-118 -171l-114 174q-51 80 -124 80q-59 0 -108.5 -49.5t-49.5 -118.5z" />
|
|
||||||
<glyph unicode="" d="M57 353q0 -94 66 -160l141 -141q66 -66 159 -66q95 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141l19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
|
|
||||||
<glyph unicode="" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
|
|
||||||
<glyph unicode="" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
|
|
||||||
<glyph unicode="" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5v-307l64 -14 q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5zM700 237 q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" />
|
|
||||||
<glyph unicode="" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 -24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5 t15.5 -27t13.5 -24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q32 1 102 -16t104 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10 t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5t-30 142.5h-221z" />
|
|
||||||
<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" />
|
|
||||||
<glyph unicode="" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
|
|
||||||
<glyph unicode="" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
|
|
||||||
<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
|
|
||||||
<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
|
|
||||||
<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" />
|
|
||||||
<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" />
|
|
||||||
<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" />
|
|
||||||
<glyph unicode="" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" />
|
|
||||||
<glyph unicode="" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" />
|
|
||||||
<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" />
|
|
||||||
<glyph unicode="" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" />
|
|
||||||
<glyph unicode="" d="M216 519q10 -19 32 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 -257t-209.5 -238.5q-17 -19 -7 -40z" />
|
|
||||||
<glyph unicode="" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
|
|
||||||
<glyph unicode="" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" />
|
|
||||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" />
|
|
||||||
<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" />
|
|
||||||
<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" />
|
|
||||||
<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" />
|
|
||||||
<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 401h700v699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
|
|
||||||
<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l248 -237v700h-699zM900 150h100v50h-100v-50z" />
|
|
||||||
<glyph unicode="" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" />
|
|
||||||
<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" />
|
|
||||||
<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
|
|
||||||
<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
|
|
||||||
<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" />
|
|
||||||
<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" />
|
|
||||||
<glyph unicode="" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
|
|
||||||
<glyph unicode="" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" />
|
|
||||||
<glyph unicode="" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 -50.5t-18.5 -65.5v-359z" />
|
|
||||||
<glyph unicode="" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
|
|
||||||
<glyph unicode="" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
|
|
||||||
<glyph unicode="" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 -267 227q-126 126 -227 268l118 118q17 17 20 41.5 t-11 44.5l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
|
|
||||||
<glyph unicode="" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" />
|
|
||||||
<glyph unicode="" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" />
|
|
||||||
<glyph unicode="" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
|
|
||||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
|
|
||||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
|
|
||||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" />
|
|
||||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
|
|
||||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
|
|
||||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
|
|
||||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
|
|
||||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" />
|
|
||||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" />
|
|
||||||
<glyph unicode="" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" />
|
|
||||||
<glyph unicode="" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300 h200l-300 -300z" />
|
|
||||||
<glyph unicode="" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" />
|
|
||||||
<glyph unicode="" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
|
|
||||||
<glyph unicode="" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
|
|
||||||
</font>
|
|
||||||
</defs></svg>
|
|
||||||
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 746 B |
|
Before Width: | Height: | Size: 397 B |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 923 B |
|
Before Width: | Height: | Size: 736 B |
|
Before Width: | Height: | Size: 577 B |
|
Before Width: | Height: | Size: 700 B |
|
Before Width: | Height: | Size: 366 B |
|
Before Width: | Height: | Size: 633 B |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 638 B |
|
Before Width: | Height: | Size: 604 B |
|
Before Width: | Height: | Size: 625 B |
|
Before Width: | Height: | Size: 662 B |
|
Before Width: | Height: | Size: 1017 B |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 536 B |
|
Before Width: | Height: | Size: 717 B |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 607 B |
|
Before Width: | Height: | Size: 474 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 583 B |
|
Before Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
|
@ -1,287 +0,0 @@
|
||||||
(function(g,p){"object"===typeof module&&"object"===typeof module.exports?module.exports=g.document?p(g,!0):function(g){if(!g.document)throw Error("jQuery requires a window with a document");return p(g)}:p(g)})("undefined"!==typeof window?window:this,function(g,p){function x(a){var b=a.length,e=d.type(a);return"function"===e||d.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===e||0===b||"number"===typeof b&&0<b&&b-1 in a}function c(a,b,e){if(d.isFunction(b))return d.grep(a,function(a,d){return!!b.call(a,
|
|
||||||
d,a)!==e});if(b.nodeType)return d.grep(a,function(a){return a===b!==e});if("string"===typeof b){if(Gb.test(b))return d.filter(b,a,e);b=d.filter(b,a)}return d.grep(a,function(a){return 0<=d.inArray(a,b)!==e})}function f(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}function h(a){var b=fb[a]={};d.each(a.match(Y)||[],function(a,d){b[d]=!0});return b}function m(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",n,!1),g.removeEventListener("load",n,!1)):(z.detachEvent("onreadystatechange",
|
|
||||||
n),g.detachEvent("onload",n))}function n(){if(z.addEventListener||"load"===event.type||"complete"===z.readyState)m(),d.ready()}function W(a,b,e){if(void 0===e&&1===a.nodeType)if(e="data-"+b.replace(Hb,"-$1").toLowerCase(),e=a.getAttribute(e),"string"===typeof e){try{e="true"===e?!0:"false"===e?!1:"null"===e?null:+e+""===e?+e:Ib.test(e)?d.parseJSON(e):e}catch(k){}d.data(a,b,e)}else e=void 0;return e}function r(a){for(var b in a)if(("data"!==b||!d.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}
|
|
||||||
function E(a,b,e,k){if(d.acceptData(a)){var l=d.expando,u=a.nodeType,c=u?d.cache:a,f=u?a[l]:a[l]&&l;if(f&&c[f]&&(k||c[f].data)||void 0!==e||"string"!==typeof b){f||(f=u?a[l]=Z.pop()||d.guid++:l);c[f]||(c[f]=u?{}:{toJSON:d.noop});if("object"===typeof b||"function"===typeof b)k?c[f]=d.extend(c[f],b):c[f].data=d.extend(c[f].data,b);a=c[f];k||(a.data||(a.data={}),a=a.data);void 0!==e&&(a[d.camelCase(b)]=e);"string"===typeof b?(e=a[b],null==e&&(e=a[d.camelCase(b)])):e=a;return e}}}function fa(a,b,e){if(d.acceptData(a)){var k,
|
|
||||||
l,u=a.nodeType,c=u?d.cache:a,f=u?a[d.expando]:d.expando;if(c[f]){if(b&&(k=e?c[f]:c[f].data)){d.isArray(b)?b=b.concat(d.map(b,d.camelCase)):b in k?b=[b]:(b=d.camelCase(b),b=b in k?[b]:b.split(" "));for(l=b.length;l--;)delete k[b[l]];if(e?!r(k):!d.isEmptyObject(k))return}if(!e&&(delete c[f].data,!r(c[f])))return;u?d.cleanData([a],!0):w.deleteExpando||c!=c.window?delete c[f]:c[f]=null}}}function aa(){return!0}function V(){return!1}function ha(){try{return z.activeElement}catch(a){}}function Aa(a){var b=
|
|
||||||
gb.split("|");a=a.createDocumentFragment();if(a.createElement)for(;b.length;)a.createElement(b.pop());return a}function N(a,b){var e,k,l=0,u="undefined"!==typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!==typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!u)for(u=[],e=a.childNodes||a;null!=(k=e[l]);l++)!b||d.nodeName(k,b)?u.push(k):d.merge(u,N(k,b));return void 0===b||b&&d.nodeName(a,b)?d.merge([a],u):u}function Ta(a){Ua.test(a.type)&&(a.defaultChecked=a.checked)}
|
|
||||||
function Ia(a,b){return d.nodeName(a,"table")&&d.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ia(a){a.type=(null!==d.find.attr(a,"type"))+"/"+a.type;return a}function A(a){var b=Jb.exec(a.type);b?a.type=b[1]:a.removeAttribute("type");return a}function R(a,b){for(var e,k=0;null!=(e=a[k]);k++)d._data(e,"globalEval",!b||d._data(b[k],"globalEval"))}function P(a,b){if(1===b.nodeType&&d.hasData(a)){var e,
|
|
||||||
k,l;k=d._data(a);a=d._data(b,k);var u=k.events;if(u)for(e in delete a.handle,a.events={},u)for(k=0,l=u[e].length;k<l;k++)d.event.add(b,e,u[e][k]);a.data&&(a.data=d.extend({},a.data))}}function I(a,b){var e;a=d(b.createElement(a)).appendTo(b.body);b=g.getDefaultComputedStyle&&(e=g.getDefaultComputedStyle(a[0]))?e.display:d.css(a[0],"display");a.detach();return b}function Ea(a){var b=z,e=hb[a];e||(e=I(a,b),"none"!==e&&e||(na=(na||d("\x3ciframe frameborder\x3d'0' width\x3d'0' height\x3d'0'/\x3e")).appendTo(b.documentElement),
|
|
||||||
b=(na[0].contentWindow||na[0].contentDocument).document,b.write(),b.close(),e=I(a,b),na.detach()),hb[a]=e);return e}function Fa(a,b){return{get:function(){var e=a();if(null!=e)if(e)delete this.get;else return(this.get=b).apply(this,arguments)}}}function Ba(a,b){if(b in a)return b;for(var e=b.charAt(0).toUpperCase()+b.slice(1),d=b,l=ib.length;l--;)if(b=ib[l]+e,b in a)return b;return d}function O(a,b){for(var e,k,l,u=[],c=0,f=a.length;c<f;c++)k=a[c],k.style&&(u[c]=d._data(k,"olddisplay"),e=k.style.display,
|
|
||||||
b?(u[c]||"none"!==e||(k.style.display=""),""===k.style.display&&Ca(k)&&(u[c]=d._data(k,"olddisplay",Ea(k.nodeName)))):(l=Ca(k),(e&&"none"!==e||!l)&&d._data(k,"olddisplay",l?e:d.css(k,"display"))));for(c=0;c<f;c++)k=a[c],!k.style||b&&"none"!==k.style.display&&""!==k.style.display||(k.style.display=b?u[c]||"":"none");return a}function va(a,b,e){return(a=Kb.exec(b))?Math.max(0,a[1]-(e||0))+(a[2]||"px"):b}function S(a,b,e,k,l){b=e===(k?"border":"content")?4:"width"===b?1:0;for(var u=0;4>b;b+=2)"margin"===
|
|
||||||
e&&(u+=d.css(a,e+oa[b],!0,l)),k?("content"===e&&(u-=d.css(a,"padding"+oa[b],!0,l)),"margin"!==e&&(u-=d.css(a,"border"+oa[b]+"Width",!0,l))):(u+=d.css(a,"padding"+oa[b],!0,l),"padding"!==e&&(u+=d.css(a,"border"+oa[b]+"Width",!0,l)));return u}function U(a,b,e){var k=!0,l="width"===b?a.offsetWidth:a.offsetHeight,u=ga(a),c=w.boxSizing&&"border-box"===d.css(a,"boxSizing",!1,u);if(0>=l||null==l){l=pa(a,b,u);if(0>l||null==l)l=a.style[b];if(Ja.test(l))return l;k=c&&(w.boxSizingReliable()||l===a.style[b]);
|
|
||||||
l=parseFloat(l)||0}return l+S(a,b,e||(c?"border":"content"),k,u)+"px"}function H(a,b,e,d,l){return new H.prototype.init(a,b,e,d,l)}function J(){setTimeout(function(){wa=void 0});return wa=d.now()}function v(a,b){var e,d={height:a},l=0;for(b=b?1:0;4>l;l+=2-b)e=oa[l],d["margin"+e]=d["padding"+e]=a;b&&(d.opacity=d.width=a);return d}function da(a,b,e){for(var d,l=(xa[b]||[]).concat(xa["*"]),c=0,f=l.length;c<f;c++)if(d=l[c].call(e,b,a))return d}function y(a,b){var e,k,l,c,f;for(e in a)if(k=d.camelCase(e),
|
|
||||||
l=b[k],c=a[e],d.isArray(c)&&(l=c[1],c=a[e]=c[0]),e!==k&&(a[k]=c,delete a[e]),(f=d.cssHooks[k])&&"expand"in f)for(e in c=f.expand(c),delete a[k],c)e in a||(a[e]=c[e],b[e]=l);else b[k]=l}function G(a,b,e){var k,l=0,c=Ka.length,f=d.Deferred().always(function(){delete g.elem}),g=function(){if(k)return!1;for(var b=wa||J(),b=Math.max(0,h.startTime+h.duration-b),e=1-(b/h.duration||0),d=0,l=h.tweens.length;d<l;d++)h.tweens[d].run(e);f.notifyWith(a,[h,e,b]);if(1>e&&l)return b;f.resolveWith(a,[h]);return!1},
|
|
||||||
h=f.promise({elem:a,props:d.extend({},b),opts:d.extend(!0,{specialEasing:{}},e),originalProperties:b,originalOptions:e,startTime:wa||J(),duration:e.duration,tweens:[],createTween:function(b,e){b=d.Tween(a,h.opts,b,e,h.opts.specialEasing[b]||h.opts.easing);h.tweens.push(b);return b},stop:function(b){var e=0,d=b?h.tweens.length:0;if(k)return this;for(k=!0;e<d;e++)h.tweens[e].run(1);b?f.resolveWith(a,[h,b]):f.rejectWith(a,[h,b]);return this}});e=h.props;for(y(e,h.opts.specialEasing);l<c;l++)if(b=Ka[l].call(h,
|
|
||||||
a,e,h.opts))return b;d.map(e,da,h);d.isFunction(h.opts.start)&&h.opts.start.call(a,h);d.fx.timer(d.extend(g,{elem:a,anim:h,queue:h.opts.queue}));return h.progress(h.opts.progress).done(h.opts.done,h.opts.complete).fail(h.opts.fail).always(h.opts.always)}function C(a){return function(b,e){"string"!==typeof b&&(e=b,b="*");var k=0,l=b.toLowerCase().match(Y)||[];if(d.isFunction(e))for(;b=l[k++];)"+"===b.charAt(0)?(b=b.slice(1)||"*",(a[b]=a[b]||[]).unshift(e)):(a[b]=a[b]||[]).push(e)}}function D(a,b,e,
|
|
||||||
k){function l(u){var g;c[u]=!0;d.each(a[u]||[],function(a,d){a=d(b,e,k);if("string"===typeof a&&!f&&!c[a])return b.dataTypes.unshift(a),l(a),!1;if(f)return!(g=a)});return g}var c={},f=a===Va;return l(b.dataTypes[0])||!c["*"]&&l("*")}function L(a,b){var e,k,l=d.ajaxSettings.flatOptions||{};for(k in b)void 0!==b[k]&&((l[k]?a:e||(e={}))[k]=b[k]);e&&d.extend(!0,a,e);return a}function ea(a,b,e,k){var l;if(d.isArray(b))d.each(b,function(b,d){e||Nb.test(a)?k(a,d):ea(a+"["+("object"===typeof d?b:"")+"]",
|
|
||||||
d,e,k)});else if(e||"object"!==d.type(b))k(a,b);else for(l in b)ea(a+"["+l+"]",b[l],e,k)}function La(){try{return new g.XMLHttpRequest}catch(a){}}function Ga(a){return d.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}var Z=[],ba=Z.slice,jb=Z.concat,Wa=Z.push,kb=Z.indexOf,Ma={},Ob=Ma.toString,ja=Ma.hasOwnProperty,w={},d=function(a,b){return new d.fn.init(a,b)},Pb=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,Qb=/^-ms-/,Rb=/-([\da-z])/gi,Sb=function(a,b){return b.toUpperCase()};d.fn=d.prototype=
|
|
||||||
{jquery:"1.11.2",constructor:d,selector:"",length:0,toArray:function(){return ba.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:ba.call(this)},pushStack:function(a){a=d.merge(this.constructor(),a);a.prevObject=this;a.context=this.context;return a},each:function(a,b){return d.each(this,a,b)},map:function(a){return this.pushStack(d.map(this,function(b,e){return a.call(b,e,b)}))},slice:function(){return this.pushStack(ba.apply(this,arguments))},first:function(){return this.eq(0)},
|
|
||||||
last:function(){return this.eq(-1)},eq:function(a){var b=this.length;a=+a+(0>a?b:0);return this.pushStack(0<=a&&a<b?[this[a]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:Wa,sort:Z.sort,splice:Z.splice};d.extend=d.fn.extend=function(){var a,b,e,k,l,c=arguments[0]||{},f=1,g=arguments.length,h=!1;"boolean"===typeof c&&(h=c,c=arguments[f]||{},f++);"object"===typeof c||d.isFunction(c)||(c={});f===g&&(c=this,f--);for(;f<g;f++)if(null!=(l=arguments[f]))for(k in l)a=c[k],e=l[k],
|
|
||||||
c!==e&&(h&&e&&(d.isPlainObject(e)||(b=d.isArray(e)))?(b?(b=!1,a=a&&d.isArray(a)?a:[]):a=a&&d.isPlainObject(a)?a:{},c[k]=d.extend(h,a,e)):void 0!==e&&(c[k]=e));return c};d.extend({expando:"jQuery"+("1.11.2"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw Error(a);},noop:function(){},isFunction:function(a){return"function"===d.type(a)},isArray:Array.isArray||function(a){return"array"===d.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!d.isArray(a)&&
|
|
||||||
0<=a-parseFloat(a)+1},isEmptyObject:function(a){for(var b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==d.type(a)||a.nodeType||d.isWindow(a))return!1;try{if(a.constructor&&!ja.call(a,"constructor")&&!ja.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(e){return!1}if(w.ownLast)for(b in a)return ja.call(a,b);for(b in a);return void 0===b||ja.call(a,b)},type:function(a){return null==a?a+"":"object"===typeof a||"function"===typeof a?Ma[Ob.call(a)]||"object":typeof a},
|
|
||||||
globalEval:function(a){a&&d.trim(a)&&(g.execScript||function(a){g.eval.call(g,a)})(a)},camelCase:function(a){return a.replace(Qb,"ms-").replace(Rb,Sb)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,e){var d,l=0,c=a.length;d=x(a);if(e)if(d)for(;l<c&&(d=b.apply(a[l],e),!1!==d);l++);else for(l in a){if(d=b.apply(a[l],e),!1===d)break}else if(d)for(;l<c&&(d=b.call(a[l],l,a[l]),!1!==d);l++);else for(l in a)if(d=b.call(a[l],l,a[l]),!1===d)break;return a},
|
|
||||||
trim:function(a){return null==a?"":(a+"").replace(Pb,"")},makeArray:function(a,b){b=b||[];null!=a&&(x(Object(a))?d.merge(b,"string"===typeof a?[a]:a):Wa.call(b,a));return b},inArray:function(a,b,e){var d;if(b){if(kb)return kb.call(b,a,e);d=b.length;for(e=e?0>e?Math.max(0,d+e):e:0;e<d;e++)if(e in b&&b[e]===a)return e}return-1},merge:function(a,b){for(var e=+b.length,d=0,l=a.length;d<e;)a[l++]=b[d++];if(e!==e)for(;void 0!==b[d];)a[l++]=b[d++];a.length=l;return a},grep:function(a,b,d){for(var e=[],l=
|
|
||||||
0,c=a.length,f=!d;l<c;l++)d=!b(a[l],l),d!==f&&e.push(a[l]);return e},map:function(a,b,d){var e,l=0,c=a.length,f=[];if(x(a))for(;l<c;l++)e=b(a[l],l,d),null!=e&&f.push(e);else for(l in a)e=b(a[l],l,d),null!=e&&f.push(e);return jb.apply([],f)},guid:1,proxy:function(a,b){var e,k;"string"===typeof b&&(k=a[b],b=a,a=k);if(d.isFunction(a))return e=ba.call(arguments,2),k=function(){return a.apply(b||this,e.concat(ba.call(arguments)))},k.guid=a.guid=a.guid||d.guid++,k},now:function(){return+new Date},support:w});
|
|
||||||
d.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){Ma["[object "+b+"]"]=b.toLowerCase()});var ya=function(a){function b(a,b,d,e){var k,l,c,u,f;(b?b.ownerDocument||b:E)!==I&&R(b);b=b||I;d=d||[];u=b.nodeType;if("string"!==typeof a||!a||1!==u&&9!==u&&11!==u)return d;if(!e&&H){if(11!==u&&(k=Aa.exec(a)))if(c=k[1])if(9===u)if((l=b.getElementById(c))&&l.parentNode){if(l.id===c)return d.push(l),d}else return d;else{if(b.ownerDocument&&(l=b.ownerDocument.getElementById(c))&&
|
|
||||||
va(b,l)&&l.id===c)return d.push(l),d}else{if(k[2])return Y.apply(d,b.getElementsByTagName(a)),d;if((c=k[3])&&B.getElementsByClassName)return Y.apply(d,b.getElementsByClassName(c)),d}if(B.qsa&&(!r||!r.test(a))){l=k=Q;c=b;f=1!==u&&a;if(1===u&&"object"!==b.nodeName.toLowerCase()){u=L(a);(k=b.getAttribute("id"))?l=k.replace(Ca,"\\$\x26"):b.setAttribute("id",l);l="[id\x3d'"+l+"'] ";for(c=u.length;c--;)u[c]=l+v(u[c]);c=na.test(a)&&t(b.parentNode)||b;f=u.join(",")}if(f)try{return Y.apply(d,c.querySelectorAll(f)),
|
|
||||||
d}catch(Bc){}finally{k||b.removeAttribute("id")}}}return S(a.replace(ga,"$1"),b,d,e)}function d(){function a(d,e){b.push(d+" ")>F.cacheLength&&delete a[b.shift()];return a[d+" "]=e}var b=[];return a}function k(a){a[Q]=!0;return a}function l(a){var b=I.createElement("div");try{return!!a(b)}catch(ma){return!1}finally{b.parentNode&&b.parentNode.removeChild(b)}}function c(a,b){var d=a.split("|");for(a=a.length;a--;)F.attrHandle[d[a]]=b}function f(a,b){var d=b&&a,e=d&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||
|
|
||||||
-2147483648)-(~a.sourceIndex||-2147483648);if(e)return e;if(d)for(;d=d.nextSibling;)if(d===b)return-1;return a?1:-1}function g(a){return function(b){return"input"===b.nodeName.toLowerCase()&&b.type===a}}function h(a){return function(b){var d=b.nodeName.toLowerCase();return("input"===d||"button"===d)&&b.type===a}}function m(a){return k(function(b){b=+b;return k(function(d,e){for(var k,l=a([],d.length,b),c=l.length;c--;)d[k=l[c]]&&(d[k]=!(e[k]=d[k]))})})}function t(a){return a&&"undefined"!==typeof a.getElementsByTagName&&
|
|
||||||
a}function n(){}function v(a){for(var b=0,d=a.length,e="";b<d;b++)e+=a[b].value;return e}function p(a,b,d){var e=b.dir,k=d&&"parentNode"===e,l=Ea++;return b.first?function(b,d,l){for(;b=b[e];)if(1===b.nodeType||k)return a(b,d,l)}:function(b,d,c){var u,f,g=[ea,l];if(c)for(;b=b[e];){if((1===b.nodeType||k)&&a(b,d,c))return!0}else for(;b=b[e];)if(1===b.nodeType||k){f=b[Q]||(b[Q]={});if((u=f[e])&&u[0]===ea&&u[1]===l)return g[2]=u[2];f[e]=g;if(g[2]=a(b,d,c))return!0}}}function w(a){return 1<a.length?function(b,
|
|
||||||
d,e){for(var k=a.length;k--;)if(!a[k](b,d,e))return!1;return!0}:a[0]}function y(a,b,d,e,k){for(var l,c=[],u=0,f=a.length,g=null!=b;u<f;u++)if(l=a[u])if(!d||d(l,e,k))c.push(l),g&&b.push(u);return c}function C(a,d,e,l,c,u){l&&!l[Q]&&(l=C(l));c&&!c[Q]&&(c=C(c,u));return k(function(k,u,f,g){var T,h,K=[],ma=[],m=u.length,X;if(!(X=k)){X=d||"*";for(var M=f.nodeType?[f]:f,t=[],Da=0,n=M.length;Da<n;Da++)b(X,M[Da],t);X=t}X=!a||!k&&d?X:y(X,K,a,f,g);M=e?c||(k?a:m||l)?[]:u:X;e&&e(X,M,f,g);if(l)for(T=y(M,ma),l(T,
|
|
||||||
[],f,g),f=T.length;f--;)if(h=T[f])M[ma[f]]=!(X[ma[f]]=h);if(k){if(c||a){if(c){T=[];for(f=M.length;f--;)(h=M[f])&&T.push(X[f]=h);c(null,M=[],T,g)}for(f=M.length;f--;)(h=M[f])&&-1<(T=c?ba(k,h):K[f])&&(k[T]=!(u[T]=h))}}else M=y(M===u?M.splice(m,M.length):M),c?c(null,u,M,g):Y.apply(u,M)})}function A(a){var b,d,e,k=a.length,l=F.relative[a[0].type];d=l||F.relative[" "];for(var c=l?1:0,u=p(function(a){return a===b},d,!0),f=p(function(a){return-1<ba(b,a)},d,!0),g=[function(a,d,e){a=!l&&(e||d!==U)||((b=d).nodeType?
|
|
||||||
u(a,d,e):f(a,d,e));b=null;return a}];c<k;c++)if(d=F.relative[a[c].type])g=[p(w(g),d)];else{d=F.filter[a[c].type].apply(null,a[c].matches);if(d[Q]){for(e=++c;e<k&&!F.relative[a[e].type];e++);return C(1<c&&w(g),1<c&&v(a.slice(0,c-1).concat({value:" "===a[c-2].type?"*":""})).replace(ga,"$1"),d,c<e&&A(a.slice(c,e)),e<k&&A(a=a.slice(e)),e<k&&v(a))}g.push(d)}return w(g)}function z(a,d){var e=0<d.length,l=0<a.length,c=function(k,c,u,f,g){var T,h,K,ma=0,m="0",M=k&&[],X=[],t=U,n=k||l&&F.find.TAG("*",g),Da=
|
|
||||||
ea+=null==t?1:Math.random()||.1,Lb=n.length;for(g&&(U=c!==I&&c);m!==Lb&&null!=(T=n[m]);m++){if(l&&T){for(h=0;K=a[h++];)if(K(T,c,u)){f.push(T);break}g&&(ea=Da)}e&&((T=!K&&T)&&ma--,k&&M.push(T))}ma+=m;if(e&&m!==ma){for(h=0;K=d[h++];)K(M,X,c,u);if(k){if(0<ma)for(;m--;)M[m]||X[m]||(X[m]=fa.call(f));X=y(X)}Y.apply(f,X);g&&!k&&0<X.length&&1<ma+d.length&&b.uniqueSort(f)}g&&(ea=Da,U=t);return M};return e?k(c):c}var da,B,F,D,G,L,W,S,U,P,x,R,I,O,H,r,J,Ba,va,Q="sizzle"+1*new Date,E=a.document,ea=0,Ea=0,Fa=d(),
|
|
||||||
N=d(),Z=d(),ca=function(a,b){a===b&&(x=!0);return 0},aa={}.hasOwnProperty,V=[],fa=V.pop,La=V.push,Y=V.push,Ga=V.slice,ba=function(a,b){for(var d=0,e=a.length;d<e;d++)if(a[d]===b)return d;return-1},ka="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+".replace("w","w#"),la="\\[[\\x20\\t\\r\\n\\f]*((?:\\\\.|[\\w-]|[^\\x00-\\xa0])+)(?:[\\x20\\t\\r\\n\\f]*([*^$|!~]?\x3d)[\\x20\\t\\r\\n\\f]*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ka+"))|)[\\x20\\t\\r\\n\\f]*\\]",ia=":((?:\\\\.|[\\w-]|[^\\x00-\\xa0])+)(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+
|
|
||||||
la+")*)|.*)\\)|)",oa=/[\x20\t\r\n\f]+/g,ga=/^[\x20\t\r\n\f]+|((?:^|[^\\])(?:\\.)*)[\x20\t\r\n\f]+$/g,pa=/^[\x20\t\r\n\f]*,[\x20\t\r\n\f]*/,sa=/^[\x20\t\r\n\f]*([>+~]|[\x20\t\r\n\f])[\x20\t\r\n\f]*/,ta=/=[\x20\t\r\n\f]*([^\]'"]*?)[\x20\t\r\n\f]*\]/g,ua=new RegExp(ia),wa=new RegExp("^"+ka+"$"),ja={ID:/^#((?:\\.|[\w-]|[^\x00-\xa0])+)/,CLASS:/^\.((?:\\.|[\w-]|[^\x00-\xa0])+)/,TAG:new RegExp("^("+"(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+".replace("w","w*")+")"),ATTR:new RegExp("^"+la),PSEUDO:new RegExp("^"+ia),
|
|
||||||
CHILD:/^:(only|first|last|nth|nth-last)-(child|of-type)(?:\([\x20\t\r\n\f]*(even|odd|(([+-]|)(\d*)n|)[\x20\t\r\n\f]*(?:([+-]|)[\x20\t\r\n\f]*(\d+)|))[\x20\t\r\n\f]*\)|)/i,bool:/^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,needsContext:/^[\x20\t\r\n\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\([\x20\t\r\n\f]*((?:-\d)?\d*)[\x20\t\r\n\f]*\)|)(?=[^-]|$)/i},ya=/^(?:input|select|textarea|button)$/i,za=/^h\d$/i,ha=
|
|
||||||
/^[^{]+\{\s*\[native \w/,Aa=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,na=/[+~]/,Ca=/'|\\/g,qa=/\\([\da-f]{1,6}[\x20\t\r\n\f]?|([\x20\t\r\n\f])|.)/ig,ra=function(a,b,d){a="0x"+b-65536;return a!==a||d?b:0>a?String.fromCharCode(a+65536):String.fromCharCode(a>>10|55296,a&1023|56320)},xa=function(){R()};try{Y.apply(V=Ga.call(E.childNodes),E.childNodes),V[E.childNodes.length].nodeType}catch(T){Y={apply:V.length?function(a,b){La.apply(a,Ga.call(b))}:function(a,b){for(var d=a.length,e=0;a[d++]=b[e++];);a.length=
|
|
||||||
d-1}}}B=b.support={};G=b.isXML=function(a){return(a=a&&(a.ownerDocument||a).documentElement)?"HTML"!==a.nodeName:!1};R=b.setDocument=function(a){var b=a?a.ownerDocument||a:E;if(b===I||9!==b.nodeType||!b.documentElement)return I;I=b;O=b.documentElement;(a=b.defaultView)&&a!==a.top&&(a.addEventListener?a.addEventListener("unload",xa,!1):a.attachEvent&&a.attachEvent("onunload",xa));H=!G(b);B.attributes=l(function(a){a.className="i";return!a.getAttribute("className")});B.getElementsByTagName=l(function(a){a.appendChild(b.createComment(""));
|
|
||||||
return!a.getElementsByTagName("*").length});B.getElementsByClassName=ha.test(b.getElementsByClassName);B.getById=l(function(a){O.appendChild(a).id=Q;return!b.getElementsByName||!b.getElementsByName(Q).length});B.getById?(F.find.ID=function(a,b){if("undefined"!==typeof b.getElementById&&H)return(a=b.getElementById(a))&&a.parentNode?[a]:[]},F.filter.ID=function(a){var b=a.replace(qa,ra);return function(a){return a.getAttribute("id")===b}}):(delete F.find.ID,F.filter.ID=function(a){var b=a.replace(qa,
|
|
||||||
ra);return function(a){return(a="undefined"!==typeof a.getAttributeNode&&a.getAttributeNode("id"))&&a.value===b}});F.find.TAG=B.getElementsByTagName?function(a,b){if("undefined"!==typeof b.getElementsByTagName)return b.getElementsByTagName(a);if(B.qsa)return b.querySelectorAll(a)}:function(a,b){var d=[],e=0;b=b.getElementsByTagName(a);if("*"===a){for(;a=b[e++];)1===a.nodeType&&d.push(a);return d}return b};F.find.CLASS=B.getElementsByClassName&&function(a,b){if(H)return b.getElementsByClassName(a)};
|
|
||||||
J=[];r=[];if(B.qsa=ha.test(b.querySelectorAll))l(function(a){O.appendChild(a).innerHTML="\x3ca id\x3d'"+Q+"'\x3e\x3c/a\x3e\x3cselect id\x3d'"+Q+"-\f]' msallowcapture\x3d''\x3e\x3coption selected\x3d''\x3e\x3c/option\x3e\x3c/select\x3e";a.querySelectorAll("[msallowcapture^\x3d'']").length&&r.push("[*^$]\x3d[\\x20\\t\\r\\n\\f]*(?:''|\"\")");a.querySelectorAll("[selected]").length||r.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)");
|
|
||||||
a.querySelectorAll("[id~\x3d"+Q+"-]").length||r.push("~\x3d");a.querySelectorAll(":checked").length||r.push(":checked");a.querySelectorAll("a#"+Q+"+*").length||r.push(".#.+[+~]")}),l(function(a){var d=b.createElement("input");d.setAttribute("type","hidden");a.appendChild(d).setAttribute("name","D");a.querySelectorAll("[name\x3dd]").length&&r.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?\x3d");a.querySelectorAll(":enabled").length||r.push(":enabled",":disabled");a.querySelectorAll("*,:x");r.push(",.*:")});
|
|
||||||
(B.matchesSelector=ha.test(Ba=O.matches||O.webkitMatchesSelector||O.mozMatchesSelector||O.oMatchesSelector||O.msMatchesSelector))&&l(function(a){B.disconnectedMatch=Ba.call(a,"div");Ba.call(a,"[s!\x3d'']:x");J.push("!\x3d",ia)});r=r.length&&new RegExp(r.join("|"));J=J.length&&new RegExp(J.join("|"));va=(a=ha.test(O.compareDocumentPosition))||ha.test(O.contains)?function(a,b){var d=9===a.nodeType?a.documentElement:a;b=b&&b.parentNode;return a===b||!!(b&&1===b.nodeType&&(d.contains?d.contains(b):a.compareDocumentPosition&&
|
|
||||||
a.compareDocumentPosition(b)&16))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1};ca=a?function(a,d){if(a===d)return x=!0,0;var e=!a.compareDocumentPosition-!d.compareDocumentPosition;if(e)return e;e=(a.ownerDocument||a)===(d.ownerDocument||d)?a.compareDocumentPosition(d):1;return e&1||!B.sortDetached&&d.compareDocumentPosition(a)===e?a===b||a.ownerDocument===E&&va(E,a)?-1:d===b||d.ownerDocument===E&&va(E,d)?1:P?ba(P,a)-ba(P,d):0:e&4?-1:1}:function(a,d){if(a===d)return x=!0,0;
|
|
||||||
var e=0,k=a.parentNode,l=d.parentNode,c=[a],u=[d];if(!k||!l)return a===b?-1:d===b?1:k?-1:l?1:P?ba(P,a)-ba(P,d):0;if(k===l)return f(a,d);for(;a=a.parentNode;)c.unshift(a);for(a=d;a=a.parentNode;)u.unshift(a);for(;c[e]===u[e];)e++;return e?f(c[e],u[e]):c[e]===E?-1:u[e]===E?1:0};return b};b.matches=function(a,d){return b(a,null,null,d)};b.matchesSelector=function(a,d){(a.ownerDocument||a)!==I&&R(a);d=d.replace(ta,"\x3d'$1']");if(!(!B.matchesSelector||!H||J&&J.test(d)||r&&r.test(d)))try{var e=Ba.call(a,
|
|
||||||
d);if(e||B.disconnectedMatch||a.document&&11!==a.document.nodeType)return e}catch(Da){}return 0<b(d,I,null,[a]).length};b.contains=function(a,b){(a.ownerDocument||a)!==I&&R(a);return va(a,b)};b.attr=function(a,b){(a.ownerDocument||a)!==I&&R(a);var d=F.attrHandle[b.toLowerCase()],d=d&&aa.call(F.attrHandle,b.toLowerCase())?d(a,b,!H):void 0;return void 0!==d?d:B.attributes||!H?a.getAttribute(b):(d=a.getAttributeNode(b))&&d.specified?d.value:null};b.error=function(a){throw Error("Syntax error, unrecognized expression: "+
|
|
||||||
a);};b.uniqueSort=function(a){var b,d=[],e=0,k=0;x=!B.detectDuplicates;P=!B.sortStable&&a.slice(0);a.sort(ca);if(x){for(;b=a[k++];)b===a[k]&&(e=d.push(k));for(;e--;)a.splice(d[e],1)}P=null;return a};D=b.getText=function(a){var b,d="",e=0;b=a.nodeType;if(!b)for(;b=a[e++];)d+=D(b);else if(1===b||9===b||11===b){if("string"===typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)d+=D(a)}else if(3===b||4===b)return a.nodeValue;return d};F=b.selectors={cacheLength:50,createPseudo:k,
|
|
||||||
match:ja,attrHandle:{},find:{},relative:{"\x3e":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){a[1]=a[1].replace(qa,ra);a[3]=(a[3]||a[4]||a[5]||"").replace(qa,ra);"~\x3d"===a[2]&&(a[3]=" "+a[3]+" ");return a.slice(0,4)},CHILD:function(a){a[1]=a[1].toLowerCase();"nth"===a[1].slice(0,3)?(a[3]||b.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&
|
|
||||||
b.error(a[0]);return a},PSEUDO:function(a){var b,d=!a[6]&&a[2];if(ja.CHILD.test(a[0]))return null;a[3]?a[2]=a[4]||a[5]||"":d&&ua.test(d)&&(b=L(d,!0))&&(b=d.indexOf(")",d.length-b)-d.length)&&(a[0]=a[0].slice(0,b),a[2]=d.slice(0,b));return a.slice(0,3)}},filter:{TAG:function(a){var b=a.replace(qa,ra).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=Fa[a+" "];return b||(b=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+a+"([\\x20\\t\\r\\n\\f]|$)"),
|
|
||||||
Fa(a,function(a){return b.test("string"===typeof a.className&&a.className||"undefined"!==typeof a.getAttribute&&a.getAttribute("class")||"")}))},ATTR:function(a,d,e){return function(k){k=b.attr(k,a);if(null==k)return"!\x3d"===d;if(!d)return!0;k+="";return"\x3d"===d?k===e:"!\x3d"===d?k!==e:"^\x3d"===d?e&&0===k.indexOf(e):"*\x3d"===d?e&&-1<k.indexOf(e):"$\x3d"===d?e&&k.slice(-e.length)===e:"~\x3d"===d?-1<(" "+k.replace(oa," ")+" ").indexOf(e):"|\x3d"===d?k===e||k.slice(0,e.length+1)===e+"-":!1}},CHILD:function(a,
|
|
||||||
b,d,e,k){var l="nth"!==a.slice(0,3),c="last"!==a.slice(-4),u="of-type"===b;return 1===e&&0===k?function(a){return!!a.parentNode}:function(b,d,f){var g,h,K,m,M;d=l!==c?"nextSibling":"previousSibling";var t=b.parentNode,T=u&&b.nodeName.toLowerCase();f=!f&&!u;if(t){if(l){for(;d;){for(h=b;h=h[d];)if(u?h.nodeName.toLowerCase()===T:1===h.nodeType)return!1;M=d="only"===a&&!M&&"nextSibling"}return!0}M=[c?t.firstChild:t.lastChild];if(c&&f)for(f=t[Q]||(t[Q]={}),g=f[a]||[],m=g[0]===ea&&g[1],K=g[0]===ea&&g[2],
|
|
||||||
h=m&&t.childNodes[m];h=++m&&h&&h[d]||(K=m=0)||M.pop();){if(1===h.nodeType&&++K&&h===b){f[a]=[ea,m,K];break}}else if(f&&(g=(b[Q]||(b[Q]={}))[a])&&g[0]===ea)K=g[1];else for(;(h=++m&&h&&h[d]||(K=m=0)||M.pop())&&((u?h.nodeName.toLowerCase()!==T:1!==h.nodeType)||!++K||(f&&((h[Q]||(h[Q]={}))[a]=[ea,K]),h!==b)););K-=k;return K===e||0===K%e&&0<=K/e}}},PSEUDO:function(a,d){var e,l=F.pseudos[a]||F.setFilters[a.toLowerCase()]||b.error("unsupported pseudo: "+a);return l[Q]?l(d):1<l.length?(e=[a,a,"",d],F.setFilters.hasOwnProperty(a.toLowerCase())?
|
|
||||||
k(function(a,b){for(var e,k=l(a,d),c=k.length;c--;)e=ba(a,k[c]),a[e]=!(b[e]=k[c])}):function(a){return l(a,0,e)}):l}},pseudos:{not:k(function(a){var b=[],d=[],e=W(a.replace(ga,"$1"));return e[Q]?k(function(a,b,d,k){k=e(a,null,k,[]);for(var l=a.length;l--;)if(d=k[l])a[l]=!(b[l]=d)}):function(a,k,l){b[0]=a;e(b,null,l,d);b[0]=null;return!d.pop()}}),has:k(function(a){return function(d){return 0<b(a,d).length}}),contains:k(function(a){a=a.replace(qa,ra);return function(b){return-1<(b.textContent||b.innerText||
|
|
||||||
D(b)).indexOf(a)}}),lang:k(function(a){wa.test(a||"")||b.error("unsupported lang: "+a);a=a.replace(qa,ra).toLowerCase();return function(b){var d;do if(d=H?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return d=d.toLowerCase(),d===a||0===d.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var d=a.location&&a.location.hash;return d&&d.slice(1)===b.id},root:function(a){return a===O},focus:function(a){return a===I.activeElement&&(!I.hasFocus||I.hasFocus())&&
|
|
||||||
!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return!1===a.disabled},disabled:function(a){return!0===a.disabled},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return!0===a.selected},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(6>a.nodeType)return!1;return!0},parent:function(a){return!F.pseudos.empty(a)},header:function(a){return za.test(a.nodeName)},input:function(a){return ya.test(a.nodeName)},
|
|
||||||
button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:m(function(){return[0]}),last:m(function(a,b){return[b-1]}),eq:m(function(a,b,d){return[0>d?d+b:d]}),even:m(function(a,b){for(var d=0;d<b;d+=2)a.push(d);return a}),odd:m(function(a,b){for(var d=1;d<b;d+=2)a.push(d);return a}),lt:m(function(a,b,d){for(b=
|
|
||||||
0>d?d+b:d;0<=--b;)a.push(b);return a}),gt:m(function(a,b,d){for(d=0>d?d+b:d;++d<b;)a.push(d);return a})}};F.pseudos.nth=F.pseudos.eq;for(da in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})F.pseudos[da]=g(da);for(da in{submit:!0,reset:!0})F.pseudos[da]=h(da);n.prototype=F.filters=F.pseudos;F.setFilters=new n;L=b.tokenize=function(a,d){var e,k,l,c,u,f,g;if(u=N[a+" "])return d?0:u.slice(0);u=a;f=[];for(g=F.preFilter;u;){if(!e||(k=pa.exec(u)))k&&(u=u.slice(k[0].length)||u),f.push(l=[]);e=!1;if(k=
|
|
||||||
sa.exec(u))e=k.shift(),l.push({value:e,type:k[0].replace(ga," ")}),u=u.slice(e.length);for(c in F.filter)!(k=ja[c].exec(u))||g[c]&&!(k=g[c](k))||(e=k.shift(),l.push({value:e,type:c,matches:k}),u=u.slice(e.length));if(!e)break}return d?u.length:u?b.error(a):N(a,f).slice(0)};W=b.compile=function(a,b){var d,e=[],k=[],l=Z[a+" "];if(!l){b||(b=L(a));for(d=b.length;d--;)l=A(b[d]),l[Q]?e.push(l):k.push(l);l=Z(a,z(k,e));l.selector=a}return l};S=b.select=function(a,b,d,e){var k,l,c,u,f="function"===typeof a&&
|
|
||||||
a,g=!e&&L(a=f.selector||a);d=d||[];if(1===g.length){l=g[0]=g[0].slice(0);if(2<l.length&&"ID"===(c=l[0]).type&&B.getById&&9===b.nodeType&&H&&F.relative[l[1].type]){b=(F.find.ID(c.matches[0].replace(qa,ra),b)||[])[0];if(!b)return d;f&&(b=b.parentNode);a=a.slice(l.shift().value.length)}for(k=ja.needsContext.test(a)?0:l.length;k--;){c=l[k];if(F.relative[u=c.type])break;if(u=F.find[u])if(e=u(c.matches[0].replace(qa,ra),na.test(l[0].type)&&t(b.parentNode)||b)){l.splice(k,1);a=e.length&&v(l);if(!a)return Y.apply(d,
|
|
||||||
e),d;break}}}(f||W(a,g))(e,b,!H,d,na.test(a)&&t(b.parentNode)||b);return d};B.sortStable=Q.split("").sort(ca).join("")===Q;B.detectDuplicates=!!x;R();B.sortDetached=l(function(a){return a.compareDocumentPosition(I.createElement("div"))&1});l(function(a){a.innerHTML="\x3ca href\x3d'#'\x3e\x3c/a\x3e";return"#"===a.firstChild.getAttribute("href")})||c("type|href|height|width",function(a,b,d){if(!d)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)});B.attributes&&l(function(a){a.innerHTML="\x3cinput/\x3e";
|
|
||||||
a.firstChild.setAttribute("value","");return""===a.firstChild.getAttribute("value")})||c("value",function(a,b,d){if(!d&&"input"===a.nodeName.toLowerCase())return a.defaultValue});l(function(a){return null==a.getAttribute("disabled")})||c("checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",function(a,b,d){var e;if(!d)return!0===a[b]?b.toLowerCase():(e=a.getAttributeNode(b))&&e.specified?e.value:null});return b}(g);d.find=ya;d.expr=
|
|
||||||
ya.selectors;d.expr[":"]=d.expr.pseudos;d.unique=ya.uniqueSort;d.text=ya.getText;d.isXMLDoc=ya.isXML;d.contains=ya.contains;var lb=d.expr.match.needsContext,mb=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Gb=/^.[^:#\[\.,]*$/;d.filter=function(a,b,e){var k=b[0];e&&(a=":not("+a+")");return 1===b.length&&1===k.nodeType?d.find.matchesSelector(k,a)?[k]:[]:d.find.matches(a,d.grep(b,function(a){return 1===a.nodeType}))};d.fn.extend({find:function(a){var b,e=[],k=this,l=k.length;if("string"!==typeof a)return this.pushStack(d(a).filter(function(){for(b=
|
|
||||||
0;b<l;b++)if(d.contains(k[b],this))return!0}));for(b=0;b<l;b++)d.find(a,k[b],e);e=this.pushStack(1<l?d.unique(e):e);e.selector=this.selector?this.selector+" "+a:a;return e},filter:function(a){return this.pushStack(c(this,a||[],!1))},not:function(a){return this.pushStack(c(this,a||[],!0))},is:function(a){return!!c(this,"string"===typeof a&&lb.test(a)?d(a):a||[],!1).length}});var Ha,z=g.document,Vb=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;(d.fn.init=function(a,b){var e;if(!a)return this;if("string"===
|
|
||||||
typeof a){e="\x3c"===a.charAt(0)&&"\x3e"===a.charAt(a.length-1)&&3<=a.length?[null,a,null]:Vb.exec(a);if(!e||!e[1]&&b)return!b||b.jquery?(b||Ha).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof d?b[0]:b,d.merge(this,d.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),mb.test(e[1])&&d.isPlainObject(b))for(e in b)if(d.isFunction(this[e]))this[e](b[e]);else this.attr(e,b[e])}else{if((b=z.getElementById(e[2]))&&b.parentNode){if(b.id!==e[2])return Ha.find(a);this.length=1;this[0]=b}this.context=
|
|
||||||
z;this.selector=a}return this}if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(d.isFunction(a))return"undefined"!==typeof Ha.ready?Ha.ready(a):a(d);void 0!==a.selector&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)}).prototype=d.fn;Ha=d(z);var Wb=/^(?:parents|prev(?:Until|All))/,Xb={children:!0,contents:!0,next:!0,prev:!0};d.extend({dir:function(a,b,e){var k=[];for(a=a[b];a&&9!==a.nodeType&&(void 0===e||1!==a.nodeType||!d(a).is(e));)1===a.nodeType&&
|
|
||||||
k.push(a),a=a[b];return k},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&d.push(a);return d}});d.fn.extend({has:function(a){var b,e=d(a,this),k=e.length;return this.filter(function(){for(b=0;b<k;b++)if(d.contains(this,e[b]))return!0})},closest:function(a,b){for(var e,k=0,l=this.length,c=[],f=lb.test(a)||"string"!==typeof a?d(a,b||this.context):0;k<l;k++)for(e=this[k];e&&e!==b;e=e.parentNode)if(11>e.nodeType&&(f?-1<f.index(e):1===e.nodeType&&d.find.matchesSelector(e,a))){c.push(e);
|
|
||||||
break}return this.pushStack(1<c.length?d.unique(c):c)},index:function(a){return a?"string"===typeof a?d.inArray(this[0],d(a)):d.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(d.unique(d.merge(this.get(),d(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});d.each({parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},parents:function(a){return d.dir(a,"parentNode")},
|
|
||||||
parentsUntil:function(a,b,e){return d.dir(a,"parentNode",e)},next:function(a){return f(a,"nextSibling")},prev:function(a){return f(a,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,e){return d.dir(a,"nextSibling",e)},prevUntil:function(a,b,e){return d.dir(a,"previousSibling",e)},siblings:function(a){return d.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return d.sibling(a.firstChild)},
|
|
||||||
contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.merge([],a.childNodes)}},function(a,b){d.fn[a]=function(e,k){var l=d.map(this,b,e);"Until"!==a.slice(-5)&&(k=e);k&&"string"===typeof k&&(l=d.filter(k,l));1<this.length&&(Xb[a]||(l=d.unique(l)),Wb.test(a)&&(l=l.reverse()));return this.pushStack(l)}});var Y=/\S+/g,fb={};d.Callbacks=function(a){a="string"===typeof a?fb[a]||h(a):d.extend({},a);var b,e,k,l,c,f,g=[],m=!a.once&&[],n=function(d){e=a.memory&&d;
|
|
||||||
k=!0;c=f||0;f=0;l=g.length;for(b=!0;g&&c<l;c++)if(!1===g[c].apply(d[0],d[1])&&a.stopOnFalse){e=!1;break}b=!1;g&&(m?m.length&&n(m.shift()):e?g=[]:t.disable())},t={add:function(){if(g){var k=g.length;(function Ub(b){d.each(b,function(b,e){b=d.type(e);"function"===b?a.unique&&t.has(e)||g.push(e):e&&e.length&&"string"!==b&&Ub(e)})})(arguments);b?l=g.length:e&&(f=k,n(e))}return this},remove:function(){g&&d.each(arguments,function(a,e){for(var k;-1<(k=d.inArray(e,g,k));)g.splice(k,1),b&&(k<=l&&l--,k<=c&&
|
|
||||||
c--)});return this},has:function(a){return a?-1<d.inArray(a,g):!(!g||!g.length)},empty:function(){g=[];l=0;return this},disable:function(){g=m=e=void 0;return this},disabled:function(){return!g},lock:function(){m=void 0;e||t.disable();return this},locked:function(){return!m},fireWith:function(a,d){!g||k&&!m||(d=d||[],d=[a,d.slice?d.slice():d],b?m.push(d):n(d));return this},fire:function(){t.fireWith(this,arguments);return this},fired:function(){return!!k}};return t};d.extend({Deferred:function(a){var b=
|
|
||||||
[["resolve","done",d.Callbacks("once memory"),"resolved"],["reject","fail",d.Callbacks("once memory"),"rejected"],["notify","progress",d.Callbacks("memory")]],e="pending",k={state:function(){return e},always:function(){l.done(arguments).fail(arguments);return this},then:function(){var a=arguments;return d.Deferred(function(e){d.each(b,function(b,c){var f=d.isFunction(a[b])&&a[b];l[c[1]](function(){var a=f&&f.apply(this,arguments);if(a&&d.isFunction(a.promise))a.promise().done(e.resolve).fail(e.reject).progress(e.notify);
|
|
||||||
else e[c[0]+"With"](this===k?e.promise():this,f?[a]:arguments)})});a=null}).promise()},promise:function(a){return null!=a?d.extend(a,k):k}},l={};k.pipe=k.then;d.each(b,function(a,d){var c=d[2],f=d[3];k[d[1]]=c.add;f&&c.add(function(){e=f},b[a^1][2].disable,b[2][2].lock);l[d[0]]=function(){l[d[0]+"With"](this===l?k:this,arguments);return this};l[d[0]+"With"]=c.fireWith});k.promise(l);a&&a.call(l,l);return l},when:function(a){var b=0,e=ba.call(arguments),k=e.length,l=1!==k||a&&d.isFunction(a.promise)?
|
|
||||||
k:0,c=1===l?a:d.Deferred(),f=function(a,b,d){return function(e){b[a]=this;d[a]=1<arguments.length?ba.call(arguments):e;d===g?c.notifyWith(b,d):--l||c.resolveWith(b,d)}},g,h,m;if(1<k)for(g=Array(k),h=Array(k),m=Array(k);b<k;b++)e[b]&&d.isFunction(e[b].promise)?e[b].promise().done(f(b,m,e)).fail(c.reject).progress(f(b,h,g)):--l;l||c.resolveWith(m,e);return c.promise()}});var Na;d.fn.ready=function(a){d.ready.promise().done(a);return this};d.extend({isReady:!1,readyWait:1,holdReady:function(a){a?d.readyWait++:
|
|
||||||
d.ready(!0)},ready:function(a){if(!0===a?!--d.readyWait:!d.isReady){if(!z.body)return setTimeout(d.ready);d.isReady=!0;!0!==a&&0<--d.readyWait||(Na.resolveWith(z,[d]),d.fn.triggerHandler&&(d(z).triggerHandler("ready"),d(z).off("ready")))}}});d.ready.promise=function(a){if(!Na)if(Na=d.Deferred(),"complete"===z.readyState)setTimeout(d.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",n,!1),g.addEventListener("load",n,!1);else{z.attachEvent("onreadystatechange",n);g.attachEvent("onload",
|
|
||||||
n);var b=!1;try{b=null==g.frameElement&&z.documentElement}catch(e){}b&&b.doScroll&&function k(){if(!d.isReady){try{b.doScroll("left")}catch(l){return setTimeout(k,50)}m();d.ready()}}()}return Na.promise(a)};for(var Yb in d(w))break;w.ownLast="0"!==Yb;w.inlineBlockNeedsLayout=!1;d(function(){var a,b,d;(b=z.getElementsByTagName("body")[0])&&b.style&&(a=z.createElement("div"),d=z.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",b.appendChild(d).appendChild(a),
|
|
||||||
"undefined"!==typeof a.style.zoom&&(a.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",w.inlineBlockNeedsLayout=a=3===a.offsetWidth)&&(b.style.zoom=1),b.removeChild(d))});(function(){var a=z.createElement("div");if(null==w.deleteExpando){w.deleteExpando=!0;try{delete a.test}catch(b){w.deleteExpando=!1}}})();d.acceptData=function(a){var b=d.noData[(a.nodeName+" ").toLowerCase()],e=+a.nodeType||1;return 1!==e&&9!==e?!1:!b||!0!==b&&a.getAttribute("classid")===b};var Ib=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
|
|
||||||
Hb=/([A-Z])/g;d.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!r(a)},data:function(a,b,d){return E(a,b,d)},removeData:function(a,b){return fa(a,b)},_data:function(a,b,d){return E(a,b,d,!0)},_removeData:function(a,b){return fa(a,b,!0)}});d.fn.extend({data:function(a,b){var e,k,c,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(c=d.data(f),1===f.nodeType&&
|
|
||||||
!d._data(f,"parsedAttrs"))){for(e=g.length;e--;)g[e]&&(k=g[e].name,0===k.indexOf("data-")&&(k=d.camelCase(k.slice(5)),W(f,k,c[k])));d._data(f,"parsedAttrs",!0)}return c}return"object"===typeof a?this.each(function(){d.data(this,a)}):1<arguments.length?this.each(function(){d.data(this,a,b)}):f?W(f,a,d.data(f,a)):void 0},removeData:function(a){return this.each(function(){d.removeData(this,a)})}});d.extend({queue:function(a,b,e){var k;if(a)return b=(b||"fx")+"queue",k=d._data(a,b),e&&(!k||d.isArray(e)?
|
|
||||||
k=d._data(a,b,d.makeArray(e)):k.push(e)),k||[]},dequeue:function(a,b){b=b||"fx";var e=d.queue(a,b),k=e.length,c=e.shift(),f=d._queueHooks(a,b),g=function(){d.dequeue(a,b)};"inprogress"===c&&(c=e.shift(),k--);c&&("fx"===b&&e.unshift("inprogress"),delete f.stop,c.call(a,g,f));!k&&f&&f.empty.fire()},_queueHooks:function(a,b){var e=b+"queueHooks";return d._data(a,e)||d._data(a,e,{empty:d.Callbacks("once memory").add(function(){d._removeData(a,b+"queue");d._removeData(a,e)})})}});d.fn.extend({queue:function(a,
|
|
||||||
b){var e=2;"string"!==typeof a&&(b=a,a="fx",e--);return arguments.length<e?d.queue(this[0],a):void 0===b?this:this.each(function(){var e=d.queue(this,a,b);d._queueHooks(this,a);"fx"===a&&"inprogress"!==e[0]&&d.dequeue(this,a)})},dequeue:function(a){return this.each(function(){d.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var e,k=1,c=d.Deferred(),f=this,g=this.length,h=function(){--k||c.resolveWith(f,[f])};"string"!==typeof a&&(b=a,a=void 0);for(a=
|
|
||||||
a||"fx";g--;)(e=d._data(f[g],a+"queueHooks"))&&e.empty&&(k++,e.empty.add(h));h();return c.promise(b)}});var Oa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,oa=["Top","Right","Bottom","Left"],Ca=function(a,b){a=b||a;return"none"===d.css(a,"display")||!d.contains(a.ownerDocument,a)},sa=d.access=function(a,b,e,k,c,f,g){var l=0,u=a.length,h=null==e;if("object"===d.type(e))for(l in c=!0,e)d.access(a,b,l,e[l],!0,f,g);else if(void 0!==k&&(c=!0,d.isFunction(k)||(g=!0),h&&(g?(b.call(a,k),b=null):(h=b,b=function(a,
|
|
||||||
b,e){return h.call(d(a),e)})),b))for(;l<u;l++)b(a[l],e,g?k:k.call(a[l],l,b(a[l],e)));return c?a:h?b.call(a):u?b(a[0],e):f},Ua=/^(?:checkbox|radio)$/i;(function(){var a=z.createElement("input"),b=z.createElement("div"),d=z.createDocumentFragment();b.innerHTML=" \x3clink/\x3e\x3ctable\x3e\x3c/table\x3e\x3ca href\x3d'/a'\x3ea\x3c/a\x3e\x3cinput type\x3d'checkbox'/\x3e";w.leadingWhitespace=3===b.firstChild.nodeType;w.tbody=!b.getElementsByTagName("tbody").length;w.htmlSerialize=!!b.getElementsByTagName("link").length;
|
|
||||||
w.html5Clone="\x3c:nav\x3e\x3c/:nav\x3e"!==z.createElement("nav").cloneNode(!0).outerHTML;a.type="checkbox";a.checked=!0;d.appendChild(a);w.appendChecked=a.checked;b.innerHTML="\x3ctextarea\x3ex\x3c/textarea\x3e";w.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue;d.appendChild(b);b.innerHTML="\x3cinput type\x3d'radio' checked\x3d'checked' name\x3d't'/\x3e";w.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked;w.noCloneEvent=!0;b.attachEvent&&(b.attachEvent("onclick",function(){w.noCloneEvent=
|
|
||||||
!1}),b.cloneNode(!0).click());if(null==w.deleteExpando){w.deleteExpando=!0;try{delete b.test}catch(k){w.deleteExpando=!1}}})();(function(){var a,b,d=z.createElement("div");for(a in{submit:!0,change:!0,focusin:!0})b="on"+a,(w[a+"Bubbles"]=b in g)||(d.setAttribute(b,"t"),w[a+"Bubbles"]=!1===d.attributes[b].expando)})();var Xa=/^(?:input|select|textarea)$/i,Zb=/^key/,$b=/^(?:mouse|pointer|contextmenu)|click/,nb=/^(?:focusinfocus|focusoutblur)$/,ob=/^([^.]*)(?:\.(.+)|)$/;d.event={global:{},add:function(a,
|
|
||||||
b,e,k,c){var l,f,g,h,m,t,n,v,p;if(g=d._data(a)){e.handler&&(h=e,e=h.handler,c=h.selector);e.guid||(e.guid=d.guid++);(f=g.events)||(f=g.events={});(m=g.handle)||(m=g.handle=function(a){return"undefined"===typeof d||a&&d.event.triggered===a.type?void 0:d.event.dispatch.apply(m.elem,arguments)},m.elem=a);b=(b||"").match(Y)||[""];for(g=b.length;g--;)l=ob.exec(b[g])||[],v=t=l[1],p=(l[2]||"").split(".").sort(),v&&(l=d.event.special[v]||{},v=(c?l.delegateType:l.bindType)||v,l=d.event.special[v]||{},t=d.extend({type:v,
|
|
||||||
origType:t,data:k,handler:e,guid:e.guid,selector:c,needsContext:c&&d.expr.match.needsContext.test(c),namespace:p.join(".")},h),(n=f[v])||(n=f[v]=[],n.delegateCount=0,l.setup&&!1!==l.setup.call(a,k,p,m)||(a.addEventListener?a.addEventListener(v,m,!1):a.attachEvent&&a.attachEvent("on"+v,m))),l.add&&(l.add.call(a,t),t.handler.guid||(t.handler.guid=e.guid)),c?n.splice(n.delegateCount++,0,t):n.push(t),d.event.global[v]=!0);a=null}},remove:function(a,b,e,k,c){var l,f,g,h,m,t,n,v,p,y,w,C=d.hasData(a)&&d._data(a);
|
|
||||||
if(C&&(t=C.events)){b=(b||"").match(Y)||[""];for(m=b.length;m--;)if(g=ob.exec(b[m])||[],p=w=g[1],y=(g[2]||"").split(".").sort(),p){n=d.event.special[p]||{};p=(k?n.delegateType:n.bindType)||p;v=t[p]||[];g=g[2]&&new RegExp("(^|\\.)"+y.join("\\.(?:.*\\.|)")+"(\\.|$)");for(h=l=v.length;l--;)f=v[l],!c&&w!==f.origType||e&&e.guid!==f.guid||g&&!g.test(f.namespace)||k&&k!==f.selector&&("**"!==k||!f.selector)||(v.splice(l,1),f.selector&&v.delegateCount--,n.remove&&n.remove.call(a,f));h&&!v.length&&(n.teardown&&
|
|
||||||
!1!==n.teardown.call(a,y,C.handle)||d.removeEvent(a,p,C.handle),delete t[p])}else for(p in t)d.event.remove(a,p+b[m],e,k,!0);d.isEmptyObject(t)&&(delete C.handle,d._removeData(a,"events"))}},trigger:function(a,b,e,k){var c,f,h,m,n,v,t=[e||z],p=ja.call(a,"type")?a.type:a;n=ja.call(a,"namespace")?a.namespace.split("."):[];h=c=e=e||z;if(3!==e.nodeType&&8!==e.nodeType&&!nb.test(p+d.event.triggered)&&(0<=p.indexOf(".")&&(n=p.split("."),p=n.shift(),n.sort()),f=0>p.indexOf(":")&&"on"+p,a=a[d.expando]?a:
|
|
||||||
new d.Event(p,"object"===typeof a&&a),a.isTrigger=k?2:3,a.namespace=n.join("."),a.namespace_re=a.namespace?new RegExp("(^|\\.)"+n.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,a.result=void 0,a.target||(a.target=e),b=null==b?[a]:d.makeArray(b,[a]),n=d.event.special[p]||{},k||!n.trigger||!1!==n.trigger.apply(e,b))){if(!k&&!n.noBubble&&!d.isWindow(e)){m=n.delegateType||p;nb.test(m+p)||(h=h.parentNode);for(;h;h=h.parentNode)t.push(h),c=h;c===(e.ownerDocument||z)&&t.push(c.defaultView||c.parentWindow||g)}for(v=
|
|
||||||
0;(h=t[v++])&&!a.isPropagationStopped();)a.type=1<v?m:n.bindType||p,(c=(d._data(h,"events")||{})[a.type]&&d._data(h,"handle"))&&c.apply(h,b),(c=f&&h[f])&&c.apply&&d.acceptData(h)&&(a.result=c.apply(h,b),!1===a.result&&a.preventDefault());a.type=p;if(!(k||a.isDefaultPrevented()||n._default&&!1!==n._default.apply(t.pop(),b))&&d.acceptData(e)&&f&&e[p]&&!d.isWindow(e)){(c=e[f])&&(e[f]=null);d.event.triggered=p;try{e[p]()}catch(Mb){}d.event.triggered=void 0;c&&(e[f]=c)}return a.result}},dispatch:function(a){a=
|
|
||||||
d.event.fix(a);var b,e,k,c,f,g=ba.call(arguments);b=(d._data(this,"events")||{})[a.type]||[];var h=d.event.special[a.type]||{};g[0]=a;a.delegateTarget=this;if(!h.preDispatch||!1!==h.preDispatch.call(this,a)){f=d.event.handlers.call(this,a,b);for(b=0;(k=f[b++])&&!a.isPropagationStopped();)for(a.currentTarget=k.elem,c=0;(e=k.handlers[c++])&&!a.isImmediatePropagationStopped();)if(!a.namespace_re||a.namespace_re.test(e.namespace))a.handleObj=e,a.data=e.data,e=((d.event.special[e.origType]||{}).handle||
|
|
||||||
e.handler).apply(k.elem,g),void 0!==e&&!1===(a.result=e)&&(a.preventDefault(),a.stopPropagation());h.postDispatch&&h.postDispatch.call(this,a);return a.result}},handlers:function(a,b){var e,k,c,f,g=[],h=b.delegateCount,m=a.target;if(h&&m.nodeType&&(!a.button||"click"!==a.type))for(;m!=this;m=m.parentNode||this)if(1===m.nodeType&&(!0!==m.disabled||"click"!==a.type)){c=[];for(f=0;f<h;f++)k=b[f],e=k.selector+" ",void 0===c[e]&&(c[e]=k.needsContext?0<=d(e,this).index(m):d.find(e,this,null,[m]).length),
|
|
||||||
c[e]&&c.push(k);c.length&&g.push({elem:m,handlers:c})}h<b.length&&g.push({elem:this,handlers:b.slice(h)});return g},fix:function(a){if(a[d.expando])return a;var b,e,k;b=a.type;var c=a,f=this.fixHooks[b];f||(this.fixHooks[b]=f=$b.test(b)?this.mouseHooks:Zb.test(b)?this.keyHooks:{});k=f.props?this.props.concat(f.props):this.props;a=new d.Event(c);for(b=k.length;b--;)e=k[b],a[e]=c[e];a.target||(a.target=c.srcElement||z);3===a.target.nodeType&&(a.target=a.target.parentNode);a.metaKey=!!a.metaKey;return f.filter?
|
|
||||||
f.filter(a,c):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:["char","charCode","key","keyCode"],filter:function(a,b){null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var d,k,c=b.button,f=b.fromElement;null==
|
|
||||||
a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,k=d.documentElement,d=d.body,a.pageX=b.clientX+(k&&k.scrollLeft||d&&d.scrollLeft||0)-(k&&k.clientLeft||d&&d.clientLeft||0),a.pageY=b.clientY+(k&&k.scrollTop||d&&d.scrollTop||0)-(k&&k.clientTop||d&&d.clientTop||0));!a.relatedTarget&&f&&(a.relatedTarget=f===a.target?b.toElement:f);a.which||void 0===c||(a.which=c&1?1:c&2?3:c&4?2:0);return a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ha()&&this.focus)try{return this.focus(),
|
|
||||||
!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){if(this===ha()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if(d.nodeName(this,"input")&&"checkbox"===this.type&&this.click)return this.click(),!1},_default:function(a){return d.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,e,k){a=d.extend(new d.Event,e,{type:a,isSimulated:!0,originalEvent:{}});
|
|
||||||
k?d.event.trigger(a,null,b):d.event.dispatch.call(b,a);a.isDefaultPrevented()&&e.preventDefault()}};d.removeEvent=z.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,!1)}:function(a,b,d){b="on"+b;a.detachEvent&&("undefined"===typeof a[b]&&(a[b]=null),a.detachEvent(b,d))};d.Event=function(a,b){if(!(this instanceof d.Event))return new d.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&
|
|
||||||
!1===a.returnValue?aa:V):this.type=a;b&&d.extend(this,b);this.timeStamp=a&&a.timeStamp||d.now();this[d.expando]=!0};d.Event.prototype={isDefaultPrevented:V,isPropagationStopped:V,isImmediatePropagationStopped:V,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa;a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa;a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=
|
|
||||||
this.originalEvent;this.isImmediatePropagationStopped=aa;a&&a.stopImmediatePropagation&&a.stopImmediatePropagation();this.stopPropagation()}};d.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){d.event.special[a]={delegateType:b,bindType:b,handle:function(a){var e,c=a.relatedTarget,f=a.handleObj;if(!c||c!==this&&!d.contains(this,c))a.type=f.origType,e=f.handler.apply(this,arguments),a.type=b;return e}}});w.submitBubbles||(d.event.special.submit=
|
|
||||||
{setup:function(){if(d.nodeName(this,"form"))return!1;d.event.add(this,"click._submit keypress._submit",function(a){a=a.target;(a=d.nodeName(a,"input")||d.nodeName(a,"button")?a.form:void 0)&&!d._data(a,"submitBubbles")&&(d.event.add(a,"submit._submit",function(a){a._submit_bubble=!0}),d._data(a,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&d.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(d.nodeName(this,
|
|
||||||
"form"))return!1;d.event.remove(this,"._submit")}});w.changeBubbles||(d.event.special.change={setup:function(){if(Xa.test(this.nodeName)){if("checkbox"===this.type||"radio"===this.type)d.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),d.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1);d.event.simulate("change",this,a,!0)});return!1}d.event.add(this,"beforeactivate._change",function(a){a=
|
|
||||||
a.target;Xa.test(a.nodeName)&&!d._data(a,"changeBubbles")&&(d.event.add(a,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||d.event.simulate("change",this.parentNode,a,!0)}),d._data(a,"changeBubbles",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type)return a.handleObj.handler.apply(this,arguments)},teardown:function(){d.event.remove(this,"._change");return!Xa.test(this.nodeName)}});w.focusinBubbles||d.each({focus:"focusin",
|
|
||||||
blur:"focusout"},function(a,b){var e=function(a){d.event.simulate(b,a.target,d.event.fix(a),!0)};d.event.special[b]={setup:function(){var c=this.ownerDocument||this,l=d._data(c,b);l||c.addEventListener(a,e,!0);d._data(c,b,(l||0)+1)},teardown:function(){var c=this.ownerDocument||this,l=d._data(c,b)-1;l?d._data(c,b,l):(c.removeEventListener(a,e,!0),d._removeData(c,b))}}});d.fn.extend({on:function(a,b,e,c,l){var k,f;if("object"===typeof a){"string"!==typeof b&&(e=e||b,b=void 0);for(k in a)this.on(k,
|
|
||||||
b,e,a[k],l);return this}null==e&&null==c?(c=b,e=b=void 0):null==c&&("string"===typeof b?(c=e,e=void 0):(c=e,e=b,b=void 0));if(!1===c)c=V;else if(!c)return this;1===l&&(f=c,c=function(a){d().off(a);return f.apply(this,arguments)},c.guid=f.guid||(f.guid=d.guid++));return this.each(function(){d.event.add(this,a,c,e,b)})},one:function(a,b,d,c){return this.on(a,b,d,c,1)},off:function(a,b,e){var c;if(a&&a.preventDefault&&a.handleObj)return c=a.handleObj,d(a.delegateTarget).off(c.namespace?c.origType+"."+
|
|
||||||
c.namespace:c.origType,c.selector,c.handler),this;if("object"===typeof a){for(c in a)this.off(c,b,a[c]);return this}if(!1===b||"function"===typeof b)e=b,b=void 0;!1===e&&(e=V);return this.each(function(){d.event.remove(this,a,e,b)})},trigger:function(a,b){return this.each(function(){d.event.trigger(a,b,this)})},triggerHandler:function(a,b){var e=this[0];if(e)return d.event.trigger(a,b,e,!0)}});var gb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
|
|
||||||
ac=/ jQuery\d+="(?:null|\d+)"/g,pb=new RegExp("\x3c(?:"+gb+")[\\s/\x3e]","i"),Ya=/^\s+/,qb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,rb=/<([\w:]+)/,sb=/<tbody/i,bc=/<|&#?\w+;/,cc=/<(?:script|style|link)/i,dc=/checked\s*(?:[^=]|=\s*.checked.)/i,tb=/^$|\/(?:java|ecma)script/i,Jb=/^true\/(.*)/,ec=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ca={option:[1,"\x3cselect multiple\x3d'multiple'\x3e","\x3c/select\x3e"],legend:[1,"\x3cfieldset\x3e","\x3c/fieldset\x3e"],area:[1,
|
|
||||||
"\x3cmap\x3e","\x3c/map\x3e"],param:[1,"\x3cobject\x3e","\x3c/object\x3e"],thead:[1,"\x3ctable\x3e","\x3c/table\x3e"],tr:[2,"\x3ctable\x3e\x3ctbody\x3e","\x3c/tbody\x3e\x3c/table\x3e"],col:[2,"\x3ctable\x3e\x3ctbody\x3e\x3c/tbody\x3e\x3ccolgroup\x3e","\x3c/colgroup\x3e\x3c/table\x3e"],td:[3,"\x3ctable\x3e\x3ctbody\x3e\x3ctr\x3e","\x3c/tr\x3e\x3c/tbody\x3e\x3c/table\x3e"],_default:w.htmlSerialize?[0,"",""]:[1,"X\x3cdiv\x3e","\x3c/div\x3e"]},Za=Aa(z).appendChild(z.createElement("div"));ca.optgroup=
|
|
||||||
ca.option;ca.tbody=ca.tfoot=ca.colgroup=ca.caption=ca.thead;ca.th=ca.td;d.extend({clone:function(a,b,e){var c,l,f,g,h,m=d.contains(a.ownerDocument,a);w.html5Clone||d.isXMLDoc(a)||!pb.test("\x3c"+a.nodeName+"\x3e")?f=a.cloneNode(!0):(Za.innerHTML=a.outerHTML,Za.removeChild(f=Za.firstChild));if(!(w.noCloneEvent&&w.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||d.isXMLDoc(a)))for(c=N(f),h=N(a),g=0;null!=(l=h[g]);++g)if(c[g]){var n=c[g],t,p=void 0,v;if(1===n.nodeType){t=n.nodeName.toLowerCase();if(!w.noCloneEvent&&
|
|
||||||
n[d.expando]){v=d._data(n);for(p in v.events)d.removeEvent(n,p,v.handle);n.removeAttribute(d.expando)}if("script"===t&&n.text!==l.text)ia(n).text=l.text,A(n);else if("object"===t)n.parentNode&&(n.outerHTML=l.outerHTML),w.html5Clone&&l.innerHTML&&!d.trim(n.innerHTML)&&(n.innerHTML=l.innerHTML);else if("input"===t&&Ua.test(l.type))n.defaultChecked=n.checked=l.checked,n.value!==l.value&&(n.value=l.value);else if("option"===t)n.defaultSelected=n.selected=l.defaultSelected;else if("input"===t||"textarea"===
|
|
||||||
t)n.defaultValue=l.defaultValue}}if(b)if(e)for(h=h||N(a),c=c||N(f),g=0;null!=(l=h[g]);g++)P(l,c[g]);else P(a,f);c=N(f,"script");0<c.length&&R(c,!m&&N(a,"script"));return f},buildFragment:function(a,b,e,c){for(var k,f,g,h,m,n,t=a.length,p=Aa(b),v=[],y=0;y<t;y++)if((f=a[y])||0===f)if("object"===d.type(f))d.merge(v,f.nodeType?[f]:f);else if(bc.test(f)){g=g||p.appendChild(b.createElement("div"));h=(rb.exec(f)||["",""])[1].toLowerCase();n=ca[h]||ca._default;g.innerHTML=n[1]+f.replace(qb,"\x3c$1\x3e\x3c/$2\x3e")+
|
|
||||||
n[2];for(k=n[0];k--;)g=g.lastChild;!w.leadingWhitespace&&Ya.test(f)&&v.push(b.createTextNode(Ya.exec(f)[0]));if(!w.tbody)for(k=(f="table"!==h||sb.test(f)?"\x3ctable\x3e"!==n[1]||sb.test(f)?0:g:g.firstChild)&&f.childNodes.length;k--;)d.nodeName(m=f.childNodes[k],"tbody")&&!m.childNodes.length&&f.removeChild(m);d.merge(v,g.childNodes);for(g.textContent="";g.firstChild;)g.removeChild(g.firstChild);g=p.lastChild}else v.push(b.createTextNode(f));g&&p.removeChild(g);w.appendChecked||d.grep(N(v,"input"),
|
|
||||||
Ta);for(y=0;f=v[y++];)if(!c||-1===d.inArray(f,c))if(a=d.contains(f.ownerDocument,f),g=N(p.appendChild(f),"script"),a&&R(g),e)for(k=0;f=g[k++];)tb.test(f.type||"")&&e.push(f);return p},cleanData:function(a,b){for(var e,c,f,g,h=0,m=d.expando,n=d.cache,p=w.deleteExpando,t=d.event.special;null!=(e=a[h]);h++)if(b||d.acceptData(e))if(g=(f=e[m])&&n[f]){if(g.events)for(c in g.events)t[c]?d.event.remove(e,c):d.removeEvent(e,c,g.handle);n[f]&&(delete n[f],p?delete e[m]:"undefined"!==typeof e.removeAttribute?
|
|
||||||
e.removeAttribute(m):e[m]=null,Z.push(f))}}});d.fn.extend({text:function(a){return sa(this,function(a){return void 0===a?d.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ia(this,a).appendChild(a)})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=
|
|
||||||
Ia(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var e=a?d.filter(a,this):this,c=0;null!=(a=e[c]);c++)b||1!==a.nodeType||d.cleanData(N(a)),a.parentNode&&(b&&d.contains(a.ownerDocument,a)&&R(N(a,"script")),a.parentNode.removeChild(a));
|
|
||||||
return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){for(1===a.nodeType&&d.cleanData(N(a,!1));a.firstChild;)a.removeChild(a.firstChild);a.options&&d.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){a=null==a?!1:a;b=null==b?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){return sa(this,function(a){var b=this[0]||{},c=0,f=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ac,""):void 0;if(!("string"!==typeof a||cc.test(a)||
|
|
||||||
!w.htmlSerialize&&pb.test(a)||!w.leadingWhitespace&&Ya.test(a)||ca[(rb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(qb,"\x3c$1\x3e\x3c/$2\x3e");try{for(;c<f;c++)b=this[c]||{},1===b.nodeType&&(d.cleanData(N(b,!1)),b.innerHTML=a);b=0}catch(u){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];this.domManip(arguments,function(b){a=this.parentNode;d.cleanData(N(this));a&&a.replaceChild(b,this)});return a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,
|
|
||||||
!0)},domManip:function(a,b){a=jb.apply([],a);var e,c,f,g,h=0,m=this.length,n=this,p=m-1,t=a[0],v=d.isFunction(t);if(v||1<m&&"string"===typeof t&&!w.checkClone&&dc.test(t))return this.each(function(d){var e=n.eq(d);v&&(a[0]=t.call(this,d,e.html()));e.domManip(a,b)});if(m&&(g=d.buildFragment(a,this[0].ownerDocument,!1,this),e=g.firstChild,1===g.childNodes.length&&(g=e),e)){f=d.map(N(g,"script"),ia);for(c=f.length;h<m;h++)e=g,h!==p&&(e=d.clone(e,!0,!0),c&&d.merge(f,N(e,"script"))),b.call(this[h],e,h);
|
|
||||||
if(c)for(g=f[f.length-1].ownerDocument,d.map(f,A),h=0;h<c;h++)e=f[h],tb.test(e.type||"")&&!d._data(e,"globalEval")&&d.contains(g,e)&&(e.src?d._evalUrl&&d._evalUrl(e.src):d.globalEval((e.text||e.textContent||e.innerHTML||"").replace(ec,"")));g=e=null}return this}});d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(a){for(var e=0,c=[],f=d(a),g=f.length-1;e<=g;e++)a=e===g?this:this.clone(!0),d(f[e])[b](a),
|
|
||||||
Wa.apply(c,a.get());return this.pushStack(c)}});var na,hb={};(function(){var a;w.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,d,c;if((d=z.getElementsByTagName("body")[0])&&d.style)return b=z.createElement("div"),c=z.createElement("div"),c.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",d.appendChild(c).appendChild(b),"undefined"!==typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",
|
|
||||||
b.appendChild(z.createElement("div")).style.width="5px",a=3!==b.offsetWidth),d.removeChild(c),a}})();var ub=/^margin/,Ja=new RegExp("^("+Oa+")(?!px)[a-z%]+$","i"),ga,pa,fc=/^(top|right|bottom|left)$/;g.getComputedStyle?(ga=function(a){return a.ownerDocument.defaultView.opener?a.ownerDocument.defaultView.getComputedStyle(a,null):g.getComputedStyle(a,null)},pa=function(a,b,e){var c,f,g=a.style;f=(e=e||ga(a))?e.getPropertyValue(b)||e[b]:void 0;e&&(""!==f||d.contains(a.ownerDocument,a)||(f=d.style(a,
|
|
||||||
b)),Ja.test(f)&&ub.test(b)&&(a=g.width,b=g.minWidth,c=g.maxWidth,g.minWidth=g.maxWidth=g.width=f,f=e.width,g.width=a,g.minWidth=b,g.maxWidth=c));return void 0===f?f:f+""}):z.documentElement.currentStyle&&(ga=function(a){return a.currentStyle},pa=function(a,b,d){var e,c,f,g=a.style;f=(d=d||ga(a))?d[b]:void 0;null==f&&g&&g[b]&&(f=g[b]);if(Ja.test(f)&&!fc.test(b)){d=g.left;if(c=(e=a.runtimeStyle)&&e.left)e.left=a.currentStyle.left;g.left="fontSize"===b?"1em":f;f=g.pixelLeft+"px";g.left=d;c&&(e.left=
|
|
||||||
c)}return void 0===f?f:f+""||"auto"});(function(){function a(){var a,b,d,e;if((b=z.getElementsByTagName("body")[0])&&b.style){a=z.createElement("div");d=z.createElement("div");d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";b.appendChild(d).appendChild(a);a.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute";c=f=!1;m=!0;g.getComputedStyle&&
|
|
||||||
(c="1%"!==(g.getComputedStyle(a,null)||{}).top,f="4px"===(g.getComputedStyle(a,null)||{width:"4px"}).width,e=a.appendChild(z.createElement("div")),e.style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",m=!parseFloat((g.getComputedStyle(e,null)||{}).marginRight),a.removeChild(e));a.innerHTML="\x3ctable\x3e\x3ctr\x3e\x3ctd\x3e\x3c/td\x3e\x3ctd\x3et\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e";
|
|
||||||
e=a.getElementsByTagName("td");e[0].style.cssText="margin:0;border:0;padding:0;display:none";if(h=0===e[0].offsetHeight)e[0].style.display="",e[1].style.display="none",h=0===e[0].offsetHeight;b.removeChild(d)}}var b,e,c,f,h,m;b=z.createElement("div");b.innerHTML=" \x3clink/\x3e\x3ctable\x3e\x3c/table\x3e\x3ca href\x3d'/a'\x3ea\x3c/a\x3e\x3cinput type\x3d'checkbox'/\x3e";if(e=(e=b.getElementsByTagName("a")[0])&&e.style)e.cssText="float:left;opacity:.5",w.opacity="0.5"===e.opacity,w.cssFloat=!!e.cssFloat,
|
|
||||||
b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",w.clearCloneStyle="content-box"===b.style.backgroundClip,w.boxSizing=""===e.boxSizing||""===e.MozBoxSizing||""===e.WebkitBoxSizing,d.extend(w,{reliableHiddenOffsets:function(){null==h&&a();return h},boxSizingReliable:function(){null==f&&a();return f},pixelPosition:function(){null==c&&a();return c},reliableMarginRight:function(){null==m&&a();return m}})})();d.swap=function(a,b,d,c){var e,f={};for(e in b)f[e]=a.style[e],a.style[e]=
|
|
||||||
b[e];d=d.apply(a,c||[]);for(e in b)a.style[e]=f[e];return d};var $a=/alpha\([^)]*\)/i,gc=/opacity\s*=\s*([^)]*)/,hc=/^(none|table(?!-c[ea]).+)/,Kb=new RegExp("^("+Oa+")(.*)$","i"),ic=new RegExp("^([+-])\x3d("+Oa+")","i"),jc={position:"absolute",visibility:"hidden",display:"block"},vb={letterSpacing:"0",fontWeight:"400"},ib=["Webkit","O","Moz","ms"];d.extend({cssHooks:{opacity:{get:function(a,b){if(b)return a=pa(a,"opacity"),""===a?"1":a}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,
|
|
||||||
fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":w.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,e,c){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var f,k,g,h=d.camelCase(b),m=a.style;b=d.cssProps[h]||(d.cssProps[h]=Ba(m,h));g=d.cssHooks[b]||d.cssHooks[h];if(void 0!==e){if(k=typeof e,"string"===k&&(f=ic.exec(e))&&(e=(f[1]+1)*f[2]+parseFloat(d.css(a,b)),k="number"),null!=e&&e===e&&("number"!==k||d.cssNumber[h]||(e+="px"),w.clearCloneStyle||
|
|
||||||
""!==e||0!==b.indexOf("background")||(m[b]="inherit"),!(g&&"set"in g)||void 0!==(e=g.set(a,e,c))))try{m[b]=e}catch(Ac){}}else return g&&"get"in g&&void 0!==(f=g.get(a,!1,c))?f:m[b]}},css:function(a,b,e,c){var f,k;k=d.camelCase(b);b=d.cssProps[k]||(d.cssProps[k]=Ba(a.style,k));(k=d.cssHooks[b]||d.cssHooks[k])&&"get"in k&&(f=k.get(a,!0,e));void 0===f&&(f=pa(a,b,c));"normal"===f&&b in vb&&(f=vb[b]);return""===e||e?(a=parseFloat(f),!0===e||d.isNumeric(a)?a||0:f):f}});d.each(["height","width"],function(a,
|
|
||||||
b){d.cssHooks[b]={get:function(a,c,f){if(c)return hc.test(d.css(a,"display"))&&0===a.offsetWidth?d.swap(a,jc,function(){return U(a,b,f)}):U(a,b,f)},set:function(a,c,f){var e=f&&ga(a);return va(a,c,f?S(a,b,f,w.boxSizing&&"border-box"===d.css(a,"boxSizing",!1,e),e):0)}}});w.opacity||(d.cssHooks.opacity={get:function(a,b){return gc.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var e=a.style;a=a.currentStyle;var c=d.isNumeric(b)?
|
|
||||||
"alpha(opacity\x3d"+100*b+")":"",f=a&&a.filter||e.filter||"";e.zoom=1;if((1<=b||""===b)&&""===d.trim(f.replace($a,""))&&e.removeAttribute&&(e.removeAttribute("filter"),""===b||a&&!a.filter))return;e.filter=$a.test(f)?f.replace($a,c):f+" "+c}});d.cssHooks.marginRight=Fa(w.reliableMarginRight,function(a,b){if(b)return d.swap(a,{display:"inline-block"},pa,[a,"marginRight"])});d.each({margin:"",padding:"",border:"Width"},function(a,b){d.cssHooks[a+b]={expand:function(d){var e=0,c={};for(d="string"===
|
|
||||||
typeof d?d.split(" "):[d];4>e;e++)c[a+oa[e]+b]=d[e]||d[e-2]||d[0];return c}};ub.test(a)||(d.cssHooks[a+b].set=va)});d.fn.extend({css:function(a,b){return sa(this,function(a,b,c){var e,f={},k=0;if(d.isArray(b)){c=ga(a);for(e=b.length;k<e;k++)f[b[k]]=d.css(a,b[k],!1,c);return f}return void 0!==c?d.style(a,b,c):d.css(a,b)},a,b,1<arguments.length)},show:function(){return O(this,!0)},hide:function(){return O(this)},toggle:function(a){return"boolean"===typeof a?a?this.show():this.hide():this.each(function(){Ca(this)?
|
|
||||||
d(this).show():d(this).hide()})}});d.Tween=H;H.prototype={constructor:H,init:function(a,b,e,c,f,g){this.elem=a;this.prop=e;this.easing=f||"swing";this.options=b;this.start=this.now=this.cur();this.end=c;this.unit=g||(d.cssNumber[e]?"":"px")},cur:function(){var a=H.propHooks[this.prop];return a&&a.get?a.get(this):H.propHooks._default.get(this)},run:function(a){var b,e=H.propHooks[this.prop];this.pos=this.options.duration?b=d.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):
|
|
||||||
b=a;this.now=(this.end-this.start)*b+this.start;this.options.step&&this.options.step.call(this.elem,this.now,this);e&&e.set?e.set(this):H.propHooks._default.set(this);return this}};H.prototype.init.prototype=H.prototype;H.propHooks={_default:{get:function(a){return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(a=d.css(a.elem,a.prop,""))&&"auto"!==a?a:0:a.elem[a.prop]},set:function(a){if(d.fx.step[a.prop])d.fx.step[a.prop](a);else a.elem.style&&(null!=a.elem.style[d.cssProps[a.prop]]||
|
|
||||||
d.cssHooks[a.prop])?d.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}};H.propHooks.scrollTop=H.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}};d.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}};d.fx=H.prototype.init;d.fx.step={};var wa,Pa,kc=/^(?:toggle|show|hide)$/,wb=new RegExp("^(?:([+-])\x3d|)("+Oa+")([a-z%]*)$","i"),lc=/queueHooks$/,Ka=[function(a,b,e){var c,f,g,h,m,n,p=this,t={},v=a.style,y=a.nodeType&&
|
|
||||||
Ca(a),C=d._data(a,"fxshow");e.queue||(h=d._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,m=h.empty.fire,h.empty.fire=function(){h.unqueued||m()}),h.unqueued++,p.always(function(){p.always(function(){h.unqueued--;d.queue(a,"fx").length||h.empty.fire()})}));1===a.nodeType&&("height"in b||"width"in b)&&(e.overflow=[v.overflow,v.overflowX,v.overflowY],n=d.css(a,"display"),f="none"===n?d._data(a,"olddisplay")||Ea(a.nodeName):n,"inline"===f&&"none"===d.css(a,"float")&&(w.inlineBlockNeedsLayout&&"inline"!==
|
|
||||||
Ea(a.nodeName)?v.zoom=1:v.display="inline-block"));e.overflow&&(v.overflow="hidden",w.shrinkWrapBlocks()||p.always(function(){v.overflow=e.overflow[0];v.overflowX=e.overflow[1];v.overflowY=e.overflow[2]}));for(c in b)if(f=b[c],kc.exec(f)){delete b[c];g=g||"toggle"===f;if(f===(y?"hide":"show"))if("show"===f&&C&&void 0!==C[c])y=!0;else continue;t[c]=C&&C[c]||d.style(a,c)}else n=void 0;if(d.isEmptyObject(t))"inline"===("none"===n?Ea(a.nodeName):n)&&(v.display=n);else for(c in C?"hidden"in C&&(y=C.hidden):
|
|
||||||
C=d._data(a,"fxshow",{}),g&&(C.hidden=!y),y?d(a).show():p.done(function(){d(a).hide()}),p.done(function(){var b;d._removeData(a,"fxshow");for(b in t)d.style(a,b,t[b])}),t)b=da(y?C[c]:0,c,p),c in C||(C[c]=b.start,y&&(b.end=b.start,b.start="width"===c||"height"===c?1:0))}],xa={"*":[function(a,b){var e=this.createTween(a,b),c=e.cur(),f=(b=wb.exec(b))&&b[3]||(d.cssNumber[a]?"":"px"),g=(d.cssNumber[a]||"px"!==f&&+c)&&wb.exec(d.css(e.elem,a)),h=1,m=20;if(g&&g[3]!==f){f=f||g[3];b=b||[];g=+c||1;do h=h||".5",
|
|
||||||
g/=h,d.style(e.elem,a,g+f);while(h!==(h=e.cur()/c)&&1!==h&&--m)}b&&(g=e.start=+g||+c||0,e.unit=f,e.end=b[1]?g+(b[1]+1)*b[2]:+b[2]);return e}]};d.Animation=d.extend(G,{tweener:function(a,b){d.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var e,c=0,f=a.length;c<f;c++)e=a[c],xa[e]=xa[e]||[],xa[e].unshift(b)},prefilter:function(a,b){b?Ka.unshift(a):Ka.push(a)}});d.speed=function(a,b,e){var c=a&&"object"===typeof a?d.extend({},a):{complete:e||!e&&b||d.isFunction(a)&&a,duration:a,easing:e&&b||b&&!d.isFunction(b)&&
|
|
||||||
b};c.duration=d.fx.off?0:"number"===typeof c.duration?c.duration:c.duration in d.fx.speeds?d.fx.speeds[c.duration]:d.fx.speeds._default;if(null==c.queue||!0===c.queue)c.queue="fx";c.old=c.complete;c.complete=function(){d.isFunction(c.old)&&c.old.call(this);c.queue&&d.dequeue(this,c.queue)};return c};d.fn.extend({fadeTo:function(a,b,d,c){return this.filter(Ca).css("opacity",0).show().end().animate({opacity:b},a,d,c)},animate:function(a,b,e,c){var f=d.isEmptyObject(a),g=d.speed(b,e,c);b=function(){var b=
|
|
||||||
G(this,d.extend({},a),g);(f||d._data(this,"finish"))&&b.stop(!0)};b.finish=b;return f||!1===g.queue?this.each(b):this.queue(g.queue,b)},stop:function(a,b,e){var c=function(a){var b=a.stop;delete a.stop;b(e)};"string"!==typeof a&&(e=b,b=a,a=void 0);b&&!1!==a&&this.queue(a||"fx",[]);return this.each(function(){var b=!0,f=null!=a&&a+"queueHooks",g=d.timers,k=d._data(this);if(f)k[f]&&k[f].stop&&c(k[f]);else for(f in k)k[f]&&k[f].stop&&lc.test(f)&&c(k[f]);for(f=g.length;f--;)g[f].elem!==this||null!=a&&
|
|
||||||
g[f].queue!==a||(g[f].anim.stop(e),b=!1,g.splice(f,1));!b&&e||d.dequeue(this,a)})},finish:function(a){!1!==a&&(a=a||"fx");return this.each(function(){var b,e=d._data(this),c=e[a+"queue"];b=e[a+"queueHooks"];var f=d.timers,g=c?c.length:0;e.finish=!0;d.queue(this,a,[]);b&&b.stop&&b.stop.call(this,!0);for(b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)c[b]&&c[b].finish&&c[b].finish.call(this);delete e.finish})}});d.each(["toggle","show","hide"],function(a,
|
|
||||||
b){var e=d.fn[b];d.fn[b]=function(a,d,c){return null==a||"boolean"===typeof a?e.apply(this,arguments):this.animate(v(b,!0),a,d,c)}});d.each({slideDown:v("show"),slideUp:v("hide"),slideToggle:v("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,d,c){return this.animate(b,a,d,c)}});d.timers=[];d.fx.tick=function(){var a,b=d.timers,e=0;for(wa=d.now();e<b.length;e++)a=b[e],a()||b[e]!==a||b.splice(e--,1);b.length||d.fx.stop();wa=void 0};
|
|
||||||
d.fx.timer=function(a){d.timers.push(a);a()?d.fx.start():d.timers.pop()};d.fx.interval=13;d.fx.start=function(){Pa||(Pa=setInterval(d.fx.tick,d.fx.interval))};d.fx.stop=function(){clearInterval(Pa);Pa=null};d.fx.speeds={slow:600,fast:200,_default:400};d.fn.delay=function(a,b){a=d.fx?d.fx.speeds[a]||a:a;return this.queue(b||"fx",function(b,d){var e=setTimeout(b,a);d.stop=function(){clearTimeout(e)}})};(function(){var a,b,d,c,f;b=z.createElement("div");b.setAttribute("className","t");b.innerHTML=" \x3clink/\x3e\x3ctable\x3e\x3c/table\x3e\x3ca href\x3d'/a'\x3ea\x3c/a\x3e\x3cinput type\x3d'checkbox'/\x3e";
|
|
||||||
c=b.getElementsByTagName("a")[0];d=z.createElement("select");f=d.appendChild(z.createElement("option"));a=b.getElementsByTagName("input")[0];c.style.cssText="top:1px";w.getSetAttribute="t"!==b.className;w.style=/top/.test(c.getAttribute("style"));w.hrefNormalized="/a"===c.getAttribute("href");w.checkOn=!!a.value;w.optSelected=f.selected;w.enctype=!!z.createElement("form").enctype;d.disabled=!0;w.optDisabled=!f.disabled;a=z.createElement("input");a.setAttribute("value","");w.input=""===a.getAttribute("value");
|
|
||||||
a.value="t";a.setAttribute("type","radio");w.radioValue="t"===a.value})();var mc=/\r/g;d.fn.extend({val:function(a){var b,e,c,f=this[0];if(arguments.length)return c=d.isFunction(a),this.each(function(e){1===this.nodeType&&(e=c?a.call(this,e,d(this).val()):a,null==e?e="":"number"===typeof e?e+="":d.isArray(e)&&(e=d.map(e,function(a){return null==a?"":a+""})),b=d.valHooks[this.type]||d.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(f){if((b=
|
|
||||||
d.valHooks[f.type]||d.valHooks[f.nodeName.toLowerCase()])&&"get"in b&&void 0!==(e=b.get(f,"value")))return e;e=f.value;return"string"===typeof e?e.replace(mc,""):null==e?"":e}}});d.extend({valHooks:{option:{get:function(a){var b=d.find.attr(a,"value");return null!=b?b:d.trim(d.text(a))}},select:{get:function(a){for(var b,e=a.options,c=a.selectedIndex,f=(a="select-one"===a.type||0>c)?null:[],g=a?c+1:e.length,h=0>c?g:a?c:0;h<g;h++)if(b=e[h],!(!b.selected&&h!==c||(w.optDisabled?b.disabled:null!==b.getAttribute("disabled"))||
|
|
||||||
b.parentNode.disabled&&d.nodeName(b.parentNode,"optgroup"))){b=d(b).val();if(a)return b;f.push(b)}return f},set:function(a,b){for(var e,c=a.options,f=d.makeArray(b),g=c.length;g--;)if(b=c[g],0<=d.inArray(d.valHooks.option.get(b),f))try{b.selected=e=!0}catch(K){b.scrollHeight}else b.selected=!1;e||(a.selectedIndex=-1);return c}}}});d.each(["radio","checkbox"],function(){d.valHooks[this]={set:function(a,b){if(d.isArray(b))return a.checked=0<=d.inArray(d(a).val(),b)}};w.checkOn||(d.valHooks[this].get=
|
|
||||||
function(a){return null===a.getAttribute("value")?"on":a.value})});var za,xb,ka=d.expr.attrHandle,ab=/^(?:checked|selected)$/i,ta=w.getSetAttribute,Qa=w.input;d.fn.extend({attr:function(a,b){return sa(this,d.attr,a,b,1<arguments.length)},removeAttr:function(a){return this.each(function(){d.removeAttr(this,a)})}});d.extend({attr:function(a,b,e){var c,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g){if("undefined"===typeof a.getAttribute)return d.prop(a,b,e);1===g&&d.isXMLDoc(a)||(b=b.toLowerCase(),c=d.attrHooks[b]||
|
|
||||||
(d.expr.match.bool.test(b)?xb:za));if(void 0!==e)if(null===e)d.removeAttr(a,b);else{if(c&&"set"in c&&void 0!==(f=c.set(a,e,b)))return f;a.setAttribute(b,e+"");return e}else{if(c&&"get"in c&&null!==(f=c.get(a,b)))return f;f=d.find.attr(a,b);return null==f?void 0:f}}},removeAttr:function(a,b){var e,c=0,f=b&&b.match(Y);if(f&&1===a.nodeType)for(;b=f[c++];)e=d.propFix[b]||b,d.expr.match.bool.test(b)?Qa&&ta||!ab.test(b)?a[e]=!1:a[d.camelCase("default-"+b)]=a[e]=!1:d.attr(a,b,""),a.removeAttribute(ta?b:
|
|
||||||
e)},attrHooks:{type:{set:function(a,b){if(!w.radioValue&&"radio"===b&&d.nodeName(a,"input")){var e=a.value;a.setAttribute("type",b);e&&(a.value=e);return b}}}}});xb={set:function(a,b,e){!1===b?d.removeAttr(a,e):Qa&&ta||!ab.test(e)?a.setAttribute(!ta&&d.propFix[e]||e,e):a[d.camelCase("default-"+e)]=a[e]=!0;return e}};d.each(d.expr.match.bool.source.match(/\w+/g),function(a,b){var e=ka[b]||d.find.attr;ka[b]=Qa&&ta||!ab.test(b)?function(a,b,d){var c,f;d||(f=ka[b],ka[b]=c,c=null!=e(a,b,d)?b.toLowerCase():
|
|
||||||
null,ka[b]=f);return c}:function(a,b,e){if(!e)return a[d.camelCase("default-"+b)]?b.toLowerCase():null}});Qa&&ta||(d.attrHooks.value={set:function(a,b,e){if(d.nodeName(a,"input"))a.defaultValue=b;else return za&&za.set(a,b,e)}});ta||(za={set:function(a,b,d){var e=a.getAttributeNode(d);e||a.setAttributeNode(e=a.ownerDocument.createAttribute(d));e.value=b+="";if("value"===d||b===a.getAttribute(d))return b}},ka.id=ka.name=ka.coords=function(a,b,d){var e;if(!d)return(e=a.getAttributeNode(b))&&""!==e.value?
|
|
||||||
e.value:null},d.valHooks.button={get:function(a,b){if((a=a.getAttributeNode(b))&&a.specified)return a.value},set:za.set},d.attrHooks.contenteditable={set:function(a,b,d){za.set(a,""===b?!1:b,d)}},d.each(["width","height"],function(a,b){d.attrHooks[b]={set:function(a,d){if(""===d)return a.setAttribute(b,"auto"),d}}}));w.style||(d.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var nc=/^(?:input|select|textarea|button|object)$/i,oc=/^(?:a|area)$/i;
|
|
||||||
d.fn.extend({prop:function(a,b){return sa(this,d.prop,a,b,1<arguments.length)},removeProp:function(a){a=d.propFix[a]||a;return this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}});d.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,e){var c,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return 1===g&&d.isXMLDoc(a)||(b=d.propFix[b]||b,f=d.propHooks[b]),void 0!==e?f&&"set"in f&&void 0!==(c=f.set(a,e,b))?c:a[b]=e:f&&"get"in f&&null!==(c=f.get(a,b))?c:a[b]},propHooks:{tabIndex:{get:function(a){var b=
|
|
||||||
d.find.attr(a,"tabindex");return b?parseInt(b,10):nc.test(a.nodeName)||oc.test(a.nodeName)&&a.href?0:-1}}}});w.hrefNormalized||d.each(["href","src"],function(a,b){d.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}});w.optSelected||(d.propHooks.selected={get:function(a){if(a=a.parentNode)a.selectedIndex,a.parentNode&&a.parentNode.selectedIndex;return null}});d.each("tabIndex readOnly maxLength cellSpacing cellPadding rowSpan colSpan useMap frameBorder contentEditable".split(" "),function(){d.propFix[this.toLowerCase()]=
|
|
||||||
this});w.enctype||(d.propFix.enctype="encoding");var bb=/[\t\r\n\f]/g;d.fn.extend({addClass:function(a){var b,e,c,f,g,h=0,m=this.length;b="string"===typeof a&&a;if(d.isFunction(a))return this.each(function(b){d(this).addClass(a.call(this,b,this.className))});if(b)for(b=(a||"").match(Y)||[];h<m;h++)if(e=this[h],c=1===e.nodeType&&(e.className?(" "+e.className+" ").replace(bb," "):" ")){for(g=0;f=b[g++];)0>c.indexOf(" "+f+" ")&&(c+=f+" ");c=d.trim(c);e.className!==c&&(e.className=c)}return this},removeClass:function(a){var b,
|
|
||||||
e,c,f,g,h=0,m=this.length;b=0===arguments.length||"string"===typeof a&&a;if(d.isFunction(a))return this.each(function(b){d(this).removeClass(a.call(this,b,this.className))});if(b)for(b=(a||"").match(Y)||[];h<m;h++)if(e=this[h],c=1===e.nodeType&&(e.className?(" "+e.className+" ").replace(bb," "):"")){for(g=0;f=b[g++];)for(;0<=c.indexOf(" "+f+" ");)c=c.replace(" "+f+" "," ");c=a?d.trim(c):"";e.className!==c&&(e.className=c)}return this},toggleClass:function(a,b){var e=typeof a;return"boolean"===typeof b&&
|
|
||||||
"string"===e?b?this.addClass(a):this.removeClass(a):d.isFunction(a)?this.each(function(e){d(this).toggleClass(a.call(this,e,this.className,b),b)}):this.each(function(){if("string"===e)for(var b,c=0,f=d(this),g=a.match(Y)||[];b=g[c++];)f.hasClass(b)?f.removeClass(b):f.addClass(b);else if("undefined"===e||"boolean"===e)this.className&&d._data(this,"__className__",this.className),this.className=this.className||!1===a?"":d._data(this,"__className__")||""})},hasClass:function(a){a=" "+a+" ";for(var b=
|
|
||||||
0,d=this.length;b<d;b++)if(1===this[b].nodeType&&0<=(" "+this[b].className+" ").replace(bb," ").indexOf(a))return!0;return!1}});d.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){d.fn[b]=function(a,d){return 0<arguments.length?this.on(b,null,a,d):this.trigger(b)}});d.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||
|
|
||||||
a)},bind:function(a,b,d){return this.on(a,null,b,d)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,d,c){return this.on(b,a,d,c)},undelegate:function(a,b,d){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",d)}});var cb=d.now(),db=/\?/,pc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;d.parseJSON=function(a){if(g.JSON&&g.JSON.parse)return g.JSON.parse(a+"");var b,e=null,c=d.trim(a+
|
|
||||||
"");return c&&!d.trim(c.replace(pc,function(a,d,c,f){b&&d&&(e=0);if(0===e)return a;b=c||d;e+=!f-!c;return""}))?Function("return "+c)():d.error("Invalid JSON: "+a)};d.parseXML=function(a){var b,c;if(!a||"string"!==typeof a)return null;try{g.DOMParser?(c=new DOMParser,b=c.parseFromString(a,"text/xml")):(b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a))}catch(k){b=void 0}b&&b.documentElement&&!b.getElementsByTagName("parsererror").length||d.error("Invalid XML: "+a);return b};var ua,
|
|
||||||
la,qc=/#.*$/,yb=/([?&])_=[^&]*/,rc=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,sc=/^(?:GET|HEAD)$/,tc=/^\/\//,zb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ab={},Va={},Bb="*/".concat("*");try{la=location.href}catch(a){la=z.createElement("a"),la.href="",la=la.href}ua=zb.exec(la.toLowerCase())||[];d.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:la,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(ua[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset\x3dUTF-8",
|
|
||||||
accepts:{"*":Bb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?L(L(a,d.ajaxSettings),b):L(d.ajaxSettings,a)},ajaxPrefilter:C(Ab),ajaxTransport:C(Va),ajax:function(a,
|
|
||||||
b){function c(a,b,c,e){var f,k,l,u;u=b;if(2!==L){L=2;m&&clearTimeout(m);v=void 0;h=e||"";B.readyState=0<a?4:0;e=200<=a&&300>a||304===a;if(c){l=t;for(var p=B,I,z,r,D,G=l.contents,K=l.dataTypes;"*"===K[0];)K.shift(),void 0===z&&(z=l.mimeType||p.getResponseHeader("Content-Type"));if(z)for(D in G)if(G[D]&&G[D].test(z)){K.unshift(D);break}if(K[0]in c)r=K[0];else{for(D in c){if(!K[0]||l.converters[D+" "+K[0]]){r=D;break}I||(I=D)}r=r||I}r?(r!==K[0]&&K.unshift(r),l=c[r]):l=void 0}a:{c=t;I=l;z=B;r=e;var P,
|
|
||||||
O,F,p={},G=c.dataTypes.slice();if(G[1])for(O in c.converters)p[O.toLowerCase()]=c.converters[O];for(D=G.shift();D;)if(c.responseFields[D]&&(z[c.responseFields[D]]=I),!F&&r&&c.dataFilter&&(I=c.dataFilter(I,c.dataType)),F=D,D=G.shift())if("*"===D)D=F;else if("*"!==F&&F!==D){O=p[F+" "+D]||p["* "+D];if(!O)for(P in p)if(l=P.split(" "),l[1]===D&&(O=p[F+" "+l[0]]||p["* "+l[0]])){!0===O?O=p[P]:!0!==p[P]&&(D=l[0],G.unshift(l[1]));break}if(!0!==O)if(O&&c["throws"])I=O(I);else try{I=O(I)}catch(Tb){l={state:"parsererror",
|
|
||||||
error:O?Tb:"No conversion from "+F+" to "+D};break a}}l={state:"success",data:I}}if(e)t.ifModified&&((u=B.getResponseHeader("Last-Modified"))&&(d.lastModified[g]=u),(u=B.getResponseHeader("etag"))&&(d.etag[g]=u)),204===a||"HEAD"===t.type?u="nocontent":304===a?u="notmodified":(u=l.state,f=l.data,k=l.error,e=!k);else if(k=u,a||!u)u="error",0>a&&(a=0);B.status=a;B.statusText=(b||u)+"";e?w.resolveWith(y,[f,u,B]):w.rejectWith(y,[B,u,k]);B.statusCode(da);da=void 0;n&&C.trigger(e?"ajaxSuccess":"ajaxError",
|
|
||||||
[B,t,e?f:k]);A.fireWith(y,[B,u]);n&&(C.trigger("ajaxComplete",[B,t]),--d.active||d.event.trigger("ajaxStop"))}}"object"===typeof a&&(b=a,a=void 0);b=b||{};var f,g,h,m,n,v,p,t=d.ajaxSetup({},b),y=t.context||t,C=t.context&&(y.nodeType||y.jquery)?d(y):d.event,w=d.Deferred(),A=d.Callbacks("once memory"),da=t.statusCode||{},I={},z={},L=0,r="canceled",B={readyState:0,getResponseHeader:function(a){var b;if(2===L){if(!p)for(p={};b=rc.exec(h);)p[b[1].toLowerCase()]=b[2];b=p[a.toLowerCase()]}return null==b?
|
|
||||||
null:b},getAllResponseHeaders:function(){return 2===L?h:null},setRequestHeader:function(a,b){var d=a.toLowerCase();L||(a=z[d]=z[d]||a,I[a]=b);return this},overrideMimeType:function(a){L||(t.mimeType=a);return this},statusCode:function(a){var b;if(a)if(2>L)for(b in a)da[b]=[da[b],a[b]];else B.always(a[B.status]);return this},abort:function(a){a=a||r;v&&v.abort(a);c(0,a);return this}};w.promise(B).complete=A.add;B.success=B.done;B.error=B.fail;t.url=((a||t.url||la)+"").replace(qc,"").replace(tc,ua[1]+
|
|
||||||
"//");t.type=b.method||b.type||t.method||t.type;t.dataTypes=d.trim(t.dataType||"*").toLowerCase().match(Y)||[""];null==t.crossDomain&&(a=zb.exec(t.url.toLowerCase()),t.crossDomain=!(!a||a[1]===ua[1]&&a[2]===ua[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(ua[3]||("http:"===ua[1]?"80":"443"))));t.data&&t.processData&&"string"!==typeof t.data&&(t.data=d.param(t.data,t.traditional));D(Ab,t,b,B);if(2===L)return B;(n=d.event&&t.global)&&0===d.active++&&d.event.trigger("ajaxStart");t.type=t.type.toUpperCase();
|
|
||||||
t.hasContent=!sc.test(t.type);g=t.url;t.hasContent||(t.data&&(g=t.url+=(db.test(g)?"\x26":"?")+t.data,delete t.data),!1===t.cache&&(t.url=yb.test(g)?g.replace(yb,"$1_\x3d"+cb++):g+(db.test(g)?"\x26":"?")+"_\x3d"+cb++));t.ifModified&&(d.lastModified[g]&&B.setRequestHeader("If-Modified-Since",d.lastModified[g]),d.etag[g]&&B.setRequestHeader("If-None-Match",d.etag[g]));(t.data&&t.hasContent&&!1!==t.contentType||b.contentType)&&B.setRequestHeader("Content-Type",t.contentType);B.setRequestHeader("Accept",
|
|
||||||
t.dataTypes[0]&&t.accepts[t.dataTypes[0]]?t.accepts[t.dataTypes[0]]+("*"!==t.dataTypes[0]?", "+Bb+"; q\x3d0.01":""):t.accepts["*"]);for(f in t.headers)B.setRequestHeader(f,t.headers[f]);if(t.beforeSend&&(!1===t.beforeSend.call(y,B,t)||2===L))return B.abort();r="abort";for(f in{success:1,error:1,complete:1})B[f](t[f]);if(v=D(Va,t,b,B)){B.readyState=1;n&&C.trigger("ajaxSend",[B,t]);t.async&&0<t.timeout&&(m=setTimeout(function(){B.abort("timeout")},t.timeout));try{L=1,v.send(I,c)}catch(F){if(2>L)c(-1,
|
|
||||||
F);else throw F;}}else c(-1,"No Transport");return B},getJSON:function(a,b,c){return d.get(a,b,c,"json")},getScript:function(a,b){return d.get(a,void 0,b,"script")}});d.each(["get","post"],function(a,b){d[b]=function(a,c,f,g){d.isFunction(c)&&(g=g||f,f=c,c=void 0);return d.ajax({url:a,type:b,dataType:g,data:c,success:f})}});d._evalUrl=function(a){return d.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})};d.fn.extend({wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,
|
|
||||||
b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var a=this;a.firstChild&&1===a.firstChild.nodeType;)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return d.isFunction(a)?this.each(function(b){d(this).wrapInner(a.call(this,b))}):this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=d.isFunction(a);return this.each(function(c){d(this).wrapAll(b?
|
|
||||||
a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()}});d.expr.filters.hidden=function(a){return 0>=a.offsetWidth&&0>=a.offsetHeight||!w.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||d.css(a,"display"))};d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)};var uc=/%20/g,Nb=/\[\]$/,Cb=/\r?\n/g,vc=/^(?:submit|button|image|reset|file)$/i,wc=/^(?:input|select|textarea|keygen)/i;d.param=
|
|
||||||
function(a,b){var c,f=[],g=function(a,b){b=d.isFunction(b)?b():null==b?"":b;f[f.length]=encodeURIComponent(a)+"\x3d"+encodeURIComponent(b)};void 0===b&&(b=d.ajaxSettings&&d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){g(this.name,this.value)});else for(c in a)ea(c,a[c],b,g);return f.join("\x26").replace(uc,"+")};d.fn.extend({serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=d.prop(this,
|
|
||||||
"elements");return a?d.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!d(this).is(":disabled")&&wc.test(this.nodeName)&&!vc.test(a)&&(this.checked||!Ua.test(a))}).map(function(a,b){a=d(this).val();return null==a?null:d.isArray(a)?d.map(a,function(a){return{name:b.name,value:a.replace(Cb,"\r\n")}}):{name:b.name,value:a.replace(Cb,"\r\n")}}).get()}});d.ajaxSettings.xhr=void 0!==g.ActiveXObject?function(){var a;if(!(a=!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&
|
|
||||||
La()))a:{try{a=new g.ActiveXObject("Microsoft.XMLHTTP");break a}catch(b){}a=void 0}return a}:La;var xc=0,Ra={},Sa=d.ajaxSettings.xhr();g.attachEvent&&g.attachEvent("onunload",function(){for(var a in Ra)Ra[a](void 0,!0)});w.cors=!!Sa&&"withCredentials"in Sa;(Sa=w.ajax=!!Sa)&&d.ajaxTransport(function(a){if(!a.crossDomain||w.cors){var b;return{send:function(c,f){var e,g=a.xhr(),k=++xc;g.open(a.type,a.url,a.async,a.username,a.password);if(a.xhrFields)for(e in a.xhrFields)g[e]=a.xhrFields[e];a.mimeType&&
|
|
||||||
g.overrideMimeType&&g.overrideMimeType(a.mimeType);a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&g.setRequestHeader(e,c[e]+"");g.send(a.hasContent&&a.data||null);b=function(c,e){var h,l,m;if(b&&(e||4===g.readyState))if(delete Ra[k],b=void 0,g.onreadystatechange=d.noop,e)4!==g.readyState&&g.abort();else{m={};h=g.status;"string"===typeof g.responseText&&(m.text=g.responseText);try{l=g.statusText}catch(Mb){l=""}h||!a.isLocal||a.crossDomain?1223===
|
|
||||||
h&&(h=204):h=m.text?200:404}m&&f(h,l,m,g.getAllResponseHeaders())};a.async?4===g.readyState?setTimeout(b):g.onreadystatechange=Ra[k]=b:b()},abort:function(){b&&b(void 0,!0)}}}});d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){d.globalEval(a);return a}}});d.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1);a.crossDomain&&(a.type="GET",
|
|
||||||
a.global=!1)});d.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||d("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script");b.async=!0;a.scriptCharset&&(b.charset=a.scriptCharset);b.src=a.url;b.onload=b.onreadystatechange=function(a,d){if(d||!b.readyState||/loaded|complete/.test(b.readyState))b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,d||e(200,"success")};c.insertBefore(b,c.firstChild)},abort:function(){if(b)b.onload(void 0,
|
|
||||||
!0)}}}});var Db=[],eb=/(=)\?(?=&|$)|\?\?/;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Db.pop()||d.expando+"_"+cb++;this[a]=!0;return a}});d.ajaxPrefilter("json jsonp",function(a,b,c){var e,f,h,m=!1!==a.jsonp&&(eb.test(a.url)?"url":"string"===typeof a.data&&!(a.contentType||"").indexOf("application/x-www-form-urlencoded")&&eb.test(a.data)&&"data");if(m||"jsonp"===a.dataTypes[0])return e=a.jsonpCallback=d.isFunction(a.jsonpCallback)?a.jsonpCallback():a.jsonpCallback,m?a[m]=a[m].replace(eb,
|
|
||||||
"$1"+e):!1!==a.jsonp&&(a.url+=(db.test(a.url)?"\x26":"?")+a.jsonp+"\x3d"+e),a.converters["script json"]=function(){h||d.error(e+" was not called");return h[0]},a.dataTypes[0]="json",f=g[e],g[e]=function(){h=arguments},c.always(function(){g[e]=f;a[e]&&(a.jsonpCallback=b.jsonpCallback,Db.push(e));h&&d.isFunction(f)&&f(h[0]);h=f=void 0}),"script"});d.parseHTML=function(a,b,c){if(!a||"string"!==typeof a)return null;"boolean"===typeof b&&(c=b,b=!1);b=b||z;var e=mb.exec(a);c=!c&&[];if(e)return[b.createElement(e[1])];
|
|
||||||
e=d.buildFragment([a],b,c);c&&c.length&&d(c).remove();return d.merge([],e.childNodes)};var Eb=d.fn.load;d.fn.load=function(a,b,c){if("string"!==typeof a&&Eb)return Eb.apply(this,arguments);var e,f,g,h=this,m=a.indexOf(" ");0<=m&&(e=d.trim(a.slice(m,a.length)),a=a.slice(0,m));d.isFunction(b)?(c=b,b=void 0):b&&"object"===typeof b&&(g="POST");0<h.length&&d.ajax({url:a,type:g,dataType:"html",data:b}).done(function(a){f=arguments;h.html(e?d("\x3cdiv\x3e").append(d.parseHTML(a)).find(e):a)}).complete(c&&
|
|
||||||
function(a,b){h.each(c,f||[a.responseText,b,a])});return this};d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.on(b,a)}});d.expr.filters.animated=function(a){return d.grep(d.timers,function(b){return a===b.elem}).length};var Fb=g.document.documentElement;d.offset={setOffset:function(a,b,c){var e,f,g,h=d.css(a,"position"),m=d(a),n={};"static"===h&&(a.style.position="relative");g=m.offset();f=d.css(a,"top");e=d.css(a,"left");
|
|
||||||
("absolute"===h||"fixed"===h)&&-1<d.inArray("auto",[f,e])?(e=m.position(),f=e.top,e=e.left):(f=parseFloat(f)||0,e=parseFloat(e)||0);d.isFunction(b)&&(b=b.call(a,c,g));null!=b.top&&(n.top=b.top-g.top+f);null!=b.left&&(n.left=b.left-g.left+e);"using"in b?b.using.call(a,n):m.css(n)}};d.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){d.offset.setOffset(this,a,b)});var b,c,f={top:0,left:0},g=(c=this[0])&&c.ownerDocument;if(g){b=g.documentElement;if(!d.contains(b,
|
|
||||||
c))return f;"undefined"!==typeof c.getBoundingClientRect&&(f=c.getBoundingClientRect());c=Ga(g);return{top:f.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:f.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}}},position:function(){if(this[0]){var a,b,c={top:0,left:0},f=this[0];"fixed"===d.css(f,"position")?b=f.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),d.nodeName(a[0],"html")||(c=a.offset()),c.top+=d.css(a[0],"borderTopWidth",!0),c.left+=d.css(a[0],"borderLeftWidth",
|
|
||||||
!0));return{top:b.top-c.top-d.css(f,"marginTop",!0),left:b.left-c.left-d.css(f,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||Fb;a&&!d.nodeName(a,"html")&&"static"===d.css(a,"position");)a=a.offsetParent;return a||Fb})}});d.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);d.fn[a]=function(e){return sa(this,function(a,e,f){var g=Ga(a);if(void 0===f)return g?b in g?g[b]:g.document.documentElement[e]:a[e];g?g.scrollTo(c?
|
|
||||||
d(g).scrollLeft():f,c?f:d(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}});d.each(["top","left"],function(a,b){d.cssHooks[b]=Fa(w.pixelPosition,function(a,c){if(c)return c=pa(a,b),Ja.test(c)?d(a).position()[b]+"px":c})});d.each({Height:"height",Width:"width"},function(a,b){d.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,f){d.fn[f]=function(e,f){var g=arguments.length&&(c||"boolean"!==typeof e),h=c||(!0===e||!0===f?"margin":"border");return sa(this,function(b,c,e){return d.isWindow(b)?
|
|
||||||
b.document.documentElement["client"+a]:9===b.nodeType?(c=b.documentElement,Math.max(b.body["scroll"+a],c["scroll"+a],b.body["offset"+a],c["offset"+a],c["client"+a])):void 0===e?d.css(b,c,h):d.style(b,c,e,h)},b,g?e:void 0,g,null)}})});d.fn.size=function(){return this.length};d.fn.andSelf=d.fn.addBack;"function"===typeof define&&define.amd&&define("jquery",[],function(){return d});var yc=g.jQuery,zc=g.$;d.noConflict=function(a){g.$===d&&(g.$=zc);a&&g.jQuery===d&&(g.jQuery=yc);return d};"undefined"===
|
|
||||||
typeof p&&(g.jQuery=g.$=d);return d});!function(g){g(function(){var p=g.support,x;a:{x=document.createElement("bootstrap");var c={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},f;for(f in c)if(void 0!==x.style[f]){x=c[f];break a}x=void 0}p.transition=x&&{end:x}})}(window.jQuery);
|
|
||||||
!function(g){var p=function(c){g(c).on("click",'[data-dismiss\x3d"alert"]',this.close)};p.prototype.close=function(c){function f(){n.trigger("closed").remove()}var h=g(this),m=h.attr("data-target"),n;m||(m=(m=h.attr("href"))&&m.replace(/.*(?=#[^\s]*$)/,""));n=g(m);c&&c.preventDefault();n.length||(n=h.hasClass("alert")?h:h.parent());n.trigger(c=g.Event("close"));c.isDefaultPrevented()||(n.removeClass("in"),g.support.transition&&n.hasClass("fade")?n.on(g.support.transition.end,f):f())};var x=g.fn.alert;
|
|
||||||
g.fn.alert=function(c){return this.each(function(){var f=g(this),h=f.data("alert");h||f.data("alert",h=new p(this));"string"==typeof c&&h[c].call(f)})};g.fn.alert.Constructor=p;g.fn.alert.noConflict=function(){g.fn.alert=x;return this};g(document).on("click.alert.data-api",'[data-dismiss\x3d"alert"]',p.prototype.close)}(window.jQuery);
|
|
||||||
!function(g){var p=function(c,f){this.$element=g(c);this.options=g.extend({},g.fn.button.defaults,f)};p.prototype.setState=function(c){var f=this.$element,g=f.data(),m=f.is("input")?"val":"html";c+="Text";g.resetText||f.data("resetText",f[m]());f[m](g[c]||this.options[c]);setTimeout(function(){"loadingText"==c?f.addClass("disabled").attr("disabled","disabled"):f.removeClass("disabled").removeAttr("disabled")},0)};p.prototype.toggle=function(){var c=this.$element.closest('[data-toggle\x3d"buttons-radio"]');
|
|
||||||
c&&c.find(".active").removeClass("active");this.$element.toggleClass("active")};var x=g.fn.button;g.fn.button=function(c){return this.each(function(){var f=g(this),h=f.data("button"),m="object"==typeof c&&c;h||f.data("button",h=new p(this,m));"toggle"==c?h.toggle():c&&h.setState(c)})};g.fn.button.defaults={loadingText:"loading..."};g.fn.button.Constructor=p;g.fn.button.noConflict=function(){g.fn.button=x;return this};g(document).on("click.button.data-api","[data-toggle^\x3dbutton]",function(c){c=
|
|
||||||
g(c.target);c.hasClass("btn")||(c=c.closest(".btn"));c.button("toggle")})}(window.jQuery);
|
|
||||||
!function(g){var p=function(c,f){this.$element=g(c);this.$indicators=this.$element.find(".carousel-indicators");this.options=f;"hover"==this.options.pause&&this.$element.on("mouseenter",g.proxy(this.pause,this)).on("mouseleave",g.proxy(this.cycle,this))};p.prototype={cycle:function(c){c||(this.paused=!1);this.interval&&clearInterval(this.interval);this.options.interval&&!this.paused&&(this.interval=setInterval(g.proxy(this.next,this),this.options.interval));return this},getActiveIndex:function(){this.$active=
|
|
||||||
this.$element.find(".item.active");this.$items=this.$active.parent().children();return this.$items.index(this.$active)},to:function(c){var f=this.getActiveIndex(),h=this;if(!(c>this.$items.length-1||0>c))return this.sliding?this.$element.one("slid",function(){h.to(c)}):f==c?this.pause().cycle():this.slide(c>f?"next":"prev",g(this.$items[c]))},pause:function(c){c||(this.paused=!0);this.$element.find(".next, .prev").length&&g.support.transition.end&&(this.$element.trigger(g.support.transition.end),
|
|
||||||
this.cycle(!0));clearInterval(this.interval);this.interval=null;return this},next:function(){if(!this.sliding)return this.slide("next")},prev:function(){if(!this.sliding)return this.slide("prev")},slide:function(c,f){var h=this.$element.find(".item.active"),m=f||h[c]();f=this.interval;var n="next"==c?"left":"right",p="next"==c?"first":"last",r=this;this.sliding=!0;f&&this.pause();m=m.length?m:this.$element.find(".item")[p]();p=g.Event("slide",{relatedTarget:m[0],direction:n});if(!m.hasClass("active")){this.$indicators.length&&
|
|
||||||
(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var c=g(r.$indicators.children()[r.getActiveIndex()]);c&&c.addClass("active")}));if(g.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(p);if(p.isDefaultPrevented())return;m.addClass(c);m[0].offsetWidth;h.addClass(n);m.addClass(n);this.$element.one(g.support.transition.end,function(){m.removeClass([c,n].join(" ")).addClass("active");h.removeClass(["active",n].join(" "));r.sliding=!1;
|
|
||||||
setTimeout(function(){r.$element.trigger("slid")},0)})}else{this.$element.trigger(p);if(p.isDefaultPrevented())return;h.removeClass("active");m.addClass("active");this.sliding=!1;this.$element.trigger("slid")}f&&this.cycle();return this}}};var x=g.fn.carousel;g.fn.carousel=function(c){return this.each(function(){var f=g(this),h=f.data("carousel"),m=g.extend({},g.fn.carousel.defaults,"object"==typeof c&&c),n="string"==typeof c?c:m.slide;h||f.data("carousel",h=new p(this,m));if("number"==typeof c)h.to(c);
|
|
||||||
else if(n)h[n]();else m.interval&&h.pause().cycle()})};g.fn.carousel.defaults={interval:5E3,pause:"hover"};g.fn.carousel.Constructor=p;g.fn.carousel.noConflict=function(){g.fn.carousel=x;return this};g(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(c){var f=g(this),h,m=g(f.attr("data-target")||(h=f.attr("href"))&&h.replace(/.*(?=#[^\s]+$)/,""));h=g.extend({},m.data(),f.data());var n;m.carousel(h);(n=f.attr("data-slide-to"))&&m.data("carousel").pause().to(n).cycle();
|
|
||||||
c.preventDefault()})}(window.jQuery);
|
|
||||||
!function(g){var p=function(c,f){this.$element=g(c);this.options=g.extend({},g.fn.collapse.defaults,f);this.options.parent&&(this.$parent=g(this.options.parent));this.options.toggle&&this.toggle()};p.prototype={constructor:p,dimension:function(){return this.$element.hasClass("width")?"width":"height"},show:function(){var c,f,h,m;if(!this.transitioning&&!this.$element.hasClass("in")){c=this.dimension();f=g.camelCase(["scroll",c].join("-"));if((h=this.$parent&&this.$parent.find("\x3e .accordion-group \x3e .in"))&&h.length){if((m=
|
|
||||||
h.data("collapse"))&&m.transitioning)return;h.collapse("hide");m||h.data("collapse",null)}this.$element[c](0);this.transition("addClass",g.Event("show"),"shown");g.support.transition&&this.$element[c](this.$element[0][f])}},hide:function(){var c;!this.transitioning&&this.$element.hasClass("in")&&(c=this.dimension(),this.reset(this.$element[c]()),this.transition("removeClass",g.Event("hide"),"hidden"),this.$element[c](0))},reset:function(c){var f=this.dimension();this.$element.removeClass("collapse")[f](c||
|
|
||||||
"auto")[0].offsetWidth;this.$element[null!==c?"addClass":"removeClass"]("collapse");return this},transition:function(c,f,h){var m=this,n=function(){"show"==f.type&&m.reset();m.transitioning=0;m.$element.trigger(h)};this.$element.trigger(f);f.isDefaultPrevented()||(this.transitioning=1,this.$element[c]("in"),g.support.transition&&this.$element.hasClass("collapse")?this.$element.one(g.support.transition.end,n):n())},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var x=g.fn.collapse;
|
|
||||||
g.fn.collapse=function(c){return this.each(function(){var f=g(this),h=f.data("collapse"),m=g.extend({},g.fn.collapse.defaults,f.data(),"object"==typeof c&&c);h||f.data("collapse",h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.collapse.defaults={toggle:!0};g.fn.collapse.Constructor=p;g.fn.collapse.noConflict=function(){g.fn.collapse=x;return this};g(document).on("click.collapse.data-api","[data-toggle\x3dcollapse]",function(c){var f=g(this),h;c=f.attr("data-target")||c.preventDefault()||(h=
|
|
||||||
f.attr("href"))&&h.replace(/.*(?=#[^\s]+$)/,"");h=g(c).data("collapse")?"toggle":f.data();f[g(c).hasClass("in")?"addClass":"removeClass"]("collapsed");g(c).collapse(h)})}(window.jQuery);
|
|
||||||
!function(g){function p(){g(".dropdown-backdrop").remove();g("[data-toggle\x3ddropdown]").each(function(){x(g(this)).removeClass("open")})}function x(c){var f=c.attr("data-target");f||(f=(f=c.attr("href"))&&/#/.test(f)&&f.replace(/.*(?=#[^\s]*$)/,""));(f=f&&g(f))&&f.length||(f=c.parent());return f}var c=function(c){var f=g(c).on("click.dropdown.data-api",this.toggle);g("html").on("click.dropdown.data-api",function(){f.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(c){c=
|
|
||||||
g(this);var f,h;if(!c.is(".disabled, :disabled")){f=x(c);h=f.hasClass("open");p();if(!h){if("ontouchstart"in document.documentElement)g('\x3cdiv class\x3d"dropdown-backdrop"/\x3e').insertBefore(g(this)).on("click",p);f.toggleClass("open")}c.focus();return!1}},keydown:function(c){var f,h,p;if(/(38|40|27)/.test(c.keyCode)&&(f=g(this),c.preventDefault(),c.stopPropagation(),!f.is(".disabled, :disabled"))){h=x(f);p=h.hasClass("open");if(!p||p&&27==c.keyCode)return 27==c.which&&h.find("[data-toggle\x3ddropdown]").focus(),
|
|
||||||
f.click();f=g("[role\x3dmenu] li:not(.divider):visible a",h);f.length&&(h=f.index(f.filter(":focus")),38==c.keyCode&&0<h&&h--,40==c.keyCode&&h<f.length-1&&h++,~h||(h=0),f.eq(h).focus())}}};var f=g.fn.dropdown;g.fn.dropdown=function(f){return this.each(function(){var h=g(this),n=h.data("dropdown");n||h.data("dropdown",n=new c(this));"string"==typeof f&&n[f].call(h)})};g.fn.dropdown.Constructor=c;g.fn.dropdown.noConflict=function(){g.fn.dropdown=f;return this};g(document).on("click.dropdown.data-api",
|
|
||||||
p).on("click.dropdown.data-api",".dropdown form",function(c){c.stopPropagation()}).on("click.dropdown.data-api","[data-toggle\x3ddropdown]",c.prototype.toggle).on("keydown.dropdown.data-api","[data-toggle\x3ddropdown], [role\x3dmenu]",c.prototype.keydown)}(window.jQuery);
|
|
||||||
!function(g){var p=function(c,f){this.options=f;this.$element=g(c).delegate('[data-dismiss\x3d"modal"]',"click.dismiss.modal",g.proxy(this.hide,this));this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};p.prototype={constructor:p,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var c=this,f=g.Event("show");this.$element.trigger(f);this.isShown||f.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.backdrop(function(){var f=g.support.transition&&
|
|
||||||
c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body);c.$element.show();f&&c.$element[0].offsetWidth;c.$element.addClass("in").attr("aria-hidden",!1);c.enforceFocus();f?c.$element.one(g.support.transition.end,function(){c.$element.focus().trigger("shown")}):c.$element.focus().trigger("shown")}))},hide:function(c){c&&c.preventDefault();c=g.Event("hide");this.$element.trigger(c);this.isShown&&!c.isDefaultPrevented()&&(this.isShown=!1,this.escape(),g(document).off("focusin.modal"),
|
|
||||||
this.$element.removeClass("in").attr("aria-hidden",!0),g.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal())},enforceFocus:function(){var c=this;g(document).on("focusin.modal",function(f){c.$element[0]===f.target||c.$element.has(f.target).length||c.$element.focus()})},escape:function(){var c=this;if(this.isShown&&this.options.keyboard)this.$element.on("keyup.dismiss.modal",function(f){27==f.which&&c.hide()});else this.isShown||this.$element.off("keyup.dismiss.modal")},
|
|
||||||
hideWithTransition:function(){var c=this,f=setTimeout(function(){c.$element.off(g.support.transition.end);c.hideModal()},500);this.$element.one(g.support.transition.end,function(){clearTimeout(f);c.hideModal()})},hideModal:function(){var c=this;this.$element.hide();this.backdrop(function(){c.removeBackdrop();c.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove();this.$backdrop=null},backdrop:function(c){var f=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&
|
|
||||||
this.options.backdrop){var h=g.support.transition&&f;this.$backdrop=g('\x3cdiv class\x3d"modal-backdrop '+f+'" /\x3e').appendTo(document.body);this.$backdrop.click("static"==this.options.backdrop?g.proxy(this.$element[0].focus,this.$element[0]):g.proxy(this.hide,this));h&&this.$backdrop[0].offsetWidth;this.$backdrop.addClass("in");c&&(h?this.$backdrop.one(g.support.transition.end,c):c())}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),g.support.transition&&this.$element.hasClass("fade")?
|
|
||||||
this.$backdrop.one(g.support.transition.end,c):c()):c&&c()}};var x=g.fn.modal;g.fn.modal=function(c){return this.each(function(){var f=g(this),h=f.data("modal"),m=g.extend({},g.fn.modal.defaults,f.data(),"object"==typeof c&&c);h||f.data("modal",h=new p(this,m));if("string"==typeof c)h[c]();else m.show&&h.show()})};g.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0};g.fn.modal.Constructor=p;g.fn.modal.noConflict=function(){g.fn.modal=x;return this};g(document).on("click.modal.data-api",'[data-toggle\x3d"modal"]',
|
|
||||||
function(c){var f=g(this),h=f.attr("href"),m=g(f.attr("data-target")||h&&h.replace(/.*(?=#[^\s]+$)/,"")),h=m.data("modal")?"toggle":g.extend({remote:!/#/.test(h)&&h},m.data(),f.data());c.preventDefault();m.modal(h).one("hide",function(){f.focus()})})}(window.jQuery);
|
|
||||||
!function(g){var p=function(c,f){this.init("tooltip",c,f)};p.prototype={constructor:p,init:function(c,f,h){var m;this.type=c;this.$element=g(f);this.options=this.getOptions(h);this.enabled=!0;f=this.options.trigger.split(" ");for(h=f.length;h--;)if(m=f[h],"click"==m)this.$element.on("click."+this.type,this.options.selector,g.proxy(this.toggle,this));else"manual"!=m&&(c="hover"==m?"mouseenter":"focus",m="hover"==m?"mouseleave":"blur",this.$element.on(c+"."+this.type,this.options.selector,g.proxy(this.enter,
|
|
||||||
this)),this.$element.on(m+"."+this.type,this.options.selector,g.proxy(this.leave,this)));this.options.selector?this._options=g.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(c){c=g.extend({},g.fn[this.type].defaults,this.$element.data(),c);c.delay&&"number"==typeof c.delay&&(c.delay={show:c.delay,hide:c.delay});return c},enter:function(c){var f=g.fn[this.type].defaults,h={},m;this._options&&g.each(this._options,function(c,g){f[c]!=g&&(h[c]=g)},this);m=
|
|
||||||
g(c.currentTarget)[this.type](h).data(this.type);if(!m.options.delay||!m.options.delay.show)return m.show();clearTimeout(this.timeout);m.hoverState="in";this.timeout=setTimeout(function(){"in"==m.hoverState&&m.show()},m.options.delay.show)},leave:function(c){var f=g(c.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!f.options.delay||!f.options.delay.hide)return f.hide();f.hoverState="out";this.timeout=setTimeout(function(){"out"==f.hoverState&&
|
|
||||||
f.hide()},f.options.delay.hide)},show:function(){var c,f,h,m,n;f=g.Event("show");if(this.hasContent()&&this.enabled&&(this.$element.trigger(f),!f.isDefaultPrevented())){c=this.tip();this.setContent();this.options.animation&&c.addClass("fade");m="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement;c.detach().css({top:0,left:0,display:"block"});this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);f=
|
|
||||||
this.getPosition();h=c[0].offsetWidth;c=c[0].offsetHeight;switch(m){case "bottom":n={top:f.top+f.height,left:f.left+f.width/2-h/2};break;case "top":n={top:f.top-c,left:f.left+f.width/2-h/2};break;case "left":n={top:f.top+f.height/2-c/2,left:f.left-h};break;case "right":n={top:f.top+f.height/2-c/2,left:f.left+f.width}}this.applyPlacement(n,m);this.$element.trigger("shown")}},applyPlacement:function(c,f){var g=this.tip(),m=g[0].offsetWidth,n=g[0].offsetHeight,p,r,x;g.offset(c).addClass(f).addClass("in");
|
|
||||||
p=g[0].offsetWidth;r=g[0].offsetHeight;"top"==f&&r!=n&&(c.top=c.top+n-r,x=!0);"bottom"==f||"top"==f?(f=0,0>c.left&&(f=-2*c.left,c.left=0,g.offset(c),p=g[0].offsetWidth),this.replaceArrow(f-m+p,p,"left")):this.replaceArrow(r-n,r,"top");x&&g.offset(c)},replaceArrow:function(c,f,g){this.arrow().css(g,c?50*(1-c/f)+"%":"")},setContent:function(){var c=this.tip(),f=this.getTitle();c.find(".tooltip-inner")[this.options.html?"html":"text"](f);c.removeClass("fade in top bottom left right")},hide:function(){function c(){var c=
|
|
||||||
setTimeout(function(){f.off(g.support.transition.end).detach()},500);f.one(g.support.transition.end,function(){clearTimeout(c);f.detach()})}var f=this.tip(),h=g.Event("hide");this.$element.trigger(h);if(!h.isDefaultPrevented())return f.removeClass("in"),g.support.transition&&this.$tip.hasClass("fade")?c():f.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var c=this.$element;(c.attr("title")||"string"!=typeof c.attr("data-original-title"))&&c.attr("data-original-title",c.attr("title")||
|
|
||||||
"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var c=this.$element[0];return g.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():{width:c.offsetWidth,height:c.offsetHeight},this.$element.offset())},getTitle:function(){var c=this.$element,f=this.options;return c.attr("data-original-title")||("function"==typeof f.title?f.title.call(c[0]):f.title)},tip:function(){return this.$tip=this.$tip||g(this.options.template)},arrow:function(){return this.$arrow=
|
|
||||||
this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.options=this.$element=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(c){c=c?g(c.currentTarget)[this.type](this._options).data(this.type):this;c.tip().hasClass("in")?c.hide():c.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var x=g.fn.tooltip;
|
|
||||||
g.fn.tooltip=function(c){return this.each(function(){var f=g(this),h=f.data("tooltip"),m="object"==typeof c&&c;h||f.data("tooltip",h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.tooltip.Constructor=p;g.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'\x3cdiv class\x3d"tooltip"\x3e\x3cdiv class\x3d"tooltip-arrow"\x3e\x3c/div\x3e\x3cdiv class\x3d"tooltip-inner"\x3e\x3c/div\x3e\x3c/div\x3e',trigger:"hover focus",title:"",delay:0,html:!1,container:!1};g.fn.tooltip.noConflict=
|
|
||||||
function(){g.fn.tooltip=x;return this}}(window.jQuery);
|
|
||||||
!function(g){var p=function(c,f){this.init("popover",c,f)};p.prototype=g.extend({},g.fn.tooltip.Constructor.prototype,{constructor:p,setContent:function(){var c=this.tip(),f=this.getTitle(),g=this.getContent();c.find(".popover-title")[this.options.html?"html":"text"](f);c.find(".popover-content")[this.options.html?"html":"text"](g);c.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var c=this.$element,f=this.options;
|
|
||||||
return("function"==typeof f.content?f.content.call(c[0]):f.content)||c.attr("data-content")},tip:function(){this.$tip||(this.$tip=g(this.options.template));return this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var x=g.fn.popover;g.fn.popover=function(c){return this.each(function(){var f=g(this),h=f.data("popover"),m="object"==typeof c&&c;h||f.data("popover",h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.popover.Constructor=p;g.fn.popover.defaults=
|
|
||||||
g.extend({},g.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'\x3cdiv class\x3d"popover"\x3e\x3cdiv class\x3d"arrow"\x3e\x3c/div\x3e\x3ch3 class\x3d"popover-title"\x3e\x3c/h3\x3e\x3cdiv class\x3d"popover-content"\x3e\x3c/div\x3e\x3c/div\x3e'});g.fn.popover.noConflict=function(){g.fn.popover=x;return this}}(window.jQuery);
|
|
||||||
!function(g){function p(c,f){var h=g.proxy(this.process,this),m=g(c).is("body")?g(window):g(c),n;this.options=g.extend({},g.fn.scrollspy.defaults,f);this.$scrollElement=m.on("scroll.scroll-spy.data-api",h);this.selector=(this.options.target||(n=g(c).attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li \x3e a";this.$body=g("body");this.refresh();this.process()}p.prototype={constructor:p,refresh:function(){var c=this;this.offsets=g([]);this.targets=g([]);this.$body.find(this.selector).map(function(){var f=
|
|
||||||
g(this),f=f.data("target")||f.attr("href"),h=/^#\w/.test(f)&&g(f);return h&&h.length&&[[h.position().top+(!g.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),f]]||null}).sort(function(c,g){return c[0]-g[0]}).each(function(){c.offsets.push(this[0]);c.targets.push(this[1])})},process:function(){var c=this.$scrollElement.scrollTop()+this.options.offset,f=(this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight)-this.$scrollElement.height(),g=this.offsets,m=this.targets,n=this.activeTarget,
|
|
||||||
p;if(c>=f)return n!=(p=m.last()[0])&&this.activate(p);for(p=g.length;p--;)n!=m[p]&&c>=g[p]&&(!g[p+1]||c<=g[p+1])&&this.activate(m[p])},activate:function(c){this.activeTarget=c;g(this.selector).parent(".active").removeClass("active");c=g(this.selector+'[data-target\x3d"'+c+'"],'+this.selector+'[href\x3d"'+c+'"]').parent("li").addClass("active");c.parent(".dropdown-menu").length&&(c=c.closest("li.dropdown").addClass("active"));c.trigger("activate")}};var x=g.fn.scrollspy;g.fn.scrollspy=function(c){return this.each(function(){var f=
|
|
||||||
g(this),h=f.data("scrollspy"),m="object"==typeof c&&c;h||f.data("scrollspy",h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.scrollspy.Constructor=p;g.fn.scrollspy.defaults={offset:10};g.fn.scrollspy.noConflict=function(){g.fn.scrollspy=x;return this};g(window).on("load",function(){g('[data-spy\x3d"scroll"]').each(function(){var c=g(this);c.scrollspy(c.data())})})}(window.jQuery);
|
|
||||||
!function(g){var p=function(c){this.element=g(c)};p.prototype={constructor:p,show:function(){var c=this.element,f=c.closest("ul:not(.dropdown-menu)"),h=c.attr("data-target"),m,n;h||(h=(h=c.attr("href"))&&h.replace(/.*(?=#[^\s]*$)/,""));c.parent("li").hasClass("active")||(m=f.find(".active:last a")[0],n=g.Event("show",{relatedTarget:m}),c.trigger(n),n.isDefaultPrevented()||(h=g(h),this.activate(c.parent("li"),f),this.activate(h,h.parent(),function(){c.trigger({type:"shown",relatedTarget:m})})))},activate:function(c,
|
|
||||||
f,h){function m(){n.removeClass("active").find("\x3e .dropdown-menu \x3e .active").removeClass("active");c.addClass("active");p?(c[0].offsetWidth,c.addClass("in")):c.removeClass("fade");c.parent(".dropdown-menu")&&c.closest("li.dropdown").addClass("active");h&&h()}var n=f.find("\x3e .active"),p=h&&g.support.transition&&n.hasClass("fade");p?n.one(g.support.transition.end,m):m();n.removeClass("in")}};var x=g.fn.tab;g.fn.tab=function(c){return this.each(function(){var f=g(this),h=f.data("tab");h||f.data("tab",
|
|
||||||
h=new p(this));if("string"==typeof c)h[c]()})};g.fn.tab.Constructor=p;g.fn.tab.noConflict=function(){g.fn.tab=x;return this};g(document).on("click.tab.data-api",'[data-toggle\x3d"tab"], [data-toggle\x3d"pill"]',function(c){c.preventDefault();g(this).tab("show")})}(window.jQuery);
|
|
||||||
!function(g){var p=function(c,f){this.$element=g(c);this.options=g.extend({},g.fn.typeahead.defaults,f);this.matcher=this.options.matcher||this.matcher;this.sorter=this.options.sorter||this.sorter;this.highlighter=this.options.highlighter||this.highlighter;this.updater=this.options.updater||this.updater;this.source=this.options.source;this.$menu=g(this.options.menu);this.shown=!1;this.listen()};p.prototype={constructor:p,select:function(){var c=this.$menu.find(".active").attr("data-value");this.$element.val(this.updater(c)).change();
|
|
||||||
return this.hide()},updater:function(c){return c},show:function(){var c=g.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});this.$menu.insertAfter(this.$element).css({top:c.top+c.height,left:c.left}).show();this.shown=!0;return this},hide:function(){this.$menu.hide();this.shown=!1;return this},lookup:function(c){this.query=this.$element.val();return!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(c=g.isFunction(this.source)?this.source(this.query,
|
|
||||||
g.proxy(this.process,this)):this.source)?this.process(c):this},process:function(c){var f=this;c=g.grep(c,function(c){return f.matcher(c)});c=this.sorter(c);return c.length?this.render(c.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(c){return~c.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(c){for(var f=[],g=[],m=[],n;n=c.shift();)n.toLowerCase().indexOf(this.query.toLowerCase())?~n.indexOf(this.query)?g.push(n):m.push(n):f.push(n);return f.concat(g,
|
|
||||||
m)},highlighter:function(c){var f=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$\x26");return c.replace(new RegExp("("+f+")","ig"),function(c,f){return"\x3cstrong\x3e"+f+"\x3c/strong\x3e"})},render:function(c){var f=this;c=g(c).map(function(c,m){c=g(f.options.item).attr("data-value",m);c.find("a").html(f.highlighter(m));return c[0]});c.first().addClass("active");this.$menu.html(c);return this},next:function(c){c=this.$menu.find(".active").removeClass("active").next();c.length||(c=g(this.$menu.find("li")[0]));
|
|
||||||
c.addClass("active")},prev:function(c){c=this.$menu.find(".active").removeClass("active").prev();c.length||(c=this.$menu.find("li").last());c.addClass("active")},listen:function(){this.$element.on("focus",g.proxy(this.focus,this)).on("blur",g.proxy(this.blur,this)).on("keypress",g.proxy(this.keypress,this)).on("keyup",g.proxy(this.keyup,this));if(this.eventSupported("keydown"))this.$element.on("keydown",g.proxy(this.keydown,this));this.$menu.on("click",g.proxy(this.click,this)).on("mouseenter","li",
|
|
||||||
g.proxy(this.mouseenter,this)).on("mouseleave","li",g.proxy(this.mouseleave,this))},eventSupported:function(c){var f=c in this.$element;f||(this.$element.setAttribute(c,"return;"),f="function"===typeof this.$element[c]);return f},move:function(c){if(this.shown){switch(c.keyCode){case 9:case 13:case 27:c.preventDefault();break;case 38:c.preventDefault();this.prev();break;case 40:c.preventDefault(),this.next()}c.stopPropagation()}},keydown:function(c){this.suppressKeyPressRepeat=~g.inArray(c.keyCode,
|
|
||||||
[40,38,9,13,27]);this.move(c)},keypress:function(c){this.suppressKeyPressRepeat||this.move(c)},keyup:function(c){switch(c.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}c.stopPropagation();c.preventDefault()},focus:function(c){this.focused=!0},blur:function(c){this.focused=!1;!this.mousedover&&this.shown&&this.hide()},click:function(c){c.stopPropagation();c.preventDefault();
|
|
||||||
this.select();this.$element.focus()},mouseenter:function(c){this.mousedover=!0;this.$menu.find(".active").removeClass("active");g(c.currentTarget).addClass("active")},mouseleave:function(c){this.mousedover=!1;!this.focused&&this.shown&&this.hide()}};var x=g.fn.typeahead;g.fn.typeahead=function(c){return this.each(function(){var f=g(this),h=f.data("typeahead"),m="object"==typeof c&&c;h||f.data("typeahead",h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.typeahead.defaults={source:[],items:8,menu:'\x3cul class\x3d"typeahead dropdown-menu"\x3e\x3c/ul\x3e',
|
|
||||||
item:'\x3cli\x3e\x3ca href\x3d"#"\x3e\x3c/a\x3e\x3c/li\x3e',minLength:1};g.fn.typeahead.Constructor=p;g.fn.typeahead.noConflict=function(){g.fn.typeahead=x;return this};g(document).on("focus.typeahead.data-api",'[data-provide\x3d"typeahead"]',function(c){c=g(this);c.data("typeahead")||c.typeahead(c.data())})}(window.jQuery);
|
|
||||||
!function(g){var p=function(c,f){this.options=g.extend({},g.fn.affix.defaults,f);this.$window=g(window).on("scroll.affix.data-api",g.proxy(this.checkPosition,this)).on("click.affix.data-api",g.proxy(function(){setTimeout(g.proxy(this.checkPosition,this),1)},this));this.$element=g(c);this.checkPosition()};p.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=g(document).height(),f=this.$window.scrollTop(),h=this.$element.offset(),m=this.options.offset,n=m.bottom,p=m.top;"object"!=
|
|
||||||
typeof m&&(n=p=m);"function"==typeof p&&(p=m.top());"function"==typeof n&&(n=m.bottom());c=null!=this.unpin&&f+this.unpin<=h.top?!1:null!=n&&h.top+this.$element.height()>=c-n?"bottom":null!=p&&f<=p?"top":!1;this.affixed!==c&&(this.affixed=c,this.unpin="bottom"==c?h.top-f:null,this.$element.removeClass("affix affix-top affix-bottom").addClass("affix"+(c?"-"+c:"")))}};var x=g.fn.affix;g.fn.affix=function(c){return this.each(function(){var f=g(this),h=f.data("affix"),m="object"==typeof c&&c;h||f.data("affix",
|
|
||||||
h=new p(this,m));if("string"==typeof c)h[c]()})};g.fn.affix.Constructor=p;g.fn.affix.defaults={offset:0};g.fn.affix.noConflict=function(){g.fn.affix=x;return this};g(window).on("load",function(){g('[data-spy\x3d"affix"]').each(function(){var c=g(this),f=c.data();f.offset=f.offset||{};f.offsetBottom&&(f.offset.bottom=f.offsetBottom);f.offsetTop&&(f.offset.top=f.offsetTop);c.affix(f)})})}(window.jQuery);var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
|
|
||||||
(function(){function g(c){function f(c){var f=c.charCodeAt(0);if(92!==f)return f;var g=c.charAt(1);return(f=H[g])?f:"0"<=g&&"7">=g?parseInt(c.substring(1),8):"u"===g||"x"===g?parseInt(c.substring(2),16):c.charCodeAt(1)}function g(c){if(32>c)return(16>c?"\\x0":"\\x")+c.toString(16);c=String.fromCharCode(c);if("\\"===c||"-"===c||"["===c||"]"===c)c="\\"+c;return c}function h(c){var h=c.substring(1,c.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g);c=
|
|
||||||
[];for(var m=[],n="^"===h[0],p=n?1:0,v=h.length;p<v;++p){var A=h[p];if(/\\[bdsw]/i.test(A))c.push(A);else{var A=f(A),r;p+2<v&&"-"===h[p+1]?(r=f(h[p+2]),p+=2):r=A;m.push([A,r]);65>r||122<A||(65>r||90<A||m.push([Math.max(65,A)|32,Math.min(r,90)|32]),97>r||122<A||m.push([Math.max(97,A)&-33,Math.min(r,122)&-33]))}}m.sort(function(c,f){return c[0]-f[0]||f[1]-c[1]});h=[];A=[NaN,NaN];for(p=0;p<m.length;++p)v=m[p],v[0]<=A[1]+1?A[1]=Math.max(A[1],v[1]):h.push(A=v);m=["["];n&&m.push("^");m.push.apply(m,c);
|
|
||||||
for(p=0;p<h.length;++p)v=h[p],m.push(g(v[0])),v[1]>v[0]&&(v[1]+1>v[0]&&m.push("-"),m.push(g(v[1])));m.push("]");return m.join("")}function m(c){for(var f=c.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),g=f.length,m=[],v=0,A=0;v<g;++v){var r=f[v];"("===r?++A:"\\"===r.charAt(0)&&(r=+r.substring(1))&&r<=A&&(m[r]=-1)}for(v=1;v<m.length;++v)-1===m[v]&&(m[v]=++n);for(A=v=0;v<g;++v)r=f[v],"("===r?(++A,void 0===m[A]&&(f[v]="(?:")):"\\"===
|
|
||||||
r.charAt(0)&&(r=+r.substring(1))&&r<=A&&(f[v]="\\"+m[A]);for(A=v=0;v<g;++v)"^"===f[v]&&"^"!==f[v+1]&&(f[v]="");if(c.ignoreCase&&p)for(v=0;v<g;++v)r=f[v],c=r.charAt(0),2<=r.length&&"["===c?f[v]=h(r):"\\"!==c&&(f[v]=r.replace(/[A-Za-z]/g,function(c){c=c.charCodeAt(0);return"["+String.fromCharCode(c&-33,c|32)+"]"}));return f.join("")}for(var n=0,p=!1,r=!1,A=0,x=c.length;A<x;++A){var U=c[A];if(U.ignoreCase)r=!0;else if(/[a-z]/i.test(U.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){p=!0;
|
|
||||||
r=!1;break}}for(var H={b:8,t:9,n:10,v:11,f:12,r:13},J=[],A=0,x=c.length;A<x;++A){U=c[A];if(U.global||U.multiline)throw Error(""+U);J.push("(?:"+m(U)+")")}return RegExp(J.join("|"),r?"gi":"g")}function p(c){function f(c){switch(c.nodeType){case 1:if(g.test(c.className))break;for(var r=c.firstChild;r;r=r.nextSibling)f(r);r=c.nodeName;if("BR"===r||"LI"===r)h[n]="\n",p[n<<1]=m++,p[n++<<1|1]=c;break;case 3:case 4:r=c.nodeValue,r.length&&(r=A?r.replace(/\r\n?/g,"\n"):r.replace(/[\t\n\r ]+/g," "),h[n]=r,
|
|
||||||
p[n<<1]=m,m+=r.length,p[n++<<1|1]=c)}}var g=/(?:^|\s)nocode(?:\s|$)/,h=[],m=0,p=[],n=0,r;c.currentStyle?r=c.currentStyle.whiteSpace:window.getComputedStyle&&(r=document.defaultView.getComputedStyle(c,q).getPropertyValue("white-space"));var A=r&&"pre"===r.substring(0,3);f(c);return{a:h.join("").replace(/\n$/,""),c:p}}function x(c,f,g,h){f&&(c={a:f,d:c},g(c),h.push.apply(h,c.e))}function c(c,f){function h(c){for(var g=c.d,A=[g,"pln"],I=0,P=c.a.match(p)||[],H={},J=0,v=P.length;J<v;++J){var R=P[J],y=
|
|
||||||
H[R],G=void 0,C;if("string"===typeof y)C=!1;else{var D=m[R.charAt(0)];if(D)G=R.match(D[1]),y=D[0];else{for(C=0;C<r;++C)if(D=f[C],G=R.match(D[1])){y=D[0];break}G||(y="pln")}!(C=5<=y.length&&"lang-"===y.substring(0,5))||G&&"string"===typeof G[1]||(C=!1,y="src");C||(H[R]=y)}D=I;I+=R.length;if(C){C=G[1];var L=R.indexOf(C),E=L+C.length;G[2]&&(E=R.length-G[2].length,L=E-C.length);y=y.substring(5);x(g+D,R.substring(0,L),h,A);x(g+D+L,C,n(y,C),A);x(g+D+E,R.substring(E),h,A)}else A.push(g+D,y)}c.e=A}var m=
|
|
||||||
{},p;(function(){for(var h=c.concat(f),n=[],r={},A=0,I=h.length;A<I;++A){var x=h[A],P=x[3];if(P)for(var v=P.length;0<=--v;)m[P.charAt(v)]=x;x=x[1];P=""+x;r.hasOwnProperty(P)||(n.push(x),r[P]=q)}n.push(/[\S\s]/);p=g(n)})();var r=f.length;return h}function f(f){var g=[],h=[];f.tripleQuotedStrings?g.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):f.multiLineStrings?g.push(["str",
|
|
||||||
/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,q,"'\"`"]):g.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);f.verbatimStrings&&h.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var m=f.hashComments;m&&(f.cStyleComments?(1<m?g.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):g.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),h.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
|
|
||||||
q])):g.push(["com",/^#[^\n\r]*/,q,"#"]));f.cStyleComments&&(h.push(["com",/^\/\/[^\n\r]*/,q]),h.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));f.regexLiterals&&h.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(m=f.types)&&
|
|
||||||
h.push(["typ",m]);f=(""+f.keywords).replace(/^ | $/g,"");f.length&&h.push(["kwd",RegExp("^(?:"+f.replace(/[\s,]+/g,"|")+")\\b"),q]);g.push(["pln",/^\s+/,q," \r\n\t "]);h.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return c(g,h)}function h(c,f){function g(c){switch(c.nodeType){case 1:if(m.test(c.className))break;
|
|
||||||
if("BR"===c.nodeName)h(c),c.parentNode&&c.parentNode.removeChild(c);else for(c=c.firstChild;c;c=c.nextSibling)g(c);break;case 3:case 4:if(A){var f=c.nodeValue,r=f.match(p);if(r){var v=f.substring(0,r.index);c.nodeValue=v;(f=f.substring(r.index+r[0].length))&&c.parentNode.insertBefore(n.createTextNode(f),c.nextSibling);h(c);v||c.parentNode.removeChild(c)}}}}function h(c){function f(c,g){g=g?c.cloneNode(!1):c;var h=c.parentNode;if(h){h=f(h,1);c=c.nextSibling;h.appendChild(g);for(var m=c;m;m=c)c=m.nextSibling,
|
|
||||||
h.appendChild(m)}return g}for(;!c.nextSibling;)if(c=c.parentNode,!c)return;c=f(c.nextSibling,0);for(var g;(g=c.parentNode)&&1===g.nodeType;)c=g;x.push(c)}var m=/(?:^|\s)nocode(?:\s|$)/,p=/\r\n?|\n/,n=c.ownerDocument,r;c.currentStyle?r=c.currentStyle.whiteSpace:window.getComputedStyle&&(r=n.defaultView.getComputedStyle(c,q).getPropertyValue("white-space"));var A=r&&"pre"===r.substring(0,3);for(r=n.createElement("LI");c.firstChild;)r.appendChild(c.firstChild);for(var x=[r],E=0;E<x.length;++E)g(x[E]);
|
|
||||||
f===(f|0)&&x[0].setAttribute("value",f);var H=n.createElement("OL");H.className="linenums";f=Math.max(0,f-1|0)||0;for(var E=0,J=x.length;E<J;++E)r=x[E],r.className="L"+(E+f)%10,r.firstChild||r.appendChild(n.createTextNode(" ")),H.appendChild(r);c.appendChild(H)}function m(c,f){for(var g=f.length;0<=--g;){var h=f[g];ia.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):ia[h]=c}}function n(c,f){c&&ia.hasOwnProperty(c)||(c=/^\s*</.test(f)?"default-markup":"default-code");
|
|
||||||
return ia[c]}function W(c){var f=c.g;try{var g=p(c.h),h=g.a;c.a=h;c.c=g.c;c.d=0;n(f,h)(c);var m=/\bMSIE\b/.test(navigator.userAgent),f=/\n/g,r=c.a,x=r.length,g=0,A=c.c,E=A.length,h=0,S=c.e,U=S.length;c=0;S[U]=x;var H,J;for(J=H=0;J<U;)S[J]!==S[J+2]?(S[H++]=S[J++],S[H++]=S[J++]):J+=2;U=H;for(J=H=0;J<U;){for(var v=S[J],N=S[J+1],y=J+2;y+2<=U&&S[y+1]===N;)y+=2;S[H++]=v;S[H++]=N;J=y}for(S.length=H;h<E;){var G=A[h+2]||x,C=S[c+2]||x,y=Math.min(G,C),D=A[h+1],L;if(1!==D.nodeType&&(L=r.substring(g,y))){m&&(L=
|
|
||||||
L.replace(f,"\r"));D.nodeValue=L;var V=D.ownerDocument,W=V.createElement("SPAN");W.className=S[c+1];var aa=D.parentNode;aa.replaceChild(W,D);W.appendChild(D);g<G&&(A[h+1]=D=V.createTextNode(r.substring(y,G)),aa.insertBefore(D,W.nextSibling))}g=y;g>=G&&(h+=2);g>=C&&(c+=2)}}catch(Z){"console"in window&&console.log(Z&&Z.stack?Z.stack:Z)}}var r=["break,continue,do,else,for,if,return,while"],E=[[r,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
|
|
||||||
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],fa=[E,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],aa=[E,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
|
|
||||||
V=[aa,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],E=[E,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],ha=[r,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
|
|
||||||
Aa=[r,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],r=[r,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],N=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,Ta=/\S/,Ia=f({keywords:[fa,V,E,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
|
|
||||||
ha,Aa,r],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),ia={};m(Ia,["default-code"]);m(c([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
|
|
||||||
"default-markup htm html mxml xhtml xml xsl".split(" "));m(c([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
|
|
||||||
/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);m(c([],[["atv",/^[\S\s]+/]]),["uq.val"]);m(f({keywords:fa,hashComments:!0,cStyleComments:!0,types:N}),"c cc cpp cxx cyc m".split(" "));m(f({keywords:"null,true,false"}),["json"]);m(f({keywords:V,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:N}),["cs"]);m(f({keywords:aa,cStyleComments:!0}),["java"]);m(f({keywords:r,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);m(f({keywords:ha,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
|
|
||||||
["cv","py"]);m(f({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);m(f({keywords:Aa,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);m(f({keywords:E,cStyleComments:!0,regexLiterals:!0}),["js"]);m(f({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
|
|
||||||
hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);m(c([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(c,f,g){var m=document.createElement("PRE");m.innerHTML=c;g&&h(m,g);W({g:f,i:g,h:m});return m.innerHTML};window.prettyPrint=function(c){function f(){for(var g=window.PR_SHOULD_USE_CONTINUATION?x.now()+250:Infinity;A<m.length&&x.now()<g;A++){var n=m[A],p=n.className;if(0<=p.indexOf("prettyprint")){var p=p.match(N),r,y;if(y=
|
|
||||||
!p){y=n;for(var G=void 0,C=y.firstChild;C;C=C.nextSibling)var D=C.nodeType,G=1===D?G?y:C:3===D?Ta.test(C.nodeValue)?y:G:G;y=(r=G===y?void 0:G)&&"CODE"===r.tagName}y&&(p=r.className.match(N));p&&(p=p[1]);y=!1;for(G=n.parentNode;G;G=G.parentNode)if(("pre"===G.tagName||"code"===G.tagName||"xmp"===G.tagName)&&G.className&&0<=G.className.indexOf("prettyprint")){y=!0;break}y||((y=(y=n.className.match(/\blinenums\b(?::(\d+))?/))?y[1]&&y[1].length?+y[1]:!0:!1)&&h(n,y),E={g:p,h:n,i:y},W(E))}}A<m.length?setTimeout(f,
|
|
||||||
250):c&&c()}for(var g=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],m=[],n=0;n<g.length;++n)for(var p=0,r=g[n].length;p<r;++p)m.push(g[n][p]);var g=q,x=Date;x.now||(x={now:function(){return+new Date}});var A=0,E,N=/\blang(?:uage)?-([\w.]+)(?!\S)/;f()};window.PR={createSimpleLexer:c,registerLangHandler:m,sourceDecorator:f,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
|
|
||||||
PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();jQuery(document).ready(function(){$(".topbar").dropdown();prettyPrint()});function asyncJs(g){var p=document.createElement("script"),x=document.getElementsByTagName("script")[0];p.type="text/javascript";p.async=!0;p.src=g;x.parentNode.insertBefore(p,x)}
|
|
||||||
(function(g,p){"function"===typeof define&&define.amd?define([],p):"object"===typeof module&&module.exports?module.exports=p():(g.AnchorJS=p(),g.anchors=new g.AnchorJS)})(this,function(){return function(g){function p(c){c.icon=Object.prototype.hasOwnProperty.call(c,"icon")?c.icon:"";c.visible=Object.prototype.hasOwnProperty.call(c,"visible")?c.visible:"hover";c.placement=Object.prototype.hasOwnProperty.call(c,"placement")?c.placement:"right";c.ariaLabel=Object.prototype.hasOwnProperty.call(c,"ariaLabel")?
|
|
||||||
c.ariaLabel:"Anchor";c.class=Object.prototype.hasOwnProperty.call(c,"class")?c.class:"";c.base=Object.prototype.hasOwnProperty.call(c,"base")?c.base:"";c.truncate=Object.prototype.hasOwnProperty.call(c,"truncate")?Math.floor(c.truncate):64;c.titleText=Object.prototype.hasOwnProperty.call(c,"titleText")?c.titleText:""}function x(c){if("string"===typeof c||c instanceof String)c=[].slice.call(document.querySelectorAll(c));else if(Array.isArray(c)||c instanceof NodeList)c=[].slice.call(c);else throw new TypeError("The selector provided to AnchorJS was invalid.");
|
|
||||||
return c}function c(){if(null===document.head.querySelector("style.anchorjs")){var c=document.createElement("style"),g;c.className="anchorjs";c.appendChild(document.createTextNode(""));g=document.head.querySelector('[rel\x3d"stylesheet"],style');void 0===g?document.head.appendChild(c):document.head.insertBefore(c,g);c.sheet.insertRule(".anchorjs-link{opacity:0;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}",c.sheet.cssRules.length);c.sheet.insertRule(":hover\x3e.anchorjs-link,.anchorjs-link:focus{opacity:1}",
|
|
||||||
c.sheet.cssRules.length);c.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",c.sheet.cssRules.length);c.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',
|
|
||||||
c.sheet.cssRules.length)}}this.options=g||{};this.elements=[];p(this.options);this.isTouchDevice=function(){return!!("ontouchstart"in window||window.TouchEvent||window.DocumentTouch&&document instanceof DocumentTouch)};this.add=function(f){var g,m,n,W,r,E,fa,aa=[];p(this.options);fa=this.options.visible;"touch"===fa&&(fa=this.isTouchDevice()?"always":"hover");f||(f="h2, h3, h4, h5, h6");f=x(f);if(0===f.length)return this;c();g=document.querySelectorAll("[id]");g=[].map.call(g,function(c){return c.id});
|
|
||||||
for(n=0;n<f.length;n++)if(this.hasAnchorJSLink(f[n]))aa.push(n);else{if(f[n].hasAttribute("id"))m=f[n].getAttribute("id");else if(f[n].hasAttribute("data-anchor-id"))m=f[n].getAttribute("data-anchor-id");else{E=r=this.urlify(f[n].textContent);m=0;do void 0!==W&&(E=r+"-"+m),W=g.indexOf(E),m+=1;while(-1!==W);W=void 0;g.push(E);f[n].setAttribute("id",E);m=E}r=document.createElement("a");r.className="anchorjs-link "+this.options.class;r.setAttribute("aria-label",this.options.ariaLabel);r.setAttribute("data-anchorjs-icon",
|
|
||||||
this.options.icon);this.options.titleText&&(r.title=this.options.titleText);E=document.querySelector("base")?window.location.pathname+window.location.search:"";E=this.options.base||E;r.href=E+"#"+m;"always"===fa&&(r.style.opacity="1");""===this.options.icon&&(r.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(r.style.lineHeight="inherit"));"left"===this.options.placement?(r.style.position="absolute",r.style.marginLeft="-1em",r.style.paddingRight=".5em",f[n].insertBefore(r,f[n].firstChild)):
|
|
||||||
(r.style.paddingLeft=".375em",f[n].appendChild(r))}for(n=0;n<aa.length;n++)f.splice(aa[n]-n,1);this.elements=this.elements.concat(f);return this};this.remove=function(c){for(var f,g=x(c),n=0;n<g.length;n++)if(f=g[n].querySelector(".anchorjs-link"))c=this.elements.indexOf(g[n]),-1!==c&&this.elements.splice(c,1),g[n].removeChild(f);return this};this.removeAll=function(){this.remove(this.elements)};this.urlify=function(c){var f=document.createElement("textarea");f.innerHTML=c;c=f.value;this.options.truncate||
|
|
||||||
p(this.options);return c.trim().replace(/'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()};this.hasAnchorJSLink=function(c){var f=c.firstChild&&-1<(" "+c.firstChild.className+" ").indexOf(" anchorjs-link ");c=c.lastChild&&-1<(" "+c.lastChild.className+" ").indexOf(" anchorjs-link ");return f||c||!1}}});
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
| Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-pmd-plugin:3.26.0:pmd at 2025-06-05
|
|
||||||
| Rendered using Apache Maven Fluido Skin 2.0.0-M9
|
|
||||||
-->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
<meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
|
|
||||||
<title>PMD Results – Schach</title>
|
|
||||||
<link rel="stylesheet" href="./css/apache-maven-fluido-2.0.0-M9.min.css" />
|
|
||||||
<link rel="stylesheet" href="./css/site.css" />
|
|
||||||
<link rel="stylesheet" href="./css/print.css" media="print" />
|
|
||||||
<script src="./js/apache-maven-fluido-2.0.0-M9.min.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container container-top">
|
|
||||||
<header>
|
|
||||||
<div id="banner">
|
|
||||||
<div class="pull-left"><div id="bannerLeft"><h1>Schach</h1></div></div>
|
|
||||||
<div class="pull-right"></div>
|
|
||||||
<div class="clear"><hr/></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="breadcrumbs">
|
|
||||||
<ul class="breadcrumb">
|
|
||||||
<li id="publishDate">Last Published: 2025-06-05<span class="divider">|</span>
|
|
||||||
</li>
|
|
||||||
<li id="projectVersion">Version: 0.0.1-SNAPSHOT</li>
|
|
||||||
<li class="pull-right"><a href="${project.url}">Schach</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<main id="bodyColumn">
|
|
||||||
<section><a id="PMD_Results"></a>
|
|
||||||
<h1>PMD Results</h1>
|
|
||||||
<p>The following document contains the results of <a class="externalLink" href="https://pmd.github.io">PMD</a> 7.7.0.</p>
|
|
||||||
<p>PMD found no problems in your source code.</p></section>
|
|
||||||
</main>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
<footer>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<p>© 2025
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<p id="poweredBy" class="pull-right"><a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
<script>
|
|
||||||
if(anchors) {
|
|
||||||
anchors.add();
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>App</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Schach</a> > <a href="index.html" class="el_package">de.mannheim.th.chess</a> > <span class="el_class">App</span></div><h1>App</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">7 of 7</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a1"><a href="App.java.html#L8" class="el_method">main(String[])</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">2</td><td class="ctr2" id="i0">2</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="App.java.html#L6" class="el_method">App()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>App.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Schach</a> > <a href="index.source.html" class="el_package">de.mannheim.th.chess</a> > <span class="el_source">App.java</span></div><h1>App.java</h1><pre class="source lang-java linenums">package de.mannheim.th.chess;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hello world!
|
|
||||||
*/
|
|
||||||
<span class="nc" id="L6">public class App {</span>
|
|
||||||
public static void main(String[] args) {
|
|
||||||
<span class="nc" id="L8"> System.out.println("Hello World!");</span>
|
|
||||||
<span class="nc" id="L9"> }</span>
|
|
||||||
}
|
|
||||||
</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>de.mannheim.th.chess</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Schach</a> > <span class="el_package">de.mannheim.th.chess</span></div><h1>de.mannheim.th.chess</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">7 of 7</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="App.html" class="el_class">App</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="7" alt="7"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j0">2</td><td class="ctr2" id="k0">2</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>de.mannheim.th.chess</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Schach</a> > <span class="el_package">de.mannheim.th.chess</span></div><h1>de.mannheim.th.chess</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">7 of 7</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="App.java.html" class="el_source">App.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="7" alt="7"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j0">2</td><td class="ctr2" id="k0">2</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="jacoco-resources/report.gif" type="image/gif"/><title>Schach</title><script type="text/javascript" src="jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><span class="el_report">Schach</span></div><h1>Schach</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">7 of 7</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="de.mannheim.th.chess/index.html" class="el_package">de.mannheim.th.chess</a></td><td class="bar" id="b0"><img src="jacoco-resources/redbar.gif" width="120" height="10" title="7" alt="7"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j0">2</td><td class="ctr2" id="k0">2</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
|
|
||||||
|
Before Width: | Height: | Size: 91 B |
|
Before Width: | Height: | Size: 91 B |
|
Before Width: | Height: | Size: 91 B |
|
Before Width: | Height: | Size: 709 B |
|
Before Width: | Height: | Size: 586 B |
|
Before Width: | Height: | Size: 67 B |
|
Before Width: | Height: | Size: 91 B |