Skip to content

Instantly share code, notes, and snippets.

@therealbenpai
Last active January 3, 2023 12:34
Show Gist options
  • Save therealbenpai/76c07830e9cba9316290eed95d6a9887 to your computer and use it in GitHub Desktop.
Save therealbenpai/76c07830e9cba9316290eed95d6a9887 to your computer and use it in GitHub Desktop.
Ad-free Minesweeper
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="google" content="notranslate">
<meta http-equiv="Content-Language" content="en">
<title>Minesweeper Offline - Play Free Offline Minesweeper that can be played on any PC</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=3.0, user-scalable=yes">
<meta name="description"
content="Free Offline Minesweeper in JavaScript. Play the classic game in Beginner, Intermediate, and Expert modes.">
<!-- Page Stylesheets -->
<style>
/* Vars */
:root {
--hex0: #000;
--hex1: #111;
--hex2: #222;
--hex3: #333;
--hex4: #444;
--hex5: #555;
--hex6: #666;
--hex7: #777;
--hex8: #888;
--hex9: #999;
--hexa: #aaa;
--hexb: #bbb;
--hexc: #ccc;
--hexd: #ddd;
--hexe: #eee;
--hexf: #fff;
--ani1: top .3s, left .3s, width .3s, height .3s, opacity .3s;
}
html {
height: 95%
}
body {
margin-left: 0;
margin-top: 15px;
font-family: arial;
font-size: 12px;
height: 100%
}
.night-mode {
background-color: black;
color: var(--hex8);
}
label {
display: inline-block;
margin-bottom: 3px
}
.outer-container {
vertical-align: top;
text-align: left;
text-align: center
}
.inner-container {
display: inline-block;
text-align: left
}
.left-column,
#center-column,
.right-column {
float: left;
}
.left-column {
margin-right: 10px
}
.left-column,
.right-column {
width: 160px
}
#game-container {
position: relative;
margin-right: 20px
}
#options-link,
#display-link,
#controls-link,
#import-link,
#export-link {
color: blue;
text-decoration: underline;
cursor: pointer
}
.night-mode #options-link,
.night-mode #display-link,
.night-mode #controls-link,
.night-mode #import-link,
.night-mode #export-link,
.night-mode a {
color: #069
}
#game {
background-color: silver
}
.night-mode #game {
background-color: #7e7e7e
}
.dialog {
background-color: var(--hexe);
border: 1px solid var(--hex4);
position: absolute;
display: none;
z-index: 1;
}
.night-mode .dialog {
background-color: var(--hexb);
color: var(--hex4);
}
.dialog-title {
color: white;
font-weight: bold;
background-color: #06f;
}
.night-mode .dialog-title {
color: var(--hexa);
background-color: #184292;
}
.dialog-bar {
background-color: var(--hexd)
}
.night-mode .dialog-bar {
background-color: var(--hexa)
}
#controls ul {
padding: 0 0 0 12px;
margin: 0
}
#controls li {
margin-bottom: 2px
}
.dialog-close {
color: white;
text-decoration: none;
font-weight: bold;
font-size: 20px;
line-height: 15px;
cursor: pointer
}
.night-mode .dialog-close {
color: var(--hexa)
}
.dialog-text-input {
width: 30px;
font-size: 12px
}
.dialog td {
padding: 3px;
white-space: nowrap
}
.dialog input[type="checkbox"],
.dialog input[type="radio"] {
margin: 0 3px 0 0;
vertical-align: top;
padding: 0
}
#game div {
float: left;
line-height: 0;
font-size: 0
}
.flag-animation {
position: absolute;
pointer-events: none;
transition: var(--ani1);
-webkit-transition: var(--ani1);
-moz-transition: var(--ani1);
-ms-transition: var(--ani1)
}
.z100 #game div {
background-image: url('data:image/png;base64,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')
}
.night-mode .z100 #game div {
background-image: url('data:image/png;base64,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')
}
.z100 .time0 {
background-position: 0 0;
width: 13px;
height: 23px
}
.z100 .time1 {
background-position: -13px 0;
width: 13px;
height: 23px
}
.z100 .time2 {
background-position: -26px 0;
width: 13px;
height: 23px
}
.z100 .time3 {
background-position: -39px 0;
width: 13px;
height: 23px
}
.z100 .time4 {
background-position: -52px 0;
width: 13px;
height: 23px
}
.z100 .time5 {
background-position: -65px 0;
width: 13px;
height: 23px
}
.z100 .time6 {
background-position: -78px 0;
width: 13px;
height: 23px
}
.z100 .time7 {
background-position: -91px 0;
width: 13px;
height: 23px
}
.z100 .time8 {
background-position: -104px 0;
width: 13px;
height: 23px
}
.z100 .time9 {
background-position: -117px 0;
width: 13px;
height: 23px
}
.z100 .time- {
background-position: -130px 0;
width: 13px;
height: 23px
}
.z100 .open0 {
background-position: 0 -23px;
width: 16px;
height: 16px
}
.z100 .open1 {
background-position: -16px -23px;
width: 16px;
height: 16px
}
.z100 .open2 {
background-position: -32px -23px;
width: 16px;
height: 16px
}
.z100 .open3 {
background-position: -48px -23px;
width: 16px;
height: 16px
}
.z100 .open4 {
background-position: -64px -23px;
width: 16px;
height: 16px
}
.z100 .open5 {
background-position: -80px -23px;
width: 16px;
height: 16px
}
.z100 .open6 {
background-position: -96px -23px;
width: 16px;
height: 16px
}
.z100 .open7 {
background-position: -112px -23px;
width: 16px;
height: 16px
}
.z100 .open8 {
background-position: -128px -23px;
width: 16px;
height: 16px
}
.z100 .blank {
background-position: 0 -39px;
width: 16px;
height: 16px
}
.z100 .bombflagged {
background-position: -16px -39px;
width: 16px;
height: 16px
}
.z100 .bombdeath {
background-position: -32px -39px;
width: 16px;
height: 16px
}
.z100 .bombmisflagged {
background-position: -48px -39px;
width: 16px;
height: 16px
}
.z100 .bombrevealed {
background-position: -64px -39px;
width: 16px;
height: 16px
}
.z100 .question {
background-position: -80px -39px;
width: 16px;
height: 16px
}
.z100 .questionpressed {
background-position: -96px -39px;
width: 16px;
height: 16px
}
.z100 .facesmile {
background-position: 0 -55px;
width: 26px;
height: 26px
}
.z100 .facepressed {
background-position: -26px -55px;
width: 26px;
height: 26px
}
.z100 .faceooh {
background-position: -52px -55px;
width: 26px;
height: 26px
}
.z100 .facedead {
background-position: -78px -55px;
width: 26px;
height: 26px
}
.z100 .facewin {
background-position: -104px -55px;
width: 26px;
height: 26px
}
.z100 .bordertl {
background-position: 0 -81px;
width: 10px;
height: 10px
}
.z100 .bordertr {
background-position: -10px -81px;
width: 10px;
height: 10px
}
.z100 .borderbl {
background-position: -20px -81px;
width: 10px;
height: 10px
}
.z100 .borderbr {
background-position: -30px -81px;
width: 10px;
height: 10px
}
.z100 .bordertb {
background-position: -40px -81px;
width: 16px;
height: 10px
}
.z100 .borderjointl {
background-position: -56px -81px;
width: 10px;
height: 10px
}
.z100 .borderjointr {
background-position: -66px -81px;
width: 10px;
height: 10px
}
.z100 .borderlr {
background-position: -134px -39px;
width: 10px;
height: 16px
}
.z100 .borderlrlong {
background-position: -134px -39px;
width: 10px;
height: 32px
}
.z100 #mines_hundreds {
margin: 4px 0 5px 6px
}
.z100 #mines_tens {
margin: 4px 0 5px 0
}
.z100 #mines_ones {
margin: 4px 0 5px 0
}
.z100 #seconds_hundreds {
margin: 4px 0 5px 0
}
.z100 #seconds_tens {
margin: 4px 0 5px 0
}
.z100 #seconds_ones {
margin: 4px 6px 5px 0
}
.z100 #face {
margin-top: 3px;
margin-bottom: 3px
}
.z100 .dialog {
left: 16px;
top: 74px
}
.z150 #game div {
background-image: url('data:image/png;base64,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')
}
.night-mode .z150 #game div {
background-image: url('data:image/png;base64,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');
}
.z150 .time0 {
background-position: 0 0;
width: 20px;
height: 35px
}
.z150 .time1 {
background-position: -20px 0;
width: 20px;
height: 35px
}
.z150 .time2 {
background-position: -39px 0;
width: 20px;
height: 35px
}
.z150 .time3 {
background-position: -59px 0;
width: 20px;
height: 35px
}
.z150 .time4 {
background-position: -78px 0;
width: 20px;
height: 35px
}
.z150 .time5 {
background-position: -98px 0;
width: 20px;
height: 35px
}
.z150 .time6 {
background-position: -117px 0;
width: 20px;
height: 35px
}
.z150 .time7 {
background-position: -137px 0;
width: 20px;
height: 35px
}
.z150 .time8 {
background-position: -156px 0;
width: 20px;
height: 35px
}
.z150 .time9 {
background-position: -176px 0;
width: 20px;
height: 35px
}
.z150 .time- {
background-position: -195px 0;
width: 20px;
height: 35px
}
.z150 .open0 {
background-position: 0 -35px;
width: 24px;
height: 24px
}
.z150 .open1 {
background-position: -24px -35px;
width: 24px;
height: 24px
}
.z150 .open2 {
background-position: -48px -35px;
width: 24px;
height: 24px
}
.z150 .open3 {
background-position: -72px -35px;
width: 24px;
height: 24px
}
.z150 .open4 {
background-position: -96px -35px;
width: 24px;
height: 24px
}
.z150 .open5 {
background-position: -120px -35px;
width: 24px;
height: 24px
}
.z150 .open6 {
background-position: -144px -35px;
width: 24px;
height: 24px
}
.z150 .open7 {
background-position: -168px -35px;
width: 24px;
height: 24px
}
.z150 .open8 {
background-position: -192px -35px;
width: 24px;
height: 24px
}
.z150 .blank {
background-position: 0 -59px;
width: 24px;
height: 24px
}
.z150 .bombflagged {
background-position: -24px -59px;
width: 24px;
height: 24px
}
.z150 .bombdeath {
background-position: -48px -59px;
width: 24px;
height: 24px
}
.z150 .bombmisflagged {
background-position: -72px -59px;
width: 24px;
height: 24px
}
.z150 .bombrevealed {
background-position: -96px -59px;
width: 24px;
height: 24px
}
.z150 .question {
background-position: -120px -59px;
width: 24px;
height: 24px
}
.z150 .questionpressed {
background-position: -144px -59px;
width: 24px;
height: 24px
}
.z150 .facesmile {
background-position: 0 -83px;
width: 39px;
height: 39px
}
.z150 .facepressed {
background-position: -39px -83px;
width: 39px;
height: 39px
}
.z150 .faceooh {
background-position: -78px -83px;
width: 39px;
height: 39px
}
.z150 .facedead {
background-position: -117px -83px;
width: 39px;
height: 39px
}
.z150 .facewin {
background-position: -156px -83px;
width: 39px;
height: 39px
}
.z150 .bordertl {
background-position: 0 -122px;
width: 15px;
height: 15px
}
.z150 .bordertr {
background-position: -15px -122px;
width: 15px;
height: 15px
}
.z150 .borderbl {
background-position: -30px -122px;
width: 15px;
height: 15px
}
.z150 .borderbr {
background-position: -45px -122px;
width: 15px;
height: 15px
}
.z150 .bordertb {
background-position: -60px -122px;
width: 24px;
height: 15px
}
.z150 .borderjointl {
background-position: -84px -122px;
width: 15px;
height: 15px
}
.z150 .borderjointr {
background-position: -99px -122px;
width: 15px;
height: 15px
}
.z150 .borderlr {
background-position: -201px -59px;
width: 15px;
height: 24px
}
.z150 .borderlrlong {
background-position: -201px -59px;
width: 15px;
height: 48px
}
.z150 #mines_hundreds {
margin: 6px 0 7px 9px
}
.z150 #mines_tens {
margin: 6px 0 7px 0
}
.z150 #mines_ones {
margin: 6px 0 7px 0
}
.z150 #seconds_hundreds {
margin: 6px 0 7px 0
}
.z150 #seconds_tens {
margin: 6px 0 7px 0
}
.z150 #seconds_ones {
margin: 6px 9px 7px 0
}
.z150 #face {
margin-top: 4px;
margin-bottom: 5px
}
.z150 .dialog {
left: 24px;
top: 102px
}
.z200 #game div {
background-image: url('data:image/png;base64,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')
}
.night-mode .z200 #game div {
background-image: url('data:image/png;base64,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')
}
.z200 .time0 {
background-position: 0 0;
width: 26px;
height: 46px
}
.z200 .time1 {
background-position: -26px 0;
width: 26px;
height: 46px
}
.z200 .time2 {
background-position: -52px 0;
width: 26px;
height: 46px
}
.z200 .time3 {
background-position: -78px 0;
width: 26px;
height: 46px
}
.z200 .time4 {
background-position: -104px 0;
width: 26px;
height: 46px
}
.z200 .time5 {
background-position: -130px 0;
width: 26px;
height: 46px
}
.z200 .time6 {
background-position: -156px 0;
width: 26px;
height: 46px
}
.z200 .time7 {
background-position: -182px 0;
width: 26px;
height: 46px
}
.z200 .time8 {
background-position: -208px 0;
width: 26px;
height: 46px
}
.z200 .time9 {
background-position: -234px 0;
width: 26px;
height: 46px
}
.z200 .time- {
background-position: -260px 0;
width: 26px;
height: 46px
}
.z200 .open0 {
background-position: 0 -46px;
width: 32px;
height: 32px
}
.z200 .open1 {
background-position: -32px -46px;
width: 32px;
height: 32px
}
.z200 .open2 {
background-position: -64px -46px;
width: 32px;
height: 32px
}
.z200 .open3 {
background-position: -96px -46px;
width: 32px;
height: 32px
}
.z200 .open4 {
background-position: -128px -46px;
width: 32px;
height: 32px
}
.z200 .open5 {
background-position: -160px -46px;
width: 32px;
height: 32px
}
.z200 .open6 {
background-position: -192px -46px;
width: 32px;
height: 32px
}
.z200 .open7 {
background-position: -224px -46px;
width: 32px;
height: 32px
}
.z200 .open8 {
background-position: -256px -46px;
width: 32px;
height: 32px
}
.z200 .blank {
background-position: 0 -78px;
width: 32px;
height: 32px
}
.z200 .bombflagged {
background-position: -32px -78px;
width: 32px;
height: 32px
}
.z200 .bombdeath {
background-position: -64px -78px;
width: 32px;
height: 32px
}
.z200 .bombmisflagged {
background-position: -96px -78px;
width: 32px;
height: 32px
}
.z200 .bombrevealed {
background-position: -128px -78px;
width: 32px;
height: 32px
}
.z200 .question {
background-position: -160px -78px;
width: 32px;
height: 32px
}
.z200 .questionpressed {
background-position: -192px -78px;
width: 32px;
height: 32px
}
.z200 .facesmile {
background-position: 0 -110px;
width: 52px;
height: 52px
}
.z200 .facepressed {
background-position: -52px -110px;
width: 52px;
height: 52px
}
.z200 .faceooh {
background-position: -104px -110px;
width: 52px;
height: 52px
}
.z200 .facedead {
background-position: -156px -110px;
width: 52px;
height: 52px
}
.z200 .facewin {
background-position: -208px -110px;
width: 52px;
height: 52px
}
.z200 .bordertl {
background-position: 0 -162px;
width: 20px;
height: 20px
}
.z200 .bordertr {
background-position: -20px -162px;
width: 20px;
height: 20px
}
.z200 .borderbl {
background-position: -40px -162px;
width: 20px;
height: 20px
}
.z200 .borderbr {
background-position: -60px -162px;
width: 20px;
height: 20px
}
.z200 .bordertb {
background-position: -80px -162px;
width: 32px;
height: 20px
}
.z200 .borderjointl {
background-position: -112px -162px;
width: 20px;
height: 20px
}
.z200 .borderjointr {
background-position: -132px -162px;
width: 20px;
height: 20px
}
.z200 .borderlr {
background-position: -268px -78px;
width: 20px;
height: 32px
}
.z200 .borderlrlong {
background-position: -268px -78px;
width: 20px;
height: 64px
}
.z200 #mines_hundreds {
margin: 8px 0 10px 12px
}
.z200 #mines_tens {
margin: 8px 0 10px 0
}
.z200 #mines_ones {
margin: 8px 0 10px 0
}
.z200 #seconds_hundreds {
margin: 8px 0 10px 0
}
.z200 #seconds_tens {
margin: 8px 0 10px 0
}
.z200 #seconds_ones {
margin: 8px 12px 10px 0
}
.z200 #face {
margin-top: 6px;
margin-bottom: 6px
}
.z200 .dialog {
left: 30px;
top: 130px
}
notice {
display: none;
}
@media only screen and (max-width:820px) {
body>* {
display: none;
}
notice {
display: initial;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: white;
text-decoration: underline;
font-weight: bolder;
font-family: 'Comic Sans MS';
font-size: 24px;
}
}
/* #f00 */
/* #f00 */
/* #f00 */
/* #f00 */
/* #f00 */
/* #f00 */
/* #f00 */
/* #f00 */
/* #f00 */
/* #f00 */
/* #f00 */
/* #f00 */
/* #f00 */
/* #f00 */
</style>
<!-- jQuery Code **DO NOT TOUCH** -->
<script>
(function (e, t) {
function _(e) {
var t = M[e] = {};
return v.each(e.split(y), function (e, n) {
t[n] = !0
}), t
}
function H(e, n, r) {
if (r === t && e.nodeType === 1) {
var i = "data-" + n.replace(P, "-$1").toLowerCase();
r = e.getAttribute(i);
if (typeof r == "string") {
try {
r = r === "true" ? !0 : r === "false" ? !1 : r === "null" ? null : +r + "" === r ? +r : D.test(r) ? v.parseJSON(r) : r
} catch (s) { }
v.data(e, n, r)
} else r = t
}
return r
}
function B(e) {
var t;
for (t in e) {
if (t === "data" && v.isEmptyObject(e[t])) continue;
if (t !== "toJSON") return !1
}
return !0
}
function et() {
return !1
}
function tt() {
return !0
}
function ut(e) {
return !e || !e.parentNode || e.parentNode.nodeType === 11
}
function at(e, t) {
do e = e[t]; while (e && e.nodeType !== 1);
return e
}
function ft(e, t, n) {
t = t || 0;
if (v.isFunction(t)) return v.grep(e, function (e, r) {
var i = !!t.call(e, r, e);
return i === n
});
if (t.nodeType) return v.grep(e, function (e, r) {
return e === t === n
});
if (typeof t == "string") {
var r = v.grep(e, function (e) {
return e.nodeType === 1
});
if (it.test(t)) return v.filter(t, r, !n);
t = v.filter(t, r)
}
return v.grep(e, function (e, r) {
return v.inArray(e, t) >= 0 === n
})
}
function lt(e) {
var t = ct.split("|"),
n = e.createDocumentFragment();
if (n.createElement)
while (t.length) n.createElement(t.pop());
return n
}
function Lt(e, t) {
return e.getElementsByTagName(t)[0] || e.appendChild(e.ownerDocument.createElement(t))
}
function At(e, t) {
if (t.nodeType !== 1 || !v.hasData(e)) return;
var n, r, i, s = v._data(e),
o = v._data(t, s),
u = s.events;
if (u) {
delete o.handle, o.events = {};
for (n in u)
for (r = 0, i = u[n].length; r < i; r++) v.event.add(t, n, u[n][r])
}
o.data && (o.data = v.extend({}, o.data))
}
function Ot(e, t) {
var n;
if (t.nodeType !== 1) return;
t.clearAttributes && t.clearAttributes(), t.mergeAttributes && t.mergeAttributes(e), n = t.nodeName.toLowerCase(), n === "object" ? (t.parentNode && (t.outerHTML = e.outerHTML), v.support.html5Clone && e.innerHTML && !v.trim(t.innerHTML) && (t.innerHTML = e.innerHTML)) : n === "input" && Et.test(e.type) ? (t.defaultChecked = t.checked = e.checked, t.value !== e.value && (t.value = e.value)) : n === "option" ? t.selected = e.defaultSelected : n === "input" || n === "textarea" ? t.defaultValue = e.defaultValue : n === "script" && t.text !== e.text && (t.text = e.text), t.removeAttribute(v.expando)
}
function Mt(e) {
return typeof e.getElementsByTagName != "undefined" ? e.getElementsByTagName("*") : typeof e.querySelectorAll != "undefined" ? e.querySelectorAll("*") : []
}
function _t(e) {
Et.test(e.type) && (e.defaultChecked = e.checked)
}
function Qt(e, t) {
if (t in e) return t;
var n = t.charAt(0).toUpperCase() + t.slice(1),
r = t,
i = Jt.length;
while (i--) {
t = Jt[i] + n;
if (t in e) return t
}
return r
}
function Gt(e, t) {
return e = t || e, v.css(e, "display") === "none" || !v.contains(e.ownerDocument, e)
}
function Yt(e, t) {
var n, r, i = [],
s = 0,
o = e.length;
for (; s < o; s++) {
n = e[s];
if (!n.style) continue;
i[s] = v._data(n, "olddisplay"), t ? (!i[s] && n.style.display === "none" && (n.style.display = ""), n.style.display === "" && Gt(n) && (i[s] = v._data(n, "olddisplay", nn(n.nodeName)))) : (r = Dt(n, "display"), !i[s] && r !== "none" && v._data(n, "olddisplay", r))
}
for (s = 0; s < o; s++) {
n = e[s];
if (!n.style) continue;
if (!t || n.style.display === "none" || n.style.display === "") n.style.display = t ? i[s] || "" : "none"
}
return e
}
function Zt(e, t, n) {
var r = Rt.exec(t);
return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t
}
function en(e, t, n, r) {
var i = n === (r ? "border" : "content") ? 4 : t === "width" ? 1 : 0,
s = 0;
for (; i < 4; i += 2) n === "margin" && (s += v.css(e, n + $t[i], !0)), r ? (n === "content" && (s -= parseFloat(Dt(e, "padding" + $t[i])) || 0), n !== "margin" && (s -= parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0)) : (s += parseFloat(Dt(e, "padding" + $t[i])) || 0, n !== "padding" && (s += parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0));
return s
}
function tn(e, t, n) {
var r = t === "width" ? e.offsetWidth : e.offsetHeight,
i = !0,
s = v.support.boxSizing && v.css(e, "boxSizing") === "border-box";
if (r <= 0 || r == null) {
r = Dt(e, t);
if (r < 0 || r == null) r = e.style[t];
if (Ut.test(r)) return r;
i = s && (v.support.boxSizingReliable || r === e.style[t]), r = parseFloat(r) || 0
}
return r + en(e, t, n || (s ? "border" : "content"), i) + "px"
}
function nn(e) {
if (Wt[e]) return Wt[e];
var t = v("<" + e + ">").appendTo(i.body),
n = t.css("display");
t.remove();
if (n === "none" || n === "") {
Pt = i.body.appendChild(Pt || v.extend(i.createElement("iframe"), {
frameBorder: 0,
width: 0,
height: 0
}));
if (!Ht || !Pt.createElement) Ht = (Pt.contentWindow || Pt.contentDocument).document, Ht.write("<!doctype html><html><body>"), Ht.close();
t = Ht.body.appendChild(Ht.createElement(e)), n = Dt(t, "display"), i.body.removeChild(Pt)
}
return Wt[e] = n, n
}
function fn(e, t, n, r) {
var i;
if (v.isArray(t)) v.each(t, function (t, i) {
n || sn.test(e) ? r(e, i) : fn(e + "[" + (typeof i == "object" ? t : "") + "]", i, n, r)
});
else if (!n && v.type(t) === "object")
for (i in t) fn(e + "[" + i + "]", t[i], n, r);
else r(e, t)
}
function Cn(e) {
return function (t, n) {
typeof t != "string" && (n = t, t = "*");
var r, i, s, o = t.toLowerCase().split(y),
u = 0,
a = o.length;
if (v.isFunction(n))
for (; u < a; u++) r = o[u], s = /^\+/.test(r), s && (r = r.substr(1) || "*"), i = e[r] = e[r] || [], i[s ? "unshift" : "push"](n)
}
}
function kn(e, n, r, i, s, o) {
s = s || n.dataTypes[0], o = o || {}, o[s] = !0;
var u, a = e[s],
f = 0,
l = a ? a.length : 0,
c = e === Sn;
for (; f < l && (c || !u); f++) u = a[f](n, r, i), typeof u == "string" && (!c || o[u] ? u = t : (n.dataTypes.unshift(u), u = kn(e, n, r, i, u, o)));
return (c || !u) && !o["*"] && (u = kn(e, n, r, i, "*", o)), u
}
function Ln(e, n) {
var r, i, s = v.ajaxSettings.flatOptions || {};
for (r in n) n[r] !== t && ((s[r] ? e : i || (i = {}))[r] = n[r]);
i && v.extend(!0, e, i)
}
function An(e, n, r) {
var i, s, o, u, a = e.contents,
f = e.dataTypes,
l = e.responseFields;
for (s in l) s in r && (n[l[s]] = r[s]);
while (f[0] === "*") f.shift(), i === t && (i = e.mimeType || n.getResponseHeader("content-type"));
if (i)
for (s in a)
if (a[s] && a[s].test(i)) {
f.unshift(s);
break
} if (f[0] in r) o = f[0];
else {
for (s in r) {
if (!f[0] || e.converters[s + " " + f[0]]) {
o = s;
break
}
u || (u = s)
}
o = o || u
}
if (o) return o !== f[0] && f.unshift(o), r[o]
}
function On(e, t) {
var n, r, i, s, o = e.dataTypes.slice(),
u = o[0],
a = {},
f = 0;
e.dataFilter && (t = e.dataFilter(t, e.dataType));
if (o[1])
for (n in e.converters) a[n.toLowerCase()] = e.converters[n];
for (; i = o[++f];)
if (i !== "*") {
if (u !== "*" && u !== i) {
n = a[u + " " + i] || a["* " + i];
if (!n)
for (r in a) {
s = r.split(" ");
if (s[1] === i) {
n = a[u + " " + s[0]] || a["* " + s[0]];
if (n) {
n === !0 ? n = a[r] : a[r] !== !0 && (i = s[0], o.splice(f--, 0, i));
break
}
}
}
if (n !== !0)
if (n && e["throws"]) t = n(t);
else try {
t = n(t)
} catch (l) {
return {
state: "parsererror",
error: n ? l : "No conversion from " + u + " to " + i
}
}
}
u = i
} return {
state: "success",
data: t
}
}
function Fn() {
try {
return new e.XMLHttpRequest
} catch (t) { }
}
function In() {
try {
return new e.ActiveXObject("Microsoft.XMLHTTP")
} catch (t) { }
}
function $n() {
return setTimeout(function () {
qn = t
}, 0), qn = v.now()
}
function Jn(e, t) {
v.each(t, function (t, n) {
var r = (Vn[t] || []).concat(Vn["*"]),
i = 0,
s = r.length;
for (; i < s; i++)
if (r[i].call(e, t, n)) return
})
}
function Kn(e, t, n) {
var r, i = 0,
s = 0,
o = Xn.length,
u = v.Deferred().always(function () {
delete a.elem
}),
a = function () {
var t = qn || $n(),
n = Math.max(0, f.startTime + f.duration - t),
r = n / f.duration || 0,
i = 1 - r,
s = 0,
o = f.tweens.length;
for (; s < o; s++) f.tweens[s].run(i);
return u.notifyWith(e, [f, i, n]), i < 1 && o ? n : (u.resolveWith(e, [f]), !1)
},
f = u.promise({
elem: e,
props: v.extend({}, t),
opts: v.extend(!0, {
specialEasing: {}
}, n),
originalProperties: t,
originalOptions: n,
startTime: qn || $n(),
duration: n.duration,
tweens: [],
createTween: function (t, n, r) {
var i = v.Tween(e, f.opts, t, n, f.opts.specialEasing[t] || f.opts.easing);
return f.tweens.push(i), i
},
stop: function (t) {
var n = 0,
r = t ? f.tweens.length : 0;
for (; n < r; n++) f.tweens[n].run(1);
return t ? u.resolveWith(e, [f, t]) : u.rejectWith(e, [f, t]), this
}
}),
l = f.props;
Qn(l, f.opts.specialEasing);
for (; i < o; i++) {
r = Xn[i].call(f, e, l, f.opts);
if (r) return r
}
return Jn(f, l), v.isFunction(f.opts.start) && f.opts.start.call(e, f), v.fx.timer(v.extend(a, {
anim: f,
queue: f.opts.queue,
elem: e
})), f.progress(f.opts.progress).done(f.opts.done, f.opts.complete).fail(f.opts.fail).always(f.opts.always)
}
function Qn(e, t) {
var n, r, i, s, o;
for (n in e) {
r = v.camelCase(n), i = t[r], s = e[n], v.isArray(s) && (i = s[1], s = e[n] = s[0]), n !== r && (e[r] = s, delete e[n]), o = v.cssHooks[r];
if (o && "expand" in o) {
s = o.expand(s), delete e[r];
for (n in s) n in e || (e[n] = s[n], t[n] = i)
} else t[r] = i
}
}
function Gn(e, t, n) {
var r, i, s, o, u, a, f, l, c, h = this,
p = e.style,
d = {},
m = [],
g = e.nodeType && Gt(e);
n.queue || (l = v._queueHooks(e, "fx"), l.unqueued == null && (l.unqueued = 0, c = l.empty.fire, l.empty.fire = function () {
l.unqueued || c()
}), l.unqueued++, h.always(function () {
h.always(function () {
l.unqueued--, v.queue(e, "fx").length || l.empty.fire()
})
})), e.nodeType === 1 && ("height" in t || "width" in t) && (n.overflow = [p.overflow, p.overflowX, p.overflowY], v.css(e, "display") === "inline" && v.css(e, "float") === "none" && (!v.support.inlineBlockNeedsLayout || nn(e.nodeName) === "inline" ? p.display = "inline-block" : p.zoom = 1)), n.overflow && (p.overflow = "hidden", v.support.shrinkWrapBlocks || h.done(function () {
p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2]
}));
for (r in t) {
s = t[r];
if (Un.exec(s)) {
delete t[r], a = a || s === "toggle";
if (s === (g ? "hide" : "show")) continue;
m.push(r)
}
}
o = m.length;
if (o) {
u = v._data(e, "fxshow") || v._data(e, "fxshow", {}), "hidden" in u && (g = u.hidden), a && (u.hidden = !g), g ? v(e).show() : h.done(function () {
v(e).hide()
}), h.done(function () {
var t;
v.removeData(e, "fxshow", !0);
for (t in d) v.style(e, t, d[t])
});
for (r = 0; r < o; r++) i = m[r], f = h.createTween(i, g ? u[i] : 0), d[i] = u[i] || v.style(e, i), i in u || (u[i] = f.start, g && (f.end = f.start, f.start = i === "width" || i === "height" ? 1 : 0))
}
}
function Yn(e, t, n, r, i) {
return new Yn.prototype.init(e, t, n, r, i)
}
function Zn(e, t) {
var n, r = {
height: e
},
i = 0;
t = t ? 1 : 0;
for (; i < 4; i += 2 - t) n = $t[i], r["margin" + n] = r["padding" + n] = e;
return t && (r.opacity = r.width = e), r
}
function tr(e) {
return v.isWindow(e) ? e : e.nodeType === 9 ? e.defaultView || e.parentWindow : !1
}
var n, r, i = e.document,
s = e.location,
o = e.navigator,
u = e.jQuery,
a = e.$,
f = Array.prototype.push,
l = Array.prototype.slice,
c = Array.prototype.indexOf,
h = Object.prototype.toString,
p = Object.prototype.hasOwnProperty,
d = String.prototype.trim,
v = function (e, t) {
return new v.fn.init(e, t, n)
},
m = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,
g = /\S/,
y = /\s+/,
b = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
w = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
E = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
S = /^[\],:{}\s]*$/,
x = /(?:^|:|,)(?:\s*\[)+/g,
T = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
N = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,
C = /^-ms-/,
k = /-([\da-z])/gi,
L = function (e, t) {
return (t + "").toUpperCase()
},
A = function () {
i.addEventListener ? (i.removeEventListener("DOMContentLoaded", A, !1), v.ready()) : i.readyState === "complete" && (i.detachEvent("onreadystatechange", A), v.ready())
},
O = {};
v.fn = v.prototype = {
constructor: v,
init: function (e, n, r) {
var s, o, u, a;
if (!e) return this;
if (e.nodeType) return this.context = this[0] = e, this.length = 1, this;
if (typeof e == "string") {
e.charAt(0) === "<" && e.charAt(e.length - 1) === ">" && e.length >= 3 ? s = [null, e, null] : s = w.exec(e);
if (s && (s[1] || !n)) {
if (s[1]) return n = n instanceof v ? n[0] : n, a = n && n.nodeType ? n.ownerDocument || n : i, e = v.parseHTML(s[1], a, !0), E.test(s[1]) && v.isPlainObject(n) && this.attr.call(e, n, !0), v.merge(this, e);
o = i.getElementById(s[2]);
if (o && o.parentNode) {
if (o.id !== s[2]) return r.find(e);
this.length = 1, this[0] = o
}
return this.context = i, this.selector = e, this
}
return !n || n.jquery ? (n || r).find(e) : this.constructor(n).find(e)
}
return v.isFunction(e) ? r.ready(e) : (e.selector !== t && (this.selector = e.selector, this.context = e.context), v.makeArray(e, this))
},
selector: "",
jquery: "1.8.3",
length: 0,
size: function () {
return this.length
},
toArray: function () {
return l.call(this)
},
get: function (e) {
return e == null ? this.toArray() : e < 0 ? this[this.length + e] : this[e]
},
pushStack: function (e, t, n) {
var r = v.merge(this.constructor(), e);
return r.prevObject = this, r.context = this.context, t === "find" ? r.selector = this.selector + (this.selector ? " " : "") + n : t && (r.selector = this.selector + "." + t + "(" + n + ")"), r
},
each: function (e, t) {
return v.each(this, e, t)
},
ready: function (e) {
return v.ready.promise().done(e), this
},
eq: function (e) {
return e = +e, e === -1 ? this.slice(e) : this.slice(e, e + 1)
},
first: function () {
return this.eq(0)
},
last: function () {
return this.eq(-1)
},
slice: function () {
return this.pushStack(l.apply(this, arguments), "slice", l.call(arguments).join(","))
},
map: function (e) {
return this.pushStack(v.map(this, function (t, n) {
return e.call(t, n, t)
}))
},
end: function () {
return this.prevObject || this.constructor(null)
},
push: f,
sort: [].sort,
splice: [].splice
}, v.fn.init.prototype = v.fn, v.extend = v.fn.extend = function () {
var e, n, r, i, s, o, u = arguments[0] || {},
a = 1,
f = arguments.length,
l = !1;
typeof u == "boolean" && (l = u, u = arguments[1] || {}, a = 2), typeof u != "object" && !v.isFunction(u) && (u = {}), f === a && (u = this, --a);
for (; a < f; a++)
if ((e = arguments[a]) != null)
for (n in e) {
r = u[n], i = e[n];
if (u === i) continue;
l && i && (v.isPlainObject(i) || (s = v.isArray(i))) ? (s ? (s = !1, o = r && v.isArray(r) ? r : []) : o = r && v.isPlainObject(r) ? r : {}, u[n] = v.extend(l, o, i)) : i !== t && (u[n] = i)
}
return u
}, v.extend({
noConflict: function (t) {
return e.$ === v && (e.$ = a), t && e.jQuery === v && (e.jQuery = u), v
},
isReady: !1,
readyWait: 1,
holdReady: function (e) {
e ? v.readyWait++ : v.ready(!0)
},
ready: function (e) {
if (e === !0 ? --v.readyWait : v.isReady) return;
if (!i.body) return setTimeout(v.ready, 1);
v.isReady = !0;
if (e !== !0 && --v.readyWait > 0) return;
r.resolveWith(i, [v]), v.fn.trigger && v(i).trigger("ready").off("ready")
},
isFunction: function (e) {
return v.type(e) === "function"
},
isArray: Array.isArray || function (e) {
return v.type(e) === "array"
},
isWindow: function (e) {
return e != null && e == e.window
},
isNumeric: function (e) {
return !isNaN(parseFloat(e)) && isFinite(e)
},
type: function (e) {
return e == null ? String(e) : O[h.call(e)] || "object"
},
isPlainObject: function (e) {
if (!e || v.type(e) !== "object" || e.nodeType || v.isWindow(e)) return !1;
try {
if (e.constructor && !p.call(e, "constructor") && !p.call(e.constructor.prototype, "isPrototypeOf")) return !1
} catch (n) {
return !1
}
var r;
for (r in e);
return r === t || p.call(e, r)
},
isEmptyObject: function (e) {
var t;
for (t in e) return !1;
return !0
},
error: function (e) {
throw new Error(e)
},
parseHTML: function (e, t, n) {
var r;
return !e || typeof e != "string" ? null : (typeof t == "boolean" && (n = t, t = 0), t = t || i, (r = E.exec(e)) ? [t.createElement(r[1])] : (r = v.buildFragment([e], t, n ? null : []), v.merge([], (r.cacheable ? v.clone(r.fragment) : r.fragment).childNodes)))
},
parseJSON: function (t) {
if (!t || typeof t != "string") return null;
t = v.trim(t);
if (e.JSON && e.JSON.parse) return e.JSON.parse(t);
if (S.test(t.replace(T, "@").replace(N, "]").replace(x, ""))) return (new Function("return " + t))();
v.error("Invalid JSON: " + t)
},
parseXML: function (n) {
var r, i;
if (!n || typeof n != "string") return null;
try {
e.DOMParser ? (i = new DOMParser, r = i.parseFromString(n, "text/xml")) : (r = new ActiveXObject("Microsoft.XMLDOM"), r.async = "false", r.loadXML(n))
} catch (s) {
r = t
}
return (!r || !r.documentElement || r.getElementsByTagName("parsererror").length) && v.error("Invalid XML: " + n), r
},
noop: function () { },
globalEval: function (t) {
t && g.test(t) && (e.execScript || function (t) {
e.eval.call(e, t)
})(t)
},
camelCase: function (e) {
return e.replace(C, "ms-").replace(k, L)
},
nodeName: function (e, t) {
return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
},
each: function (e, n, r) {
var i, s = 0,
o = e.length,
u = o === t || v.isFunction(e);
if (r) {
if (u) {
for (i in e)
if (n.apply(e[i], r) === !1) break
} else
for (; s < o;)
if (n.apply(e[s++], r) === !1) break
} else if (u) {
for (i in e)
if (n.call(e[i], i, e[i]) === !1) break
} else
for (; s < o;)
if (n.call(e[s], s, e[s++]) === !1) break;
return e
},
trim: d && !d.call("\ufeff\u00a0") ? function (e) {
return e == null ? "" : d.call(e)
} : function (e) {
return e == null ? "" : (e + "").replace(b, "")
},
makeArray: function (e, t) {
var n, r = t || [];
return e != null && (n = v.type(e), e.length == null || n === "string" || n === "function" || n === "regexp" || v.isWindow(e) ? f.call(r, e) : v.merge(r, e)), r
},
inArray: function (e, t, n) {
var r;
if (t) {
if (c) return c.call(t, e, n);
r = t.length, n = n ? n < 0 ? Math.max(0, r + n) : n : 0;
for (; n < r; n++)
if (n in t && t[n] === e) return n
}
return -1
},
merge: function (e, n) {
var r = n.length,
i = e.length,
s = 0;
if (typeof r == "number")
for (; s < r; s++) e[i++] = n[s];
else
while (n[s] !== t) e[i++] = n[s++];
return e.length = i, e
},
grep: function (e, t, n) {
var r, i = [],
s = 0,
o = e.length;
n = !!n;
for (; s < o; s++) r = !!t(e[s], s), n !== r && i.push(e[s]);
return i
},
map: function (e, n, r) {
var i, s, o = [],
u = 0,
a = e.length,
f = e instanceof v || a !== t && typeof a == "number" && (a > 0 && e[0] && e[a - 1] || a === 0 || v.isArray(e));
if (f)
for (; u < a; u++) i = n(e[u], u, r), i != null && (o[o.length] = i);
else
for (s in e) i = n(e[s], s, r), i != null && (o[o.length] = i);
return o.concat.apply([], o)
},
guid: 1,
proxy: function (e, n) {
var r, i, s;
return typeof n == "string" && (r = e[n], n = e, e = r), v.isFunction(e) ? (i = l.call(arguments, 2), s = function () {
return e.apply(n, i.concat(l.call(arguments)))
}, s.guid = e.guid = e.guid || v.guid++, s) : t
},
access: function (e, n, r, i, s, o, u) {
var a, f = r == null,
l = 0,
c = e.length;
if (r && typeof r == "object") {
for (l in r) v.access(e, n, l, r[l], 1, o, i);
s = 1
} else if (i !== t) {
a = u === t && v.isFunction(i), f && (a ? (a = n, n = function (e, t, n) {
return a.call(v(e), n)
}) : (n.call(e, i), n = null));
if (n)
for (; l < c; l++) n(e[l], r, a ? i.call(e[l], l, n(e[l], r)) : i, u);
s = 1
}
return s ? e : f ? n.call(e) : c ? n(e[0], r) : o
},
now: function () {
return (new Date).getTime()
}
}), v.ready.promise = function (t) {
if (!r) {
r = v.Deferred();
if (i.readyState === "complete") setTimeout(v.ready, 1);
else if (i.addEventListener) i.addEventListener("DOMContentLoaded", A, !1), e.addEventListener("load", v.ready, !1);
else {
i.attachEvent("onreadystatechange", A), e.attachEvent("onload", v.ready);
var n = !1;
try {
n = e.frameElement == null && i.documentElement
} catch (s) { }
n && n.doScroll && function o() {
if (!v.isReady) {
try {
n.doScroll("left")
} catch (e) {
return setTimeout(o, 50)
}
v.ready()
}
}()
}
}
return r.promise(t)
}, v.each("Boolean Number String Function Array Date RegExp Object".split(" "), function (e, t) {
O["[object " + t + "]"] = t.toLowerCase()
}), n = v(i);
var M = {};
v.Callbacks = function (e) {
e = typeof e == "string" ? M[e] || _(e) : v.extend({}, e);
var n, r, i, s, o, u, a = [],
f = !e.once && [],
l = function (t) {
n = e.memory && t, r = !0, u = s || 0, s = 0, o = a.length, i = !0;
for (; a && u < o; u++)
if (a[u].apply(t[0], t[1]) === !1 && e.stopOnFalse) {
n = !1;
break
} i = !1, a && (f ? f.length && l(f.shift()) : n ? a = [] : c.disable())
},
c = {
add: function () {
if (a) {
var t = a.length;
(function r(t) {
v.each(t, function (t, n) {
var i = v.type(n);
i === "function" ? (!e.unique || !c.has(n)) && a.push(n) : n && n.length && i !== "string" && r(n)
})
})(arguments), i ? o = a.length : n && (s = t, l(n))
}
return this
},
remove: function () {
return a && v.each(arguments, function (e, t) {
var n;
while ((n = v.inArray(t, a, n)) > -1) a.splice(n, 1), i && (n <= o && o--, n <= u && u--)
}), this
},
has: function (e) {
return v.inArray(e, a) > -1
},
empty: function () {
return a = [], this
},
disable: function () {
return a = f = n = t, this
},
disabled: function () {
return !a
},
lock: function () {
return f = t, n || c.disable(), this
},
locked: function () {
return !f
},
fireWith: function (e, t) {
return t = t || [], t = [e, t.slice ? t.slice() : t], a && (!r || f) && (i ? f.push(t) : l(t)), this
},
fire: function () {
return c.fireWith(this, arguments), this
},
fired: function () {
return !!r
}
};
return c
}, v.extend({
Deferred: function (e) {
var t = [
["resolve", "done", v.Callbacks("once memory"), "resolved"],
["reject", "fail", v.Callbacks("once memory"), "rejected"],
["notify", "progress", v.Callbacks("memory")]
],
n = "pending",
r = {
state: function () {
return n
},
always: function () {
return i.done(arguments).fail(arguments), this
},
then: function () {
var e = arguments;
return v.Deferred(function (n) {
v.each(t, function (t, r) {
var s = r[0],
o = e[t];
i[r[1]](v.isFunction(o) ? function () {
var e = o.apply(this, arguments);
e && v.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[s + "With"](this === i ? n : this, [e])
} : n[s])
}), e = null
}).promise()
},
promise: function (e) {
return e != null ? v.extend(e, r) : r
}
},
i = {};
return r.pipe = r.then, v.each(t, function (e, s) {
var o = s[2],
u = s[3];
r[s[1]] = o.add, u && o.add(function () {
n = u
}, t[e ^ 1][2].disable, t[2][2].lock), i[s[0]] = o.fire, i[s[0] + "With"] = o.fireWith
}), r.promise(i), e && e.call(i, i), i
},
when: function (e) {
var t = 0,
n = l.call(arguments),
r = n.length,
i = r !== 1 || e && v.isFunction(e.promise) ? r : 0,
s = i === 1 ? e : v.Deferred(),
o = function (e, t, n) {
return function (r) {
t[e] = this, n[e] = arguments.length > 1 ? l.call(arguments) : r, n === u ? s.notifyWith(t, n) : --i || s.resolveWith(t, n)
}
},
u, a, f;
if (r > 1) {
u = new Array(r), a = new Array(r), f = new Array(r);
for (; t < r; t++) n[t] && v.isFunction(n[t].promise) ? n[t].promise().done(o(t, f, n)).fail(s.reject).progress(o(t, a, u)) : --i
}
return i || s.resolveWith(f, n), s.promise()
}
}), v.support = function () {
var t, n, r, s, o, u, a, f, l, c, h, p = i.createElement("div");
p.setAttribute("className", "t"), p.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", n = p.getElementsByTagName("*"), r = p.getElementsByTagName("a")[0];
if (!n || !r || !n.length) return {};
s = i.createElement("select"), o = s.appendChild(i.createElement("option")), u = p.getElementsByTagName("input")[0], r.style.cssText = "top:1px;float:left;opacity:.5", t = {
leadingWhitespace: p.firstChild.nodeType === 3,
tbody: !p.getElementsByTagName("tbody").length,
htmlSerialize: !!p.getElementsByTagName("link").length,
style: /top/.test(r.getAttribute("style")),
hrefNormalized: r.getAttribute("href") === "/a",
opacity: /^0.5/.test(r.style.opacity),
cssFloat: !!r.style.cssFloat,
checkOn: u.value === "on",
optSelected: o.selected,
getSetAttribute: p.className !== "t",
enctype: !!i.createElement("form").enctype,
html5Clone: i.createElement("nav").cloneNode(!0).outerHTML !== "<:nav></:nav>",
boxModel: i.compatMode === "CSS1Compat",
submitBubbles: !0,
changeBubbles: !0,
focusinBubbles: !1,
deleteExpando: !0,
noCloneEvent: !0,
inlineBlockNeedsLayout: !1,
shrinkWrapBlocks: !1,
reliableMarginRight: !0,
boxSizingReliable: !0,
pixelPosition: !1
}, u.checked = !0, t.noCloneChecked = u.cloneNode(!0).checked, s.disabled = !0, t.optDisabled = !o.disabled;
try {
delete p.test
} catch (d) {
t.deleteExpando = !1
} !p.addEventListener && p.attachEvent && p.fireEvent && (p.attachEvent("onclick", h = function () {
t.noCloneEvent = !1
}), p.cloneNode(!0).fireEvent("onclick"), p.detachEvent("onclick", h)), u = i.createElement("input"), u.value = "t", u.setAttribute("type", "radio"), t.radioValue = u.value === "t", u.setAttribute("checked", "checked"), u.setAttribute("name", "t"), p.appendChild(u), a = i.createDocumentFragment(), a.appendChild(p.lastChild), t.checkClone = a.cloneNode(!0).cloneNode(!0).lastChild.checked, t.appendChecked = u.checked, a.removeChild(u), a.appendChild(p);
if (p.attachEvent)
for (l in {
submit: !0,
change: !0,
focusin: !0
}) f = "on" + l, c = f in p, c || (p.setAttribute(f, "return;"), c = typeof p[f] == "function"), t[l + "Bubbles"] = c;
return v(function () {
var n, r, s, o, u = "padding:0;margin:0;border:0;display:block;overflow:hidden;",
a = i.getElementsByTagName("body")[0];
if (!a) return;
n = i.createElement("div"), n.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px", a.insertBefore(n, a.firstChild), r = i.createElement("div"), n.appendChild(r), r.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", s = r.getElementsByTagName("td"), s[0].style.cssText = "padding:0;margin:0;border:0;display:none", c = s[0].offsetHeight === 0, s[0].style.display = "", s[1].style.display = "none", t.reliableHiddenOffsets = c && s[0].offsetHeight === 0, r.innerHTML = "", r.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", t.boxSizing = r.offsetWidth === 4, t.doesNotIncludeMarginInBodyOffset = a.offsetTop !== 1, e.getComputedStyle && (t.pixelPosition = (e.getComputedStyle(r, null) || {}).top !== "1%", t.boxSizingReliable = (e.getComputedStyle(r, null) || {
width: "4px"
}).width === "4px", o = i.createElement("div"), o.style.cssText = r.style.cssText = u, o.style.marginRight = o.style.width = "0", r.style.width = "1px", r.appendChild(o), t.reliableMarginRight = !parseFloat((e.getComputedStyle(o, null) || {}).marginRight)), typeof r.style.zoom != "undefined" && (r.innerHTML = "", r.style.cssText = u + "width:1px;padding:1px;display:inline;zoom:1", t.inlineBlockNeedsLayout = r.offsetWidth === 3, r.style.display = "block", r.style.overflow = "visible", r.innerHTML = "<div></div>", r.firstChild.style.width = "5px", t.shrinkWrapBlocks = r.offsetWidth !== 3, n.style.zoom = 1), a.removeChild(n), n = r = s = o = null
}), a.removeChild(p), n = r = s = o = u = a = p = null, t
}();
var D = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
P = /([A-Z])/g;
v.extend({
cache: {},
deletedIds: [],
uuid: 0,
expando: "jQuery" + (v.fn.jquery + Math.random()).replace(/\D/g, ""),
noData: {
embed: !0,
object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
applet: !0
},
hasData: function (e) {
return e = e.nodeType ? v.cache[e[v.expando]] : e[v.expando], !!e && !B(e)
},
data: function (e, n, r, i) {
if (!v.acceptData(e)) return;
var s, o, u = v.expando,
a = typeof n == "string",
f = e.nodeType,
l = f ? v.cache : e,
c = f ? e[u] : e[u] && u;
if ((!c || !l[c] || !i && !l[c].data) && a && r === t) return;
c || (f ? e[u] = c = v.deletedIds.pop() || v.guid++ : c = u), l[c] || (l[c] = {}, f || (l[c].toJSON = v.noop));
if (typeof n == "object" || typeof n == "function") i ? l[c] = v.extend(l[c], n) : l[c].data = v.extend(l[c].data, n);
return s = l[c], i || (s.data || (s.data = {}), s = s.data), r !== t && (s[v.camelCase(n)] = r), a ? (o = s[n], o == null && (o = s[v.camelCase(n)])) : o = s, o
},
removeData: function (e, t, n) {
if (!v.acceptData(e)) return;
var r, i, s, o = e.nodeType,
u = o ? v.cache : e,
a = o ? e[v.expando] : v.expando;
if (!u[a]) return;
if (t) {
r = n ? u[a] : u[a].data;
if (r) {
v.isArray(t) || (t in r ? t = [t] : (t = v.camelCase(t), t in r ? t = [t] : t = t.split(" ")));
for (i = 0, s = t.length; i < s; i++) delete r[t[i]];
if (!(n ? B : v.isEmptyObject)(r)) return
}
}
if (!n) {
delete u[a].data;
if (!B(u[a])) return
}
o ? v.cleanData([e], !0) : v.support.deleteExpando || u != u.window ? delete u[a] : u[a] = null
},
_data: function (e, t, n) {
return v.data(e, t, n, !0)
},
acceptData: function (e) {
var t = e.nodeName && v.noData[e.nodeName.toLowerCase()];
return !t || t !== !0 && e.getAttribute("classid") === t
}
}), v.fn.extend({
data: function (e, n) {
var r, i, s, o, u, a = this[0],
f = 0,
l = null;
if (e === t) {
if (this.length) {
l = v.data(a);
if (a.nodeType === 1 && !v._data(a, "parsedAttrs")) {
s = a.attributes;
for (u = s.length; f < u; f++) o = s[f].name, o.indexOf("data-") || (o = v.camelCase(o.substring(5)), H(a, o, l[o]));
v._data(a, "parsedAttrs", !0)
}
}
return l
}
return typeof e == "object" ? this.each(function () {
v.data(this, e)
}) : (r = e.split(".", 2), r[1] = r[1] ? "." + r[1] : "", i = r[1] + "!", v.access(this, function (n) {
if (n === t) return l = this.triggerHandler("getData" + i, [r[0]]), l === t && a && (l = v.data(a, e), l = H(a, e, l)), l === t && r[1] ? this.data(r[0]) : l;
r[1] = n, this.each(function () {
var t = v(this);
t.triggerHandler("setData" + i, r), v.data(this, e, n), t.triggerHandler("changeData" + i, r)
})
}, null, n, arguments.length > 1, null, !1))
},
removeData: function (e) {
return this.each(function () {
v.removeData(this, e)
})
}
}), v.extend({
queue: function (e, t, n) {
var r;
if (e) return t = (t || "fx") + "queue", r = v._data(e, t), n && (!r || v.isArray(n) ? r = v._data(e, t, v.makeArray(n)) : r.push(n)), r || []
},
dequeue: function (e, t) {
t = t || "fx";
var n = v.queue(e, t),
r = n.length,
i = n.shift(),
s = v._queueHooks(e, t),
o = function () {
v.dequeue(e, t)
};
i === "inprogress" && (i = n.shift(), r--), i && (t === "fx" && n.unshift("inprogress"), delete s.stop, i.call(e, o, s)), !r && s && s.empty.fire()
},
_queueHooks: function (e, t) {
var n = t + "queueHooks";
return v._data(e, n) || v._data(e, n, {
empty: v.Callbacks("once memory").add(function () {
v.removeData(e, t + "queue", !0), v.removeData(e, n, !0)
})
})
}
}), v.fn.extend({
queue: function (e, n) {
var r = 2;
return typeof e != "string" && (n = e, e = "fx", r--), arguments.length < r ? v.queue(this[0], e) : n === t ? this : this.each(function () {
var t = v.queue(this, e, n);
v._queueHooks(this, e), e === "fx" && t[0] !== "inprogress" && v.dequeue(this, e)
})
},
dequeue: function (e) {
return this.each(function () {
v.dequeue(this, e)
})
},
delay: function (e, t) {
return e = v.fx ? v.fx.speeds[e] || e : e, t = t || "fx", this.queue(t, function (t, n) {
var r = setTimeout(t, e);
n.stop = function () {
clearTimeout(r)
}
})
},
clearQueue: function (e) {
return this.queue(e || "fx", [])
},
promise: function (e, n) {
var r, i = 1,
s = v.Deferred(),
o = this,
u = this.length,
a = function () {
--i || s.resolveWith(o, [o])
};
typeof e != "string" && (n = e, e = t), e = e || "fx";
while (u--) r = v._data(o[u], e + "queueHooks"), r && r.empty && (i++, r.empty.add(a));
return a(), s.promise(n)
}
});
var j, F, I, q = /[\t\r\n]/g,
R = /\r/g,
U = /^(?:button|input)$/i,
z = /^(?:button|input|object|select|textarea)$/i,
W = /^a(?:rea|)$/i,
X = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
V = v.support.getSetAttribute;
v.fn.extend({
attr: function (e, t) {
return v.access(this, v.attr, e, t, arguments.length > 1)
},
removeAttr: function (e) {
return this.each(function () {
v.removeAttr(this, e)
})
},
prop: function (e, t) {
return v.access(this, v.prop, e, t, arguments.length > 1)
},
removeProp: function (e) {
return e = v.propFix[e] || e, this.each(function () {
try {
this[e] = t, delete this[e]
} catch (n) { }
})
},
addClass: function (e) {
var t, n, r, i, s, o, u;
if (v.isFunction(e)) return this.each(function (t) {
v(this).addClass(e.call(this, t, this.className))
});
if (e && typeof e == "string") {
t = e.split(y);
for (n = 0, r = this.length; n < r; n++) {
i = this[n];
if (i.nodeType === 1)
if (!i.className && t.length === 1) i.className = e;
else {
s = " " + i.className + " ";
for (o = 0, u = t.length; o < u; o++) s.indexOf(" " + t[o] + " ") < 0 && (s += t[o] + " ");
i.className = v.trim(s)
}
}
}
return this
},
removeClass: function (e) {
var n, r, i, s, o, u, a;
if (v.isFunction(e)) return this.each(function (t) {
v(this).removeClass(e.call(this, t, this.className))
});
if (e && typeof e == "string" || e === t) {
n = (e || "").split(y);
for (u = 0, a = this.length; u < a; u++) {
i = this[u];
if (i.nodeType === 1 && i.className) {
r = (" " + i.className + " ").replace(q, " ");
for (s = 0, o = n.length; s < o; s++)
while (r.indexOf(" " + n[s] + " ") >= 0) r = r.replace(" " + n[s] + " ", " ");
i.className = e ? v.trim(r) : ""
}
}
}
return this
},
toggleClass: function (e, t) {
var n = typeof e,
r = typeof t == "boolean";
return v.isFunction(e) ? this.each(function (n) {
v(this).toggleClass(e.call(this, n, this.className, t), t)
}) : this.each(function () {
if (n === "string") {
var i, s = 0,
o = v(this),
u = t,
a = e.split(y);
while (i = a[s++]) u = r ? u : !o.hasClass(i), o[u ? "addClass" : "removeClass"](i)
} else if (n === "undefined" || n === "boolean") this.className && v._data(this, "__className__", this.className), this.className = this.className || e === !1 ? "" : v._data(this, "__className__") || ""
})
},
hasClass: function (e) {
var t = " " + e + " ",
n = 0,
r = this.length;
for (; n < r; n++)
if (this[n].nodeType === 1 && (" " + this[n].className + " ").replace(q, " ").indexOf(t) >= 0) return !0;
return !1
},
val: function (e) {
var n, r, i, s = this[0];
if (!arguments.length) {
if (s) return n = v.valHooks[s.type] || v.valHooks[s.nodeName.toLowerCase()], n && "get" in n && (r = n.get(s, "value")) !== t ? r : (r = s.value, typeof r == "string" ? r.replace(R, "") : r == null ? "" : r);
return
}
return i = v.isFunction(e), this.each(function (r) {
var s, o = v(this);
if (this.nodeType !== 1) return;
i ? s = e.call(this, r, o.val()) : s = e, s == null ? s = "" : typeof s == "number" ? s += "" : v.isArray(s) && (s = v.map(s, function (e) {
return e == null ? "" : e + ""
})), n = v.valHooks[this.type] || v.valHooks[this.nodeName.toLowerCase()];
if (!n || !("set" in n) || n.set(this, s, "value") === t) this.value = s
})
}
}), v.extend({
valHooks: {
option: {
get: function (e) {
var t = e.attributes.value;
return !t || t.specified ? e.value : e.text
}
},
select: {
get: function (e) {
var t, n, r = e.options,
i = e.selectedIndex,
s = e.type === "select-one" || i < 0,
o = s ? null : [],
u = s ? i + 1 : r.length,
a = i < 0 ? u : s ? i : 0;
for (; a < u; a++) {
n = r[a];
if ((n.selected || a === i) && (v.support.optDisabled ? !n.disabled : n.getAttribute("disabled") === null) && (!n.parentNode.disabled || !v.nodeName(n.parentNode, "optgroup"))) {
t = v(n).val();
if (s) return t;
o.push(t)
}
}
return o
},
set: function (e, t) {
var n = v.makeArray(t);
return v(e).find("option").each(function () {
this.selected = v.inArray(v(this).val(), n) >= 0
}), n.length || (e.selectedIndex = -1), n
}
}
},
attrFn: {},
attr: function (e, n, r, i) {
var s, o, u, a = e.nodeType;
if (!e || a === 3 || a === 8 || a === 2) return;
if (i && v.isFunction(v.fn[n])) return v(e)[n](r);
if (typeof e.getAttribute == "undefined") return v.prop(e, n, r);
u = a !== 1 || !v.isXMLDoc(e), u && (n = n.toLowerCase(), o = v.attrHooks[n] || (X.test(n) ? F : j));
if (r !== t) {
if (r === null) {
v.removeAttr(e, n);
return
}
return o && "set" in o && u && (s = o.set(e, r, n)) !== t ? s : (e.setAttribute(n, r + ""), r)
}
return o && "get" in o && u && (s = o.get(e, n)) !== null ? s : (s = e.getAttribute(n), s === null ? t : s)
},
removeAttr: function (e, t) {
var n, r, i, s, o = 0;
if (t && e.nodeType === 1) {
r = t.split(y);
for (; o < r.length; o++) i = r[o], i && (n = v.propFix[i] || i, s = X.test(i), s || v.attr(e, i, ""), e.removeAttribute(V ? i : n), s && n in e && (e[n] = !1))
}
},
attrHooks: {
type: {
set: function (e, t) {
if (U.test(e.nodeName) && e.parentNode) v.error("type property can't be changed");
else if (!v.support.radioValue && t === "radio" && v.nodeName(e, "input")) {
var n = e.value;
return e.setAttribute("type", t), n && (e.value = n), t
}
}
},
value: {
get: function (e, t) {
return j && v.nodeName(e, "button") ? j.get(e, t) : t in e ? e.value : null
},
set: function (e, t, n) {
if (j && v.nodeName(e, "button")) return j.set(e, t, n);
e.value = t
}
}
},
propFix: {
tabindex: "tabIndex",
readonly: "readOnly",
"for": "htmlFor",
"class": "className",
maxlength: "maxLength",
cellspacing: "cellSpacing",
cellpadding: "cellPadding",
rowspan: "rowSpan",
colspan: "colSpan",
usemap: "useMap",
frameborder: "frameBorder",
contenteditable: "contentEditable"
},
prop: function (e, n, r) {
var i, s, o, u = e.nodeType;
if (!e || u === 3 || u === 8 || u === 2) return;
return o = u !== 1 || !v.isXMLDoc(e), o && (n = v.propFix[n] || n, s = v.propHooks[n]), r !== t ? s && "set" in s && (i = s.set(e, r, n)) !== t ? i : e[n] = r : s && "get" in s && (i = s.get(e, n)) !== null ? i : e[n]
},
propHooks: {
tabIndex: {
get: function (e) {
var n = e.getAttributeNode("tabindex");
return n && n.specified ? parseInt(n.value, 10) : z.test(e.nodeName) || W.test(e.nodeName) && e.href ? 0 : t
}
}
}
}), F = {
get: function (e, n) {
var r, i = v.prop(e, n);
return i === !0 || typeof i != "boolean" && (r = e.getAttributeNode(n)) && r.nodeValue !== !1 ? n.toLowerCase() : t
},
set: function (e, t, n) {
var r;
return t === !1 ? v.removeAttr(e, n) : (r = v.propFix[n] || n, r in e && (e[r] = !0), e.setAttribute(n, n.toLowerCase())), n
}
}, V || (I = {
name: !0,
id: !0,
coords: !0
}, j = v.valHooks.button = {
get: function (e, n) {
var r;
return r = e.getAttributeNode(n), r && (I[n] ? r.value !== "" : r.specified) ? r.value : t
},
set: function (e, t, n) {
var r = e.getAttributeNode(n);
return r || (r = i.createAttribute(n), e.setAttributeNode(r)), r.value = t + ""
}
}, v.each(["width", "height"], function (e, t) {
v.attrHooks[t] = v.extend(v.attrHooks[t], {
set: function (e, n) {
if (n === "") return e.setAttribute(t, "auto"), n
}
})
}), v.attrHooks.contenteditable = {
get: j.get,
set: function (e, t, n) {
t === "" && (t = "false"), j.set(e, t, n)
}
}), v.support.hrefNormalized || v.each(["href", "src", "width", "height"], function (e, n) {
v.attrHooks[n] = v.extend(v.attrHooks[n], {
get: function (e) {
var r = e.getAttribute(n, 2);
return r === null ? t : r
}
})
}), v.support.style || (v.attrHooks.style = {
get: function (e) {
return e.style.cssText.toLowerCase() || t
},
set: function (e, t) {
return e.style.cssText = t + ""
}
}), v.support.optSelected || (v.propHooks.selected = v.extend(v.propHooks.selected, {
get: function (e) {
var t = e.parentNode;
return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null
}
})), v.support.enctype || (v.propFix.enctype = "encoding"), v.support.checkOn || v.each(["radio", "checkbox"], function () {
v.valHooks[this] = {
get: function (e) {
return e.getAttribute("value") === null ? "on" : e.value
}
}
}), v.each(["radio", "checkbox"], function () {
v.valHooks[this] = v.extend(v.valHooks[this], {
set: function (e, t) {
if (v.isArray(t)) return e.checked = v.inArray(v(e).val(), t) >= 0
}
})
});
var $ = /^(?:textarea|input|select)$/i,
J = /^([^\.]*|)(?:\.(.+)|)$/,
K = /(?:^|\s)hover(\.\S+|)\b/,
Q = /^key/,
G = /^(?:mouse|contextmenu)|click/,
Y = /^(?:focusinfocus|focusoutblur)$/,
Z = function (e) {
return v.event.special.hover ? e : e.replace(K, "mouseenter$1 mouseleave$1")
};
v.event = {
add: function (e, n, r, i, s) {
var o, u, a, f, l, c, h, p, d, m, g;
if (e.nodeType === 3 || e.nodeType === 8 || !n || !r || !(o = v._data(e))) return;
r.handler && (d = r, r = d.handler, s = d.selector), r.guid || (r.guid = v.guid++), a = o.events, a || (o.events = a = {}), u = o.handle, u || (o.handle = u = function (e) {
return typeof v == "undefined" || !!e && v.event.triggered === e.type ? t : v.event.dispatch.apply(u.elem, arguments)
}, u.elem = e), n = v.trim(Z(n)).split(" ");
for (f = 0; f < n.length; f++) {
l = J.exec(n[f]) || [], c = l[1], h = (l[2] || "").split(".").sort(), g = v.event.special[c] || {}, c = (s ? g.delegateType : g.bindType) || c, g = v.event.special[c] || {}, p = v.extend({
type: c,
origType: l[1],
data: i,
handler: r,
guid: r.guid,
selector: s,
needsContext: s && v.expr.match.needsContext.test(s),
namespace: h.join(".")
}, d), m = a[c];
if (!m) {
m = a[c] = [], m.delegateCount = 0;
if (!g.setup || g.setup.call(e, i, h, u) === !1) e.addEventListener ? e.addEventListener(c, u, !1) : e.attachEvent && e.attachEvent("on" + c, u)
}
g.add && (g.add.call(e, p), p.handler.guid || (p.handler.guid = r.guid)), s ? m.splice(m.delegateCount++, 0, p) : m.push(p), v.event.global[c] = !0
}
e = null
},
global: {},
remove: function (e, t, n, r, i) {
var s, o, u, a, f, l, c, h, p, d, m, g = v.hasData(e) && v._data(e);
if (!g || !(h = g.events)) return;
t = v.trim(Z(t || "")).split(" ");
for (s = 0; s < t.length; s++) {
o = J.exec(t[s]) || [], u = a = o[1], f = o[2];
if (!u) {
for (u in h) v.event.remove(e, u + t[s], n, r, !0);
continue
}
p = v.event.special[u] || {}, u = (r ? p.delegateType : p.bindType) || u, d = h[u] || [], l = d.length, f = f ? new RegExp("(^|\\.)" + f.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
for (c = 0; c < d.length; c++) m = d[c], (i || a === m.origType) && (!n || n.guid === m.guid) && (!f || f.test(m.namespace)) && (!r || r === m.selector || r === "**" && m.selector) && (d.splice(c--, 1), m.selector && d.delegateCount--, p.remove && p.remove.call(e, m));
d.length === 0 && l !== d.length && ((!p.teardown || p.teardown.call(e, f, g.handle) === !1) && v.removeEvent(e, u, g.handle), delete h[u])
}
v.isEmptyObject(h) && (delete g.handle, v.removeData(e, "events", !0))
},
customEvent: {
getData: !0,
setData: !0,
changeData: !0
},
trigger: function (n, r, s, o) {
if (!s || s.nodeType !== 3 && s.nodeType !== 8) {
var u, a, f, l, c, h, p, d, m, g, y = n.type || n,
b = [];
if (Y.test(y + v.event.triggered)) return;
y.indexOf("!") >= 0 && (y = y.slice(0, -1), a = !0), y.indexOf(".") >= 0 && (b = y.split("."), y = b.shift(), b.sort());
if ((!s || v.event.customEvent[y]) && !v.event.global[y]) return;
n = typeof n == "object" ? n[v.expando] ? n : new v.Event(y, n) : new v.Event(y), n.type = y, n.isTrigger = !0, n.exclusive = a, n.namespace = b.join("."), n.namespace_re = n.namespace ? new RegExp("(^|\\.)" + b.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, h = y.indexOf(":") < 0 ? "on" + y : "";
if (!s) {
u = v.cache;
for (f in u) u[f].events && u[f].events[y] && v.event.trigger(n, r, u[f].handle.elem, !0);
return
}
n.result = t, n.target || (n.target = s), r = r != null ? v.makeArray(r) : [], r.unshift(n), p = v.event.special[y] || {};
if (p.trigger && p.trigger.apply(s, r) === !1) return;
m = [
[s, p.bindType || y]
];
if (!o && !p.noBubble && !v.isWindow(s)) {
g = p.delegateType || y, l = Y.test(g + y) ? s : s.parentNode;
for (c = s; l; l = l.parentNode) m.push([l, g]), c = l;
c === (s.ownerDocument || i) && m.push([c.defaultView || c.parentWindow || e, g])
}
for (f = 0; f < m.length && !n.isPropagationStopped(); f++) l = m[f][0], n.type = m[f][1], d = (v._data(l, "events") || {})[n.type] && v._data(l, "handle"), d && d.apply(l, r), d = h && l[h], d && v.acceptData(l) && d.apply && d.apply(l, r) === !1 && n.preventDefault();
return n.type = y, !o && !n.isDefaultPrevented() && (!p._default || p._default.apply(s.ownerDocument, r) === !1) && (y !== "click" || !v.nodeName(s, "a")) && v.acceptData(s) && h && s[y] && (y !== "focus" && y !== "blur" || n.target.offsetWidth !== 0) && !v.isWindow(s) && (c = s[h], c && (s[h] = null), v.event.triggered = y, s[y](), v.event.triggered = t, c && (s[h] = c)), n.result
}
return
},
dispatch: function (n) {
n = v.event.fix(n || e.event);
var r, i, s, o, u, a, f, c, h, p, d = (v._data(this, "events") || {})[n.type] || [],
m = d.delegateCount,
g = l.call(arguments),
y = !n.exclusive && !n.namespace,
b = v.event.special[n.type] || {},
w = [];
g[0] = n, n.delegateTarget = this;
if (b.preDispatch && b.preDispatch.call(this, n) === !1) return;
if (m && (!n.button || n.type !== "click"))
for (s = n.target; s != this; s = s.parentNode || this)
if (s.disabled !== !0 || n.type !== "click") {
u = {}, f = [];
for (r = 0; r < m; r++) c = d[r], h = c.selector, u[h] === t && (u[h] = c.needsContext ? v(h, this).index(s) >= 0 : v.find(h, this, null, [s]).length), u[h] && f.push(c);
f.length && w.push({
elem: s,
matches: f
})
} d.length > m && w.push({
elem: this,
matches: d.slice(m)
});
for (r = 0; r < w.length && !n.isPropagationStopped(); r++) {
a = w[r], n.currentTarget = a.elem;
for (i = 0; i < a.matches.length && !n.isImmediatePropagationStopped(); i++) {
c = a.matches[i];
if (y || !n.namespace && !c.namespace || n.namespace_re && n.namespace_re.test(c.namespace)) n.data = c.data, n.handleObj = c, o = ((v.event.special[c.origType] || {}).handle || c.handler).apply(a.elem, g), o !== t && (n.result = o, o === !1 && (n.preventDefault(), n.stopPropagation()))
}
}
return b.postDispatch && b.postDispatch.call(this, n), n.result
},
props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
fixHooks: {},
keyHooks: {
props: "char charCode key keyCode".split(" "),
filter: function (e, t) {
return e.which == null && (e.which = t.charCode != null ? t.charCode : t.keyCode), e
}
},
mouseHooks: {
props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
filter: function (e, n) {
var r, s, o, u = n.button,
a = n.fromElement;
return e.pageX == null && n.clientX != null && (r = e.target.ownerDocument || i, s = r.documentElement, o = r.body, e.pageX = n.clientX + (s && s.scrollLeft || o && o.scrollLeft || 0) - (s && s.clientLeft || o && o.clientLeft || 0), e.pageY = n.clientY + (s && s.scrollTop || o && o.scrollTop || 0) - (s && s.clientTop || o && o.clientTop || 0)), !e.relatedTarget && a && (e.relatedTarget = a === e.target ? n.toElement : a), !e.which && u !== t && (e.which = u & 1 ? 1 : u & 2 ? 3 : u & 4 ? 2 : 0), e
}
},
fix: function (e) {
if (e[v.expando]) return e;
var t, n, r = e,
s = v.event.fixHooks[e.type] || {},
o = s.props ? this.props.concat(s.props) : this.props;
e = v.Event(r);
for (t = o.length; t;) n = o[--t], e[n] = r[n];
return e.target || (e.target = r.srcElement || i), e.target.nodeType === 3 && (e.target = e.target.parentNode), e.metaKey = !!e.metaKey, s.filter ? s.filter(e, r) : e
},
special: {
load: {
noBubble: !0
},
focus: {
delegateType: "focusin"
},
blur: {
delegateType: "focusout"
},
beforeunload: {
setup: function (e, t, n) {
v.isWindow(this) && (this.onbeforeunload = n)
},
teardown: function (e, t) {
this.onbeforeunload === t && (this.onbeforeunload = null)
}
}
},
simulate: function (e, t, n, r) {
var i = v.extend(new v.Event, n, {
type: e,
isSimulated: !0,
originalEvent: {}
});
r ? v.event.trigger(i, null, t) : v.event.dispatch.call(t, i), i.isDefaultPrevented() && n.preventDefault()
}
}, v.event.handle = v.event.dispatch, v.removeEvent = i.removeEventListener ? function (e, t, n) {
e.removeEventListener && e.removeEventListener(t, n, !1)
} : function (e, t, n) {
var r = "on" + t;
e.detachEvent && (typeof e[r] == "undefined" && (e[r] = null), e.detachEvent(r, n))
}, v.Event = function (e, t) {
if (!(this instanceof v.Event)) return new v.Event(e, t);
e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? tt : et) : this.type = e, t && v.extend(this, t), this.timeStamp = e && e.timeStamp || v.now(), this[v.expando] = !0
}, v.Event.prototype = {
preventDefault: function () {
this.isDefaultPrevented = tt;
var e = this.originalEvent;
if (!e) return;
e.preventDefault ? e.preventDefault() : e.returnValue = !1
},
stopPropagation: function () {
this.isPropagationStopped = tt;
var e = this.originalEvent;
if (!e) return;
e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0
},
stopImmediatePropagation: function () {
this.isImmediatePropagationStopped = tt, this.stopPropagation()
},
isDefaultPrevented: et,
isPropagationStopped: et,
isImmediatePropagationStopped: et
}, v.each({
mouseenter: "mouseover",
mouseleave: "mouseout"
}, function (e, t) {
v.event.special[e] = {
delegateType: t,
bindType: t,
handle: function (e) {
var n, r = this,
i = e.relatedTarget,
s = e.handleObj,
o = s.selector;
if (!i || i !== r && !v.contains(r, i)) e.type = s.origType, n = s.handler.apply(this, arguments), e.type = t;
return n
}
}
}), v.support.submitBubbles || (v.event.special.submit = {
setup: function () {
if (v.nodeName(this, "form")) return !1;
v.event.add(this, "click._submit keypress._submit", function (e) {
var n = e.target,
r = v.nodeName(n, "input") || v.nodeName(n, "button") ? n.form : t;
r && !v._data(r, "_submit_attached") && (v.event.add(r, "submit._submit", function (e) {
e._submit_bubble = !0
}), v._data(r, "_submit_attached", !0))
})
},
postDispatch: function (e) {
e._submit_bubble && (delete e._submit_bubble, this.parentNode && !e.isTrigger && v.event.simulate("submit", this.parentNode, e, !0))
},
teardown: function () {
if (v.nodeName(this, "form")) return !1;
v.event.remove(this, "._submit")
}
}), v.support.changeBubbles || (v.event.special.change = {
setup: function () {
if ($.test(this.nodeName)) {
if (this.type === "checkbox" || this.type === "radio") v.event.add(this, "propertychange._change", function (e) {
e.originalEvent.propertyName === "checked" && (this._just_changed = !0)
}), v.event.add(this, "click._change", function (e) {
this._just_changed && !e.isTrigger && (this._just_changed = !1), v.event.simulate("change", this, e, !0)
});
return !1
}
v.event.add(this, "beforeactivate._change", function (e) {
var t = e.target;
$.test(t.nodeName) && !v._data(t, "_change_attached") && (v.event.add(t, "change._change", function (e) {
this.parentNode && !e.isSimulated && !e.isTrigger && v.event.simulate("change", this.parentNode, e, !0)
}), v._data(t, "_change_attached", !0))
})
},
handle: function (e) {
var t = e.target;
if (this !== t || e.isSimulated || e.isTrigger || t.type !== "radio" && t.type !== "checkbox") return e.handleObj.handler.apply(this, arguments)
},
teardown: function () {
return v.event.remove(this, "._change"), !$.test(this.nodeName)
}
}), v.support.focusinBubbles || v.each({
focus: "focusin",
blur: "focusout"
}, function (e, t) {
var n = 0,
r = function (e) {
v.event.simulate(t, e.target, v.event.fix(e), !0)
};
v.event.special[t] = {
setup: function () {
n++ === 0 && i.addEventListener(e, r, !0)
},
teardown: function () {
--n === 0 && i.removeEventListener(e, r, !0)
}
}
}), v.fn.extend({
on: function (e, n, r, i, s) {
var o, u;
if (typeof e == "object") {
typeof n != "string" && (r = r || n, n = t);
for (u in e) this.on(u, n, r, e[u], s);
return this
}
r == null && i == null ? (i = n, r = n = t) : i == null && (typeof n == "string" ? (i = r, r = t) : (i = r, r = n, n = t));
if (i === !1) i = et;
else if (!i) return this;
return s === 1 && (o = i, i = function (e) {
return v().off(e), o.apply(this, arguments)
}, i.guid = o.guid || (o.guid = v.guid++)), this.each(function () {
v.event.add(this, e, i, r, n)
})
},
one: function (e, t, n, r) {
return this.on(e, t, n, r, 1)
},
off: function (e, n, r) {
var i, s;
if (e && e.preventDefault && e.handleObj) return i = e.handleObj, v(e.delegateTarget).off(i.namespace ? i.origType + "." + i.namespace : i.origType, i.selector, i.handler), this;
if (typeof e == "object") {
for (s in e) this.off(s, n, e[s]);
return this
}
if (n === !1 || typeof n == "function") r = n, n = t;
return r === !1 && (r = et), this.each(function () {
v.event.remove(this, e, r, n)
})
},
bind: function (e, t, n) {
return this.on(e, null, t, n)
},
unbind: function (e, t) {
return this.off(e, null, t)
},
live: function (e, t, n) {
return v(this.context).on(e, this.selector, t, n), this
},
die: function (e, t) {
return v(this.context).off(e, this.selector || "**", t), this
},
delegate: function (e, t, n, r) {
return this.on(t, e, n, r)
},
undelegate: function (e, t, n) {
return arguments.length === 1 ? this.off(e, "**") : this.off(t, e || "**", n)
},
trigger: function (e, t) {
return this.each(function () {
v.event.trigger(e, t, this)
})
},
triggerHandler: function (e, t) {
if (this[0]) return v.event.trigger(e, t, this[0], !0)
},
toggle: function (e) {
var t = arguments,
n = e.guid || v.guid++,
r = 0,
i = function (n) {
var i = (v._data(this, "lastToggle" + e.guid) || 0) % r;
return v._data(this, "lastToggle" + e.guid, i + 1), n.preventDefault(), t[i].apply(this, arguments) || !1
};
i.guid = n;
while (r < t.length) t[r++].guid = n;
return this.click(i)
},
hover: function (e, t) {
return this.mouseenter(e).mouseleave(t || e)
}
}), v.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 (e, t) {
v.fn[t] = function (e, n) {
return n == null && (n = e, e = null), arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
}, Q.test(t) && (v.event.fixHooks[t] = v.event.keyHooks), G.test(t) && (v.event.fixHooks[t] = v.event.mouseHooks)
}),
function (e, t) {
function nt(e, t, n, r) {
n = n || [], t = t || g;
var i, s, a, f, l = t.nodeType;
if (!e || typeof e != "string") return n;
if (l !== 1 && l !== 9) return [];
a = o(t);
if (!a && !r)
if (i = R.exec(e))
if (f = i[1]) {
if (l === 9) {
s = t.getElementById(f);
if (!s || !s.parentNode) return n;
if (s.id === f) return n.push(s), n
} else if (t.ownerDocument && (s = t.ownerDocument.getElementById(f)) && u(t, s) && s.id === f) return n.push(s), n
} else {
if (i[2]) return S.apply(n, x.call(t.getElementsByTagName(e), 0)), n;
if ((f = i[3]) && Z && t.getElementsByClassName) return S.apply(n, x.call(t.getElementsByClassName(f), 0)), n
} return vt(e.replace(j, "$1"), t, n, r, a)
}
function rt(e) {
return function (t) {
var n = t.nodeName.toLowerCase();
return n === "input" && t.type === e
}
}
function it(e) {
return function (t) {
var n = t.nodeName.toLowerCase();
return (n === "input" || n === "button") && t.type === e
}
}
function st(e) {
return N(function (t) {
return t = +t, N(function (n, r) {
var i, s = e([], n.length, t),
o = s.length;
while (o--) n[i = s[o]] && (n[i] = !(r[i] = n[i]))
})
})
}
function ot(e, t, n) {
if (e === t) return n;
var r = e.nextSibling;
while (r) {
if (r === t) return -1;
r = r.nextSibling
}
return 1
}
function ut(e, t) {
var n, r, s, o, u, a, f, l = L[d][e + " "];
if (l) return t ? 0 : l.slice(0);
u = e, a = [], f = i.preFilter;
while (u) {
if (!n || (r = F.exec(u))) r && (u = u.slice(r[0].length) || u), a.push(s = []);
n = !1;
if (r = I.exec(u)) s.push(n = new m(r.shift())), u = u.slice(n.length), n.type = r[0].replace(j, " ");
for (o in i.filter) (r = J[o].exec(u)) && (!f[o] || (r = f[o](r))) && (s.push(n = new m(r.shift())), u = u.slice(n.length), n.type = o, n.matches = r);
if (!n) break
}
return t ? u.length : u ? nt.error(e) : L(e, a).slice(0)
}
function at(e, t, r) {
var i = t.dir,
s = r && t.dir === "parentNode",
o = w++;
return t.first ? function (t, n, r) {
while (t = t[i])
if (s || t.nodeType === 1) return e(t, n, r)
} : function (t, r, u) {
if (!u) {
var a, f = b + " " + o + " ",
l = f + n;
while (t = t[i])
if (s || t.nodeType === 1) {
if ((a = t[d]) === l) return t.sizset;
if (typeof a == "string" && a.indexOf(f) === 0) {
if (t.sizset) return t
} else {
t[d] = l;
if (e(t, r, u)) return t.sizset = !0, t;
t.sizset = !1
}
}
} else
while (t = t[i])
if (s || t.nodeType === 1)
if (e(t, r, u)) return t
}
}
function ft(e) {
return e.length > 1 ? function (t, n, r) {
var i = e.length;
while (i--)
if (!e[i](t, n, r)) return !1;
return !0
} : e[0]
}
function lt(e, t, n, r, i) {
var s, o = [],
u = 0,
a = e.length,
f = t != null;
for (; u < a; u++)
if (s = e[u])
if (!n || n(s, r, i)) o.push(s), f && t.push(u);
return o
}
function ct(e, t, n, r, i, s) {
return r && !r[d] && (r = ct(r)), i && !i[d] && (i = ct(i, s)), N(function (s, o, u, a) {
var f, l, c, h = [],
p = [],
d = o.length,
v = s || dt(t || "*", u.nodeType ? [u] : u, []),
m = e && (s || !t) ? lt(v, h, e, u, a) : v,
g = n ? i || (s ? e : d || r) ? [] : o : m;
n && n(m, g, u, a);
if (r) {
f = lt(g, p), r(f, [], u, a), l = f.length;
while (l--)
if (c = f[l]) g[p[l]] = !(m[p[l]] = c)
}
if (s) {
if (i || e) {
if (i) {
f = [], l = g.length;
while (l--) (c = g[l]) && f.push(m[l] = c);
i(null, g = [], f, a)
}
l = g.length;
while (l--) (c = g[l]) && (f = i ? T.call(s, c) : h[l]) > -1 && (s[f] = !(o[f] = c))
}
} else g = lt(g === o ? g.splice(d, g.length) : g), i ? i(null, o, g, a) : S.apply(o, g)
})
}
function ht(e) {
var t, n, r, s = e.length,
o = i.relative[e[0].type],
u = o || i.relative[" "],
a = o ? 1 : 0,
f = at(function (e) {
return e === t
}, u, !0),
l = at(function (e) {
return T.call(t, e) > -1
}, u, !0),
h = [function (e, n, r) {
return !o && (r || n !== c) || ((t = n).nodeType ? f(e, n, r) : l(e, n, r))
}];
for (; a < s; a++)
if (n = i.relative[e[a].type]) h = [at(ft(h), n)];
else {
n = i.filter[e[a].type].apply(null, e[a].matches);
if (n[d]) {
r = ++a;
for (; r < s; r++)
if (i.relative[e[r].type]) break;
return ct(a > 1 && ft(h), a > 1 && e.slice(0, a - 1).join("").replace(j, "$1"), n, a < r && ht(e.slice(a, r)), r < s && ht(e = e.slice(r)), r < s && e.join(""))
}
h.push(n)
} return ft(h)
}
function pt(e, t) {
var r = t.length > 0,
s = e.length > 0,
o = function (u, a, f, l, h) {
var p, d, v, m = [],
y = 0,
w = "0",
x = u && [],
T = h != null,
N = c,
C = u || s && i.find.TAG("*", h && a.parentNode || a),
k = b += N == null ? 1 : Math.E;
T && (c = a !== g && a, n = o.el);
for (;
(p = C[w]) != null; w++) {
if (s && p) {
for (d = 0; v = e[d]; d++)
if (v(p, a, f)) {
l.push(p);
break
} T && (b = k, n = ++o.el)
}
r && ((p = !v && p) && y--, u && x.push(p))
}
y += w;
if (r && w !== y) {
for (d = 0; v = t[d]; d++) v(x, m, a, f);
if (u) {
if (y > 0)
while (w--) !x[w] && !m[w] && (m[w] = E.call(l));
m = lt(m)
}
S.apply(l, m), T && !u && m.length > 0 && y + t.length > 1 && nt.uniqueSort(l)
}
return T && (b = k, c = N), x
};
return o.el = 0, r ? N(o) : o
}
function dt(e, t, n) {
var r = 0,
i = t.length;
for (; r < i; r++) nt(e, t[r], n);
return n
}
function vt(e, t, n, r, s) {
var o, u, f, l, c, h = ut(e),
p = h.length;
if (!r && h.length === 1) {
u = h[0] = h[0].slice(0);
if (u.length > 2 && (f = u[0]).type === "ID" && t.nodeType === 9 && !s && i.relative[u[1].type]) {
t = i.find.ID(f.matches[0].replace($, ""), t, s)[0];
if (!t) return n;
e = e.slice(u.shift().length)
}
for (o = J.POS.test(e) ? -1 : u.length - 1; o >= 0; o--) {
f = u[o];
if (i.relative[l = f.type]) break;
if (c = i.find[l])
if (r = c(f.matches[0].replace($, ""), z.test(u[0].type) && t.parentNode || t, s)) {
u.splice(o, 1), e = r.length && u.join("");
if (!e) return S.apply(n, x.call(r, 0)), n;
break
}
}
}
return a(e, h)(r, t, s, n, z.test(e)), n
}
function mt() { }
var n, r, i, s, o, u, a, f, l, c, h = !0,
p = "undefined",
d = ("sizcache" + Math.random()).replace(".", ""),
m = String,
g = e.document,
y = g.documentElement,
b = 0,
w = 0,
E = [].pop,
S = [].push,
x = [].slice,
T = [].indexOf || function (e) {
var t = 0,
n = this.length;
for (; t < n; t++)
if (this[t] === e) return t;
return -1
},
N = function (e, t) {
return e[d] = t == null || t, e
},
C = function () {
var e = {},
t = [];
return N(function (n, r) {
return t.push(n) > i.cacheLength && delete e[t.shift()], e[n + " "] = r
}, e)
},
k = C(),
L = C(),
A = C(),
O = "[\\x20\\t\\r\\n\\f]",
M = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",
_ = M.replace("w", "w#"),
D = "([*^$|!~]?=)",
P = "\\[" + O + "*(" + M + ")" + O + "*(?:" + D + O + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + _ + ")|)|)" + O + "*\\]",
H = ":(" + M + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + P + ")|[^:]|\\\\.)*|.*))\\)|)",
B = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + O + "*((?:-\\d)?\\d*)" + O + "*\\)|)(?=[^-]|$)",
j = new RegExp("^" + O + "+|((?:^|[^\\\\])(?:\\\\.)*)" + O + "+$", "g"),
F = new RegExp("^" + O + "*," + O + "*"),
I = new RegExp("^" + O + "*([\\x20\\t\\r\\n\\f>+~])" + O + "*"),
q = new RegExp(H),
R = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,
U = /^:not/,
z = /[\x20\t\r\n\f]*[+~]/,
W = /:not\($/,
X = /h\d/i,
V = /input|select|textarea|button/i,
$ = /\\(?!\\)/g,
J = {
ID: new RegExp("^#(" + M + ")"),
CLASS: new RegExp("^\\.(" + M + ")"),
NAME: new RegExp("^\\[name=['\"]?(" + M + ")['\"]?\\]"),
TAG: new RegExp("^(" + M.replace("w", "w*") + ")"),
ATTR: new RegExp("^" + P),
PSEUDO: new RegExp("^" + H),
POS: new RegExp(B, "i"),
CHILD: new RegExp("^:(only|nth|first|last)-child(?:\\(" + O + "*(even|odd|(([+-]|)(\\d*)n|)" + O + "*(?:([+-]|)" + O + "*(\\d+)|))" + O + "*\\)|)", "i"),
needsContext: new RegExp("^" + O + "*[>+~]|" + B, "i")
},
K = function (e) {
var t = g.createElement("div");
try {
return e(t)
} catch (n) {
return !1
} finally {
t = null
}
},
Q = K(function (e) {
return e.appendChild(g.createComment("")), !e.getElementsByTagName("*").length
}),
G = K(function (e) {
return e.innerHTML = "<a href='#'></a>", e.firstChild && typeof e.firstChild.getAttribute !== p && e.firstChild.getAttribute("href") === "#"
}),
Y = K(function (e) {
e.innerHTML = "<select></select>";
var t = typeof e.lastChild.getAttribute("multiple");
return t !== "boolean" && t !== "string"
}),
Z = K(function (e) {
return e.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>", !e.getElementsByClassName || !e.getElementsByClassName("e").length ? !1 : (e.lastChild.className = "e", e.getElementsByClassName("e").length === 2)
}),
et = K(function (e) {
e.id = d + 0, e.innerHTML = "<a name='" + d + "'></a><div name='" + d + "'></div>", y.insertBefore(e, y.firstChild);
var t = g.getElementsByName && g.getElementsByName(d).length === 2 + g.getElementsByName(d + 0).length;
return r = !g.getElementById(d), y.removeChild(e), t
});
try {
x.call(y.childNodes, 0)[0].nodeType
} catch (tt) {
x = function (e) {
var t, n = [];
for (; t = this[e]; e++) n.push(t);
return n
}
}
nt.matches = function (e, t) {
return nt(e, null, null, t)
}, nt.matchesSelector = function (e, t) {
return nt(t, null, null, [e]).length > 0
}, s = nt.getText = function (e) {
var t, n = "",
r = 0,
i = e.nodeType;
if (i) {
if (i === 1 || i === 9 || i === 11) {
if (typeof e.textContent == "string") return e.textContent;
for (e = e.firstChild; e; e = e.nextSibling) n += s(e)
} else if (i === 3 || i === 4) return e.nodeValue
} else
for (; t = e[r]; r++) n += s(t);
return n
}, o = nt.isXML = function (e) {
var t = e && (e.ownerDocument || e).documentElement;
return t ? t.nodeName !== "HTML" : !1
}, u = nt.contains = y.contains ? function (e, t) {
var n = e.nodeType === 9 ? e.documentElement : e,
r = t && t.parentNode;
return e === r || !!(r && r.nodeType === 1 && n.contains && n.contains(r))
} : y.compareDocumentPosition ? function (e, t) {
return t && !!(e.compareDocumentPosition(t) & 16)
} : function (e, t) {
while (t = t.parentNode)
if (t === e) return !0;
return !1
}, nt.attr = function (e, t) {
var n, r = o(e);
return r || (t = t.toLowerCase()), (n = i.attrHandle[t]) ? n(e) : r || Y ? e.getAttribute(t) : (n = e.getAttributeNode(t), n ? typeof e[t] == "boolean" ? e[t] ? t : null : n.specified ? n.value : null : null)
}, i = nt.selectors = {
cacheLength: 50,
createPseudo: N,
match: J,
attrHandle: G ? {} : {
href: function (e) {
return e.getAttribute("href", 2)
},
type: function (e) {
return e.getAttribute("type")
}
},
find: {
ID: r ? function (e, t, n) {
if (typeof t.getElementById !== p && !n) {
var r = t.getElementById(e);
return r && r.parentNode ? [r] : []
}
} : function (e, n, r) {
if (typeof n.getElementById !== p && !r) {
var i = n.getElementById(e);
return i ? i.id === e || typeof i.getAttributeNode !== p && i.getAttributeNode("id").value === e ? [i] : t : []
}
},
TAG: Q ? function (e, t) {
if (typeof t.getElementsByTagName !== p) return t.getElementsByTagName(e)
} : function (e, t) {
var n = t.getElementsByTagName(e);
if (e === "*") {
var r, i = [],
s = 0;
for (; r = n[s]; s++) r.nodeType === 1 && i.push(r);
return i
}
return n
},
NAME: et && function (e, t) {
if (typeof t.getElementsByName !== p) return t.getElementsByName(name)
},
CLASS: Z && function (e, t, n) {
if (typeof t.getElementsByClassName !== p && !n) return t.getElementsByClassName(e)
}
},
relative: {
">": {
dir: "parentNode",
first: !0
},
" ": {
dir: "parentNode"
},
"+": {
dir: "previousSibling",
first: !0
},
"~": {
dir: "previousSibling"
}
},
preFilter: {
ATTR: function (e) {
return e[1] = e[1].replace($, ""), e[3] = (e[4] || e[5] || "").replace($, ""), e[2] === "~=" && (e[3] = " " + e[3] + " "), e.slice(0, 4)
},
CHILD: function (e) {
return e[1] = e[1].toLowerCase(), e[1] === "nth" ? (e[2] || nt.error(e[0]), e[3] = +(e[3] ? e[4] + (e[5] || 1) : 2 * (e[2] === "even" || e[2] === "odd")), e[4] = +(e[6] + e[7] || e[2] === "odd")) : e[2] && nt.error(e[0]), e
},
PSEUDO: function (e) {
var t, n;
if (J.CHILD.test(e[0])) return null;
if (e[3]) e[2] = e[3];
else if (t = e[4]) q.test(t) && (n = ut(t, !0)) && (n = t.indexOf(")", t.length - n) - t.length) && (t = t.slice(0, n), e[0] = e[0].slice(0, n)), e[2] = t;
return e.slice(0, 3)
}
},
filter: {
ID: r ? function (e) {
return e = e.replace($, ""),
function (t) {
return t.getAttribute("id") === e
}
} : function (e) {
return e = e.replace($, ""),
function (t) {
var n = typeof t.getAttributeNode !== p && t.getAttributeNode("id");
return n && n.value === e
}
},
TAG: function (e) {
return e === "*" ? function () {
return !0
} : (e = e.replace($, "").toLowerCase(), function (t) {
return t.nodeName && t.nodeName.toLowerCase() === e
})
},
CLASS: function (e) {
var t = k[d][e + " "];
return t || (t = new RegExp("(^|" + O + ")" + e + "(" + O + "|$)")) && k(e, function (e) {
return t.test(e.className || typeof e.getAttribute !== p && e.getAttribute("class") || "")
})
},
ATTR: function (e, t, n) {
return function (r, i) {
var s = nt.attr(r, e);
return s == null ? t === "!=" : t ? (s += "", t === "=" ? s === n : t === "!=" ? s !== n : t === "^=" ? n && s.indexOf(n) === 0 : t === "*=" ? n && s.indexOf(n) > -1 : t === "$=" ? n && s.substr(s.length - n.length) === n : t === "~=" ? (" " + s + " ").indexOf(n) > -1 : t === "|=" ? s === n || s.substr(0, n.length + 1) === n + "-" : !1) : !0
}
},
CHILD: function (e, t, n, r) {
return e === "nth" ? function (e) {
var t, i, s = e.parentNode;
if (n === 1 && r === 0) return !0;
if (s) {
i = 0;
for (t = s.firstChild; t; t = t.nextSibling)
if (t.nodeType === 1) {
i++;
if (e === t) break
}
}
return i -= r, i === n || i % n === 0 && i / n >= 0
} : function (t) {
var n = t;
switch (e) {
case "only":
case "first":
while (n = n.previousSibling)
if (n.nodeType === 1) return !1;
if (e === "first") return !0;
n = t;
case "last":
while (n = n.nextSibling)
if (n.nodeType === 1) return !1;
return !0
}
}
},
PSEUDO: function (e, t) {
var n, r = i.pseudos[e] || i.setFilters[e.toLowerCase()] || nt.error("unsupported pseudo: " + e);
return r[d] ? r(t) : r.length > 1 ? (n = [e, e, "", t], i.setFilters.hasOwnProperty(e.toLowerCase()) ? N(function (e, n) {
var i, s = r(e, t),
o = s.length;
while (o--) i = T.call(e, s[o]), e[i] = !(n[i] = s[o])
}) : function (e) {
return r(e, 0, n)
}) : r
}
},
pseudos: {
not: N(function (e) {
var t = [],
n = [],
r = a(e.replace(j, "$1"));
return r[d] ? N(function (e, t, n, i) {
var s, o = r(e, null, i, []),
u = e.length;
while (u--)
if (s = o[u]) e[u] = !(t[u] = s)
}) : function (e, i, s) {
return t[0] = e, r(t, null, s, n), !n.pop()
}
}),
has: N(function (e) {
return function (t) {
return nt(e, t).length > 0
}
}),
contains: N(function (e) {
return function (t) {
return (t.textContent || t.innerText || s(t)).indexOf(e) > -1
}
}),
enabled: function (e) {
return e.disabled === !1
},
disabled: function (e) {
return e.disabled === !0
},
checked: function (e) {
var t = e.nodeName.toLowerCase();
return t === "input" && !!e.checked || t === "option" && !!e.selected
},
selected: function (e) {
return e.parentNode && e.parentNode.selectedIndex, e.selected === !0
},
parent: function (e) {
return !i.pseudos.empty(e)
},
empty: function (e) {
var t;
e = e.firstChild;
while (e) {
if (e.nodeName > "@" || (t = e.nodeType) === 3 || t === 4) return !1;
e = e.nextSibling
}
return !0
},
header: function (e) {
return X.test(e.nodeName)
},
text: function (e) {
var t, n;
return e.nodeName.toLowerCase() === "input" && (t = e.type) === "text" && ((n = e.getAttribute("type")) == null || n.toLowerCase() === t)
},
radio: rt("radio"),
checkbox: rt("checkbox"),
file: rt("file"),
password: rt("password"),
image: rt("image"),
submit: it("submit"),
reset: it("reset"),
button: function (e) {
var t = e.nodeName.toLowerCase();
return t === "input" && e.type === "button" || t === "button"
},
input: function (e) {
return V.test(e.nodeName)
},
focus: function (e) {
var t = e.ownerDocument;
return e === t.activeElement && (!t.hasFocus || t.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
},
active: function (e) {
return e === e.ownerDocument.activeElement
},
first: st(function () {
return [0]
}),
last: st(function (e, t) {
return [t - 1]
}),
eq: st(function (e, t, n) {
return [n < 0 ? n + t : n]
}),
even: st(function (e, t) {
for (var n = 0; n < t; n += 2) e.push(n);
return e
}),
odd: st(function (e, t) {
for (var n = 1; n < t; n += 2) e.push(n);
return e
}),
lt: st(function (e, t, n) {
for (var r = n < 0 ? n + t : n; --r >= 0;) e.push(r);
return e
}),
gt: st(function (e, t, n) {
for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
return e
})
}
}, f = y.compareDocumentPosition ? function (e, t) {
return e === t ? (l = !0, 0) : (!e.compareDocumentPosition || !t.compareDocumentPosition ? e.compareDocumentPosition : e.compareDocumentPosition(t) & 4) ? -1 : 1
} : function (e, t) {
if (e === t) return l = !0, 0;
if (e.sourceIndex && t.sourceIndex) return e.sourceIndex - t.sourceIndex;
var n, r, i = [],
s = [],
o = e.parentNode,
u = t.parentNode,
a = o;
if (o === u) return ot(e, t);
if (!o) return -1;
if (!u) return 1;
while (a) i.unshift(a), a = a.parentNode;
a = u;
while (a) s.unshift(a), a = a.parentNode;
n = i.length, r = s.length;
for (var f = 0; f < n && f < r; f++)
if (i[f] !== s[f]) return ot(i[f], s[f]);
return f === n ? ot(e, s[f], -1) : ot(i[f], t, 1)
}, [0, 0].sort(f), h = !l, nt.uniqueSort = function (e) {
var t, n = [],
r = 1,
i = 0;
l = h, e.sort(f);
if (l) {
for (; t = e[r]; r++) t === e[r - 1] && (i = n.push(r));
while (i--) e.splice(n[i], 1)
}
return e
}, nt.error = function (e) {
throw new Error("Syntax error, unrecognized expression: " + e)
}, a = nt.compile = function (e, t) {
var n, r = [],
i = [],
s = A[d][e + " "];
if (!s) {
t || (t = ut(e)), n = t.length;
while (n--) s = ht(t[n]), s[d] ? r.push(s) : i.push(s);
s = A(e, pt(i, r))
}
return s
}, g.querySelectorAll && function () {
var e, t = vt,
n = /'|\\/g,
r = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
i = [":focus"],
s = [":active"],
u = y.matchesSelector || y.mozMatchesSelector || y.webkitMatchesSelector || y.oMatchesSelector || y.msMatchesSelector;
K(function (e) {
e.innerHTML = "<select><option selected=''></option></select>", e.querySelectorAll("[selected]").length || i.push("\\[" + O + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)"), e.querySelectorAll(":checked").length || i.push(":checked")
}), K(function (e) {
e.innerHTML = "<p test=''></p>", e.querySelectorAll("[test^='']").length && i.push("[*^$]=" + O + "*(?:\"\"|'')"), e.innerHTML = "<input type='hidden'/>", e.querySelectorAll(":enabled").length || i.push(":enabled", ":disabled")
}), i = new RegExp(i.join("|")), vt = function (e, r, s, o, u) {
if (!o && !u && !i.test(e)) {
var a, f, l = !0,
c = d,
h = r,
p = r.nodeType === 9 && e;
if (r.nodeType === 1 && r.nodeName.toLowerCase() !== "object") {
a = ut(e), (l = r.getAttribute("id")) ? c = l.replace(n, "\\$&") : r.setAttribute("id", c), c = "[id='" + c + "'] ", f = a.length;
while (f--) a[f] = c + a[f].join("");
h = z.test(e) && r.parentNode || r, p = a.join(",")
}
if (p) try {
return S.apply(s, x.call(h.querySelectorAll(p), 0)), s
} catch (v) { } finally {
l || r.removeAttribute("id")
}
}
return t(e, r, s, o, u)
}, u && (K(function (t) {
e = u.call(t, "div");
try {
u.call(t, "[test!='']:sizzle"), s.push("!=", H)
} catch (n) { }
}), s = new RegExp(s.join("|")), nt.matchesSelector = function (t, n) {
n = n.replace(r, "='$1']");
if (!o(t) && !s.test(n) && !i.test(n)) try {
var a = u.call(t, n);
if (a || e || t.document && t.document.nodeType !== 11) return a
} catch (f) { }
return nt(n, null, null, [t]).length > 0
})
}(), i.pseudos.nth = i.pseudos.eq, i.filters = mt.prototype = i.pseudos, i.setFilters = new mt, nt.attr = v.attr, v.find = nt, v.expr = nt.selectors, v.expr[":"] = v.expr.pseudos, v.unique = nt.uniqueSort, v.text = nt.getText, v.isXMLDoc = nt.isXML, v.contains = nt.contains
}(e);
var nt = /Until$/,
rt = /^(?:parents|prev(?:Until|All))/,
it = /^.[^:#\[\.,]*$/,
st = v.expr.match.needsContext,
ot = {
children: !0,
contents: !0,
next: !0,
prev: !0
};
v.fn.extend({
find: function (e) {
var t, n, r, i, s, o, u = this;
if (typeof e != "string") return v(e).filter(function () {
for (t = 0, n = u.length; t < n; t++)
if (v.contains(u[t], this)) return !0
});
o = this.pushStack("", "find", e);
for (t = 0, n = this.length; t < n; t++) {
r = o.length, v.find(e, this[t], o);
if (t > 0)
for (i = r; i < o.length; i++)
for (s = 0; s < r; s++)
if (o[s] === o[i]) {
o.splice(i--, 1);
break
}
}
return o
},
has: function (e) {
var t, n = v(e, this),
r = n.length;
return this.filter(function () {
for (t = 0; t < r; t++)
if (v.contains(this, n[t])) return !0
})
},
not: function (e) {
return this.pushStack(ft(this, e, !1), "not", e)
},
filter: function (e) {
return this.pushStack(ft(this, e, !0), "filter", e)
},
is: function (e) {
return !!e && (typeof e == "string" ? st.test(e) ? v(e, this.context).index(this[0]) >= 0 : v.filter(e, this).length > 0 : this.filter(e).length > 0)
},
closest: function (e, t) {
var n, r = 0,
i = this.length,
s = [],
o = st.test(e) || typeof e != "string" ? v(e, t || this.context) : 0;
for (; r < i; r++) {
n = this[r];
while (n && n.ownerDocument && n !== t && n.nodeType !== 11) {
if (o ? o.index(n) > -1 : v.find.matchesSelector(n, e)) {
s.push(n);
break
}
n = n.parentNode
}
}
return s = s.length > 1 ? v.unique(s) : s, this.pushStack(s, "closest", e)
},
index: function (e) {
return e ? typeof e == "string" ? v.inArray(this[0], v(e)) : v.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.prevAll().length : -1
},
add: function (e, t) {
var n = typeof e == "string" ? v(e, t) : v.makeArray(e && e.nodeType ? [e] : e),
r = v.merge(this.get(), n);
return this.pushStack(ut(n[0]) || ut(r[0]) ? r : v.unique(r))
},
addBack: function (e) {
return this.add(e == null ? this.prevObject : this.prevObject.filter(e))
}
}), v.fn.andSelf = v.fn.addBack, v.each({
parent: function (e) {
var t = e.parentNode;
return t && t.nodeType !== 11 ? t : null
},
parents: function (e) {
return v.dir(e, "parentNode")
},
parentsUntil: function (e, t, n) {
return v.dir(e, "parentNode", n)
},
next: function (e) {
return at(e, "nextSibling")
},
prev: function (e) {
return at(e, "previousSibling")
},
nextAll: function (e) {
return v.dir(e, "nextSibling")
},
prevAll: function (e) {
return v.dir(e, "previousSibling")
},
nextUntil: function (e, t, n) {
return v.dir(e, "nextSibling", n)
},
prevUntil: function (e, t, n) {
return v.dir(e, "previousSibling", n)
},
siblings: function (e) {
return v.sibling((e.parentNode || {}).firstChild, e)
},
children: function (e) {
return v.sibling(e.firstChild)
},
contents: function (e) {
return v.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : v.merge([], e.childNodes)
}
}, function (e, t) {
v.fn[e] = function (n, r) {
var i = v.map(this, t, n);
return nt.test(e) || (r = n), r && typeof r == "string" && (i = v.filter(r, i)), i = this.length > 1 && !ot[e] ? v.unique(i) : i, this.length > 1 && rt.test(e) && (i = i.reverse()), this.pushStack(i, e, l.call(arguments).join(","))
}
}), v.extend({
filter: function (e, t, n) {
return n && (e = ":not(" + e + ")"), t.length === 1 ? v.find.matchesSelector(t[0], e) ? [t[0]] : [] : v.find.matches(e, t)
},
dir: function (e, n, r) {
var i = [],
s = e[n];
while (s && s.nodeType !== 9 && (r === t || s.nodeType !== 1 || !v(s).is(r))) s.nodeType === 1 && i.push(s), s = s[n];
return i
},
sibling: function (e, t) {
var n = [];
for (; e; e = e.nextSibling) e.nodeType === 1 && e !== t && n.push(e);
return n
}
});
var ct = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
ht = / jQuery\d+="(?:null|\d+)"/g,
pt = /^\s+/,
dt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
vt = /<([\w:]+)/,
mt = /<tbody/i,
gt = /<|&#?\w+;/,
yt = /<(?:script|style|link)/i,
bt = /<(?:script|object|embed|option|style)/i,
wt = new RegExp("<(?:" + ct + ")[\\s/>]", "i"),
Et = /^(?:checkbox|radio)$/,
St = /checked\s*(?:[^=]|=\s*.checked.)/i,
xt = /\/(java|ecma)script/i,
Tt = /^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,
Nt = {
option: [1, "<select multiple='multiple'>", "</select>"],
legend: [1, "<fieldset>", "</fieldset>"],
thead: [1, "<table>", "</table>"],
tr: [2, "<table><tbody>", "</tbody></table>"],
td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
area: [1, "<map>", "</map>"],
_default: [0, "", ""]
},
Ct = lt(i),
kt = Ct.appendChild(i.createElement("div"));
Nt.optgroup = Nt.option, Nt.tbody = Nt.tfoot = Nt.colgroup = Nt.caption = Nt.thead, Nt.th = Nt.td, v.support.htmlSerialize || (Nt._default = [1, "X<div>", "</div>"]), v.fn.extend({
text: function (e) {
return v.access(this, function (e) {
return e === t ? v.text(this) : this.empty().append((this[0] && this[0].ownerDocument || i).createTextNode(e))
}, null, e, arguments.length)
},
wrapAll: function (e) {
if (v.isFunction(e)) return this.each(function (t) {
v(this).wrapAll(e.call(this, t))
});
if (this[0]) {
var t = v(e, this[0].ownerDocument).eq(0).clone(!0);
this[0].parentNode && t.insertBefore(this[0]), t.map(function () {
var e = this;
while (e.firstChild && e.firstChild.nodeType === 1) e = e.firstChild;
return e
}).append(this)
}
return this
},
wrapInner: function (e) {
return v.isFunction(e) ? this.each(function (t) {
v(this).wrapInner(e.call(this, t))
}) : this.each(function () {
var t = v(this),
n = t.contents();
n.length ? n.wrapAll(e) : t.append(e)
})
},
wrap: function (e) {
var t = v.isFunction(e);
return this.each(function (n) {
v(this).wrapAll(t ? e.call(this, n) : e)
})
},
unwrap: function () {
return this.parent().each(function () {
v.nodeName(this, "body") || v(this).replaceWith(this.childNodes)
}).end()
},
append: function () {
return this.domManip(arguments, !0, function (e) {
(this.nodeType === 1 || this.nodeType === 11) && this.appendChild(e)
})
},
prepend: function () {
return this.domManip(arguments, !0, function (e) {
(this.nodeType === 1 || this.nodeType === 11) && this.insertBefore(e, this.firstChild)
})
},
before: function () {
if (!ut(this[0])) return this.domManip(arguments, !1, function (e) {
this.parentNode.insertBefore(e, this)
});
if (arguments.length) {
var e = v.clean(arguments);
return this.pushStack(v.merge(e, this), "before", this.selector)
}
},
after: function () {
if (!ut(this[0])) return this.domManip(arguments, !1, function (e) {
this.parentNode.insertBefore(e, this.nextSibling)
});
if (arguments.length) {
var e = v.clean(arguments);
return this.pushStack(v.merge(this, e), "after", this.selector)
}
},
remove: function (e, t) {
var n, r = 0;
for (;
(n = this[r]) != null; r++)
if (!e || v.filter(e, [n]).length) !t && n.nodeType === 1 && (v.cleanData(n.getElementsByTagName("*")), v.cleanData([n])), n.parentNode && n.parentNode.removeChild(n);
return this
},
empty: function () {
var e, t = 0;
for (;
(e = this[t]) != null; t++) {
e.nodeType === 1 && v.cleanData(e.getElementsByTagName("*"));
while (e.firstChild) e.removeChild(e.firstChild)
}
return this
},
clone: function (e, t) {
return e = e == null ? !1 : e, t = t == null ? e : t, this.map(function () {
return v.clone(this, e, t)
})
},
html: function (e) {
return v.access(this, function (e) {
var n = this[0] || {},
r = 0,
i = this.length;
if (e === t) return n.nodeType === 1 ? n.innerHTML.replace(ht, "") : t;
if (typeof e == "string" && !yt.test(e) && (v.support.htmlSerialize || !wt.test(e)) && (v.support.leadingWhitespace || !pt.test(e)) && !Nt[(vt.exec(e) || ["", ""])[1].toLowerCase()]) {
e = e.replace(dt, "<$1></$2>");
try {
for (; r < i; r++) n = this[r] || {}, n.nodeType === 1 && (v.cleanData(n.getElementsByTagName("*")), n.innerHTML = e);
n = 0
} catch (s) { }
}
n && this.empty().append(e)
}, null, e, arguments.length)
},
replaceWith: function (e) {
return ut(this[0]) ? this.length ? this.pushStack(v(v.isFunction(e) ? e() : e), "replaceWith", e) : this : v.isFunction(e) ? this.each(function (t) {
var n = v(this),
r = n.html();
n.replaceWith(e.call(this, t, r))
}) : (typeof e != "string" && (e = v(e).detach()), this.each(function () {
var t = this.nextSibling,
n = this.parentNode;
v(this).remove(), t ? v(t).before(e) : v(n).append(e)
}))
},
detach: function (e) {
return this.remove(e, !0)
},
domManip: function (e, n, r) {
e = [].concat.apply([], e);
var i, s, o, u, a = 0,
f = e[0],
l = [],
c = this.length;
if (!v.support.checkClone && c > 1 && typeof f == "string" && St.test(f)) return this.each(function () {
v(this).domManip(e, n, r)
});
if (v.isFunction(f)) return this.each(function (i) {
var s = v(this);
e[0] = f.call(this, i, n ? s.html() : t), s.domManip(e, n, r)
});
if (this[0]) {
i = v.buildFragment(e, this, l), o = i.fragment, s = o.firstChild, o.childNodes.length === 1 && (o = s);
if (s) {
n = n && v.nodeName(s, "tr");
for (u = i.cacheable || c - 1; a < c; a++) r.call(n && v.nodeName(this[a], "table") ? Lt(this[a], "tbody") : this[a], a === u ? o : v.clone(o, !0, !0))
}
o = s = null, l.length && v.each(l, function (e, t) {
t.src ? v.ajax ? v.ajax({
url: t.src,
type: "GET",
dataType: "script",
async: !1,
global: !1,
"throws": !0
}) : v.error("no ajax") : v.globalEval((t.text || t.textContent || t.innerHTML || "").replace(Tt, "")), t.parentNode && t.parentNode.removeChild(t)
})
}
return this
}
}), v.buildFragment = function (e, n, r) {
var s, o, u, a = e[0];
return n = n || i, n = !n.nodeType && n[0] || n, n = n.ownerDocument || n, e.length === 1 && typeof a == "string" && a.length < 512 && n === i && a.charAt(0) === "<" && !bt.test(a) && (v.support.checkClone || !St.test(a)) && (v.support.html5Clone || !wt.test(a)) && (o = !0, s = v.fragments[a], u = s !== t), s || (s = n.createDocumentFragment(), v.clean(e, n, s, r), o && (v.fragments[a] = u && s)), {
fragment: s,
cacheable: o
}
}, v.fragments = {}, v.each({
appendTo: "append",
prependTo: "prepend",
insertBefore: "before",
insertAfter: "after",
replaceAll: "replaceWith"
}, function (e, t) {
v.fn[e] = function (n) {
var r, i = 0,
s = [],
o = v(n),
u = o.length,
a = this.length === 1 && this[0].parentNode;
if ((a == null || a && a.nodeType === 11 && a.childNodes.length === 1) && u === 1) return o[t](this[0]), this;
for (; i < u; i++) r = (i > 0 ? this.clone(!0) : this).get(), v(o[i])[t](r), s = s.concat(r);
return this.pushStack(s, e, o.selector)
}
}), v.extend({
clone: function (e, t, n) {
var r, i, s, o;
v.support.html5Clone || v.isXMLDoc(e) || !wt.test("<" + e.nodeName + ">") ? o = e.cloneNode(!0) : (kt.innerHTML = e.outerHTML, kt.removeChild(o = kt.firstChild));
if ((!v.support.noCloneEvent || !v.support.noCloneChecked) && (e.nodeType === 1 || e.nodeType === 11) && !v.isXMLDoc(e)) {
Ot(e, o), r = Mt(e), i = Mt(o);
for (s = 0; r[s]; ++s) i[s] && Ot(r[s], i[s])
}
if (t) {
At(e, o);
if (n) {
r = Mt(e), i = Mt(o);
for (s = 0; r[s]; ++s) At(r[s], i[s])
}
}
return r = i = null, o
},
clean: function (e, t, n, r) {
var s, o, u, a, f, l, c, h, p, d, m, g, y = t === i && Ct,
b = [];
if (!t || typeof t.createDocumentFragment == "undefined") t = i;
for (s = 0;
(u = e[s]) != null; s++) {
typeof u == "number" && (u += "");
if (!u) continue;
if (typeof u == "string")
if (!gt.test(u)) u = t.createTextNode(u);
else {
y = y || lt(t), c = t.createElement("div"), y.appendChild(c), u = u.replace(dt, "<$1></$2>"), a = (vt.exec(u) || ["", ""])[1].toLowerCase(), f = Nt[a] || Nt._default, l = f[0], c.innerHTML = f[1] + u + f[2];
while (l--) c = c.lastChild;
if (!v.support.tbody) {
h = mt.test(u), p = a === "table" && !h ? c.firstChild && c.firstChild.childNodes : f[1] === "<table>" && !h ? c.childNodes : [];
for (o = p.length - 1; o >= 0; --o) v.nodeName(p[o], "tbody") && !p[o].childNodes.length && p[o].parentNode.removeChild(p[o])
} !v.support.leadingWhitespace && pt.test(u) && c.insertBefore(t.createTextNode(pt.exec(u)[0]), c.firstChild), u = c.childNodes, c.parentNode.removeChild(c)
} u.nodeType ? b.push(u) : v.merge(b, u)
}
c && (u = c = y = null);
if (!v.support.appendChecked)
for (s = 0;
(u = b[s]) != null; s++) v.nodeName(u, "input") ? _t(u) : typeof u.getElementsByTagName != "undefined" && v.grep(u.getElementsByTagName("input"), _t);
if (n) {
m = function (e) {
if (!e.type || xt.test(e.type)) return r ? r.push(e.parentNode ? e.parentNode.removeChild(e) : e) : n.appendChild(e)
};
for (s = 0;
(u = b[s]) != null; s++)
if (!v.nodeName(u, "script") || !m(u)) n.appendChild(u), typeof u.getElementsByTagName != "undefined" && (g = v.grep(v.merge([], u.getElementsByTagName("script")), m), b.splice.apply(b, [s + 1, 0].concat(g)), s += g.length)
}
return b
},
cleanData: function (e, t) {
var n, r, i, s, o = 0,
u = v.expando,
a = v.cache,
f = v.support.deleteExpando,
l = v.event.special;
for (;
(i = e[o]) != null; o++)
if (t || v.acceptData(i)) {
r = i[u], n = r && a[r];
if (n) {
if (n.events)
for (s in n.events) l[s] ? v.event.remove(i, s) : v.removeEvent(i, s, n.handle);
a[r] && (delete a[r], f ? delete i[u] : i.removeAttribute ? i.removeAttribute(u) : i[u] = null, v.deletedIds.push(r))
}
}
}
}),
function () {
var e, t;
v.uaMatch = function (e) {
e = e.toLowerCase();
var t = /(chrome)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+)/.exec(e) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || e.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e) || [];
return {
browser: t[1] || "",
version: t[2] || "0"
}
}, e = v.uaMatch(o.userAgent), t = {}, e.browser && (t[e.browser] = !0, t.version = e.version), t.chrome ? t.webkit = !0 : t.webkit && (t.safari = !0), v.browser = t, v.sub = function () {
function e(t, n) {
return new e.fn.init(t, n)
}
v.extend(!0, e, this), e.superclass = this, e.fn = e.prototype = this(), e.fn.constructor = e, e.sub = this.sub, e.fn.init = function (r, i) {
return i && i instanceof v && !(i instanceof e) && (i = e(i)), v.fn.init.call(this, r, i, t)
}, e.fn.init.prototype = e.fn;
var t = e(i);
return e
}
}();
var Dt, Pt, Ht, Bt = /alpha\([^)]*\)/i,
jt = /opacity=([^)]*)/,
Ft = /^(top|right|bottom|left)$/,
It = /^(none|table(?!-c[ea]).+)/,
qt = /^margin/,
Rt = new RegExp("^(" + m + ")(.*)$", "i"),
Ut = new RegExp("^(" + m + ")(?!px)[a-z%]+$", "i"),
zt = new RegExp("^([-+])=(" + m + ")", "i"),
Wt = {
BODY: "block"
},
Xt = {
position: "absolute",
visibility: "hidden",
display: "block"
},
Vt = {
letterSpacing: 0,
fontWeight: 400
},
$t = ["Top", "Right", "Bottom", "Left"],
Jt = ["Webkit", "O", "Moz", "ms"],
Kt = v.fn.toggle;
v.fn.extend({
css: function (e, n) {
return v.access(this, function (e, n, r) {
return r !== t ? v.style(e, n, r) : v.css(e, n)
}, e, n, arguments.length > 1)
},
show: function () {
return Yt(this, !0)
},
hide: function () {
return Yt(this)
},
toggle: function (e, t) {
var n = typeof e == "boolean";
return v.isFunction(e) && v.isFunction(t) ? Kt.apply(this, arguments) : this.each(function () {
(n ? e : Gt(this)) ? v(this).show() : v(this).hide()
})
}
}), v.extend({
cssHooks: {
opacity: {
get: function (e, t) {
if (t) {
var n = Dt(e, "opacity");
return n === "" ? "1" : n
}
}
}
},
cssNumber: {
fillOpacity: !0,
fontWeight: !0,
lineHeight: !0,
opacity: !0,
orphans: !0,
widows: !0,
zIndex: !0,
zoom: !0
},
cssProps: {
"float": v.support.cssFloat ? "cssFloat" : "styleFloat"
},
style: function (e, n, r, i) {
if (!e || e.nodeType === 3 || e.nodeType === 8 || !e.style) return;
var s, o, u, a = v.camelCase(n),
f = e.style;
n = v.cssProps[a] || (v.cssProps[a] = Qt(f, a)), u = v.cssHooks[n] || v.cssHooks[a];
if (r === t) return u && "get" in u && (s = u.get(e, !1, i)) !== t ? s : f[n];
o = typeof r, o === "string" && (s = zt.exec(r)) && (r = (s[1] + 1) * s[2] + parseFloat(v.css(e, n)), o = "number");
if (r == null || o === "number" && isNaN(r)) return;
o === "number" && !v.cssNumber[a] && (r += "px");
if (!u || !("set" in u) || (r = u.set(e, r, i)) !== t) try {
f[n] = r
} catch (l) { }
},
css: function (e, n, r, i) {
var s, o, u, a = v.camelCase(n);
return n = v.cssProps[a] || (v.cssProps[a] = Qt(e.style, a)), u = v.cssHooks[n] || v.cssHooks[a], u && "get" in u && (s = u.get(e, !0, i)), s === t && (s = Dt(e, n)), s === "normal" && n in Vt && (s = Vt[n]), r || i !== t ? (o = parseFloat(s), r || v.isNumeric(o) ? o || 0 : s) : s
},
swap: function (e, t, n) {
var r, i, s = {};
for (i in t) s[i] = e.style[i], e.style[i] = t[i];
r = n.call(e);
for (i in t) e.style[i] = s[i];
return r
}
}), e.getComputedStyle ? Dt = function (t, n) {
var r, i, s, o, u = e.getComputedStyle(t, null),
a = t.style;
return u && (r = u.getPropertyValue(n) || u[n], r === "" && !v.contains(t.ownerDocument, t) && (r = v.style(t, n)), Ut.test(r) && qt.test(n) && (i = a.width, s = a.minWidth, o = a.maxWidth, a.minWidth = a.maxWidth = a.width = r, r = u.width, a.width = i, a.minWidth = s, a.maxWidth = o)), r
} : i.documentElement.currentStyle && (Dt = function (e, t) {
var n, r, i = e.currentStyle && e.currentStyle[t],
s = e.style;
return i == null && s && s[t] && (i = s[t]), Ut.test(i) && !Ft.test(t) && (n = s.left, r = e.runtimeStyle && e.runtimeStyle.left, r && (e.runtimeStyle.left = e.currentStyle.left), s.left = t === "fontSize" ? "1em" : i, i = s.pixelLeft + "px", s.left = n, r && (e.runtimeStyle.left = r)), i === "" ? "auto" : i
}), v.each(["height", "width"], function (e, t) {
v.cssHooks[t] = {
get: function (e, n, r) {
if (n) return e.offsetWidth === 0 && It.test(Dt(e, "display")) ? v.swap(e, Xt, function () {
return tn(e, t, r)
}) : tn(e, t, r)
},
set: function (e, n, r) {
return Zt(e, n, r ? en(e, t, r, v.support.boxSizing && v.css(e, "boxSizing") === "border-box") : 0)
}
}
}), v.support.opacity || (v.cssHooks.opacity = {
get: function (e, t) {
return jt.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : ""
},
set: function (e, t) {
var n = e.style,
r = e.currentStyle,
i = v.isNumeric(t) ? "alpha(opacity=" + t * 100 + ")" : "",
s = r && r.filter || n.filter || "";
n.zoom = 1;
if (t >= 1 && v.trim(s.replace(Bt, "")) === "" && n.removeAttribute) {
n.removeAttribute("filter");
if (r && !r.filter) return
}
n.filter = Bt.test(s) ? s.replace(Bt, i) : s + " " + i
}
}), v(function () {
v.support.reliableMarginRight || (v.cssHooks.marginRight = {
get: function (e, t) {
return v.swap(e, {
display: "inline-block"
}, function () {
if (t) return Dt(e, "marginRight")
})
}
}), !v.support.pixelPosition && v.fn.position && v.each(["top", "left"], function (e, t) {
v.cssHooks[t] = {
get: function (e, n) {
if (n) {
var r = Dt(e, t);
return Ut.test(r) ? v(e).position()[t] + "px" : r
}
}
}
})
}), v.expr && v.expr.filters && (v.expr.filters.hidden = function (e) {
return e.offsetWidth === 0 && e.offsetHeight === 0 || !v.support.reliableHiddenOffsets && (e.style && e.style.display || Dt(e, "display")) === "none"
}, v.expr.filters.visible = function (e) {
return !v.expr.filters.hidden(e)
}), v.each({
margin: "",
padding: "",
border: "Width"
}, function (e, t) {
v.cssHooks[e + t] = {
expand: function (n) {
var r, i = typeof n == "string" ? n.split(" ") : [n],
s = {};
for (r = 0; r < 4; r++) s[e + $t[r] + t] = i[r] || i[r - 2] || i[0];
return s
}
}, qt.test(e) || (v.cssHooks[e + t].set = Zt)
});
var rn = /%20/g,
sn = /\[\]$/,
on = /\r?\n/g,
un = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
an = /^(?:select|textarea)/i;
v.fn.extend({
serialize: function () {
return v.param(this.serializeArray())
},
serializeArray: function () {
return this.map(function () {
return this.elements ? v.makeArray(this.elements) : this
}).filter(function () {
return this.name && !this.disabled && (this.checked || an.test(this.nodeName) || un.test(this.type))
}).map(function (e, t) {
var n = v(this).val();
return n == null ? null : v.isArray(n) ? v.map(n, function (e, n) {
return {
name: t.name,
value: e.replace(on, "\r\n")
}
}) : {
name: t.name,
value: n.replace(on, "\r\n")
}
}).get()
}
}), v.param = function (e, n) {
var r, i = [],
s = function (e, t) {
t = v.isFunction(t) ? t() : t == null ? "" : t, i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
};
n === t && (n = v.ajaxSettings && v.ajaxSettings.traditional);
if (v.isArray(e) || e.jquery && !v.isPlainObject(e)) v.each(e, function () {
s(this.name, this.value)
});
else
for (r in e) fn(r, e[r], n, s);
return i.join("&").replace(rn, "+")
};
var ln, cn, hn = /#.*$/,
pn = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg,
dn = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
vn = /^(?:GET|HEAD)$/,
mn = /^\/\//,
gn = /\?/,
yn = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
bn = /([?&])_=[^&]*/,
wn = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
En = v.fn.load,
Sn = {},
xn = {},
Tn = ["*/"] + ["*"];
try {
cn = s.href
} catch (Nn) {
cn = i.createElement("a"), cn.href = "", cn = cn.href
}
ln = wn.exec(cn.toLowerCase()) || [], v.fn.load = function (e, n, r) {
if (typeof e != "string" && En) return En.apply(this, arguments);
if (!this.length) return this;
var i, s, o, u = this,
a = e.indexOf(" ");
return a >= 0 && (i = e.slice(a, e.length), e = e.slice(0, a)), v.isFunction(n) ? (r = n, n = t) : n && typeof n == "object" && (s = "POST"), v.ajax({
url: e,
type: s,
dataType: "html",
data: n,
complete: function (e, t) {
r && u.each(r, o || [e.responseText, t, e])
}
}).done(function (e) {
o = arguments, u.html(i ? v("<div>").append(e.replace(yn, "")).find(i) : e)
}), this
}, v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function (e, t) {
v.fn[t] = function (e) {
return this.on(t, e)
}
}), v.each(["get", "post"], function (e, n) {
v[n] = function (e, r, i, s) {
return v.isFunction(r) && (s = s || i, i = r, r = t), v.ajax({
type: n,
url: e,
data: r,
success: i,
dataType: s
})
}
}), v.extend({
getScript: function (e, n) {
return v.get(e, t, n, "script")
},
getJSON: function (e, t, n) {
return v.get(e, t, n, "json")
},
ajaxSetup: function (e, t) {
return t ? Ln(e, v.ajaxSettings) : (t = e, e = v.ajaxSettings), Ln(e, t), e
},
ajaxSettings: {
url: cn,
isLocal: dn.test(ln[1]),
global: !0,
type: "GET",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
processData: !0,
async: !0,
accepts: {
xml: "application/xml, text/xml",
html: "text/html",
text: "text/plain",
json: "application/json, text/javascript",
"*": Tn
},
contents: {
xml: /xml/,
html: /html/,
json: /json/
},
responseFields: {
xml: "responseXML",
text: "responseText"
},
converters: {
"* text": e.String,
"text html": !0,
"text json": v.parseJSON,
"text xml": v.parseXML
},
flatOptions: {
context: !0,
url: !0
}
},
ajaxPrefilter: Cn(Sn),
ajaxTransport: Cn(xn),
ajax: function (e, n) {
function T(e, n, s, a) {
var l, y, b, w, S, T = n;
if (E === 2) return;
E = 2, u && clearTimeout(u), o = t, i = a || "", x.readyState = e > 0 ? 4 : 0, s && (w = An(c, x, s));
if (e >= 200 && e < 300 || e === 304) c.ifModified && (S = x.getResponseHeader("Last-Modified"), S && (v.lastModified[r] = S), S = x.getResponseHeader("Etag"), S && (v.etag[r] = S)), e === 304 ? (T = "notmodified", l = !0) : (l = On(c, w), T = l.state, y = l.data, b = l.error, l = !b);
else {
b = T;
if (!T || e) T = "error", e < 0 && (e = 0)
}
x.status = e, x.statusText = (n || T) + "", l ? d.resolveWith(h, [y, T, x]) : d.rejectWith(h, [x, T, b]), x.statusCode(g), g = t, f && p.trigger("ajax" + (l ? "Success" : "Error"), [x, c, l ? y : b]), m.fireWith(h, [x, T]), f && (p.trigger("ajaxComplete", [x, c]), --v.active || v.event.trigger("ajaxStop"))
}
typeof e == "object" && (n = e, e = t), n = n || {};
var r, i, s, o, u, a, f, l, c = v.ajaxSetup({}, n),
h = c.context || c,
p = h !== c && (h.nodeType || h instanceof v) ? v(h) : v.event,
d = v.Deferred(),
m = v.Callbacks("once memory"),
g = c.statusCode || {},
b = {},
w = {},
E = 0,
S = "canceled",
x = {
readyState: 0,
setRequestHeader: function (e, t) {
if (!E) {
var n = e.toLowerCase();
e = w[n] = w[n] || e, b[e] = t
}
return this
},
getAllResponseHeaders: function () {
return E === 2 ? i : null
},
getResponseHeader: function (e) {
var n;
if (E === 2) {
if (!s) {
s = {};
while (n = pn.exec(i)) s[n[1].toLowerCase()] = n[2]
}
n = s[e.toLowerCase()]
}
return n === t ? null : n
},
overrideMimeType: function (e) {
return E || (c.mimeType = e), this
},
abort: function (e) {
return e = e || S, o && o.abort(e), T(0, e), this
}
};
d.promise(x), x.success = x.done, x.error = x.fail, x.complete = m.add, x.statusCode = function (e) {
if (e) {
var t;
if (E < 2)
for (t in e) g[t] = [g[t], e[t]];
else t = e[x.status], x.always(t)
}
return this
}, c.url = ((e || c.url) + "").replace(hn, "").replace(mn, ln[1] + "//"), c.dataTypes = v.trim(c.dataType || "*").toLowerCase().split(y), c.crossDomain == null && (a = wn.exec(c.url.toLowerCase()), c.crossDomain = !(!a || a[1] === ln[1] && a[2] === ln[2] && (a[3] || (a[1] === "http:" ? 80 : 443)) == (ln[3] || (ln[1] === "http:" ? 80 : 443)))), c.data && c.processData && typeof c.data != "string" && (c.data = v.param(c.data, c.traditional)), kn(Sn, c, n, x);
if (E === 2) return x;
f = c.global, c.type = c.type.toUpperCase(), c.hasContent = !vn.test(c.type), f && v.active++ === 0 && v.event.trigger("ajaxStart");
if (!c.hasContent) {
c.data && (c.url += (gn.test(c.url) ? "&" : "?") + c.data, delete c.data), r = c.url;
if (c.cache === !1) {
var N = v.now(),
C = c.url.replace(bn, "$1_=" + N);
c.url = C + (C === c.url ? (gn.test(c.url) ? "&" : "?") + "_=" + N : "")
}
} (c.data && c.hasContent && c.contentType !== !1 || n.contentType) && x.setRequestHeader("Content-Type", c.contentType), c.ifModified && (r = r || c.url, v.lastModified[r] && x.setRequestHeader("If-Modified-Since", v.lastModified[r]), v.etag[r] && x.setRequestHeader("If-None-Match", v.etag[r])), x.setRequestHeader("Accept", c.dataTypes[0] && c.accepts[c.dataTypes[0]] ? c.accepts[c.dataTypes[0]] + (c.dataTypes[0] !== "*" ? ", " + Tn + "; q=0.01" : "") : c.accepts["*"]);
for (l in c.headers) x.setRequestHeader(l, c.headers[l]);
if (!c.beforeSend || c.beforeSend.call(h, x, c) !== !1 && E !== 2) {
S = "abort";
for (l in {
success: 1,
error: 1,
complete: 1
}) x[l](c[l]);
o = kn(xn, c, n, x);
if (!o) T(-1, "No Transport");
else {
x.readyState = 1, f && p.trigger("ajaxSend", [x, c]), c.async && c.timeout > 0 && (u = setTimeout(function () {
x.abort("timeout")
}, c.timeout));
try {
E = 1, o.send(b, T)
} catch (k) {
if (!(E < 2)) throw k;
T(-1, k)
}
}
return x
}
return x.abort()
},
active: 0,
lastModified: {},
etag: {}
});
var Mn = [],
_n = /\?/,
Dn = /(=)\?(?=&|$)|\?\?/,
Pn = v.now();
v.ajaxSetup({
jsonp: "callback",
jsonpCallback: function () {
var e = Mn.pop() || v.expando + "_" + Pn++;
return this[e] = !0, e
}
}), v.ajaxPrefilter("json jsonp", function (n, r, i) {
var s, o, u, a = n.data,
f = n.url,
l = n.jsonp !== !1,
c = l && Dn.test(f),
h = l && !c && typeof a == "string" && !(n.contentType || "").indexOf("application/x-www-form-urlencoded") && Dn.test(a);
if (n.dataTypes[0] === "jsonp" || c || h) return s = n.jsonpCallback = v.isFunction(n.jsonpCallback) ? n.jsonpCallback() : n.jsonpCallback, o = e[s], c ? n.url = f.replace(Dn, "$1" + s) : h ? n.data = a.replace(Dn, "$1" + s) : l && (n.url += (_n.test(f) ? "&" : "?") + n.jsonp + "=" + s), n.converters["script json"] = function () {
return u || v.error(s + " was not called"), u[0]
}, n.dataTypes[0] = "json", e[s] = function () {
u = arguments
}, i.always(function () {
e[s] = o, n[s] && (n.jsonpCallback = r.jsonpCallback, Mn.push(s)), u && v.isFunction(o) && o(u[0]), u = o = t
}), "script"
}), v.ajaxSetup({
accepts: {
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents: {
script: /javascript|ecmascript/
},
converters: {
"text script": function (e) {
return v.globalEval(e), e
}
}
}), v.ajaxPrefilter("script", function (e) {
e.cache === t && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1)
}), v.ajaxTransport("script", function (e) {
if (e.crossDomain) {
var n, r = i.head || i.getElementsByTagName("head")[0] || i.documentElement;
return {
send: function (s, o) {
n = i.createElement("script"), n.async = "async", e.scriptCharset && (n.charset = e.scriptCharset), n.src = e.url, n.onload = n.onreadystatechange = function (e, i) {
if (i || !n.readyState || /loaded|complete/.test(n.readyState)) n.onload = n.onreadystatechange = null, r && n.parentNode && r.removeChild(n), n = t, i || o(200, "success")
}, r.insertBefore(n, r.firstChild)
},
abort: function () {
n && n.onload(0, 1)
}
}
}
});
var Hn, Bn = e.ActiveXObject ? function () {
for (var e in Hn) Hn[e](0, 1)
} : !1,
jn = 0;
v.ajaxSettings.xhr = e.ActiveXObject ? function () {
return !this.isLocal && Fn() || In()
} : Fn,
function (e) {
v.extend(v.support, {
ajax: !!e,
cors: !!e && "withCredentials" in e
})
}(v.ajaxSettings.xhr()), v.support.ajax && v.ajaxTransport(function (n) {
if (!n.crossDomain || v.support.cors) {
var r;
return {
send: function (i, s) {
var o, u, a = n.xhr();
n.username ? a.open(n.type, n.url, n.async, n.username, n.password) : a.open(n.type, n.url, n.async);
if (n.xhrFields)
for (u in n.xhrFields) a[u] = n.xhrFields[u];
n.mimeType && a.overrideMimeType && a.overrideMimeType(n.mimeType), !n.crossDomain && !i["X-Requested-With"] && (i["X-Requested-With"] = "XMLHttpRequest");
try {
for (u in i) a.setRequestHeader(u, i[u])
} catch (f) { }
a.send(n.hasContent && n.data || null), r = function (e, i) {
var u, f, l, c, h;
try {
if (r && (i || a.readyState === 4)) {
r = t, o && (a.onreadystatechange = v.noop, Bn && delete Hn[o]);
if (i) a.readyState !== 4 && a.abort();
else {
u = a.status, l = a.getAllResponseHeaders(), c = {}, h = a.responseXML, h && h.documentElement && (c.xml = h);
try {
c.text = a.responseText
} catch (p) { }
try {
f = a.statusText
} catch (p) {
f = ""
} !u && n.isLocal && !n.crossDomain ? u = c.text ? 200 : 404 : u === 1223 && (u = 204)
}
}
} catch (d) {
i || s(-1, d)
}
c && s(u, f, c, l)
}, n.async ? a.readyState === 4 ? setTimeout(r, 0) : (o = ++jn, Bn && (Hn || (Hn = {}, v(e).unload(Bn)), Hn[o] = r), a.onreadystatechange = r) : r()
},
abort: function () {
r && r(0, 1)
}
}
}
});
var qn, Rn, Un = /^(?:toggle|show|hide)$/,
zn = new RegExp("^(?:([-+])=|)(" + m + ")([a-z%]*)$", "i"),
Wn = /queueHooks$/,
Xn = [Gn],
Vn = {
"*": [function (e, t) {
var n, r, i = this.createTween(e, t),
s = zn.exec(t),
o = i.cur(),
u = +o || 0,
a = 1,
f = 20;
if (s) {
n = +s[2], r = s[3] || (v.cssNumber[e] ? "" : "px");
if (r !== "px" && u) {
u = v.css(i.elem, e, !0) || n || 1;
do a = a || ".5", u /= a, v.style(i.elem, e, u + r); while (a !== (a = i.cur() / o) && a !== 1 && --f)
}
i.unit = r, i.start = u, i.end = s[1] ? u + (s[1] + 1) * n : n
}
return i
}]
};
v.Animation = v.extend(Kn, {
tweener: function (e, t) {
v.isFunction(e) ? (t = e, e = ["*"]) : e = e.split(" ");
var n, r = 0,
i = e.length;
for (; r < i; r++) n = e[r], Vn[n] = Vn[n] || [], Vn[n].unshift(t)
},
prefilter: function (e, t) {
t ? Xn.unshift(e) : Xn.push(e)
}
}), v.Tween = Yn, Yn.prototype = {
constructor: Yn,
init: function (e, t, n, r, i, s) {
this.elem = e, this.prop = n, this.easing = i || "swing", this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = s || (v.cssNumber[n] ? "" : "px")
},
cur: function () {
var e = Yn.propHooks[this.prop];
return e && e.get ? e.get(this) : Yn.propHooks._default.get(this)
},
run: function (e) {
var t, n = Yn.propHooks[this.prop];
return this.options.duration ? this.pos = t = v.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : Yn.propHooks._default.set(this), this
}
}, Yn.prototype.init.prototype = Yn.prototype, Yn.propHooks = {
_default: {
get: function (e) {
var t;
return e.elem[e.prop] == null || !!e.elem.style && e.elem.style[e.prop] != null ? (t = v.css(e.elem, e.prop, !1, ""), !t || t === "auto" ? 0 : t) : e.elem[e.prop]
},
set: function (e) {
v.fx.step[e.prop] ? v.fx.step[e.prop](e) : e.elem.style && (e.elem.style[v.cssProps[e.prop]] != null || v.cssHooks[e.prop]) ? v.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now
}
}
}, Yn.propHooks.scrollTop = Yn.propHooks.scrollLeft = {
set: function (e) {
e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
}
}, v.each(["toggle", "show", "hide"], function (e, t) {
var n = v.fn[t];
v.fn[t] = function (r, i, s) {
return r == null || typeof r == "boolean" || !e && v.isFunction(r) && v.isFunction(i) ? n.apply(this, arguments) : this.animate(Zn(t, !0), r, i, s)
}
}), v.fn.extend({
fadeTo: function (e, t, n, r) {
return this.filter(Gt).css("opacity", 0).show().end().animate({
opacity: t
}, e, n, r)
},
animate: function (e, t, n, r) {
var i = v.isEmptyObject(e),
s = v.speed(t, n, r),
o = function () {
var t = Kn(this, v.extend({}, e), s);
i && t.stop(!0)
};
return i || s.queue === !1 ? this.each(o) : this.queue(s.queue, o)
},
stop: function (e, n, r) {
var i = function (e) {
var t = e.stop;
delete e.stop, t(r)
};
return typeof e != "string" && (r = n, n = e, e = t), n && e !== !1 && this.queue(e || "fx", []), this.each(function () {
var t = !0,
n = e != null && e + "queueHooks",
s = v.timers,
o = v._data(this);
if (n) o[n] && o[n].stop && i(o[n]);
else
for (n in o) o[n] && o[n].stop && Wn.test(n) && i(o[n]);
for (n = s.length; n--;) s[n].elem === this && (e == null || s[n].queue === e) && (s[n].anim.stop(r), t = !1, s.splice(n, 1));
(t || !r) && v.dequeue(this, e)
})
}
}), v.each({
slideDown: Zn("show"),
slideUp: Zn("hide"),
slideToggle: Zn("toggle"),
fadeIn: {
opacity: "show"
},
fadeOut: {
opacity: "hide"
},
fadeToggle: {
opacity: "toggle"
}
}, function (e, t) {
v.fn[e] = function (e, n, r) {
return this.animate(t, e, n, r)
}
}), v.speed = function (e, t, n) {
var r = e && typeof e == "object" ? v.extend({}, e) : {
complete: n || !n && t || v.isFunction(e) && e,
duration: e,
easing: n && t || t && !v.isFunction(t) && t
};
r.duration = v.fx.off ? 0 : typeof r.duration == "number" ? r.duration : r.duration in v.fx.speeds ? v.fx.speeds[r.duration] : v.fx.speeds._default;
if (r.queue == null || r.queue === !0) r.queue = "fx";
return r.old = r.complete, r.complete = function () {
v.isFunction(r.old) && r.old.call(this), r.queue && v.dequeue(this, r.queue)
}, r
}, v.easing = {
linear: function (e) {
return e
},
swing: function (e) {
return .5 - Math.cos(e * Math.PI) / 2
}
}, v.timers = [], v.fx = Yn.prototype.init, v.fx.tick = function () {
var e, n = v.timers,
r = 0;
qn = v.now();
for (; r < n.length; r++) e = n[r], !e() && n[r] === e && n.splice(r--, 1);
n.length || v.fx.stop(), qn = t
}, v.fx.timer = function (e) {
e() && v.timers.push(e) && !Rn && (Rn = setInterval(v.fx.tick, v.fx.interval))
}, v.fx.interval = 13, v.fx.stop = function () {
clearInterval(Rn), Rn = null
}, v.fx.speeds = {
slow: 600,
fast: 200,
_default: 400
}, v.fx.step = {}, v.expr && v.expr.filters && (v.expr.filters.animated = function (e) {
return v.grep(v.timers, function (t) {
return e === t.elem
}).length
});
var er = /^(?:body|html)$/i;
v.fn.offset = function (e) {
if (arguments.length) return e === t ? this : this.each(function (t) {
v.offset.setOffset(this, e, t)
});
var n, r, i, s, o, u, a, f = {
top: 0,
left: 0
},
l = this[0],
c = l && l.ownerDocument;
if (!c) return;
return (r = c.body) === l ? v.offset.bodyOffset(l) : (n = c.documentElement, v.contains(n, l) ? (typeof l.getBoundingClientRect != "undefined" && (f = l.getBoundingClientRect()), i = tr(c), s = n.clientTop || r.clientTop || 0, o = n.clientLeft || r.clientLeft || 0, u = i.pageYOffset || n.scrollTop, a = i.pageXOffset || n.scrollLeft, {
top: f.top + u - s,
left: f.left + a - o
}) : f)
}, v.offset = {
bodyOffset: function (e) {
var t = e.offsetTop,
n = e.offsetLeft;
return v.support.doesNotIncludeMarginInBodyOffset && (t += parseFloat(v.css(e, "marginTop")) || 0, n += parseFloat(v.css(e, "marginLeft")) || 0), {
top: t,
left: n
}
},
setOffset: function (e, t, n) {
var r = v.css(e, "position");
r === "static" && (e.style.position = "relative");
var i = v(e),
s = i.offset(),
o = v.css(e, "top"),
u = v.css(e, "left"),
a = (r === "absolute" || r === "fixed") && v.inArray("auto", [o, u]) > -1,
f = {},
l = {},
c, h;
a ? (l = i.position(), c = l.top, h = l.left) : (c = parseFloat(o) || 0, h = parseFloat(u) || 0), v.isFunction(t) && (t = t.call(e, n, s)), t.top != null && (f.top = t.top - s.top + c), t.left != null && (f.left = t.left - s.left + h), "using" in t ? t.using.call(e, f) : i.css(f)
}
}, v.fn.extend({
position: function () {
if (!this[0]) return;
var e = this[0],
t = this.offsetParent(),
n = this.offset(),
r = er.test(t[0].nodeName) ? {
top: 0,
left: 0
} : t.offset();
return n.top -= parseFloat(v.css(e, "marginTop")) || 0, n.left -= parseFloat(v.css(e, "marginLeft")) || 0, r.top += parseFloat(v.css(t[0], "borderTopWidth")) || 0, r.left += parseFloat(v.css(t[0], "borderLeftWidth")) || 0, {
top: n.top - r.top,
left: n.left - r.left
}
},
offsetParent: function () {
return this.map(function () {
var e = this.offsetParent || i.body;
while (e && !er.test(e.nodeName) && v.css(e, "position") === "static") e = e.offsetParent;
return e || i.body
})
}
}), v.each({
scrollLeft: "pageXOffset",
scrollTop: "pageYOffset"
}, function (e, n) {
var r = /Y/.test(n);
v.fn[e] = function (i) {
return v.access(this, function (e, i, s) {
var o = tr(e);
if (s === t) return o ? n in o ? o[n] : o.document.documentElement[i] : e[i];
o ? o.scrollTo(r ? v(o).scrollLeft() : s, r ? s : v(o).scrollTop()) : e[i] = s
}, e, i, arguments.length, null)
}
}), v.each({
Height: "height",
Width: "width"
}, function (e, n) {
v.each({
padding: "inner" + e,
content: n,
"": "outer" + e
}, function (r, i) {
v.fn[i] = function (i, s) {
var o = arguments.length && (r || typeof i != "boolean"),
u = r || (i === !0 || s === !0 ? "margin" : "border");
return v.access(this, function (n, r, i) {
var s;
return v.isWindow(n) ? n.document.documentElement["client" + e] : n.nodeType === 9 ? (s = n.documentElement, Math.max(n.body["scroll" + e], s["scroll" + e], n.body["offset" + e], s["offset" + e], s["client" + e])) : i === t ? v.css(n, r, i, u) : v.style(n, r, i, u)
}, n, o ? i : t, o, null)
}
})
}), e.jQuery = e.$ = v, typeof define == "function" && define.amd && define.amd.jQuery && define("jquery", [], function () {
return v
})
})(window);
</script>
<!-- Main Minesweeper Code -->
<script type="text/javascript">
/**
* @class
* @param A
* @param {Function} Q
* @param {Function} s
*/
function Minesweeper(A, Q, s) {
var E = this;
var gti;
var rows;
var cols;
var mines;
var zoomlvl;
var er
/**
* @inner
* Grid Obj
*/
var o;
/**
* @inner
* if "ae" in newGame exists, is true. Otherwise, is false
*/
var p;
/**
* @inner
* Number of mines for the newGame function
*/
var K;
/**
* @inner
* Number of non-mines for the newGame function
*/
var G;
/**
* @inner
* Grid Management Varible
*/
var I;
/**
* @inner
* Array containing the square pressed/hovered
*/
var c;
/**
* @inner
* Time Varible
*/
var U = new TimeManager();
/**
* @inner
* Game Over Varible
*/
var L;
/**
* @inner
* Playing Varible
*/
var g;
/**
* @inner
* Backup Grid Managment
*/
var M;
/**
* @inner
* Game ID
*/
var r;
/**
* tests if the browser is compatable
*/
var k;
/**
* @inner
* Mouse Press Tracker
*/
var D;
/**
* @inner
* Mouse Press Tracker
*/
var e;
/**
* @inner
* Mouse Press Tracker
*/
var v;
/**
* @inner
* Unknown, set to Null in newGame, called by ae(), but not changed, and not needed
*/
var d;
/**
* @inner
* Gusture Tracker
*/
var C;
/**
* @inner
* Likely First-Press protection
*/
var y;
Setup();
this.newGame = function (ae, Y) {
var af, ab;
var ad;
var aa, ac;
var Z;
er = undefined
aa = gameSettingString();
Z = Q();
gti = Z.gameTypeId;
rows = Z.numRows;
cols = Z.numCols;
mines = Z.numMines;
zoomlvl = Z.zoom;
if (Y) {
if (typeof Y.gameTypeId !== "undefined") {
gti = Y.gameTypeId
}
if (typeof Y.numRows !== "undefined") {
rows = Y.numRows
}
if (typeof Y.numCols !== "undefined") {
cols = Y.numCols
}
if (typeof Y.numMines !== "undefined") {
mines = Y.numMines
}
}
ac = (gameSettingString() != aa);
setZoom(zoomlvl);
if (ac) {
gridGen()
}
mineLayer(ae);
setO();
p = !!ae;
K = mines;
G = rows * cols - mines;
for (af = 1; af <= rows; af++) {
for (ab = 1; ab <= cols; ab++) {
ad = I[af][ab];
if (ad.isFlagged()) {
ad.setClass("square bombflagged");
K--
} else {
if (ad.isMarked()) {
ad.setClass("square question")
} else {
if (ad.isRevealed()) {
ad.setClass("square open" + ad.getValue());
if (!ad.isHidden()) {
G--
}
} else {
ad.setClass("square blank")
}
}
}
}
}
U.stop();
if (!p) {
U.setTime(0)
} else {
if (Y && typeof Y.time !== "undefined") {
U.setTime(Y.time)
} else { }
}
updateMines();
L = false;
g = false;
D = false;
e = false;
v = false;
isMouseDownForCtrlClick = false;
d = null;
C = false;
y = false;
$("#face")[0].className = "facesmile";
hoveredSquareId = ""
};
this.resize = function (Y) {
var Z = zoomMargin(Y);
setZoom(Y);
$("#game-container").removeClass("getGrid" + zoomlvl * 100).addClass("getGrid" + Y * 100);
$("#face").css({
"margin-left": Math.floor(Z) + "px",
"margin-right": Math.ceil(Z) + "px"
});
zoomlvl = Y
};
this.hasStartedPlaying = function () {
return g
};
this.export_ = function () {
var aa = getGrid(true);
var Z = U.getTime();
var Y = {
version: 1,
gameTypeId: gti,
numRows: rows,
numCols: cols,
numMines: mines,
gridObj: aa,
time: Z
};
y = true;
return btoa(JSON.stringify(Y))
};
this.isImportable = function (aa) {
try {
var Y = JSON.parse(atob(aa));
return Y.version === 1
} catch (Z) {
return false
}
};
this.import_ = function (ae) {
var aa = JSON.parse(atob(ae));
var ag, Z;
var af, ad;
var ac = [];
for (ag = 0; ag <= aa.numRows + 1; ag++) {
ac[ag] = [];
for (Z = 0; Z <= aa.numCols + 1; Z++) {
af = aa.gridObj[ag][Z];
if (typeof af === "number") {
ad = {
value: af,
isRevealed: false,
isFlagged: false,
isMarked: false
}
} else {
ad = {
value: af[0],
isRevealed: af[1] === 1,
isFlagged: af[2] === 1,
isMarked: af[3] === 1
}
}
ac[ag][Z] = ad
}
}
var Y = {
gridObj: ac
};
var ab = {
gameTypeId: aa.gameTypeId,
numRows: aa.numRows,
numCols: aa.numCols,
numMines: aa.numMines,
time: aa.time
};
s({
gameTypeId: aa.gameTypeId,
numRows: aa.numRows,
numCols: aa.numCols,
numMines: aa.numMines
});
E.newGame(Y, ab)
};
/**
*
* @param {number} Y Zoom Level (1 <= Y >= 2)
* @description
* Sets the zoom values for the game
*/
function setZoom(Y) {
$("#game-container, #game").width(Y * (cols * 16 + 20));
$("#game").height(Y * (rows * 16 + 30 + 26 + 6))
}
/**
*
* @param {number} Y Zoom Level
* @description
* Returns a special margin value for use in the gridGen function as the margins of the smile
*/
function zoomMargin(Y) {
return (Y * cols * 16 - 6 * Math.ceil(Y * 13) - Y * 2 * 6 - Y * 26) / 2
}
/**
* Returns a string with a "ROW_COL_MINES" format
*/
function gameSettingString() {
return rows + "_" + cols + "_" + mines
}
/**
* Makes a new minesweeper grid for the site
*/
function gridGen() {
var ab, Y;
var Z = [];
var aa = zoomMargin(zoomlvl);
Z.push('<div class="bordertl"></div>');
for (Y = 0; Y < cols; Y++) {
Z.push('<div class="bordertb"></div>')
}
Z.push('<div class="bordertr"></div>');
Z.push('<div class="borderlrlong"></div>', '<div class="time0" id="mines_hundreds"></div>', '<div class="time0" id="mines_tens"></div>', '<div class="time0" id="mines_ones"></div>', '<div class="facesmile" style="margin-left:', Math.floor(aa), "px; margin-right: ", Math.ceil(aa), 'px;" id="face"></div>', '<div class="time0" id="seconds_hundreds"></div>', '<div class="time0" id="seconds_tens"></div>', '<div class="time0" id="seconds_ones"></div>', '<div class="borderlrlong"></div>');
Z.push('<div class="borderjointl"></div>');
for (Y = 0; Y < cols; Y++) {
Z.push('<div class="bordertb"></div>')
}
Z.push('<div class="borderjointr"></div>');
for (ab = 1; ab <= rows; ab++) {
Z.push('<div class="borderlr"></div>');
for (Y = 1; Y <= cols; Y++) {
Z.push('<div class="square blank" id="', ab, "_", Y, '"></div>')
}
Z.push('<div class="borderlr"></div>')
}
Z.push('<div class="borderbl"></div>');
for (Y = 0; Y < cols; Y++) {
Z.push('<div class="bordertb"></div>')
}
Z.push('<div class="borderbr"></div>');
for (Y = 0; Y <= cols + 1; Y++) {
Z.push('<div class="square blank" style="display: none;" id="', 0, "_", Y, '"></div>')
}
for (Y = 0; Y <= cols + 1; Y++) {
Z.push('<div class="square blank" style="display: none;" id="', rows + 1, "_", Y, '"></div>')
}
for (ab = 1; ab <= rows; ab++) {
Z.push('<div class="square blank" style="display: none;" id="', ab, "_", 0, '"></div>');
Z.push('<div class="square blank" style="display: none;" id="', ab, "_", cols + 1, '"></div>')
}
$("#game").html(Z.join(""))
}
/**
* Sub-function holder
*
* Values:
* - addToValue
* - isMine
* - isFlagged
* - isMarked
* - isRevealed
* - isHidden
* - getRow
* - getCol
* - getValue
* - setRevealed
* - plantMine
* - unplantMine
* - getClass
* - reveal1
* - flag
* - _showFlagAnimation
* - serializeToObj
* - deserializeFromObj
*/
function squareData(ad, Z) {
var ab = 0;
var aa = false;
var Y = false;
var ac = false;
this.addToValue = function (ae) {
ab += ae
};
this.isMine = function () {
return ab < 0
};
this.isFlagged = function () {
return aa
};
this.isMarked = function () {
return Y
};
this.isRevealed = function () {
return ac
};
this.isHidden = function () {
return ad < 1 || ad > rows || Z < 1 || Z > cols
};
this.getRow = function () {
return ad
};
this.getCol = function () {
return Z
};
this.getValue = function () {
return ab
};
this.setRevealed = function (ae) {
ac = ae
};
this.plantMine = function () {
ab -= 10;
I[ad - 1][Z - 1].addToValue(1);
I[ad - 1][Z].addToValue(1);
I[ad - 1][Z + 1].addToValue(1);
I[ad][Z - 1].addToValue(1);
I[ad][Z + 1].addToValue(1);
I[ad + 1][Z - 1].addToValue(1);
I[ad + 1][Z].addToValue(1);
I[ad + 1][Z + 1].addToValue(1)
};
this.unplantMine = function () {
ab += 10;
I[ad - 1][Z - 1].addToValue(-1);
I[ad - 1][Z].addToValue(-1);
I[ad - 1][Z + 1].addToValue(-1);
I[ad][Z - 1].addToValue(-1);
I[ad][Z + 1].addToValue(-1);
I[ad + 1][Z - 1].addToValue(-1);
I[ad + 1][Z].addToValue(-1);
I[ad + 1][Z + 1].addToValue(-1)
};
this.setClass = function (ae) {
document.getElementById(ad + "_" + Z).className = ae
};
this.reveal1 = function () {
var ae, af;
var ag, ah;
var ai = [];
ai.push(this);
this.pushed = true;
while (ai.length > 0) {
ag = ai.pop();
if (!ag.isRevealed() && !ag.isFlagged()) {
if (ag.isMine()) {
return false
} else {
if (!ag.isFlagged()) {
ag.setClass("square open" + ag.getValue());
ag.setRevealed(true);
if (!ag.isHidden() && --G == 0) {
gameWin();
return true
}
if (ag.getValue() == 0 && !ag.isHidden()) {
for (ae = -1; ae <= 1; ae++) {
for (af = -1; af <= 1; af++) {
ah = I[ag.getRow() + ae][ag.getCol() + af];
if (!ah.pushed && !ah.isHidden() && !ah.isRevealed()) {
ai.push(ah);
ah.pushed = true
}
}
}
}
}
}
}
}
setO();
return true
};
this.flag = function (ae) {
if (!ac) {
if (aa) {
if ($("#marks").attr("checked")) {
this.setClass("square question");
Y = true
} else {
this.setClass("square blank");
if (ae) {
this._showFlagAnimation(true)
}
}
aa = false;
K++;
updateMines()
} else {
if (Y) {
this.setClass("square blank");
Y = false
} else {
this.setClass("square bombflagged");
aa = true;
K--;
updateMines();
if (ae) {
this._showFlagAnimation()
}
}
}
setO()
}
};
this._showFlagAnimation = function (af) {
var al = $("#" + ad + "_" + Z);
var ag = al.offset();
var aj = ag.left + al.width() / 2;
var ai = ag.top + al.height() / 2;
var ao = 57 * zoomlvl * 1.75;
var ah = 79 * zoomlvl * 1.75;
var ae = {
left: aj - ao / 2,
top: ai - ah / 2,
width: ao + "px",
height: ah + "px",
opacity: 0
};
var am = {
left: aj,
top: ai,
width: 0,
height: 0,
opacity: 1
};
if (af) {
var an = ae;
ae = am;
am = an
}
var ak = $('<img src="flag.png" class="flag-animation"></div>').css(ae);
$("body").append(ak);
setTimeout(function () {
ak.css(am)
}, 0);
setTimeout(function () {
ak.remove()
}, 500)
};
this.serializeToObj = function (ae) {
if (ae) {
if (!ac && !aa && !Y) {
return ab
} else {
return [ab, ac ? 1 : 0, aa ? 1 : 0, Y ? 1 : 0]
}
} else {
return {
value: ab,
isRevealed: ac,
isFlagged: aa,
isMarked: Y
}
}
};
this.deserializeFromObj = function (ae) {
ab = ae.value;
aa = ae.isFlagged;
Y = ae.isMarked;
ac = ae.isRevealed
}
}
/**
*
* @description This is the main function used to lay the mines
* @param {Object?} ab
*/
function mineLayer(ab) {
var X, Y, Z;
var aa;
I = [];
c = [];
M = [];
Z = 0;
for (X = 0; X <= rows + 1; X++) {
I[X] = [];
for (Y = 0; Y <= cols + 1; Y++) {
aa = new squareData(X, Y);
I[X][Y] = aa;
c[X + "_" + Y] = aa;
if (!aa.isHidden()) {
M[Z++] = aa
}
}
}
if (ab) {
var ac = ab.gridObj;
for (X = 0; X <= rows + 1; X++) {
for (Y = 0; Y <= cols + 1; Y++) {
I[X][Y].deserializeFromObj(ac[X][Y])
}
}
M = [];
for (X = 0; X <= rows + 1; X++) {
for (Y = 0; Y <= cols + 1; Y++) {
aa = I[X][Y];
if (!aa.isHidden() && !aa.isMine()) {
M.push(aa)
}
}
}
} else {
for (Z = 0; Z < mines; Z++) {
M.splice(Math.floor(Math.random() * M.length), 1)[0].plantMine()
}
}
}
/**
*
* @param {Boolean} Z
* @returns {Object} Grid Object
* @decription
* Pull the current grid state
*/
function getGrid(Z) {
var aa = [];
var X, Y;
for (X = 0; X <= rows + 1; X++) {
aa[X] = [];
for (Y = 0; Y <= cols + 1; Y++) {
aa[X][Y] = I[X][Y].serializeToObj(Z)
}
}
return aa
}
/**
* Pulls the grid state and saves it to the "o" var (called at start, reveal1, and flag)
*/
function setO() {
var Y = getGrid();
o = {
gridObj: Y
}
}
/**
* @deprecated
*/
function checkMineLayer(ag) {
var Y = ag.getRow();
var X = ag.getCol();
var ad, Z;
var ac;
var af;
var aa;
if (!p && !y) {
if (ag.isMine()) {
M.splice(Math.floor(Math.random() * M.length), 1)[0].plantMine();
ag.unplantMine();
M.push(ag)
}
var af = [];
for (var ab = 0; ab < M.length; ab++) {
aa = M[ab];
if (aa.getRow() < Y - 1 || aa.getRow() > Y + 1 || aa.getCol() < X - 1 || aa.getCol() > X + 1) {
af.push(aa)
}
}
for (ad = -1; ad <= 1; ad++) {
for (Z = -1; Z <= 1; Z++) {
ac = I[Y + ad][X + Z];
if (ac.isMine() && af.length > 0) {
af.splice(Math.floor(Math.random() * af.length), 1)[0].plantMine();
ac.unplantMine()
}
}
}
}
U.start();
if ((Y == 1 && X == 1) || (Y == 1 && X == cols) || (Y == rows && X == 1) || (Y == rows && X == cols)) {
return 1
} else {
if (Y == 1 || Y == rows || X == 1 || X == cols) {
return 2
} else {
return 3
}
}
}
/**
* Game ID Generator
*/
function gameIDGen() {
var Y = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var Z;
r = "";
for (var Z = 0; Z < 3; Z++) {
r += Y.charAt(Math.floor(Math.random() * Y.length))
}
r += 4 * (Math.floor(Math.random() * 225) + 25) + gti;
for (var Z = 0; Z < 4; Z++) {
r += Y.charAt(Math.floor(Math.random() * Y.length))
}
}
/**
* @class
* @description
* Time managment Sub-function holder used to keep track of the time
*/
function TimeManager() {
var aa;
var ab;
var ac;
function startClock() {
var ag = new Date().getTime();
var ad = ab * 1000;
var af = ag - aa;
var ae = 1000 - (af - ad);
ac = setTimeout(startClock, ae);
ab++;
setTimeCounter()
}
function setTimeCounter() {
var ad = numSeg(ab);
document.getElementById("seconds_hundreds").className = "time" + ad[0];
document.getElementById("seconds_tens").className = "time" + ad[1];
document.getElementById("seconds_ones").className = "time" + ad[2]
}
this.start = function () {
aa = new Date().getTime() - ab * 1000;
startClock()
};
this.stop = function () {
clearTimeout(ac)
};
this.getTime = function () {
return ab
};
this.setTime = function (ad) {
ab = ad;
setTimeCounter()
}
}
/**
* Sets the mines to the counter
*/
function updateMines() {
var Y = numSeg(K);
document.getElementById("mines_hundreds").className = "time" + Y[0];
document.getElementById("mines_tens").className = "time" + Y[1];
document.getElementById("mines_ones").className = "time" + Y[2]
}
/**
*
* @param {number} Y Number Value
*
* @returns {[string|number,number,number]}
* 3 segment number value where if Y is negitive, value 1 is equal to the string "-"
*/
function numSeg(Y) {
Y = Math.min(Y, 999);
if (Y >= 0) {
return [Math.floor(Y / 100), Math.floor((Y % 100) / 10), Y % 10]
} else {
return ["-", Math.floor((-Y % 100) / 10), -Y % 10]
}
}
/**
* @param {Object} Y
* Game Death Function
*/
function gameDeath(Y) {
var ac, Z, aa;
var ab;
if (er) {
return
}
er = 'lose'
document.getElementById("face").className = "facedead";
U.stop();
L = true;
for (ac = 1; ac <= rows; ac++) {
columnloop: for (Z = 1; Z <= cols; Z++) {
ab = I[ac][Z];
if (!ab.isRevealed()) {
for (aa = 0; aa < Y.length; aa++) {
if (ab == Y[aa]) {
ab.setClass("square bombdeath");
continue columnloop
}
}
if (ab.isMine() && !ab.isFlagged()) {
ab.setClass("square bombrevealed")
} else {
if (!ab.isMine() && ab.isFlagged()) {
ab.setClass("square bombmisflagged")
}
}
}
}
}
}
/**
* Game Win Function
*/
function gameWin() {
var ad, Y;
var aa;
var Z;
var ab;
var ac = false;
if (er) {
return
}
er = 'win'
document.getElementById("face").className = "facewin";
U.stop();
L = true;
K = 0;
updateMines();
for (ad = 1; ad <= rows; ad++) {
for (Y = 1; Y <= cols; Y++) {
aa = I[ad][Y];
if (!aa.isRevealed() && !aa.isFlagged() && aa.isMine()) {
aa.setClass("square bombflagged")
} else if (!aa.isRevealed() && !aa.isMine()) {
if (aa.isFlagged()) {
aa.flag()
}
aa.setClass("square open" + aa.getValue());
aa.setRevealed(true);
}
}
}
if (gti > 0) {
ab = U.getTime();
if (!p) {
for (Z = 3; Z >= 0; Z--) {
if (ab <= A[Z][gti - 1]) {
ac = true;
break
}
}
}
if (E.onWin) {
E.onWin(gti, ab)
}
}
}
/**
*
* @param {HTMLElement} Y Elemet Pressed
* @returns {Boolean} Returns true if the element pressed has a class starting with "square"
*/
function squareTest(Y) {
return Y.className.substring(0, 6) == "square"
}
/**
* @param {MouseEvent} Z Mouse Event
* @returns {{right:Boolean, left:Boolean}}
* tests what mouse button was pressed
*/
function mousePressTest(Z) {
var Y = {};
if (k) {
Y.left = Z.button == 1 || Z.button == 3 || Z.button == 4;
Y.right = Z.button == 2 || Z.button == 3 || Z.button == 4
} else {
Y.left = Z.button == 0 || Z.button == 1;
Y.right = Z.button == 2 || Z.button == 1
}
return Y
}
/**
* @param aa Square
* @param {String} Z Sets the class name to this if it isn't revealed, marked, and flagged
* @param {String} Y Sets the class name to this if it isn't revealed, and if it is marked
* @description
* Called for use in a square game
*/
function classSetter2(aa, Z, Y) {
if (!aa.isRevealed()) {
if (aa.isMarked()) {
aa.setClass(Y)
} else {
if (!aa.isFlagged()) {
aa.setClass(Z)
}
}
}
}
/**
* @param ac Square
* @param {String} ab
* @param {String} aa
* @description
* Called for use in a marking game
*/
function classSetter3(ac, ab, aa) {
var Y, Z;
for (Y = -1; Y <= 1; Y++) {
for (Z = -1; Z <= 1; Z++) {
classSetter2(I[ac.getRow() + Y][ac.getCol() + Z], ab, aa)
}
}
}
/**
* Game Setup for eventListeners, and grabbing elements, and other required things
*/
function Setup() {
var aa = false;
var ac;
/**
* @param {MouseEvent} ag
* Used for marking games
*/
function markFunc1(ag) {
if (ag.type === "touchmove") {
return
}
var af = eleSelector(ag);
if (af != ac && !D) {
if (v) {
if (ac) {
classSetter3(c[ac.id], "square blank", "square question")
}
if (squareTest(af)) {
classSetter3(c[af.id], "square open0", "square questionpressed")
}
} else {
if (ac) {
classSetter2(c[ac.id], "square blank", "square question")
}
if (squareTest(af)) {
classSetter2(c[af.id], "square open0", "square questionpressed")
}
}
}
ac = (squareTest(af)) ? af : undefined
}
/**
*
* @param {TouchEvent} ag
* Changes the face upon touching it
*/
function faceSetter(ag) {
if (ag.type === "touchmove") {
return
}
var af = eleSelector(ag);
document.getElementById("face").className = (af.id == "face") ? "facepressed" : "facesmile"
}
/**
* @param {TouchEvent} af Triggering Event
* @returns {HTMLElement}
* @description
* Grabs the element the user is touching
*/
function eleSelector(af) {
if (af.type === "touchmove" || af.type === "touchend") {
var ag = af.originalEvent.changedTouches[0];
return document.elementFromPoint(ag.clientX, ag.clientY)
} else {
return af.target
}
}
k = false
$(document).bind("gesturestart", function (af) {
C = true;
scrollManager()
});
$(document).bind("gestureend", function (af) {
C = false
});
$(document).bind("scroll", scrollManager);
function scrollManager() {
if (!d) {
return
}
d = null;
if (ac) {
classSetter2(c[ac.id], "square blank", "square question");
ac = undefined
}
if (!L) {
document.getElementById("face").className = "facesmile"
}
}
$(document).mousedown(function (ag) {
var af = mousePressTest(ag);
e = af.left || e;
v = af.right || v;
if (ag.ctrlKey && squareTest(ag.target) && !L) {
if (er) return;
c[ag.target.id].flag();
isMouseDownForCtrlClick = true
} else {
if (e) {
if (squareTest(ag.target) && !L) {
ag.preventDefault();
$(document).bind("mousemove", markFunc1);
document.getElementById("face").className = "faceooh";
ac = undefined;
markFunc1(ag)
} else {
if (ag.target.id == "face") {
ag.preventDefault();
aa = true;
$(document).bind("mousemove", faceSetter);
document.getElementById("face").className = "facepressed"
}
}
} else {
if (v) {
if (squareTest(ag.target) && !L) {
if (er) return;
c[ag.target.id].flag()
}
return false
}
}
}
});
$(document).mouseup(function (ai) {
var af = mousePressTest(ai);
var ah;
var ag;
if (isMouseDownForCtrlClick) {
e = false;
v = false;
isMouseDownForCtrlClick = false;
return
}
if (er) {
if (ai.target.id == "face" && aa) {
E.newGame()
aa = false
}
else {
return
}
}
if (af.left) {
e = false;
$(document).unbind("mousemove", markFunc1).unbind("mousemove", faceSetter);
if (aa || !L) {
document.getElementById("face").className = "facesmile"
}
if (squareTest(ai.target) && !L) {
ah = c[ai.target.id];
if (v) {
D = true;
classSetter3(c[ai.target.id], "square blank", "square question");
} else {
if (!D) {
if (!g) {
ag = checkMineLayer(ah)
g = true
}
if (!ah.reveal1()) {
gameDeath([ah])
}
}
D = false
}
}
}
if (af.right) {
v = false;
if (squareTest(ai.target) && !L) {
if (e) {
ah = c[ai.target.id];
D = true;
classSetter3(ah, "square blank", "square question");
} else {
D = false
}
if (!L) {
document.getElementById("face").className = "facesmile"
}
}
}
});
$(document).keydown(function (ag) {
if (ag.which !== 83 && er) {
ag.preventDefault()
return
}
if (ag.which == 83) {
ag.preventDefault()
E.newGame()
} else if (ag.which == 32) {
ag.preventDefault()
square = c[hoveredSquareId];
square.flag()
} else if (ag.which == 68) {
gameDeath([c[hoveredSquareId]])
} else if (ag.which == 70) {
document.body.requestFullscreen()
} else if (ag.key == "~") {
gameWin()
} else {
}
});
$("#game").mouseover(function (af) {
if (squareTest(af.target)) {
hoveredSquareId = af.target.id
}
});
$("#game").mouseout(function (af) {
if (squareTest(af.target)) {
if (hoveredSquareId = af.target.id) {
hoveredSquareId = ""
}
}
})
$(document).contextmenu(function (event) {
event.preventDefault()
})
}
};
</script>
<!-- Page Minesweeper Code -->
<script>
$(function () {
var gameType = 'expert';
var zoom = '200';
var position = 'center';
var isNightMode = false;
var hashParts, i;
var minesweeper;
if (!!location.hash && location.hash.length > 1) {
hashParts = location.hash.substring(1).split('-');
for (i = 0; i < hashParts.length; i++) {
switch (hashParts[i]) {
case 'beginner': gameType = 'beginner'; break;
case 'intermediate': gameType = 'intermediate'; break;
case '150': zoom = '150'; break;
case '200': zoom = '200'; break;
case 'left': position = 'left'; break;
case 'night': isNightMode = true; break;
}
}
}
$('#' + gameType).attr('checked', true);
$('#zoom' + zoom).attr('checked', true);
$('#position-' + position).attr('checked', true);
$('#nightMode').attr('checked', isNightMode);
document.getElementById('game-container').className = 'z' + zoom;
setPosition(position);
if (isNightMode) {
toggleNightMode(isNightMode);
}
minesweeper = new Minesweeper([
[2, 20, 59],
[2, 18, 54],
[1, 15, 51],
[1, 10, 45]
], getOptions, setOptions);
minesweeper.onWin = function (gameTypeId, time) {
var mode;
switch (gameTypeId) {
case 1: mode = 'Beginner'; break;
case 2: mode = 'Intermediate'; break;
case 3: mode = 'Expert'; break;
default: return;
}
};
minesweeper.newGame();
setHash();
$("#options-link, #options-close").click(function () {
$("#options").toggle();
$("#display").hide();
$("#controls").hide();
$("#import").hide();
$("#export").hide();
});
$("#options-form").submit(function (e) {
$("#options").hide();
minesweeper.newGame();
setHash();
e.preventDefault();
});
$("#display-link, #display-close").click(function () {
$("#options").hide();
$("#display").toggle();
$("#controls").hide();
$("#import").hide();
$("#export").hide();
});
$('input[name="zoom"]').change(function () {
var zoom = parseFloat($(this).val());
minesweeper.resize(zoom);
setHash();
});
$('input[name="position"]').change(function () {
setPosition($(this).val());
setHash();
});
$('input[name="nightMode"]').change(function () {
var isNightMode = $(this).is(':checked');
toggleNightMode(isNightMode);
setHash();
});
$("#controls-link, #controls-close").click(function () {
$("#options").hide();
$("#display").hide();
$("#controls").toggle();
$("#import").hide();
$("#export").hide();
});
$("#import-link, #import-close").click(function () {
$("#options").hide();
$("#display").hide();
$("#controls").hide();
$("#import").toggle();
$("#export").hide();
if ($('#import').is(':visible')) {
$('#import input[type=submit]').prop('disabled', true);
// trigger propertychange so "load game" button becomes enabled/disabled as needed
$('#import textarea').select().trigger('propertychange');
}
});
$('#import textarea').bind('input propertychange', function () {
var isImportable = minesweeper.isImportable($.trim($(this).val()));
$('#import input[type=submit]').prop('disabled', !isImportable);
});
$("#import-form").submit(function (e) {
$("#import").hide();
minesweeper.import_($.trim($('#import textarea').val()));
e.preventDefault();
});
$("#export-link, #export-close").click(function () {
$("#options").hide();
$("#display").hide();
$("#controls").hide();
$("#import").hide();
$("#export").toggle();
if ($('#export').is(':visible')) {
$('#export textarea').val(minesweeper.export_()).select();
var didCopySucceed = document.execCommand('copy');
$('#export-message').text(didCopySucceed ? 'Game state copied to your clipboard!' : 'Copy game state to your clipboard:');
$('#export-first-click-message').toggle(!minesweeper.hasStartedPlaying());
}
});
$('#export textarea').mousedown(function () {
// If the textarea already has focus, don't override default behavior.
if (document.activeElement === $(this)[0]) {
return;
}
// Defer or else the ensuing click event will un-highlight.
var that = this;
setTimeout(() => {
$(that).select();
}, 0);
});
$(document).keydown(function (e) {
if (e.keyCode == 27) { //escape
$("#options, #display, #controls, #import, #export").hide();
}
});
function setPosition(position) {
if (position == 'left') {
$('.outer-container').css('text-align', 'left');
$('body').css('margin-left', '20px');
}
else if (position == 'center') {
$('.outer-container').css('text-align', 'center');
$('body').css('margin-left', '0px');
}
}
function toggleNightMode(isOn) {
$('body').toggleClass('night-mode', isOn);
}
function getOptions() {
var gameTypeId;
var numRows;
var numCols;
var numMines;
var zoom;
if ($("#beginner").attr("checked")) {
gameTypeId = 1;
numRows = 9;
numCols = 9;
numMines = 10;
}
else if ($("#intermediate").attr("checked")) {
gameTypeId = 2;
numRows = 16;
numCols = 16;
numMines = 40;
}
else if ($("#expert").attr("checked")) {
gameTypeId = 3;
numRows = 16;
numCols = 30;
numMines = 99;
}
else if ($("#custom").attr("checked")) {
gameTypeId = 0;
numRows = parseInt($("#custom_height").val(), 10);
if (isNaN(numRows)) {
numRows = 20;
}
numRows = Math.max(1, numRows);
numRows = Math.min(99, numRows);
$("#custom_height").val(numRows);
numCols = parseInt($("#custom_width").val(), 10);
if (isNaN(numCols)) {
numCols = 30;
}
numCols = Math.max(8, numCols);
numCols = Math.min(99, numCols);
$("#custom_width").val(numCols);
numMines = parseInt($("#custom_mines").val(), 10);
if (isNaN(numMines)) {
numMines = Math.round(numRows * numCols / 5);
}
numMines = Math.max(0, numMines);
numMines = Math.min(numRows * numCols, numMines);
$("#custom_mines").val(numMines);
}
zoom = parseFloat($('input[name="zoom"]:checked').val());
return {
gameTypeId: gameTypeId,
numRows: numRows,
numCols: numCols,
numMines: numMines,
zoom: zoom
};
}
function setOptions(options) {
switch (options.gameTypeId) {
case 1: $('#beginner').prop('checked', true); break;
case 2: $('#intermediate').prop('checked', true); break;
case 3: $('#expert').prop('checked', true); break;
default:
$('#custom').prop('checked', true);
$('#custom_height').val(options.numRows);
$('#custom_width').val(options.numCols);
$('#custom_mines').val(options.numMines);
break;
}
}
function setHash() {
var gameType = 'expert';
var zoom = $('input[name="zoom"]:checked').val();
var position = $('input[name="position"]:checked').val();
var isNightMode = $('input[name="nightMode"]').is(':checked');
var hashParts = [];
if ($("#beginner").attr("checked")) {
hashParts.push("beginner");
}
else if ($("#intermediate").attr("checked")) {
hashParts.push("intermediate");
}
if (zoom != 1) {
hashParts.push(zoom * 100);
}
if (position != "center") {
hashParts.push(position);
}
if (isNightMode) {
hashParts.push('night');
}
if (hashParts.length > 0) {
location.hash = '#' + hashParts.join('-');
}
else {
location.hash = '';
}
}
});
</script>
<noscript>Please enable JavaScript so that this page can properly work! Thanks!</noscript>
</head>
<body class="night-mode" style="margin-left: 0px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">
<tbody>
<tr>
<td class="outer-container" style="text-align: center;">
<div class="inner-container" style="margin-left: auto; margin-right: auto;">
<div id="center-column">
<div id="game-container" class="z200" style="width: 1000px;">
<div style="white-space: nowrap;">
<span id="options-link" title="game options">Game</span>
| <span id="display-link" title="size/position">Display</span>
| <span id="controls-link" title="keyboard/mouse controls">Controls</span>
| <span id="import-link" title="load exported game">Import</span>
| <span id="export-link" title="same game to be impoorted">Export</span>
| <span title="Fullscreen the minesweeper window"><a
href="javascript:document.body.requestFullscreen()">Fullscreen</a></span>
</div>
<div id="game" oncontextmenu="(e) => {e.preventDefault()}"
ondrag="(e) => {e.preventDefault()}" ondragstart="(e) => {e.preventDefault()}"
style="width: 1000px; height: 636px;">
<div class="bordertl"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertr"></div>
<div class="borderlrlong"></div>
<div class="time0" id="mines_hundreds"></div>
<div class="time9" id="mines_tens"></div>
<div class="time9" id="mines_ones"></div>
<div class="facesmile" style="margin-left:364px; margin-right: 364px;" id="face">
</div>
<div class="time0" id="seconds_hundreds"></div>
<div class="time0" id="seconds_tens"></div>
<div class="time0" id="seconds_ones"></div>
<div class="borderlrlong"></div>
<div class="borderjointl"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="borderjointr"></div>
<div class="borderlr"></div>
<div class="square blank" id="1_1"></div>
<div class="square blank" id="1_2"></div>
<div class="square blank" id="1_3"></div>
<div class="square blank" id="1_4"></div>
<div class="square blank" id="1_5"></div>
<div class="square blank" id="1_6"></div>
<div class="square blank" id="1_7"></div>
<div class="square blank" id="1_8"></div>
<div class="square blank" id="1_9"></div>
<div class="square blank" id="1_10"></div>
<div class="square blank" id="1_11"></div>
<div class="square blank" id="1_12"></div>
<div class="square blank" id="1_13"></div>
<div class="square blank" id="1_14"></div>
<div class="square blank" id="1_15"></div>
<div class="square blank" id="1_16"></div>
<div class="square blank" id="1_17"></div>
<div class="square blank" id="1_18"></div>
<div class="square blank" id="1_19"></div>
<div class="square blank" id="1_20"></div>
<div class="square blank" id="1_21"></div>
<div class="square blank" id="1_22"></div>
<div class="square blank" id="1_23"></div>
<div class="square blank" id="1_24"></div>
<div class="square blank" id="1_25"></div>
<div class="square blank" id="1_26"></div>
<div class="square blank" id="1_27"></div>
<div class="square blank" id="1_28"></div>
<div class="square blank" id="1_29"></div>
<div class="square blank" id="1_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="2_1"></div>
<div class="square blank" id="2_2"></div>
<div class="square blank" id="2_3"></div>
<div class="square blank" id="2_4"></div>
<div class="square blank" id="2_5"></div>
<div class="square blank" id="2_6"></div>
<div class="square blank" id="2_7"></div>
<div class="square blank" id="2_8"></div>
<div class="square blank" id="2_9"></div>
<div class="square blank" id="2_10"></div>
<div class="square blank" id="2_11"></div>
<div class="square blank" id="2_12"></div>
<div class="square blank" id="2_13"></div>
<div class="square blank" id="2_14"></div>
<div class="square blank" id="2_15"></div>
<div class="square blank" id="2_16"></div>
<div class="square blank" id="2_17"></div>
<div class="square blank" id="2_18"></div>
<div class="square blank" id="2_19"></div>
<div class="square blank" id="2_20"></div>
<div class="square blank" id="2_21"></div>
<div class="square blank" id="2_22"></div>
<div class="square blank" id="2_23"></div>
<div class="square blank" id="2_24"></div>
<div class="square blank" id="2_25"></div>
<div class="square blank" id="2_26"></div>
<div class="square blank" id="2_27"></div>
<div class="square blank" id="2_28"></div>
<div class="square blank" id="2_29"></div>
<div class="square blank" id="2_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="3_1"></div>
<div class="square blank" id="3_2"></div>
<div class="square blank" id="3_3"></div>
<div class="square blank" id="3_4"></div>
<div class="square blank" id="3_5"></div>
<div class="square blank" id="3_6"></div>
<div class="square blank" id="3_7"></div>
<div class="square blank" id="3_8"></div>
<div class="square blank" id="3_9"></div>
<div class="square blank" id="3_10"></div>
<div class="square blank" id="3_11"></div>
<div class="square blank" id="3_12"></div>
<div class="square blank" id="3_13"></div>
<div class="square blank" id="3_14"></div>
<div class="square blank" id="3_15"></div>
<div class="square blank" id="3_16"></div>
<div class="square blank" id="3_17"></div>
<div class="square blank" id="3_18"></div>
<div class="square blank" id="3_19"></div>
<div class="square blank" id="3_20"></div>
<div class="square blank" id="3_21"></div>
<div class="square blank" id="3_22"></div>
<div class="square blank" id="3_23"></div>
<div class="square blank" id="3_24"></div>
<div class="square blank" id="3_25"></div>
<div class="square blank" id="3_26"></div>
<div class="square blank" id="3_27"></div>
<div class="square blank" id="3_28"></div>
<div class="square blank" id="3_29"></div>
<div class="square blank" id="3_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="4_1"></div>
<div class="square blank" id="4_2"></div>
<div class="square blank" id="4_3"></div>
<div class="square blank" id="4_4"></div>
<div class="square blank" id="4_5"></div>
<div class="square blank" id="4_6"></div>
<div class="square blank" id="4_7"></div>
<div class="square blank" id="4_8"></div>
<div class="square blank" id="4_9"></div>
<div class="square blank" id="4_10"></div>
<div class="square blank" id="4_11"></div>
<div class="square blank" id="4_12"></div>
<div class="square blank" id="4_13"></div>
<div class="square blank" id="4_14"></div>
<div class="square blank" id="4_15"></div>
<div class="square blank" id="4_16"></div>
<div class="square blank" id="4_17"></div>
<div class="square blank" id="4_18"></div>
<div class="square blank" id="4_19"></div>
<div class="square blank" id="4_20"></div>
<div class="square blank" id="4_21"></div>
<div class="square blank" id="4_22"></div>
<div class="square blank" id="4_23"></div>
<div class="square blank" id="4_24"></div>
<div class="square blank" id="4_25"></div>
<div class="square blank" id="4_26"></div>
<div class="square blank" id="4_27"></div>
<div class="square blank" id="4_28"></div>
<div class="square blank" id="4_29"></div>
<div class="square blank" id="4_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="5_1"></div>
<div class="square blank" id="5_2"></div>
<div class="square blank" id="5_3"></div>
<div class="square blank" id="5_4"></div>
<div class="square blank" id="5_5"></div>
<div class="square blank" id="5_6"></div>
<div class="square blank" id="5_7"></div>
<div class="square blank" id="5_8"></div>
<div class="square blank" id="5_9"></div>
<div class="square blank" id="5_10"></div>
<div class="square blank" id="5_11"></div>
<div class="square blank" id="5_12"></div>
<div class="square blank" id="5_13"></div>
<div class="square blank" id="5_14"></div>
<div class="square blank" id="5_15"></div>
<div class="square blank" id="5_16"></div>
<div class="square blank" id="5_17"></div>
<div class="square blank" id="5_18"></div>
<div class="square blank" id="5_19"></div>
<div class="square blank" id="5_20"></div>
<div class="square blank" id="5_21"></div>
<div class="square blank" id="5_22"></div>
<div class="square blank" id="5_23"></div>
<div class="square blank" id="5_24"></div>
<div class="square blank" id="5_25"></div>
<div class="square blank" id="5_26"></div>
<div class="square blank" id="5_27"></div>
<div class="square blank" id="5_28"></div>
<div class="square blank" id="5_29"></div>
<div class="square blank" id="5_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="6_1"></div>
<div class="square blank" id="6_2"></div>
<div class="square blank" id="6_3"></div>
<div class="square blank" id="6_4"></div>
<div class="square blank" id="6_5"></div>
<div class="square blank" id="6_6"></div>
<div class="square blank" id="6_7"></div>
<div class="square blank" id="6_8"></div>
<div class="square blank" id="6_9"></div>
<div class="square blank" id="6_10"></div>
<div class="square blank" id="6_11"></div>
<div class="square blank" id="6_12"></div>
<div class="square blank" id="6_13"></div>
<div class="square blank" id="6_14"></div>
<div class="square blank" id="6_15"></div>
<div class="square blank" id="6_16"></div>
<div class="square blank" id="6_17"></div>
<div class="square blank" id="6_18"></div>
<div class="square blank" id="6_19"></div>
<div class="square blank" id="6_20"></div>
<div class="square blank" id="6_21"></div>
<div class="square blank" id="6_22"></div>
<div class="square blank" id="6_23"></div>
<div class="square blank" id="6_24"></div>
<div class="square blank" id="6_25"></div>
<div class="square blank" id="6_26"></div>
<div class="square blank" id="6_27"></div>
<div class="square blank" id="6_28"></div>
<div class="square blank" id="6_29"></div>
<div class="square blank" id="6_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="7_1"></div>
<div class="square blank" id="7_2"></div>
<div class="square blank" id="7_3"></div>
<div class="square blank" id="7_4"></div>
<div class="square blank" id="7_5"></div>
<div class="square blank" id="7_6"></div>
<div class="square blank" id="7_7"></div>
<div class="square blank" id="7_8"></div>
<div class="square blank" id="7_9"></div>
<div class="square blank" id="7_10"></div>
<div class="square blank" id="7_11"></div>
<div class="square blank" id="7_12"></div>
<div class="square blank" id="7_13"></div>
<div class="square blank" id="7_14"></div>
<div class="square blank" id="7_15"></div>
<div class="square blank" id="7_16"></div>
<div class="square blank" id="7_17"></div>
<div class="square blank" id="7_18"></div>
<div class="square blank" id="7_19"></div>
<div class="square blank" id="7_20"></div>
<div class="square blank" id="7_21"></div>
<div class="square blank" id="7_22"></div>
<div class="square blank" id="7_23"></div>
<div class="square blank" id="7_24"></div>
<div class="square blank" id="7_25"></div>
<div class="square blank" id="7_26"></div>
<div class="square blank" id="7_27"></div>
<div class="square blank" id="7_28"></div>
<div class="square blank" id="7_29"></div>
<div class="square blank" id="7_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="8_1"></div>
<div class="square blank" id="8_2"></div>
<div class="square blank" id="8_3"></div>
<div class="square blank" id="8_4"></div>
<div class="square blank" id="8_5"></div>
<div class="square blank" id="8_6"></div>
<div class="square blank" id="8_7"></div>
<div class="square blank" id="8_8"></div>
<div class="square blank" id="8_9"></div>
<div class="square blank" id="8_10"></div>
<div class="square blank" id="8_11"></div>
<div class="square blank" id="8_12"></div>
<div class="square blank" id="8_13"></div>
<div class="square blank" id="8_14"></div>
<div class="square blank" id="8_15"></div>
<div class="square blank" id="8_16"></div>
<div class="square blank" id="8_17"></div>
<div class="square blank" id="8_18"></div>
<div class="square blank" id="8_19"></div>
<div class="square blank" id="8_20"></div>
<div class="square blank" id="8_21"></div>
<div class="square blank" id="8_22"></div>
<div class="square blank" id="8_23"></div>
<div class="square blank" id="8_24"></div>
<div class="square blank" id="8_25"></div>
<div class="square blank" id="8_26"></div>
<div class="square blank" id="8_27"></div>
<div class="square blank" id="8_28"></div>
<div class="square blank" id="8_29"></div>
<div class="square blank" id="8_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="9_1"></div>
<div class="square blank" id="9_2"></div>
<div class="square blank" id="9_3"></div>
<div class="square blank" id="9_4"></div>
<div class="square blank" id="9_5"></div>
<div class="square blank" id="9_6"></div>
<div class="square blank" id="9_7"></div>
<div class="square blank" id="9_8"></div>
<div class="square blank" id="9_9"></div>
<div class="square blank" id="9_10"></div>
<div class="square blank" id="9_11"></div>
<div class="square blank" id="9_12"></div>
<div class="square blank" id="9_13"></div>
<div class="square blank" id="9_14"></div>
<div class="square blank" id="9_15"></div>
<div class="square blank" id="9_16"></div>
<div class="square blank" id="9_17"></div>
<div class="square blank" id="9_18"></div>
<div class="square blank" id="9_19"></div>
<div class="square blank" id="9_20"></div>
<div class="square blank" id="9_21"></div>
<div class="square blank" id="9_22"></div>
<div class="square blank" id="9_23"></div>
<div class="square blank" id="9_24"></div>
<div class="square blank" id="9_25"></div>
<div class="square blank" id="9_26"></div>
<div class="square blank" id="9_27"></div>
<div class="square blank" id="9_28"></div>
<div class="square blank" id="9_29"></div>
<div class="square blank" id="9_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="10_1"></div>
<div class="square blank" id="10_2"></div>
<div class="square blank" id="10_3"></div>
<div class="square blank" id="10_4"></div>
<div class="square blank" id="10_5"></div>
<div class="square blank" id="10_6"></div>
<div class="square blank" id="10_7"></div>
<div class="square blank" id="10_8"></div>
<div class="square blank" id="10_9"></div>
<div class="square blank" id="10_10"></div>
<div class="square blank" id="10_11"></div>
<div class="square blank" id="10_12"></div>
<div class="square blank" id="10_13"></div>
<div class="square blank" id="10_14"></div>
<div class="square blank" id="10_15"></div>
<div class="square blank" id="10_16"></div>
<div class="square blank" id="10_17"></div>
<div class="square blank" id="10_18"></div>
<div class="square blank" id="10_19"></div>
<div class="square blank" id="10_20"></div>
<div class="square blank" id="10_21"></div>
<div class="square blank" id="10_22"></div>
<div class="square blank" id="10_23"></div>
<div class="square blank" id="10_24"></div>
<div class="square blank" id="10_25"></div>
<div class="square blank" id="10_26"></div>
<div class="square blank" id="10_27"></div>
<div class="square blank" id="10_28"></div>
<div class="square blank" id="10_29"></div>
<div class="square blank" id="10_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="11_1"></div>
<div class="square blank" id="11_2"></div>
<div class="square blank" id="11_3"></div>
<div class="square blank" id="11_4"></div>
<div class="square blank" id="11_5"></div>
<div class="square blank" id="11_6"></div>
<div class="square blank" id="11_7"></div>
<div class="square blank" id="11_8"></div>
<div class="square blank" id="11_9"></div>
<div class="square blank" id="11_10"></div>
<div class="square blank" id="11_11"></div>
<div class="square blank" id="11_12"></div>
<div class="square blank" id="11_13"></div>
<div class="square blank" id="11_14"></div>
<div class="square blank" id="11_15"></div>
<div class="square blank" id="11_16"></div>
<div class="square blank" id="11_17"></div>
<div class="square blank" id="11_18"></div>
<div class="square blank" id="11_19"></div>
<div class="square blank" id="11_20"></div>
<div class="square blank" id="11_21"></div>
<div class="square blank" id="11_22"></div>
<div class="square blank" id="11_23"></div>
<div class="square blank" id="11_24"></div>
<div class="square blank" id="11_25"></div>
<div class="square blank" id="11_26"></div>
<div class="square blank" id="11_27"></div>
<div class="square blank" id="11_28"></div>
<div class="square blank" id="11_29"></div>
<div class="square blank" id="11_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="12_1"></div>
<div class="square blank" id="12_2"></div>
<div class="square blank" id="12_3"></div>
<div class="square blank" id="12_4"></div>
<div class="square blank" id="12_5"></div>
<div class="square blank" id="12_6"></div>
<div class="square blank" id="12_7"></div>
<div class="square blank" id="12_8"></div>
<div class="square blank" id="12_9"></div>
<div class="square blank" id="12_10"></div>
<div class="square blank" id="12_11"></div>
<div class="square blank" id="12_12"></div>
<div class="square blank" id="12_13"></div>
<div class="square blank" id="12_14"></div>
<div class="square blank" id="12_15"></div>
<div class="square blank" id="12_16"></div>
<div class="square blank" id="12_17"></div>
<div class="square blank" id="12_18"></div>
<div class="square blank" id="12_19"></div>
<div class="square blank" id="12_20"></div>
<div class="square blank" id="12_21"></div>
<div class="square blank" id="12_22"></div>
<div class="square blank" id="12_23"></div>
<div class="square blank" id="12_24"></div>
<div class="square blank" id="12_25"></div>
<div class="square blank" id="12_26"></div>
<div class="square blank" id="12_27"></div>
<div class="square blank" id="12_28"></div>
<div class="square blank" id="12_29"></div>
<div class="square blank" id="12_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="13_1"></div>
<div class="square blank" id="13_2"></div>
<div class="square blank" id="13_3"></div>
<div class="square blank" id="13_4"></div>
<div class="square blank" id="13_5"></div>
<div class="square blank" id="13_6"></div>
<div class="square blank" id="13_7"></div>
<div class="square blank" id="13_8"></div>
<div class="square blank" id="13_9"></div>
<div class="square blank" id="13_10"></div>
<div class="square blank" id="13_11"></div>
<div class="square blank" id="13_12"></div>
<div class="square blank" id="13_13"></div>
<div class="square blank" id="13_14"></div>
<div class="square blank" id="13_15"></div>
<div class="square blank" id="13_16"></div>
<div class="square blank" id="13_17"></div>
<div class="square blank" id="13_18"></div>
<div class="square blank" id="13_19"></div>
<div class="square blank" id="13_20"></div>
<div class="square blank" id="13_21"></div>
<div class="square blank" id="13_22"></div>
<div class="square blank" id="13_23"></div>
<div class="square blank" id="13_24"></div>
<div class="square blank" id="13_25"></div>
<div class="square blank" id="13_26"></div>
<div class="square blank" id="13_27"></div>
<div class="square blank" id="13_28"></div>
<div class="square blank" id="13_29"></div>
<div class="square blank" id="13_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="14_1"></div>
<div class="square blank" id="14_2"></div>
<div class="square blank" id="14_3"></div>
<div class="square blank" id="14_4"></div>
<div class="square blank" id="14_5"></div>
<div class="square blank" id="14_6"></div>
<div class="square blank" id="14_7"></div>
<div class="square blank" id="14_8"></div>
<div class="square blank" id="14_9"></div>
<div class="square blank" id="14_10"></div>
<div class="square blank" id="14_11"></div>
<div class="square blank" id="14_12"></div>
<div class="square blank" id="14_13"></div>
<div class="square blank" id="14_14"></div>
<div class="square blank" id="14_15"></div>
<div class="square blank" id="14_16"></div>
<div class="square blank" id="14_17"></div>
<div class="square blank" id="14_18"></div>
<div class="square blank" id="14_19"></div>
<div class="square blank" id="14_20"></div>
<div class="square blank" id="14_21"></div>
<div class="square blank" id="14_22"></div>
<div class="square blank" id="14_23"></div>
<div class="square blank" id="14_24"></div>
<div class="square blank" id="14_25"></div>
<div class="square blank" id="14_26"></div>
<div class="square blank" id="14_27"></div>
<div class="square blank" id="14_28"></div>
<div class="square blank" id="14_29"></div>
<div class="square blank" id="14_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="15_1"></div>
<div class="square blank" id="15_2"></div>
<div class="square blank" id="15_3"></div>
<div class="square blank" id="15_4"></div>
<div class="square blank" id="15_5"></div>
<div class="square blank" id="15_6"></div>
<div class="square blank" id="15_7"></div>
<div class="square blank" id="15_8"></div>
<div class="square blank" id="15_9"></div>
<div class="square blank" id="15_10"></div>
<div class="square blank" id="15_11"></div>
<div class="square blank" id="15_12"></div>
<div class="square blank" id="15_13"></div>
<div class="square blank" id="15_14"></div>
<div class="square blank" id="15_15"></div>
<div class="square blank" id="15_16"></div>
<div class="square blank" id="15_17"></div>
<div class="square blank" id="15_18"></div>
<div class="square blank" id="15_19"></div>
<div class="square blank" id="15_20"></div>
<div class="square blank" id="15_21"></div>
<div class="square blank" id="15_22"></div>
<div class="square blank" id="15_23"></div>
<div class="square blank" id="15_24"></div>
<div class="square blank" id="15_25"></div>
<div class="square blank" id="15_26"></div>
<div class="square blank" id="15_27"></div>
<div class="square blank" id="15_28"></div>
<div class="square blank" id="15_29"></div>
<div class="square blank" id="15_30"></div>
<div class="borderlr"></div>
<div class="borderlr"></div>
<div class="square blank" id="16_1"></div>
<div class="square blank" id="16_2"></div>
<div class="square blank" id="16_3"></div>
<div class="square blank" id="16_4"></div>
<div class="square blank" id="16_5"></div>
<div class="square blank" id="16_6"></div>
<div class="square blank" id="16_7"></div>
<div class="square blank" id="16_8"></div>
<div class="square blank" id="16_9"></div>
<div class="square blank" id="16_10"></div>
<div class="square blank" id="16_11"></div>
<div class="square blank" id="16_12"></div>
<div class="square blank" id="16_13"></div>
<div class="square blank" id="16_14"></div>
<div class="square blank" id="16_15"></div>
<div class="square blank" id="16_16"></div>
<div class="square blank" id="16_17"></div>
<div class="square blank" id="16_18"></div>
<div class="square blank" id="16_19"></div>
<div class="square blank" id="16_20"></div>
<div class="square blank" id="16_21"></div>
<div class="square blank" id="16_22"></div>
<div class="square blank" id="16_23"></div>
<div class="square blank" id="16_24"></div>
<div class="square blank" id="16_25"></div>
<div class="square blank" id="16_26"></div>
<div class="square blank" id="16_27"></div>
<div class="square blank" id="16_28"></div>
<div class="square blank" id="16_29"></div>
<div class="square blank" id="16_30"></div>
<div class="borderlr"></div>
<div class="borderbl"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="bordertb"></div>
<div class="borderbr"></div>
<div class="square blank" style="display: none;" id="0_0"></div>
<div class="square blank" style="display: none;" id="0_1"></div>
<div class="square blank" style="display: none;" id="0_2"></div>
<div class="square blank" style="display: none;" id="0_3"></div>
<div class="square blank" style="display: none;" id="0_4"></div>
<div class="square blank" style="display: none;" id="0_5"></div>
<div class="square blank" style="display: none;" id="0_6"></div>
<div class="square blank" style="display: none;" id="0_7"></div>
<div class="square blank" style="display: none;" id="0_8"></div>
<div class="square blank" style="display: none;" id="0_9"></div>
<div class="square blank" style="display: none;" id="0_10"></div>
<div class="square blank" style="display: none;" id="0_11"></div>
<div class="square blank" style="display: none;" id="0_12"></div>
<div class="square blank" style="display: none;" id="0_13"></div>
<div class="square blank" style="display: none;" id="0_14"></div>
<div class="square blank" style="display: none;" id="0_15"></div>
<div class="square blank" style="display: none;" id="0_16"></div>
<div class="square blank" style="display: none;" id="0_17"></div>
<div class="square blank" style="display: none;" id="0_18"></div>
<div class="square blank" style="display: none;" id="0_19"></div>
<div class="square blank" style="display: none;" id="0_20"></div>
<div class="square blank" style="display: none;" id="0_21"></div>
<div class="square blank" style="display: none;" id="0_22"></div>
<div class="square blank" style="display: none;" id="0_23"></div>
<div class="square blank" style="display: none;" id="0_24"></div>
<div class="square blank" style="display: none;" id="0_25"></div>
<div class="square blank" style="display: none;" id="0_26"></div>
<div class="square blank" style="display: none;" id="0_27"></div>
<div class="square blank" style="display: none;" id="0_28"></div>
<div class="square blank" style="display: none;" id="0_29"></div>
<div class="square blank" style="display: none;" id="0_30"></div>
<div class="square blank" style="display: none;" id="0_31"></div>
<div class="square blank" style="display: none;" id="17_0"></div>
<div class="square blank" style="display: none;" id="17_1"></div>
<div class="square blank" style="display: none;" id="17_2"></div>
<div class="square blank" style="display: none;" id="17_3"></div>
<div class="square blank" style="display: none;" id="17_4"></div>
<div class="square blank" style="display: none;" id="17_5"></div>
<div class="square blank" style="display: none;" id="17_6"></div>
<div class="square blank" style="display: none;" id="17_7"></div>
<div class="square blank" style="display: none;" id="17_8"></div>
<div class="square blank" style="display: none;" id="17_9"></div>
<div class="square blank" style="display: none;" id="17_10"></div>
<div class="square blank" style="display: none;" id="17_11"></div>
<div class="square blank" style="display: none;" id="17_12"></div>
<div class="square blank" style="display: none;" id="17_13"></div>
<div class="square blank" style="display: none;" id="17_14"></div>
<div class="square blank" style="display: none;" id="17_15"></div>
<div class="square blank" style="display: none;" id="17_16"></div>
<div class="square blank" style="display: none;" id="17_17"></div>
<div class="square blank" style="display: none;" id="17_18"></div>
<div class="square blank" style="display: none;" id="17_19"></div>
<div class="square blank" style="display: none;" id="17_20"></div>
<div class="square blank" style="display: none;" id="17_21"></div>
<div class="square blank" style="display: none;" id="17_22"></div>
<div class="square blank" style="display: none;" id="17_23"></div>
<div class="square blank" style="display: none;" id="17_24"></div>
<div class="square blank" style="display: none;" id="17_25"></div>
<div class="square blank" style="display: none;" id="17_26"></div>
<div class="square blank" style="display: none;" id="17_27"></div>
<div class="square blank" style="display: none;" id="17_28"></div>
<div class="square blank" style="display: none;" id="17_29"></div>
<div class="square blank" style="display: none;" id="17_30"></div>
<div class="square blank" style="display: none;" id="17_31"></div>
<div class="square blank" style="display: none;" id="1_0"></div>
<div class="square blank" style="display: none;" id="1_31"></div>
<div class="square blank" style="display: none;" id="2_0"></div>
<div class="square blank" style="display: none;" id="2_31"></div>
<div class="square blank" style="display: none;" id="3_0"></div>
<div class="square blank" style="display: none;" id="3_31"></div>
<div class="square blank" style="display: none;" id="4_0"></div>
<div class="square blank" style="display: none;" id="4_31"></div>
<div class="square blank" style="display: none;" id="5_0"></div>
<div class="square blank" style="display: none;" id="5_31"></div>
<div class="square blank" style="display: none;" id="6_0"></div>
<div class="square blank" style="display: none;" id="6_31"></div>
<div class="square blank" style="display: none;" id="7_0"></div>
<div class="square blank" style="display: none;" id="7_31"></div>
<div class="square blank" style="display: none;" id="8_0"></div>
<div class="square blank" style="display: none;" id="8_31"></div>
<div class="square blank" style="display: none;" id="9_0"></div>
<div class="square blank" style="display: none;" id="9_31"></div>
<div class="square blank" style="display: none;" id="10_0"></div>
<div class="square blank" style="display: none;" id="10_31"></div>
<div class="square blank" style="display: none;" id="11_0"></div>
<div class="square blank" style="display: none;" id="11_31"></div>
<div class="square blank" style="display: none;" id="12_0"></div>
<div class="square blank" style="display: none;" id="12_31"></div>
<div class="square blank" style="display: none;" id="13_0"></div>
<div class="square blank" style="display: none;" id="13_31"></div>
<div class="square blank" style="display: none;" id="14_0"></div>
<div class="square blank" style="display: none;" id="14_31"></div>
<div class="square blank" style="display: none;" id="15_0"></div>
<div class="square blank" style="display: none;" id="15_31"></div>
<div class="square blank" style="display: none;" id="16_0"></div>
<div class="square blank" style="display: none;" id="16_31"></div>
</div>
<form id="options-form">
<table cellspacing="0" cellpadding="2" id="options" class="dialog">
<tbody>
<tr class="dialog-title">
<td style="padding: 3px;">Game</td>
<td colspan="3" style="padding: 3px; text-align: right;">
<span id="options-close" class="dialog-close"
title="close this box">×</span>
</td>
</tr>
<tr class="dialog-bar">
<td></td>
<td>Height</td>
<td>Width</td>
<td>Mines</td>
</tr>
<tr>
<td><label><input type="radio" name="field" id="beginner">
<strong>Beginner</strong></label></td>
<td>9</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td><label><input type="radio" name="field" id="intermediate">
<strong>Intermediate</strong></label></td>
<td>16</td>
<td>16</td>
<td>40</td>
</tr>
<tr>
<td><label><input type="radio" name="field" checked="checked"
id="expert"> <strong>Expert</strong></label></td>
<td>16</td>
<td>30</td>
<td>99</td>
</tr>
<tr>
<td><label><input type="radio" name="field" id="custom"> Custom</label>
</td>
<td><input type="text" value="20" id="custom_height"
class="dialog-text-input"
onfocus="$('#custom').attr('checked', true);"></td>
<td><input type="text" value="30" id="custom_width"
class="dialog-text-input"
onfocus="$('#custom').attr('checked', true);"></td>
<td><input type="text" value="145" id="custom_mines"
class="dialog-text-input"
onfocus="$('#custom').attr('checked', true);"></td>
</tr>
<tr class="dialog-bar">
<td><input type="submit" value="New Game" class="dialogText"
style="vertical-align: middle;"></td>
<td colspan="3">
<label style="margin-bottom: 0;"><input type="checkbox" id="marks">
Marks (?)</label>
</td>
</tr>
</tbody>
</table>
</form>
<table cellspacing="0" cellpadding="2" id="display" class="dialog">
<tbody>
<tr class="dialog-title">
<td>Display</td>
<td style="text-align: right;">
<span id="display-close" class="dialog-close"
title="close this box">×</span>
</td>
</tr>
<tr>
<td style="padding: 6px;"><strong>Zoom</strong></td>
<td style="padding: 6px;">
<label><input type="radio" name="zoom" id="zoom100" value="1"
checked="checked"> 100%</label><br>
<label><input type="radio" name="zoom" id="zoom150" value="1.5">
150%</label><br>
<label><input type="radio" name="zoom" id="zoom200" value="2"
checked="checked"> 200%</label>
</td>
</tr>
<tr>
<td style="padding: 6px; border-top: 1px solid #AAA;">
<strong>Position</strong>
</td>
<td style="padding: 6px; border-top: 1px solid #AAA;">
<label><input type="radio" name="position" id="position-center"
value="center" checked="checked"> Center</label><br>
<label><input type="radio" name="position" id="position-left"
value="left" checked="checked"> Left</label>
</td>
</tr>
<tr>
<td style="padding: 6px; border-top: 1px solid #AAA;"><label
for="nightMode"><strong>Night Mode</strong></label></td>
<td style="padding: 6px; border-top: 1px solid #AAA;">
<input type="checkbox" name="nightMode" id="nightMode"
checked="checked">
</td>
</tr>
</tbody>
</table>
<table cellspacing="0" cellpadding="2" id="controls" class="dialog">
<tbody>
<tr class="dialog-title">
<td>Controls</td>
<td style="text-align: right;">
<span id="controls-close" class="dialog-close"
title="close this box">×</span>
</td>
</tr>
<tr>
<td style="padding: 6px;"><strong>Desktop</strong></td>
<td style="padding: 6px;">
<ul>
<li><b>Left-click</b> an empty square to reveal it.</li>
<li><b>Right-click</b> (or <b>Ctrl+click</b>) an empty square to
flag it.</li>
<li><b>Midde-click</b> (or <b>left+right click</b>) a number to
reveal<br> its adjacent squares.</li>
<li>Press <b>space</b> bar while hovering over a square to
flag<br>it or reveal its adjacent squares.</li>
<li>Press <b>S</b> or click the smiley face to start a new game.
</li>
<li>Press <b>D</b> to self-destruct</li>
<li>Press <b>F</b> to Fullscreen</li>
</ul>
</td>
</tr>
<tr>
<td style="padding: 6px; border-top: 1px solid var(--hexa)">
<strong>Mobile</strong>
</td>
<td style="padding: 6px; border-top: 1px solid var(--hexa);">
<ul>
<li><b>Tap</b> an empty square to reveal it.</li>
<li><b>Long-press</b> an empty square to flag it.</li>
<li><b>Tap</b> a number to reveal its adjacent squares.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<form id="import-form">
<table cellspacing="0" cellpadding="2" id="import" class="dialog">
<tbody>
<tr class="dialog-title">
<td>Import</td>
<td style="text-align: right;">
<span id="import-close" class="dialog-close"
title="close this box">×</span>
</td>
</tr>
<tr>
<td colspan="2">
Paste exported game state:
<br>
<textarea
style="width: 240px; height: 40px; margin-top: 4px;"></textarea>
</td>
</tr>
<tr class="dialog-bar">
<td colspan="2">
<input type="submit" value="Load Game">
</td>
</tr>
</tbody>
</table>
</form>
<table cellspacing="0" cellpadding="2" id="export" class="dialog">
<tbody>
<tr class="dialog-title">
<td>Export</td>
<td style="text-align: right;">
<span id="export-close" class="dialog-close"
title="close this box">×</span>
</td>
</tr>
<tr>
<td colspan="2">
<em id="export-message"></em>
<br>
<textarea
style="width: 240px; height: 40px; margin-top: 4px;"></textarea>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<notice>
<h1>Please close DevTools and/or use a PC</h1>
</notice>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment