Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Python-100-Days
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
huangkq
Python-100-Days
Commits
bdaac352
Commit
bdaac352
authored
Nov 10, 2018
by
jackfrued
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新了前端代码
parent
98e50362
Changes
51
Show whitespace changes
Inline
Side-by-side
Showing
51 changed files
with
1536 additions
and
560 deletions
+1536
-560
Web前端概述.md
Day21-30/Web前端概述.md
+1
-1
qq_link.html
Day21-30/code/demo01/qq_link.html
+1
-0
.project
Day21-30/code/web1804/.project
+0
-37
example01.html
Day21-30/code/web1804/example01.html
+0
-34
example02.html
Day21-30/code/web1804/example02.html
+0
-53
example03.html
Day21-30/code/web1804/example03.html
+0
-31
example04.html
Day21-30/code/web1804/example04.html
+0
-25
example06.html
Day21-30/code/web1804/example06.html
+0
-43
example10.html
Day21-30/code/web1804/example10.html
+0
-60
example11.html
Day21-30/code/web1804/example11.html
+0
-45
example14.html
Day21-30/code/web1804/example14.html
+0
-60
index.html
Day21-30/code/web1804/index.html
+0
-22
common.js
Day21-30/code/web1804/js/common.js
+0
-86
jquery.min.js
Day21-30/code/web1804/js/jquery.min.js
+0
-5
example01.html
Day21-30/code/web1807/example01.html
+88
-0
example02.html
Day21-30/code/web1807/example02.html
+90
-0
example03.html
Day21-30/code/web1807/example03.html
+28
-0
example04.html
Day21-30/code/web1807/example04.html
+49
-0
example05.html
Day21-30/code/web1807/example05.html
+60
-0
example06.html
Day21-30/code/web1807/example06.html
+61
-0
example07.html
Day21-30/code/web1807/example07.html
+30
-32
example08.html
Day21-30/code/web1807/example08.html
+55
-0
example09.html
Day21-30/code/web1807/example09.html
+130
-0
example10.html
Day21-30/code/web1807/example10.html
+97
-0
example11.html
Day21-30/code/web1807/example11.html
+54
-0
example12.html
Day21-30/code/web1807/example12.html
+46
-0
homework01.html
Day21-30/code/web1807/homework01.html
+88
-0
homework02.html
Day21-30/code/web1807/homework02.html
+44
-0
homework03.html
Day21-30/code/web1807/homework03.html
+75
-0
homework04.html
Day21-30/code/web1807/homework04.html
+43
-26
homework05.html
Day21-30/code/web1807/homework05.html
+275
-0
homework06.html
Day21-30/code/web1807/homework06.html
+73
-0
homework07.html
Day21-30/code/web1807/homework07.html
+73
-0
a1.jpg
Day21-30/code/web1807/img/a1.jpg
+0
-0
a2.jpg
Day21-30/code/web1807/img/a2.jpg
+0
-0
a3.jpg
Day21-30/code/web1807/img/a3.jpg
+0
-0
picture-1.jpg
Day21-30/code/web1807/img/picture-1.jpg
+0
-0
picture-2.jpg
Day21-30/code/web1807/img/picture-2.jpg
+0
-0
picture-3.jpg
Day21-30/code/web1807/img/picture-3.jpg
+0
-0
slide-1.jpg
Day21-30/code/web1807/img/slide-1.jpg
+0
-0
slide-2.jpg
Day21-30/code/web1807/img/slide-2.jpg
+0
-0
slide-3.jpg
Day21-30/code/web1807/img/slide-3.jpg
+0
-0
slide-4.jpg
Day21-30/code/web1807/img/slide-4.jpg
+0
-0
thumb-1.jpg
Day21-30/code/web1807/img/thumb-1.jpg
+0
-0
thumb-2.jpg
Day21-30/code/web1807/img/thumb-2.jpg
+0
-0
thumb-3.jpg
Day21-30/code/web1807/img/thumb-3.jpg
+0
-0
index.html
Day21-30/code/web1807/index.html
+56
-0
jquery.min.js
Day21-30/code/web1807/js/jquery.min.js
+2
-0
mylib.js
Day21-30/code/web1807/js/mylib.js
+6
-0
message.json
Day21-30/code/web1807/message.json
+5
-0
message.xml
Day21-30/code/web1807/message.xml
+6
-0
No files found.
Day21-30/Web前端概述.md
View file @
bdaac352
...
@@ -251,7 +251,7 @@
...
@@ -251,7 +251,7 @@
-
事件监听器(旧的浏览器中不被支持)
-
事件监听器(旧的浏览器中不被支持)
-
事件流:事件捕获 / 事件冒泡
-
事件流:事件捕获 / 事件冒泡
-
事件对象(低版本IE中的window.event)
-
事件对象(低版本IE中的window.event)
-
target(
低版本IE中的
srcElement)
-
target(
有些浏览器使用
srcElement)
-
type
-
type
-
cancelable
-
cancelable
-
preventDefault()
-
preventDefault()
...
...
Day21-30/code/demo01/qq_link.html
View file @
bdaac352
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
<title></title>
<title></title>
</head>
</head>
<body>
<body>
<a
target=
"_blank"
href=
"http://wpa.qq.com/msgrd?v=3&uin=957658&site=qq&menu=yes"
><img
border=
"0"
src=
"http://wpa.qq.com/pa?p=2:957658:51"
alt=
"聊我吧"
title=
"聊我吧"
/></a>
<a
target=
"_blank"
href=
"http://wpa.qq.com/msgrd?v=3&uin=957658&site=qq&menu=yes"
><img
border=
"0"
src=
"http://wpa.qq.com/pa?p=2:957658:51"
alt=
"聊我吧"
title=
"聊我吧"
/></a>
<div
id=
"footer"
>
<div
id=
"footer"
>
<a
href=
"mailto:jackfrued@126.com"
>
联系站长
</a>
<a
href=
"mailto:jackfrued@126.com"
>
联系站长
</a>
...
...
Day21-30/code/web1804/.project
deleted
100644 → 0
View file @
98e50362
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>
web1804
</name>
<comment>
Create By HBuilder
</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>
com.aptana.ide.core.unifiedBuilder
</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>
com.aptana.projects.webnature
</nature>
</natures>
<filteredResources>
<filter>
<id>
1531706375771
</id>
<name></name>
<type>
10
</type>
<matcher>
<id>
org.eclipse.ui.ide.orFilterMatcher
</id>
<arguments>
<matcher>
<id>
org.eclipse.ui.ide.multiFilter
</id>
<arguments>
1.0-projectRelativePath-matches-false-false-bin
</arguments>
</matcher>
<matcher>
<id>
org.eclipse.ui.ide.multiFilter
</id>
<arguments>
1.0-projectRelativePath-matches-false-false-setting
</arguments>
</matcher>
</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>
Day21-30/code/web1804/example01.html
deleted
100644 → 0
View file @
98e50362
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
</head>
<body>
<script>
/*
var sum = 0;
for (var i = 1; i <= 100; i += 1) {
sum += i;
}
window.alert(sum);
*/
/*
var sum = 0;
var i = 1;
while (i <= 100) {
sum += i;
i += 1;
}
window.alert(sum);
*/
var
sum
=
0
;
var
i
=
1
;
do
{
sum
+=
i
;
i
+=
1
;
}
while
(
i
<=
100
);
window
.
alert
(
sum
);
</script>
</body>
</html>
Day21-30/code/web1804/example02.html
deleted
100644 → 0
View file @
98e50362
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
<style>
.right
{
float
:
right
;
width
:
250px
;
height
:
30px
;
font-size
:
16px
;
line-height
:
30px
;
background-color
:
blue
;
color
:
yellow
;
text-align
:
center
;
}
</style>
</head>
<body>
<div
id=
"time"
class=
"right"
></div>
<script>
function
showDateTime
()
{
var
array
=
[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
];
var
date
=
new
Date
();
var
str
=
""
;
str
+=
date
.
getFullYear
()
+
"年"
;
// 年
str
+=
(
date
.
getMonth
()
+
1
)
+
"月"
;
// 月(0-11)
str
+=
date
.
getDate
()
+
"日 "
;
// 日
str
+=
"星期"
+
array
[
date
.
getDay
()]
+
" "
;
// 星期(0-6)
var
hour
=
date
.
getHours
();
str
+=
hour
<
10
?
"0"
+
hour
:
hour
;
// 时
str
+=
":"
;
var
min
=
date
.
getMinutes
();
str
+=
min
<
10
?
"0"
+
min
:
min
;
// 分
str
+=
":"
;
var
sec
=
date
.
getSeconds
();
str
+=
sec
<
10
?
"0"
+
sec
:
sec
;
// 秒
// JavaScript = ECMAScript + BOM(window) + DOM(document)
// document对象(DOM)代表整个HTML页面
// 通过该对象的getElementById方法可以用ID来获取指定的元素(标签)
// 通过获得的元素的textContent属性就可以修改标签体的文本内容
var
div
=
document
.
getElementById
(
"time"
);
// 如果放入元素中的内容又包含了标签或实体替换符(字符实体)
// 那么就要将textContent属性换成innerHTML才能渲染标签和字符实体
div
.
innerHTML
=
str
;
}
showDateTime
();
// window对象(BOM)代表浏览器窗口
// 通过该对象的setInterval方法可以设置计时器控制函数周期性执行
setInterval
(
showDateTime
,
1000
);
</script>
</body>
</html>
Day21-30/code/web1804/example03.html
deleted
100644 → 0
View file @
98e50362
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
</head>
<body>
<script>
do
{
var
answer
=
parseInt
(
Math
.
random
()
*
100
+
1
);
var
total
=
0
;
do
{
total
+=
1
;
var
thyAnswer
=
parseInt
(
prompt
(
"请输入:"
));
if
(
thyAnswer
>
answer
)
{
alert
(
"小一点"
);
}
else
if
(
thyAnswer
<
answer
)
{
alert
(
"大一点"
);
}
else
if
(
thyAnswer
==
answer
)
{
alert
(
"恭喜你猜对了"
);
}
else
{
alert
(
"你是猴子派来的逗比吗?"
);
}
}
while
(
thyAnswer
!=
answer
);
if
(
total
>
7
)
{
alert
(
"智商捉急!!!"
);
}
}
while
(
confirm
(
'再来一局?'
));
</script>
</body>
</html>
Day21-30/code/web1804/example04.html
deleted
100644 → 0
View file @
98e50362
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
</head>
<body>
<h3><span
id=
"counter"
>
5
</span>
秒钟以后跳转到百度
</h3>
<script>
+
function
()
{
var
counter
=
5
;
var
span
=
document
.
getElementById
(
"counter"
);
setTimeout
(
function
()
{
counter
-=
1
;
if
(
counter
>
0
)
{
span
.
textContent
=
counter
;
setTimeout
(
arguments
.
callee
,
1000
);
}
else
{
location
.
href
=
"http://www.baidu.com"
;
}
},
1000
);
}();
</script>
</body>
</html>
Day21-30/code/web1804/example06.html
deleted
100644 → 0
View file @
98e50362
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
</head>
<body>
<button
id=
"ok"
>
确定
</button>
<!--如果希望点击按钮时会执行对应的操作-->
<!--那么需要通过JavaScript为按钮绑定事件回调函数-->
<!--绑定事件回调函数大致有3种方式: -->
<!--1. 通过标签的onXXX属性来指定需要执行的事件回调函数-->
<!--2. 通过元素的onXXX属性来绑定需要执行的事件回调函数-->
<!--3. 通过元素的addEventListener方法来绑定事件回调函数-->
<script>
var
btn
=
document
.
getElementById
(
"ok"
);
function
sayHello
()
{
alert
(
"大家好!"
);
}
function
sayGoodbye
()
{
alert
(
"再见!"
);
}
// Netscape Navigator --> Firefox
// Internet Explorer
// Chrome
// Safari
// Opera
if
(
btn
.
addEventListener
)
{
btn
.
addEventListener
(
"click"
,
sayHello
);
btn
.
addEventListener
(
"click"
,
sayGoodbye
);
btn
.
addEventListener
(
"click"
,
function
()
{
btn
.
removeEventListener
(
"click"
,
sayGoodbye
);
});
}
else
{
btn
.
attachEvent
(
"onclick"
,
sayHello
);
btn
.
attachEvent
(
"onclick"
,
sayGoodbye
);
btn
.
attachEvent
(
"onclick"
,
function
()
{
btn
.
detachEvent
(
"onclick"
,
sayGoodbye
);
});
}
</script>
</body>
</html>
Day21-30/code/web1804/example10.html
deleted
100644 → 0
View file @
98e50362
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
<style>
#one
{
width
:
400px
;
height
:
400px
;
background-color
:
red
;
}
#two
{
width
:
300px
;
height
:
300px
;
background-color
:
green
;
}
#three
{
width
:
200px
;
height
:
200px
;
background-color
:
blue
;
}
#two
,
#three
{
position
:
relative
;
left
:
50px
;
top
:
50px
;
}
</style>
</head>
<body>
<div
id=
"container"
>
<div
id=
"one"
>
<div
id=
"two"
>
<div
id=
"three"
></div>
</div>
</div>
</div>
<script
src=
"js/common.js"
></script>
<script>
(
function
()
{
var
one
=
document
.
getElementById
(
"one"
);
var
two
=
document
.
getElementById
(
"two"
);
var
three
=
document
.
getElementById
(
"three"
);
bind
(
one
,
"click"
,
function
()
{
alert
(
"one"
);
});
bind
(
two
,
"click"
,
function
()
{
alert
(
"two"
);
});
bind
(
three
,
"click"
,
function
(
evt
)
{
if
(
evt
.
stopPropagation
)
{
evt
.
stopPropagation
();
}
else
{
evt
.
cancelBubble
=
true
;
}
alert
(
"three"
);
});
})();
</script>
</body>
</html>
Day21-30/code/web1804/example11.html
deleted
100644 → 0
View file @
98e50362
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
<style>
#adv
{
position
:
fixed
;
right
:
10px
;
top
:
10px
;
width
:
200px
;
height
:
200px
;
background-color
:
blue
;
color
:
yellow
;
}
#close
{
float
:
right
;
}
</style>
</head>
<body>
<div
id=
"adv"
>
<span>
此广告位招租
</span>
<button
id=
"close"
>
关闭
</button>
</div>
<script
src=
"js/common.js"
></script>
<script>
(
function
()
{
var
div
=
document
.
getElementById
(
"adv"
);
var
closeButton
=
document
.
getElementById
(
"close"
);
bind
(
closeButton
,
"click"
,
function
()
{
var
divStyle
=
div
.
currentStyle
||
document
.
defaultView
.
getComputedStyle
(
div
);
var
top
=
parseInt
(
divStyle
.
top
);
if
(
top
<
300
)
{
div
.
style
.
top
=
(
top
+
30
)
+
"px"
;
}
else
{
div
.
style
.
display
=
"none"
;
// div.style.visibility = "hidden";
}
});
})();
</script>
</body>
</html>
Day21-30/code/web1804/example14.html
deleted
100644 → 0
View file @
98e50362
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
<style>
*
{
margin
:
0
;
padding
:
0
;
}
#container
{
width
:
960px
;
margin
:
0
auto
;
}
</style>
</head>
<body>
<button
id=
"load"
>
加载
</button>
<div
id=
"container"
></div>
<script
src=
"https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"
></script>
<script>
$
(
function
()
{
$
(
"#load"
).
on
(
"click"
,
function
()
{
console
.
log
(
encodeURIComponent
(
"手机"
,
"utf-8"
));
console
.
log
(
decodeURIComponent
(
"%E7%8B%97%E5%B1%8E"
,
"utf-8"
));
// 通过Ajax请求获得数据并对页面进行局部刷新
// jQuery封装了多个Ajax请求方法:
// - $.ajax(): 灵活强大(强烈推荐使用)
// - $.getJSON(): 简单好用
// 统一资源定位符
// 协议://IP地址或域名:端口号/路径/资源?查询字符串
// HTTP(s)协议的请求有多种请求命令
// 浏览器在正常情况下只能发出get或post请求
// 将来我们在项目中可能用到的HTTP请求命令包括以下5个:
// - GET: 从服务器获取资源
// - POST: 向服务器提交资源
// - DELETE: 从服务器删除资源
// - PUT / PATCH: 更新服务器上的资源
var
url
=
"http://api.tianapi.com/meinv/"
;
$
.
ajax
({
"url"
:
url
,
"type"
:
"get"
,
"data"
:
{
"key"
:
"772a81a51ae5c780251b1f98ea431b84"
,
"num"
:
15
},
"dataType"
:
"json"
,
"success"
:
function
(
json
)
{
for
(
var
i
=
0
;
i
<
json
.
newslist
.
length
;
i
+=
1
)
{
var
mm
=
json
.
newslist
[
i
];
$img
=
$
(
"<img>"
).
attr
(
'src'
,
mm
.
picUrl
);
$
(
"#container"
).
append
(
$img
.
width
(
300
));
}
}
});
});
});
</script>
</body>
</html>
Day21-30/code/web1804/index.html
deleted
100644 → 0
View file @
98e50362
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
/>
<title></title>
<style>
.t99
{
border-collapse
:
collapse
;
}
.t99
td
{
padding
:
0
10px
;
border
:
1px
solid
black
;
}
</style>
</head>
<body>
<script
src=
"js/common.js"
></script>
<script>
createTable
();
</script>
</body>
</html>
Day21-30/code/web1804/js/common.js
deleted
100644 → 0
View file @
98e50362
/**
* 绑定事件
* @param {HTMLElement} elem 待绑定事件的元素
* @param {String} en 事件的名称
* @param {Function} fn 回调函数
* @param {Boolean} capture 是否使用事件捕获
*/
function
bind
(
elem
,
en
,
fn
,
capture
)
{
if
(
elem
.
addEventListener
)
{
elem
.
addEventListener
(
en
,
fn
,
capture
);
}
else
{
elem
.
attachEvent
(
'on'
+
en
,
fn
);
}
}
/**
* 反绑定事件
* @param {HTMLElement} elem 待反绑定事件的元素
* @param {String} en 事件的名称
* @param {Function} fn 回调函数
*/
function
unbind
(
elem
,
en
,
fn
)
{
if
(
elem
.
removeEventListener
)
{
elem
.
removeEventListener
(
en
,
fn
);
}
else
{
elem
.
detachEvent
(
'on'
+
en
,
fn
);
}
}
/**
* 事件对象预处理
* @param {Event} evt 事件对象
*/
function
prepare
(
evt
)
{
evt
=
evt
||
window
.
event
;
evt
.
target
=
evt
.
target
||
evt
.
srcElement
;
evt
.
preventDefault
=
evt
.
preventDefault
||
function
()
{
this
.
returnValue
=
false
;
};
return
evt
;
}
/**
* 阻止事件的默认行为
* @param {Event} evt 事件对象
*/
function
prevent
(
evt
)
{
if
(
evt
.
preventDefault
)
{
evt
.
preventDefault
();
}
else
{
evt
.
returnValue
=
false
;
}
}
/**
* 获得[min, max)范围的随机整数
* @param {Number} min
* @param {Number} max
*/
function
randomInt
(
min
,
max
)
{
return
parseInt
(
Math
.
random
()
*
(
max
-
min
)
+
min
);
}
/**
* 获得随机颜色
*/
function
randomColor
()
{
var
red
=
randomInt
(
0
,
256
);
var
green
=
randomInt
(
0
,
256
);
var
blue
=
randomInt
(
0
,
256
);
return
"rgb("
+
red
+
","
+
green
+
","
+
blue
+
")"
;
}
function
createTable
()
{
document
.
write
(
"<table class='t99'>"
);
for
(
var
i
=
1
;
i
<=
9
;
i
+=
1
)
{
document
.
write
(
"<tr>"
);
for
(
var
j
=
1
;
j
<=
i
;
j
+=
1
)
{
document
.
write
(
"<td>"
);
document
.
write
(
i
+
"*"
+
j
+
"="
+
i
*
j
);
document
.
write
(
"</td>"
);
}
document
.
write
(
"</tr>"
);
}
document
.
write
(
"</table>"
);
}
Day21-30/code/web1804/js/jquery.min.js
deleted
100644 → 0
View file @
98e50362
/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */
!
function
(
a
,
b
){
"object"
==
typeof
module
&&
"object"
==
typeof
module
.
exports
?
module
.
exports
=
a
.
document
?
b
(
a
,
!
0
):
function
(
a
){
if
(
!
a
.
document
)
throw
new
Error
(
"jQuery requires a window with a document"
);
return
b
(
a
)}:
b
(
a
)}(
"undefined"
!=
typeof
window
?
window
:
this
,
function
(
a
,
b
){
var
c
=
[],
d
=
a
.
document
,
e
=
c
.
slice
,
f
=
c
.
concat
,
g
=
c
.
push
,
h
=
c
.
indexOf
,
i
=
{},
j
=
i
.
toString
,
k
=
i
.
hasOwnProperty
,
l
=
{},
m
=
"1.12.4"
,
n
=
function
(
a
,
b
){
return
new
n
.
fn
.
init
(
a
,
b
)},
o
=
/^
[\s\u
FEFF
\x
A0
]
+|
[\s\u
FEFF
\x
A0
]
+$/g
,
p
=
/^-ms-/
,
q
=
/-
([\d
a-z
])
/gi
,
r
=
function
(
a
,
b
){
return
b
.
toUpperCase
()};
n
.
fn
=
n
.
prototype
=
{
jquery
:
m
,
constructor
:
n
,
selector
:
""
,
length
:
0
,
toArray
:
function
(){
return
e
.
call
(
this
)},
get
:
function
(
a
){
return
null
!=
a
?
0
>
a
?
this
[
a
+
this
.
length
]:
this
[
a
]:
e
.
call
(
this
)},
pushStack
:
function
(
a
){
var
b
=
n
.
merge
(
this
.
constructor
(),
a
);
return
b
.
prevObject
=
this
,
b
.
context
=
this
.
context
,
b
},
each
:
function
(
a
){
return
n
.
each
(
this
,
a
)},
map
:
function
(
a
){
return
this
.
pushStack
(
n
.
map
(
this
,
function
(
b
,
c
){
return
a
.
call
(
b
,
c
,
b
)}))},
slice
:
function
(){
return
this
.
pushStack
(
e
.
apply
(
this
,
arguments
))},
first
:
function
(){
return
this
.
eq
(
0
)},
last
:
function
(){
return
this
.
eq
(
-
1
)},
eq
:
function
(
a
){
var
b
=
this
.
length
,
c
=+
a
+
(
0
>
a
?
b
:
0
);
return
this
.
pushStack
(
c
>=
0
&&
b
>
c
?[
this
[
c
]]:[])},
end
:
function
(){
return
this
.
prevObject
||
this
.
constructor
()},
push
:
g
,
sort
:
c
.
sort
,
splice
:
c
.
splice
},
n
.
extend
=
n
.
fn
.
extend
=
function
(){
var
a
,
b
,
c
,
d
,
e
,
f
,
g
=
arguments
[
0
]
||
{},
h
=
1
,
i
=
arguments
.
length
,
j
=!
1
;
for
(
"boolean"
==
typeof
g
&&
(
j
=
g
,
g
=
arguments
[
h
]
||
{},
h
++
),
"object"
==
typeof
g
||
n
.
isFunction
(
g
)
||
(
g
=
{}),
h
===
i
&&
(
g
=
this
,
h
--
);
i
>
h
;
h
++
)
if
(
null
!=
(
e
=
arguments
[
h
]))
for
(
d
in
e
)
a
=
g
[
d
],
c
=
e
[
d
],
g
!==
c
&&
(
j
&&
c
&&
(
n
.
isPlainObject
(
c
)
||
(
b
=
n
.
isArray
(
c
)))?(
b
?(
b
=!
1
,
f
=
a
&&
n
.
isArray
(
a
)?
a
:[]):
f
=
a
&&
n
.
isPlainObject
(
a
)?
a
:{},
g
[
d
]
=
n
.
extend
(
j
,
f
,
c
)):
void
0
!==
c
&&
(
g
[
d
]
=
c
));
return
g
},
n
.
extend
({
expando
:
"jQuery"
+
(
m
+
Math
.
random
()).
replace
(
/
\D
/g
,
""
),
isReady
:
!
0
,
error
:
function
(
a
){
throw
new
Error
(
a
)},
noop
:
function
(){},
isFunction
:
function
(
a
){
return
"function"
===
n
.
type
(
a
)},
isArray
:
Array
.
isArray
||
function
(
a
){
return
"array"
===
n
.
type
(
a
)},
isWindow
:
function
(
a
){
return
null
!=
a
&&
a
==
a
.
window
},
isNumeric
:
function
(
a
){
var
b
=
a
&&
a
.
toString
();
return
!
n
.
isArray
(
a
)
&&
b
-
parseFloat
(
b
)
+
1
>=
0
},
isEmptyObject
:
function
(
a
){
var
b
;
for
(
b
in
a
)
return
!
1
;
return
!
0
},
isPlainObject
:
function
(
a
){
var
b
;
if
(
!
a
||
"object"
!==
n
.
type
(
a
)
||
a
.
nodeType
||
n
.
isWindow
(
a
))
return
!
1
;
try
{
if
(
a
.
constructor
&&!
k
.
call
(
a
,
"constructor"
)
&&!
k
.
call
(
a
.
constructor
.
prototype
,
"isPrototypeOf"
))
return
!
1
}
catch
(
c
){
return
!
1
}
if
(
!
l
.
ownFirst
)
for
(
b
in
a
)
return
k
.
call
(
a
,
b
);
for
(
b
in
a
);
return
void
0
===
b
||
k
.
call
(
a
,
b
)},
type
:
function
(
a
){
return
null
==
a
?
a
+
""
:
"object"
==
typeof
a
||
"function"
==
typeof
a
?
i
[
j
.
call
(
a
)]
||
"object"
:
typeof
a
},
globalEval
:
function
(
b
){
b
&&
n
.
trim
(
b
)
&&
(
a
.
execScript
||
function
(
b
){
a
.
eval
.
call
(
a
,
b
)})(
b
)},
camelCase
:
function
(
a
){
return
a
.
replace
(
p
,
"ms-"
).
replace
(
q
,
r
)},
nodeName
:
function
(
a
,
b
){
return
a
.
nodeName
&&
a
.
nodeName
.
toLowerCase
()
===
b
.
toLowerCase
()},
each
:
function
(
a
,
b
){
var
c
,
d
=
0
;
if
(
s
(
a
)){
for
(
c
=
a
.
length
;
c
>
d
;
d
++
)
if
(
b
.
call
(
a
[
d
],
d
,
a
[
d
])
===!
1
)
break
}
else
for
(
d
in
a
)
if
(
b
.
call
(
a
[
d
],
d
,
a
[
d
])
===!
1
)
break
;
return
a
},
trim
:
function
(
a
){
return
null
==
a
?
""
:(
a
+
""
).
replace
(
o
,
""
)},
makeArray
:
function
(
a
,
b
){
var
c
=
b
||
[];
return
null
!=
a
&&
(
s
(
Object
(
a
))?
n
.
merge
(
c
,
"string"
==
typeof
a
?[
a
]:
a
):
g
.
call
(
c
,
a
)),
c
},
inArray
:
function
(
a
,
b
,
c
){
var
d
;
if
(
b
){
if
(
h
)
return
h
.
call
(
b
,
a
,
c
);
for
(
d
=
b
.
length
,
c
=
c
?
0
>
c
?
Math
.
max
(
0
,
d
+
c
):
c
:
0
;
d
>
c
;
c
++
)
if
(
c
in
b
&&
b
[
c
]
===
a
)
return
c
}
return
-
1
},
merge
:
function
(
a
,
b
){
var
c
=+
b
.
length
,
d
=
0
,
e
=
a
.
length
;
while
(
c
>
d
)
a
[
e
++
]
=
b
[
d
++
];
if
(
c
!==
c
)
while
(
void
0
!==
b
[
d
])
a
[
e
++
]
=
b
[
d
++
];
return
a
.
length
=
e
,
a
},
grep
:
function
(
a
,
b
,
c
){
for
(
var
d
,
e
=
[],
f
=
0
,
g
=
a
.
length
,
h
=!
c
;
g
>
f
;
f
++
)
d
=!
b
(
a
[
f
],
f
),
d
!==
h
&&
e
.
push
(
a
[
f
]);
return
e
},
map
:
function
(
a
,
b
,
c
){
var
d
,
e
,
g
=
0
,
h
=
[];
if
(
s
(
a
))
for
(
d
=
a
.
length
;
d
>
g
;
g
++
)
e
=
b
(
a
[
g
],
g
,
c
),
null
!=
e
&&
h
.
push
(
e
);
else
for
(
g
in
a
)
e
=
b
(
a
[
g
],
g
,
c
),
null
!=
e
&&
h
.
push
(
e
);
return
f
.
apply
([],
h
)},
guid
:
1
,
proxy
:
function
(
a
,
b
){
var
c
,
d
,
f
;
return
"string"
==
typeof
b
&&
(
f
=
a
[
b
],
b
=
a
,
a
=
f
),
n
.
isFunction
(
a
)?(
c
=
e
.
call
(
arguments
,
2
),
d
=
function
(){
return
a
.
apply
(
b
||
this
,
c
.
concat
(
e
.
call
(
arguments
)))},
d
.
guid
=
a
.
guid
=
a
.
guid
||
n
.
guid
++
,
d
):
void
0
},
now
:
function
(){
return
+
new
Date
},
support
:
l
}),
"function"
==
typeof
Symbol
&&
(
n
.
fn
[
Symbol
.
iterator
]
=
c
[
Symbol
.
iterator
]),
n
.
each
(
"Boolean Number String Function Array Date RegExp Object Error Symbol"
.
split
(
" "
),
function
(
a
,
b
){
i
[
"[object "
+
b
+
"]"
]
=
b
.
toLowerCase
()});
function
s
(
a
){
var
b
=!!
a
&&
"length"
in
a
&&
a
.
length
,
c
=
n
.
type
(
a
);
return
"function"
===
c
||
n
.
isWindow
(
a
)?
!
1
:
"array"
===
c
||
0
===
b
||
"number"
==
typeof
b
&&
b
>
0
&&
b
-
1
in
a
}
var
t
=
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
p
,
q
,
r
,
s
,
t
,
u
=
"sizzle"
+
1
*
new
Date
,
v
=
a
.
document
,
w
=
0
,
x
=
0
,
y
=
ga
(),
z
=
ga
(),
A
=
ga
(),
B
=
function
(
a
,
b
){
return
a
===
b
&&
(
l
=!
0
),
0
},
C
=
1
<<
31
,
D
=
{}.
hasOwnProperty
,
E
=
[],
F
=
E
.
pop
,
G
=
E
.
push
,
H
=
E
.
push
,
I
=
E
.
slice
,
J
=
function
(
a
,
b
){
for
(
var
c
=
0
,
d
=
a
.
length
;
d
>
c
;
c
++
)
if
(
a
[
c
]
===
b
)
return
c
;
return
-
1
},
K
=
"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped"
,
L
=
"[
\\
x20
\\
t
\\
r
\
\n
\\
f]"
,
M
=
"(?:
\\\\
.|[
\\
w-]|[^
\\
x00-
\\
xa0])+"
,
N
=
"
\\
["
+
L
+
"*("
+
M
+
")(?:"
+
L
+
"*([*^$|!~]?=)"
+
L
+
"*(?:'((?:
\\\\
.|[^
\\\\
'])*)'|
\"
((?:
\\\\
.|[^
\\\\
\"
])*)
\"
|("
+
M
+
"))|)"
+
L
+
"*
\\
]"
,
O
=
":("
+
M
+
")(?:
\\
((('((?:
\\\\
.|[^
\\\\
'])*)'|
\"
((?:
\\\\
.|[^
\\\\
\"
])*)
\"
)|((?:
\\\\
.|[^
\\\\
()[
\\
]]|"
+
N
+
")*)|.*)
\\
)|)"
,
P
=
new
RegExp
(
L
+
"+"
,
"g"
),
Q
=
new
RegExp
(
"^"
+
L
+
"+|((?:^|[^
\\\\
])(?:
\\\\
.)*)"
+
L
+
"+$"
,
"g"
),
R
=
new
RegExp
(
"^"
+
L
+
"*,"
+
L
+
"*"
),
S
=
new
RegExp
(
"^"
+
L
+
"*([>+~]|"
+
L
+
")"
+
L
+
"*"
),
T
=
new
RegExp
(
"="
+
L
+
"*([^
\\
]'
\"
]*?)"
+
L
+
"*
\\
]"
,
"g"
),
U
=
new
RegExp
(
O
),
V
=
new
RegExp
(
"^"
+
M
+
"$"
),
W
=
{
ID
:
new
RegExp
(
"^#("
+
M
+
")"
),
CLASS
:
new
RegExp
(
"^
\\
.("
+
M
+
")"
),
TAG
:
new
RegExp
(
"^("
+
M
+
"|[*])"
),
ATTR
:
new
RegExp
(
"^"
+
N
),
PSEUDO
:
new
RegExp
(
"^"
+
O
),
CHILD
:
new
RegExp
(
"^:(only|first|last|nth|nth-last)-(child|of-type)(?:
\\
("
+
L
+
"*(even|odd|(([+-]|)(
\\
d*)n|)"
+
L
+
"*(?:([+-]|)"
+
L
+
"*(
\\
d+)|))"
+
L
+
"*
\\
)|)"
,
"i"
),
bool
:
new
RegExp
(
"^(?:"
+
K
+
")$"
,
"i"
),
needsContext
:
new
RegExp
(
"^"
+
L
+
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:
\\
("
+
L
+
"*((?:-
\\
d)?
\\
d*)"
+
L
+
"*
\\
)|)(?=[^-]|$)"
,
"i"
)},
X
=
/^
(?:
input|select|textarea|button
)
$/i
,
Y
=
/^h
\d
$/i
,
Z
=
/^
[^
{
]
+
\{\s
*
\[
native
\w
/
,
$
=
/^
(?:
#
([\w
-
]
+
)
|
(\w
+
)
|
\.([\w
-
]
+
))
$/
,
_
=
/
[
+~
]
/
,
aa
=
/'|
\\
/g
,
ba
=
new
RegExp
(
"
\\\\
([
\\
da-f]{1,6}"
+
L
+
"?|("
+
L
+
")|.)"
,
"ig"
),
ca
=
function
(
a
,
b
,
c
){
var
d
=
"0x"
+
b
-
65536
;
return
d
!==
d
||
c
?
b
:
0
>
d
?
String
.
fromCharCode
(
d
+
65536
):
String
.
fromCharCode
(
d
>>
10
|
55296
,
1023
&
d
|
56320
)},
da
=
function
(){
m
()};
try
{
H
.
apply
(
E
=
I
.
call
(
v
.
childNodes
),
v
.
childNodes
),
E
[
v
.
childNodes
.
length
].
nodeType
}
catch
(
ea
){
H
=
{
apply
:
E
.
length
?
function
(
a
,
b
){
G
.
apply
(
a
,
I
.
call
(
b
))}:
function
(
a
,
b
){
var
c
=
a
.
length
,
d
=
0
;
while
(
a
[
c
++
]
=
b
[
d
++
]);
a
.
length
=
c
-
1
}}}
function
fa
(
a
,
b
,
d
,
e
){
var
f
,
h
,
j
,
k
,
l
,
o
,
r
,
s
,
w
=
b
&&
b
.
ownerDocument
,
x
=
b
?
b
.
nodeType
:
9
;
if
(
d
=
d
||
[],
"string"
!=
typeof
a
||!
a
||
1
!==
x
&&
9
!==
x
&&
11
!==
x
)
return
d
;
if
(
!
e
&&
((
b
?
b
.
ownerDocument
||
b
:
v
)
!==
n
&&
m
(
b
),
b
=
b
||
n
,
p
)){
if
(
11
!==
x
&&
(
o
=
$
.
exec
(
a
)))
if
(
f
=
o
[
1
]){
if
(
9
===
x
){
if
(
!
(
j
=
b
.
getElementById
(
f
)))
return
d
;
if
(
j
.
id
===
f
)
return
d
.
push
(
j
),
d
}
else
if
(
w
&&
(
j
=
w
.
getElementById
(
f
))
&&
t
(
b
,
j
)
&&
j
.
id
===
f
)
return
d
.
push
(
j
),
d
}
else
{
if
(
o
[
2
])
return
H
.
apply
(
d
,
b
.
getElementsByTagName
(
a
)),
d
;
if
((
f
=
o
[
3
])
&&
c
.
getElementsByClassName
&&
b
.
getElementsByClassName
)
return
H
.
apply
(
d
,
b
.
getElementsByClassName
(
f
)),
d
}
if
(
c
.
qsa
&&!
A
[
a
+
" "
]
&&
(
!
q
||!
q
.
test
(
a
))){
if
(
1
!==
x
)
w
=
b
,
s
=
a
;
else
if
(
"object"
!==
b
.
nodeName
.
toLowerCase
()){(
k
=
b
.
getAttribute
(
"id"
))?
k
=
k
.
replace
(
aa
,
"
\\
$&"
):
b
.
setAttribute
(
"id"
,
k
=
u
),
r
=
g
(
a
),
h
=
r
.
length
,
l
=
V
.
test
(
k
)?
"#"
+
k
:
"[id='"
+
k
+
"']"
;
while
(
h
--
)
r
[
h
]
=
l
+
" "
+
qa
(
r
[
h
]);
s
=
r
.
join
(
","
),
w
=
_
.
test
(
a
)
&&
oa
(
b
.
parentNode
)
||
b
}
if
(
s
)
try
{
return
H
.
apply
(
d
,
w
.
querySelectorAll
(
s
)),
d
}
catch
(
y
){}
finally
{
k
===
u
&&
b
.
removeAttribute
(
"id"
)}}}
return
i
(
a
.
replace
(
Q
,
"$1"
),
b
,
d
,
e
)}
function
ga
(){
var
a
=
[];
function
b
(
c
,
e
){
return
a
.
push
(
c
+
" "
)
>
d
.
cacheLength
&&
delete
b
[
a
.
shift
()],
b
[
c
+
" "
]
=
e
}
return
b
}
function
ha
(
a
){
return
a
[
u
]
=!
0
,
a
}
function
ia
(
a
){
var
b
=
n
.
createElement
(
"div"
);
try
{
return
!!
a
(
b
)}
catch
(
c
){
return
!
1
}
finally
{
b
.
parentNode
&&
b
.
parentNode
.
removeChild
(
b
),
b
=
null
}}
function
ja
(
a
,
b
){
var
c
=
a
.
split
(
"|"
),
e
=
c
.
length
;
while
(
e
--
)
d
.
attrHandle
[
c
[
e
]]
=
b
}
function
ka
(
a
,
b
){
var
c
=
b
&&
a
,
d
=
c
&&
1
===
a
.
nodeType
&&
1
===
b
.
nodeType
&&
(
~
b
.
sourceIndex
||
C
)
-
(
~
a
.
sourceIndex
||
C
);
if
(
d
)
return
d
;
if
(
c
)
while
(
c
=
c
.
nextSibling
)
if
(
c
===
b
)
return
-
1
;
return
a
?
1
:
-
1
}
function
la
(
a
){
return
function
(
b
){
var
c
=
b
.
nodeName
.
toLowerCase
();
return
"input"
===
c
&&
b
.
type
===
a
}}
function
ma
(
a
){
return
function
(
b
){
var
c
=
b
.
nodeName
.
toLowerCase
();
return
(
"input"
===
c
||
"button"
===
c
)
&&
b
.
type
===
a
}}
function
na
(
a
){
return
ha
(
function
(
b
){
return
b
=+
b
,
ha
(
function
(
c
,
d
){
var
e
,
f
=
a
([],
c
.
length
,
b
),
g
=
f
.
length
;
while
(
g
--
)
c
[
e
=
f
[
g
]]
&&
(
c
[
e
]
=!
(
d
[
e
]
=
c
[
e
]))})})}
function
oa
(
a
){
return
a
&&
"undefined"
!=
typeof
a
.
getElementsByTagName
&&
a
}
c
=
fa
.
support
=
{},
f
=
fa
.
isXML
=
function
(
a
){
var
b
=
a
&&
(
a
.
ownerDocument
||
a
).
documentElement
;
return
b
?
"HTML"
!==
b
.
nodeName
:
!
1
},
m
=
fa
.
setDocument
=
function
(
a
){
var
b
,
e
,
g
=
a
?
a
.
ownerDocument
||
a
:
v
;
return
g
!==
n
&&
9
===
g
.
nodeType
&&
g
.
documentElement
?(
n
=
g
,
o
=
n
.
documentElement
,
p
=!
f
(
n
),(
e
=
n
.
defaultView
)
&&
e
.
top
!==
e
&&
(
e
.
addEventListener
?
e
.
addEventListener
(
"unload"
,
da
,
!
1
):
e
.
attachEvent
&&
e
.
attachEvent
(
"onunload"
,
da
)),
c
.
attributes
=
ia
(
function
(
a
){
return
a
.
className
=
"i"
,
!
a
.
getAttribute
(
"className"
)}),
c
.
getElementsByTagName
=
ia
(
function
(
a
){
return
a
.
appendChild
(
n
.
createComment
(
""
)),
!
a
.
getElementsByTagName
(
"*"
).
length
}),
c
.
getElementsByClassName
=
Z
.
test
(
n
.
getElementsByClassName
),
c
.
getById
=
ia
(
function
(
a
){
return
o
.
appendChild
(
a
).
id
=
u
,
!
n
.
getElementsByName
||!
n
.
getElementsByName
(
u
).
length
}),
c
.
getById
?(
d
.
find
.
ID
=
function
(
a
,
b
){
if
(
"undefined"
!=
typeof
b
.
getElementById
&&
p
){
var
c
=
b
.
getElementById
(
a
);
return
c
?[
c
]:[]}},
d
.
filter
.
ID
=
function
(
a
){
var
b
=
a
.
replace
(
ba
,
ca
);
return
function
(
a
){
return
a
.
getAttribute
(
"id"
)
===
b
}}):(
delete
d
.
find
.
ID
,
d
.
filter
.
ID
=
function
(
a
){
var
b
=
a
.
replace
(
ba
,
ca
);
return
function
(
a
){
var
c
=
"undefined"
!=
typeof
a
.
getAttributeNode
&&
a
.
getAttributeNode
(
"id"
);
return
c
&&
c
.
value
===
b
}}),
d
.
find
.
TAG
=
c
.
getElementsByTagName
?
function
(
a
,
b
){
return
"undefined"
!=
typeof
b
.
getElementsByTagName
?
b
.
getElementsByTagName
(
a
):
c
.
qsa
?
b
.
querySelectorAll
(
a
):
void
0
}:
function
(
a
,
b
){
var
c
,
d
=
[],
e
=
0
,
f
=
b
.
getElementsByTagName
(
a
);
if
(
"*"
===
a
){
while
(
c
=
f
[
e
++
])
1
===
c
.
nodeType
&&
d
.
push
(
c
);
return
d
}
return
f
},
d
.
find
.
CLASS
=
c
.
getElementsByClassName
&&
function
(
a
,
b
){
return
"undefined"
!=
typeof
b
.
getElementsByClassName
&&
p
?
b
.
getElementsByClassName
(
a
):
void
0
},
r
=
[],
q
=
[],(
c
.
qsa
=
Z
.
test
(
n
.
querySelectorAll
))
&&
(
ia
(
function
(
a
){
o
.
appendChild
(
a
).
innerHTML
=
"<a id='"
+
u
+
"'></a><select id='"
+
u
+
"-
\
r
\\
' msallowcapture=''><option selected=''></option></select>"
,
a
.
querySelectorAll
(
"[msallowcapture^='']"
).
length
&&
q
.
push
(
"[*^$]="
+
L
+
"*(?:''|
\"\"
)"
),
a
.
querySelectorAll
(
"[selected]"
).
length
||
q
.
push
(
"
\\
["
+
L
+
"*(?:value|"
+
K
+
")"
),
a
.
querySelectorAll
(
"[id~="
+
u
+
"-]"
).
length
||
q
.
push
(
"~="
),
a
.
querySelectorAll
(
":checked"
).
length
||
q
.
push
(
":checked"
),
a
.
querySelectorAll
(
"a#"
+
u
+
"+*"
).
length
||
q
.
push
(
".#.+[+~]"
)}),
ia
(
function
(
a
){
var
b
=
n
.
createElement
(
"input"
);
b
.
setAttribute
(
"type"
,
"hidden"
),
a
.
appendChild
(
b
).
setAttribute
(
"name"
,
"D"
),
a
.
querySelectorAll
(
"[name=d]"
).
length
&&
q
.
push
(
"name"
+
L
+
"*[*^$|!~]?="
),
a
.
querySelectorAll
(
":enabled"
).
length
||
q
.
push
(
":enabled"
,
":disabled"
),
a
.
querySelectorAll
(
"*,:x"
),
q
.
push
(
",.*:"
)})),(
c
.
matchesSelector
=
Z
.
test
(
s
=
o
.
matches
||
o
.
webkitMatchesSelector
||
o
.
mozMatchesSelector
||
o
.
oMatchesSelector
||
o
.
msMatchesSelector
))
&&
ia
(
function
(
a
){
c
.
disconnectedMatch
=
s
.
call
(
a
,
"div"
),
s
.
call
(
a
,
"[s!='']:x"
),
r
.
push
(
"!="
,
O
)}),
q
=
q
.
length
&&
new
RegExp
(
q
.
join
(
"|"
)),
r
=
r
.
length
&&
new
RegExp
(
r
.
join
(
"|"
)),
b
=
Z
.
test
(
o
.
compareDocumentPosition
),
t
=
b
||
Z
.
test
(
o
.
contains
)?
function
(
a
,
b
){
var
c
=
9
===
a
.
nodeType
?
a
.
documentElement
:
a
,
d
=
b
&&
b
.
parentNode
;
return
a
===
d
||!
(
!
d
||
1
!==
d
.
nodeType
||!
(
c
.
contains
?
c
.
contains
(
d
):
a
.
compareDocumentPosition
&&
16
&
a
.
compareDocumentPosition
(
d
)))}:
function
(
a
,
b
){
if
(
b
)
while
(
b
=
b
.
parentNode
)
if
(
b
===
a
)
return
!
0
;
return
!
1
},
B
=
b
?
function
(
a
,
b
){
if
(
a
===
b
)
return
l
=!
0
,
0
;
var
d
=!
a
.
compareDocumentPosition
-!
b
.
compareDocumentPosition
;
return
d
?
d
:(
d
=
(
a
.
ownerDocument
||
a
)
===
(
b
.
ownerDocument
||
b
)?
a
.
compareDocumentPosition
(
b
):
1
,
1
&
d
||!
c
.
sortDetached
&&
b
.
compareDocumentPosition
(
a
)
===
d
?
a
===
n
||
a
.
ownerDocument
===
v
&&
t
(
v
,
a
)?
-
1
:
b
===
n
||
b
.
ownerDocument
===
v
&&
t
(
v
,
b
)?
1
:
k
?
J
(
k
,
a
)
-
J
(
k
,
b
):
0
:
4
&
d
?
-
1
:
1
)}:
function
(
a
,
b
){
if
(
a
===
b
)
return
l
=!
0
,
0
;
var
c
,
d
=
0
,
e
=
a
.
parentNode
,
f
=
b
.
parentNode
,
g
=
[
a
],
h
=
[
b
];
if
(
!
e
||!
f
)
return
a
===
n
?
-
1
:
b
===
n
?
1
:
e
?
-
1
:
f
?
1
:
k
?
J
(
k
,
a
)
-
J
(
k
,
b
):
0
;
if
(
e
===
f
)
return
ka
(
a
,
b
);
c
=
a
;
while
(
c
=
c
.
parentNode
)
g
.
unshift
(
c
);
c
=
b
;
while
(
c
=
c
.
parentNode
)
h
.
unshift
(
c
);
while
(
g
[
d
]
===
h
[
d
])
d
++
;
return
d
?
ka
(
g
[
d
],
h
[
d
]):
g
[
d
]
===
v
?
-
1
:
h
[
d
]
===
v
?
1
:
0
},
n
):
n
},
fa
.
matches
=
function
(
a
,
b
){
return
fa
(
a
,
null
,
null
,
b
)},
fa
.
matchesSelector
=
function
(
a
,
b
){
if
((
a
.
ownerDocument
||
a
)
!==
n
&&
m
(
a
),
b
=
b
.
replace
(
T
,
"='$1']"
),
c
.
matchesSelector
&&
p
&&!
A
[
b
+
" "
]
&&
(
!
r
||!
r
.
test
(
b
))
&&
(
!
q
||!
q
.
test
(
b
)))
try
{
var
d
=
s
.
call
(
a
,
b
);
if
(
d
||
c
.
disconnectedMatch
||
a
.
document
&&
11
!==
a
.
document
.
nodeType
)
return
d
}
catch
(
e
){}
return
fa
(
b
,
n
,
null
,[
a
]).
length
>
0
},
fa
.
contains
=
function
(
a
,
b
){
return
(
a
.
ownerDocument
||
a
)
!==
n
&&
m
(
a
),
t
(
a
,
b
)},
fa
.
attr
=
function
(
a
,
b
){(
a
.
ownerDocument
||
a
)
!==
n
&&
m
(
a
);
var
e
=
d
.
attrHandle
[
b
.
toLowerCase
()],
f
=
e
&&
D
.
call
(
d
.
attrHandle
,
b
.
toLowerCase
())?
e
(
a
,
b
,
!
p
):
void
0
;
return
void
0
!==
f
?
f
:
c
.
attributes
||!
p
?
a
.
getAttribute
(
b
):(
f
=
a
.
getAttributeNode
(
b
))
&&
f
.
specified
?
f
.
value
:
null
},
fa
.
error
=
function
(
a
){
throw
new
Error
(
"Syntax error, unrecognized expression: "
+
a
)},
fa
.
uniqueSort
=
function
(
a
){
var
b
,
d
=
[],
e
=
0
,
f
=
0
;
if
(
l
=!
c
.
detectDuplicates
,
k
=!
c
.
sortStable
&&
a
.
slice
(
0
),
a
.
sort
(
B
),
l
){
while
(
b
=
a
[
f
++
])
b
===
a
[
f
]
&&
(
e
=
d
.
push
(
f
));
while
(
e
--
)
a
.
splice
(
d
[
e
],
1
)}
return
k
=
null
,
a
},
e
=
fa
.
getText
=
function
(
a
){
var
b
,
c
=
""
,
d
=
0
,
f
=
a
.
nodeType
;
if
(
f
){
if
(
1
===
f
||
9
===
f
||
11
===
f
){
if
(
"string"
==
typeof
a
.
textContent
)
return
a
.
textContent
;
for
(
a
=
a
.
firstChild
;
a
;
a
=
a
.
nextSibling
)
c
+=
e
(
a
)}
else
if
(
3
===
f
||
4
===
f
)
return
a
.
nodeValue
}
else
while
(
b
=
a
[
d
++
])
c
+=
e
(
b
);
return
c
},
d
=
fa
.
selectors
=
{
cacheLength
:
50
,
createPseudo
:
ha
,
match
:
W
,
attrHandle
:{},
find
:{},
relative
:{
">"
:{
dir
:
"parentNode"
,
first
:
!
0
},
" "
:{
dir
:
"parentNode"
},
"+"
:{
dir
:
"previousSibling"
,
first
:
!
0
},
"~"
:{
dir
:
"previousSibling"
}},
preFilter
:{
ATTR
:
function
(
a
){
return
a
[
1
]
=
a
[
1
].
replace
(
ba
,
ca
),
a
[
3
]
=
(
a
[
3
]
||
a
[
4
]
||
a
[
5
]
||
""
).
replace
(
ba
,
ca
),
"~="
===
a
[
2
]
&&
(
a
[
3
]
=
" "
+
a
[
3
]
+
" "
),
a
.
slice
(
0
,
4
)},
CHILD
:
function
(
a
){
return
a
[
1
]
=
a
[
1
].
toLowerCase
(),
"nth"
===
a
[
1
].
slice
(
0
,
3
)?(
a
[
3
]
||
fa
.
error
(
a
[
0
]),
a
[
4
]
=+
(
a
[
4
]?
a
[
5
]
+
(
a
[
6
]
||
1
):
2
*
(
"even"
===
a
[
3
]
||
"odd"
===
a
[
3
])),
a
[
5
]
=+
(
a
[
7
]
+
a
[
8
]
||
"odd"
===
a
[
3
])):
a
[
3
]
&&
fa
.
error
(
a
[
0
]),
a
},
PSEUDO
:
function
(
a
){
var
b
,
c
=!
a
[
6
]
&&
a
[
2
];
return
W
.
CHILD
.
test
(
a
[
0
])?
null
:(
a
[
3
]?
a
[
2
]
=
a
[
4
]
||
a
[
5
]
||
""
:
c
&&
U
.
test
(
c
)
&&
(
b
=
g
(
c
,
!
0
))
&&
(
b
=
c
.
indexOf
(
")"
,
c
.
length
-
b
)
-
c
.
length
)
&&
(
a
[
0
]
=
a
[
0
].
slice
(
0
,
b
),
a
[
2
]
=
c
.
slice
(
0
,
b
)),
a
.
slice
(
0
,
3
))}},
filter
:{
TAG
:
function
(
a
){
var
b
=
a
.
replace
(
ba
,
ca
).
toLowerCase
();
return
"*"
===
a
?
function
(){
return
!
0
}:
function
(
a
){
return
a
.
nodeName
&&
a
.
nodeName
.
toLowerCase
()
===
b
}},
CLASS
:
function
(
a
){
var
b
=
y
[
a
+
" "
];
return
b
||
(
b
=
new
RegExp
(
"(^|"
+
L
+
")"
+
a
+
"("
+
L
+
"|$)"
))
&&
y
(
a
,
function
(
a
){
return
b
.
test
(
"string"
==
typeof
a
.
className
&&
a
.
className
||
"undefined"
!=
typeof
a
.
getAttribute
&&
a
.
getAttribute
(
"class"
)
||
""
)})},
ATTR
:
function
(
a
,
b
,
c
){
return
function
(
d
){
var
e
=
fa
.
attr
(
d
,
a
);
return
null
==
e
?
"!="
===
b
:
b
?(
e
+=
""
,
"="
===
b
?
e
===
c
:
"!="
===
b
?
e
!==
c
:
"^="
===
b
?
c
&&
0
===
e
.
indexOf
(
c
):
"*="
===
b
?
c
&&
e
.
indexOf
(
c
)
>-
1
:
"$="
===
b
?
c
&&
e
.
slice
(
-
c
.
length
)
===
c
:
"~="
===
b
?(
" "
+
e
.
replace
(
P
,
" "
)
+
" "
).
indexOf
(
c
)
>-
1
:
"|="
===
b
?
e
===
c
||
e
.
slice
(
0
,
c
.
length
+
1
)
===
c
+
"-"
:
!
1
):
!
0
}},
CHILD
:
function
(
a
,
b
,
c
,
d
,
e
){
var
f
=
"nth"
!==
a
.
slice
(
0
,
3
),
g
=
"last"
!==
a
.
slice
(
-
4
),
h
=
"of-type"
===
b
;
return
1
===
d
&&
0
===
e
?
function
(
a
){
return
!!
a
.
parentNode
}:
function
(
b
,
c
,
i
){
var
j
,
k
,
l
,
m
,
n
,
o
,
p
=
f
!==
g
?
"nextSibling"
:
"previousSibling"
,
q
=
b
.
parentNode
,
r
=
h
&&
b
.
nodeName
.
toLowerCase
(),
s
=!
i
&&!
h
,
t
=!
1
;
if
(
q
){
if
(
f
){
while
(
p
){
m
=
b
;
while
(
m
=
m
[
p
])
if
(
h
?
m
.
nodeName
.
toLowerCase
()
===
r
:
1
===
m
.
nodeType
)
return
!
1
;
o
=
p
=
"only"
===
a
&&!
o
&&
"nextSibling"
}
return
!
0
}
if
(
o
=
[
g
?
q
.
firstChild
:
q
.
lastChild
],
g
&&
s
){
m
=
q
,
l
=
m
[
u
]
||
(
m
[
u
]
=
{}),
k
=
l
[
m
.
uniqueID
]
||
(
l
[
m
.
uniqueID
]
=
{}),
j
=
k
[
a
]
||
[],
n
=
j
[
0
]
===
w
&&
j
[
1
],
t
=
n
&&
j
[
2
],
m
=
n
&&
q
.
childNodes
[
n
];
while
(
m
=++
n
&&
m
&&
m
[
p
]
||
(
t
=
n
=
0
)
||
o
.
pop
())
if
(
1
===
m
.
nodeType
&&++
t
&&
m
===
b
){
k
[
a
]
=
[
w
,
n
,
t
];
break
}}
else
if
(
s
&&
(
m
=
b
,
l
=
m
[
u
]
||
(
m
[
u
]
=
{}),
k
=
l
[
m
.
uniqueID
]
||
(
l
[
m
.
uniqueID
]
=
{}),
j
=
k
[
a
]
||
[],
n
=
j
[
0
]
===
w
&&
j
[
1
],
t
=
n
),
t
===!
1
)
while
(
m
=++
n
&&
m
&&
m
[
p
]
||
(
t
=
n
=
0
)
||
o
.
pop
())
if
((
h
?
m
.
nodeName
.
toLowerCase
()
===
r
:
1
===
m
.
nodeType
)
&&++
t
&&
(
s
&&
(
l
=
m
[
u
]
||
(
m
[
u
]
=
{}),
k
=
l
[
m
.
uniqueID
]
||
(
l
[
m
.
uniqueID
]
=
{}),
k
[
a
]
=
[
w
,
t
]),
m
===
b
))
break
;
return
t
-=
e
,
t
===
d
||
t
%
d
===
0
&&
t
/
d
>=
0
}}},
PSEUDO
:
function
(
a
,
b
){
var
c
,
e
=
d
.
pseudos
[
a
]
||
d
.
setFilters
[
a
.
toLowerCase
()]
||
fa
.
error
(
"unsupported pseudo: "
+
a
);
return
e
[
u
]?
e
(
b
):
e
.
length
>
1
?(
c
=
[
a
,
a
,
""
,
b
],
d
.
setFilters
.
hasOwnProperty
(
a
.
toLowerCase
())?
ha
(
function
(
a
,
c
){
var
d
,
f
=
e
(
a
,
b
),
g
=
f
.
length
;
while
(
g
--
)
d
=
J
(
a
,
f
[
g
]),
a
[
d
]
=!
(
c
[
d
]
=
f
[
g
])}):
function
(
a
){
return
e
(
a
,
0
,
c
)}):
e
}},
pseudos
:{
not
:
ha
(
function
(
a
){
var
b
=
[],
c
=
[],
d
=
h
(
a
.
replace
(
Q
,
"$1"
));
return
d
[
u
]?
ha
(
function
(
a
,
b
,
c
,
e
){
var
f
,
g
=
d
(
a
,
null
,
e
,[]),
h
=
a
.
length
;
while
(
h
--
)(
f
=
g
[
h
])
&&
(
a
[
h
]
=!
(
b
[
h
]
=
f
))}):
function
(
a
,
e
,
f
){
return
b
[
0
]
=
a
,
d
(
b
,
null
,
f
,
c
),
b
[
0
]
=
null
,
!
c
.
pop
()}}),
has
:
ha
(
function
(
a
){
return
function
(
b
){
return
fa
(
a
,
b
).
length
>
0
}}),
contains
:
ha
(
function
(
a
){
return
a
=
a
.
replace
(
ba
,
ca
),
function
(
b
){
return
(
b
.
textContent
||
b
.
innerText
||
e
(
b
)).
indexOf
(
a
)
>-
1
}}),
lang
:
ha
(
function
(
a
){
return
V
.
test
(
a
||
""
)
||
fa
.
error
(
"unsupported lang: "
+
a
),
a
=
a
.
replace
(
ba
,
ca
).
toLowerCase
(),
function
(
b
){
var
c
;
do
if
(
c
=
p
?
b
.
lang
:
b
.
getAttribute
(
"xml:lang"
)
||
b
.
getAttribute
(
"lang"
))
return
c
=
c
.
toLowerCase
(),
c
===
a
||
0
===
c
.
indexOf
(
a
+
"-"
);
while
((
b
=
b
.
parentNode
)
&&
1
===
b
.
nodeType
);
return
!
1
}}),
target
:
function
(
b
){
var
c
=
a
.
location
&&
a
.
location
.
hash
;
return
c
&&
c
.
slice
(
1
)
===
b
.
id
},
root
:
function
(
a
){
return
a
===
o
},
focus
:
function
(
a
){
return
a
===
n
.
activeElement
&&
(
!
n
.
hasFocus
||
n
.
hasFocus
())
&&!!
(
a
.
type
||
a
.
href
||~
a
.
tabIndex
)},
enabled
:
function
(
a
){
return
a
.
disabled
===!
1
},
disabled
:
function
(
a
){
return
a
.
disabled
===!
0
},
checked
:
function
(
a
){
var
b
=
a
.
nodeName
.
toLowerCase
();
return
"input"
===
b
&&!!
a
.
checked
||
"option"
===
b
&&!!
a
.
selected
},
selected
:
function
(
a
){
return
a
.
parentNode
&&
a
.
parentNode
.
selectedIndex
,
a
.
selected
===!
0
},
empty
:
function
(
a
){
for
(
a
=
a
.
firstChild
;
a
;
a
=
a
.
nextSibling
)
if
(
a
.
nodeType
<
6
)
return
!
1
;
return
!
0
},
parent
:
function
(
a
){
return
!
d
.
pseudos
.
empty
(
a
)},
header
:
function
(
a
){
return
Y
.
test
(
a
.
nodeName
)},
input
:
function
(
a
){
return
X
.
test
(
a
.
nodeName
)},
button
:
function
(
a
){
var
b
=
a
.
nodeName
.
toLowerCase
();
return
"input"
===
b
&&
"button"
===
a
.
type
||
"button"
===
b
},
text
:
function
(
a
){
var
b
;
return
"input"
===
a
.
nodeName
.
toLowerCase
()
&&
"text"
===
a
.
type
&&
(
null
==
(
b
=
a
.
getAttribute
(
"type"
))
||
"text"
===
b
.
toLowerCase
())},
first
:
na
(
function
(){
return
[
0
]}),
last
:
na
(
function
(
a
,
b
){
return
[
b
-
1
]}),
eq
:
na
(
function
(
a
,
b
,
c
){
return
[
0
>
c
?
c
+
b
:
c
]}),
even
:
na
(
function
(
a
,
b
){
for
(
var
c
=
0
;
b
>
c
;
c
+=
2
)
a
.
push
(
c
);
return
a
}),
odd
:
na
(
function
(
a
,
b
){
for
(
var
c
=
1
;
b
>
c
;
c
+=
2
)
a
.
push
(
c
);
return
a
}),
lt
:
na
(
function
(
a
,
b
,
c
){
for
(
var
d
=
0
>
c
?
c
+
b
:
c
;
--
d
>=
0
;)
a
.
push
(
d
);
return
a
}),
gt
:
na
(
function
(
a
,
b
,
c
){
for
(
var
d
=
0
>
c
?
c
+
b
:
c
;
++
d
<
b
;)
a
.
push
(
d
);
return
a
})}},
d
.
pseudos
.
nth
=
d
.
pseudos
.
eq
;
for
(
b
in
{
radio
:
!
0
,
checkbox
:
!
0
,
file
:
!
0
,
password
:
!
0
,
image
:
!
0
})
d
.
pseudos
[
b
]
=
la
(
b
);
for
(
b
in
{
submit
:
!
0
,
reset
:
!
0
})
d
.
pseudos
[
b
]
=
ma
(
b
);
function
pa
(){}
pa
.
prototype
=
d
.
filters
=
d
.
pseudos
,
d
.
setFilters
=
new
pa
,
g
=
fa
.
tokenize
=
function
(
a
,
b
){
var
c
,
e
,
f
,
g
,
h
,
i
,
j
,
k
=
z
[
a
+
" "
];
if
(
k
)
return
b
?
0
:
k
.
slice
(
0
);
h
=
a
,
i
=
[],
j
=
d
.
preFilter
;
while
(
h
){
c
&&!
(
e
=
R
.
exec
(
h
))
||
(
e
&&
(
h
=
h
.
slice
(
e
[
0
].
length
)
||
h
),
i
.
push
(
f
=
[])),
c
=!
1
,(
e
=
S
.
exec
(
h
))
&&
(
c
=
e
.
shift
(),
f
.
push
({
value
:
c
,
type
:
e
[
0
].
replace
(
Q
,
" "
)}),
h
=
h
.
slice
(
c
.
length
));
for
(
g
in
d
.
filter
)
!
(
e
=
W
[
g
].
exec
(
h
))
||
j
[
g
]
&&!
(
e
=
j
[
g
](
e
))
||
(
c
=
e
.
shift
(),
f
.
push
({
value
:
c
,
type
:
g
,
matches
:
e
}),
h
=
h
.
slice
(
c
.
length
));
if
(
!
c
)
break
}
return
b
?
h
.
length
:
h
?
fa
.
error
(
a
):
z
(
a
,
i
).
slice
(
0
)};
function
qa
(
a
){
for
(
var
b
=
0
,
c
=
a
.
length
,
d
=
""
;
c
>
b
;
b
++
)
d
+=
a
[
b
].
value
;
return
d
}
function
ra
(
a
,
b
,
c
){
var
d
=
b
.
dir
,
e
=
c
&&
"parentNode"
===
d
,
f
=
x
++
;
return
b
.
first
?
function
(
b
,
c
,
f
){
while
(
b
=
b
[
d
])
if
(
1
===
b
.
nodeType
||
e
)
return
a
(
b
,
c
,
f
)}:
function
(
b
,
c
,
g
){
var
h
,
i
,
j
,
k
=
[
w
,
f
];
if
(
g
){
while
(
b
=
b
[
d
])
if
((
1
===
b
.
nodeType
||
e
)
&&
a
(
b
,
c
,
g
))
return
!
0
}
else
while
(
b
=
b
[
d
])
if
(
1
===
b
.
nodeType
||
e
){
if
(
j
=
b
[
u
]
||
(
b
[
u
]
=
{}),
i
=
j
[
b
.
uniqueID
]
||
(
j
[
b
.
uniqueID
]
=
{}),(
h
=
i
[
d
])
&&
h
[
0
]
===
w
&&
h
[
1
]
===
f
)
return
k
[
2
]
=
h
[
2
];
if
(
i
[
d
]
=
k
,
k
[
2
]
=
a
(
b
,
c
,
g
))
return
!
0
}}}
function
sa
(
a
){
return
a
.
length
>
1
?
function
(
b
,
c
,
d
){
var
e
=
a
.
length
;
while
(
e
--
)
if
(
!
a
[
e
](
b
,
c
,
d
))
return
!
1
;
return
!
0
}:
a
[
0
]}
function
ta
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
b
.
length
;
e
>
d
;
d
++
)
fa
(
a
,
b
[
d
],
c
);
return
c
}
function
ua
(
a
,
b
,
c
,
d
,
e
){
for
(
var
f
,
g
=
[],
h
=
0
,
i
=
a
.
length
,
j
=
null
!=
b
;
i
>
h
;
h
++
)(
f
=
a
[
h
])
&&
(
c
&&!
c
(
f
,
d
,
e
)
||
(
g
.
push
(
f
),
j
&&
b
.
push
(
h
)));
return
g
}
function
va
(
a
,
b
,
c
,
d
,
e
,
f
){
return
d
&&!
d
[
u
]
&&
(
d
=
va
(
d
)),
e
&&!
e
[
u
]
&&
(
e
=
va
(
e
,
f
)),
ha
(
function
(
f
,
g
,
h
,
i
){
var
j
,
k
,
l
,
m
=
[],
n
=
[],
o
=
g
.
length
,
p
=
f
||
ta
(
b
||
"*"
,
h
.
nodeType
?[
h
]:
h
,[]),
q
=!
a
||!
f
&&
b
?
p
:
ua
(
p
,
m
,
a
,
h
,
i
),
r
=
c
?
e
||
(
f
?
a
:
o
||
d
)?[]:
g
:
q
;
if
(
c
&&
c
(
q
,
r
,
h
,
i
),
d
){
j
=
ua
(
r
,
n
),
d
(
j
,[],
h
,
i
),
k
=
j
.
length
;
while
(
k
--
)(
l
=
j
[
k
])
&&
(
r
[
n
[
k
]]
=!
(
q
[
n
[
k
]]
=
l
))}
if
(
f
){
if
(
e
||
a
){
if
(
e
){
j
=
[],
k
=
r
.
length
;
while
(
k
--
)(
l
=
r
[
k
])
&&
j
.
push
(
q
[
k
]
=
l
);
e
(
null
,
r
=
[],
j
,
i
)}
k
=
r
.
length
;
while
(
k
--
)(
l
=
r
[
k
])
&&
(
j
=
e
?
J
(
f
,
l
):
m
[
k
])
>-
1
&&
(
f
[
j
]
=!
(
g
[
j
]
=
l
))}}
else
r
=
ua
(
r
===
g
?
r
.
splice
(
o
,
r
.
length
):
r
),
e
?
e
(
null
,
g
,
r
,
i
):
H
.
apply
(
g
,
r
)})}
function
wa
(
a
){
for
(
var
b
,
c
,
e
,
f
=
a
.
length
,
g
=
d
.
relative
[
a
[
0
].
type
],
h
=
g
||
d
.
relative
[
" "
],
i
=
g
?
1
:
0
,
k
=
ra
(
function
(
a
){
return
a
===
b
},
h
,
!
0
),
l
=
ra
(
function
(
a
){
return
J
(
b
,
a
)
>-
1
},
h
,
!
0
),
m
=
[
function
(
a
,
c
,
d
){
var
e
=!
g
&&
(
d
||
c
!==
j
)
||
((
b
=
c
).
nodeType
?
k
(
a
,
c
,
d
):
l
(
a
,
c
,
d
));
return
b
=
null
,
e
}];
f
>
i
;
i
++
)
if
(
c
=
d
.
relative
[
a
[
i
].
type
])
m
=
[
ra
(
sa
(
m
),
c
)];
else
{
if
(
c
=
d
.
filter
[
a
[
i
].
type
].
apply
(
null
,
a
[
i
].
matches
),
c
[
u
]){
for
(
e
=++
i
;
f
>
e
;
e
++
)
if
(
d
.
relative
[
a
[
e
].
type
])
break
;
return
va
(
i
>
1
&&
sa
(
m
),
i
>
1
&&
qa
(
a
.
slice
(
0
,
i
-
1
).
concat
({
value
:
" "
===
a
[
i
-
2
].
type
?
"*"
:
""
})).
replace
(
Q
,
"$1"
),
c
,
e
>
i
&&
wa
(
a
.
slice
(
i
,
e
)),
f
>
e
&&
wa
(
a
=
a
.
slice
(
e
)),
f
>
e
&&
qa
(
a
))}
m
.
push
(
c
)}
return
sa
(
m
)}
function
xa
(
a
,
b
){
var
c
=
b
.
length
>
0
,
e
=
a
.
length
>
0
,
f
=
function
(
f
,
g
,
h
,
i
,
k
){
var
l
,
o
,
q
,
r
=
0
,
s
=
"0"
,
t
=
f
&&
[],
u
=
[],
v
=
j
,
x
=
f
||
e
&&
d
.
find
.
TAG
(
"*"
,
k
),
y
=
w
+=
null
==
v
?
1
:
Math
.
random
()
||
.
1
,
z
=
x
.
length
;
for
(
k
&&
(
j
=
g
===
n
||
g
||
k
);
s
!==
z
&&
null
!=
(
l
=
x
[
s
]);
s
++
){
if
(
e
&&
l
){
o
=
0
,
g
||
l
.
ownerDocument
===
n
||
(
m
(
l
),
h
=!
p
);
while
(
q
=
a
[
o
++
])
if
(
q
(
l
,
g
||
n
,
h
)){
i
.
push
(
l
);
break
}
k
&&
(
w
=
y
)}
c
&&
((
l
=!
q
&&
l
)
&&
r
--
,
f
&&
t
.
push
(
l
))}
if
(
r
+=
s
,
c
&&
s
!==
r
){
o
=
0
;
while
(
q
=
b
[
o
++
])
q
(
t
,
u
,
g
,
h
);
if
(
f
){
if
(
r
>
0
)
while
(
s
--
)
t
[
s
]
||
u
[
s
]
||
(
u
[
s
]
=
F
.
call
(
i
));
u
=
ua
(
u
)}
H
.
apply
(
i
,
u
),
k
&&!
f
&&
u
.
length
>
0
&&
r
+
b
.
length
>
1
&&
fa
.
uniqueSort
(
i
)}
return
k
&&
(
w
=
y
,
j
=
v
),
t
};
return
c
?
ha
(
f
):
f
}
return
h
=
fa
.
compile
=
function
(
a
,
b
){
var
c
,
d
=
[],
e
=
[],
f
=
A
[
a
+
" "
];
if
(
!
f
){
b
||
(
b
=
g
(
a
)),
c
=
b
.
length
;
while
(
c
--
)
f
=
wa
(
b
[
c
]),
f
[
u
]?
d
.
push
(
f
):
e
.
push
(
f
);
f
=
A
(
a
,
xa
(
e
,
d
)),
f
.
selector
=
a
}
return
f
},
i
=
fa
.
select
=
function
(
a
,
b
,
e
,
f
){
var
i
,
j
,
k
,
l
,
m
,
n
=
"function"
==
typeof
a
&&
a
,
o
=!
f
&&
g
(
a
=
n
.
selector
||
a
);
if
(
e
=
e
||
[],
1
===
o
.
length
){
if
(
j
=
o
[
0
]
=
o
[
0
].
slice
(
0
),
j
.
length
>
2
&&
"ID"
===
(
k
=
j
[
0
]).
type
&&
c
.
getById
&&
9
===
b
.
nodeType
&&
p
&&
d
.
relative
[
j
[
1
].
type
]){
if
(
b
=
(
d
.
find
.
ID
(
k
.
matches
[
0
].
replace
(
ba
,
ca
),
b
)
||
[])[
0
],
!
b
)
return
e
;
n
&&
(
b
=
b
.
parentNode
),
a
=
a
.
slice
(
j
.
shift
().
value
.
length
)}
i
=
W
.
needsContext
.
test
(
a
)?
0
:
j
.
length
;
while
(
i
--
){
if
(
k
=
j
[
i
],
d
.
relative
[
l
=
k
.
type
])
break
;
if
((
m
=
d
.
find
[
l
])
&&
(
f
=
m
(
k
.
matches
[
0
].
replace
(
ba
,
ca
),
_
.
test
(
j
[
0
].
type
)
&&
oa
(
b
.
parentNode
)
||
b
))){
if
(
j
.
splice
(
i
,
1
),
a
=
f
.
length
&&
qa
(
j
),
!
a
)
return
H
.
apply
(
e
,
f
),
e
;
break
}}}
return
(
n
||
h
(
a
,
o
))(
f
,
b
,
!
p
,
e
,
!
b
||
_
.
test
(
a
)
&&
oa
(
b
.
parentNode
)
||
b
),
e
},
c
.
sortStable
=
u
.
split
(
""
).
sort
(
B
).
join
(
""
)
===
u
,
c
.
detectDuplicates
=!!
l
,
m
(),
c
.
sortDetached
=
ia
(
function
(
a
){
return
1
&
a
.
compareDocumentPosition
(
n
.
createElement
(
"div"
))}),
ia
(
function
(
a
){
return
a
.
innerHTML
=
"<a href='#'></a>"
,
"#"
===
a
.
firstChild
.
getAttribute
(
"href"
)})
||
ja
(
"type|href|height|width"
,
function
(
a
,
b
,
c
){
return
c
?
void
0
:
a
.
getAttribute
(
b
,
"type"
===
b
.
toLowerCase
()?
1
:
2
)}),
c
.
attributes
&&
ia
(
function
(
a
){
return
a
.
innerHTML
=
"<input/>"
,
a
.
firstChild
.
setAttribute
(
"value"
,
""
),
""
===
a
.
firstChild
.
getAttribute
(
"value"
)})
||
ja
(
"value"
,
function
(
a
,
b
,
c
){
return
c
||
"input"
!==
a
.
nodeName
.
toLowerCase
()?
void
0
:
a
.
defaultValue
}),
ia
(
function
(
a
){
return
null
==
a
.
getAttribute
(
"disabled"
)})
||
ja
(
K
,
function
(
a
,
b
,
c
){
var
d
;
return
c
?
void
0
:
a
[
b
]
===!
0
?
b
.
toLowerCase
():(
d
=
a
.
getAttributeNode
(
b
))
&&
d
.
specified
?
d
.
value
:
null
}),
fa
}(
a
);
n
.
find
=
t
,
n
.
expr
=
t
.
selectors
,
n
.
expr
[
":"
]
=
n
.
expr
.
pseudos
,
n
.
uniqueSort
=
n
.
unique
=
t
.
uniqueSort
,
n
.
text
=
t
.
getText
,
n
.
isXMLDoc
=
t
.
isXML
,
n
.
contains
=
t
.
contains
;
var
u
=
function
(
a
,
b
,
c
){
var
d
=
[],
e
=
void
0
!==
c
;
while
((
a
=
a
[
b
])
&&
9
!==
a
.
nodeType
)
if
(
1
===
a
.
nodeType
){
if
(
e
&&
n
(
a
).
is
(
c
))
break
;
d
.
push
(
a
)}
return
d
},
v
=
function
(
a
,
b
){
for
(
var
c
=
[];
a
;
a
=
a
.
nextSibling
)
1
===
a
.
nodeType
&&
a
!==
b
&&
c
.
push
(
a
);
return
c
},
w
=
n
.
expr
.
match
.
needsContext
,
x
=
/^<
([\w
-
]
+
)\s
*
\/?
>
(?:
<
\/\1
>|
)
$/
,
y
=
/^.
[^
:#
\[\.
,
]
*$/
;
function
z
(
a
,
b
,
c
){
if
(
n
.
isFunction
(
b
))
return
n
.
grep
(
a
,
function
(
a
,
d
){
return
!!
b
.
call
(
a
,
d
,
a
)
!==
c
});
if
(
b
.
nodeType
)
return
n
.
grep
(
a
,
function
(
a
){
return
a
===
b
!==
c
});
if
(
"string"
==
typeof
b
){
if
(
y
.
test
(
b
))
return
n
.
filter
(
b
,
a
,
c
);
b
=
n
.
filter
(
b
,
a
)}
return
n
.
grep
(
a
,
function
(
a
){
return
n
.
inArray
(
a
,
b
)
>-
1
!==
c
})}
n
.
filter
=
function
(
a
,
b
,
c
){
var
d
=
b
[
0
];
return
c
&&
(
a
=
":not("
+
a
+
")"
),
1
===
b
.
length
&&
1
===
d
.
nodeType
?
n
.
find
.
matchesSelector
(
d
,
a
)?[
d
]:[]:
n
.
find
.
matches
(
a
,
n
.
grep
(
b
,
function
(
a
){
return
1
===
a
.
nodeType
}))},
n
.
fn
.
extend
({
find
:
function
(
a
){
var
b
,
c
=
[],
d
=
this
,
e
=
d
.
length
;
if
(
"string"
!=
typeof
a
)
return
this
.
pushStack
(
n
(
a
).
filter
(
function
(){
for
(
b
=
0
;
e
>
b
;
b
++
)
if
(
n
.
contains
(
d
[
b
],
this
))
return
!
0
}));
for
(
b
=
0
;
e
>
b
;
b
++
)
n
.
find
(
a
,
d
[
b
],
c
);
return
c
=
this
.
pushStack
(
e
>
1
?
n
.
unique
(
c
):
c
),
c
.
selector
=
this
.
selector
?
this
.
selector
+
" "
+
a
:
a
,
c
},
filter
:
function
(
a
){
return
this
.
pushStack
(
z
(
this
,
a
||
[],
!
1
))},
not
:
function
(
a
){
return
this
.
pushStack
(
z
(
this
,
a
||
[],
!
0
))},
is
:
function
(
a
){
return
!!
z
(
this
,
"string"
==
typeof
a
&&
w
.
test
(
a
)?
n
(
a
):
a
||
[],
!
1
).
length
}});
var
A
,
B
=
/^
(?:\s
*
(
<
[\w\W]
+>
)[^
>
]
*|#
([\w
-
]
*
))
$/
,
C
=
n
.
fn
.
init
=
function
(
a
,
b
,
c
){
var
e
,
f
;
if
(
!
a
)
return
this
;
if
(
c
=
c
||
A
,
"string"
==
typeof
a
){
if
(
e
=
"<"
===
a
.
charAt
(
0
)
&&
">"
===
a
.
charAt
(
a
.
length
-
1
)
&&
a
.
length
>=
3
?[
null
,
a
,
null
]:
B
.
exec
(
a
),
!
e
||!
e
[
1
]
&&
b
)
return
!
b
||
b
.
jquery
?(
b
||
c
).
find
(
a
):
this
.
constructor
(
b
).
find
(
a
);
if
(
e
[
1
]){
if
(
b
=
b
instanceof
n
?
b
[
0
]:
b
,
n
.
merge
(
this
,
n
.
parseHTML
(
e
[
1
],
b
&&
b
.
nodeType
?
b
.
ownerDocument
||
b
:
d
,
!
0
)),
x
.
test
(
e
[
1
])
&&
n
.
isPlainObject
(
b
))
for
(
e
in
b
)
n
.
isFunction
(
this
[
e
])?
this
[
e
](
b
[
e
]):
this
.
attr
(
e
,
b
[
e
]);
return
this
}
if
(
f
=
d
.
getElementById
(
e
[
2
]),
f
&&
f
.
parentNode
){
if
(
f
.
id
!==
e
[
2
])
return
A
.
find
(
a
);
this
.
length
=
1
,
this
[
0
]
=
f
}
return
this
.
context
=
d
,
this
.
selector
=
a
,
this
}
return
a
.
nodeType
?(
this
.
context
=
this
[
0
]
=
a
,
this
.
length
=
1
,
this
):
n
.
isFunction
(
a
)?
"undefined"
!=
typeof
c
.
ready
?
c
.
ready
(
a
):
a
(
n
):(
void
0
!==
a
.
selector
&&
(
this
.
selector
=
a
.
selector
,
this
.
context
=
a
.
context
),
n
.
makeArray
(
a
,
this
))};
C
.
prototype
=
n
.
fn
,
A
=
n
(
d
);
var
D
=
/^
(?:
parents|prev
(?:
Until|All
))
/
,
E
=
{
children
:
!
0
,
contents
:
!
0
,
next
:
!
0
,
prev
:
!
0
};
n
.
fn
.
extend
({
has
:
function
(
a
){
var
b
,
c
=
n
(
a
,
this
),
d
=
c
.
length
;
return
this
.
filter
(
function
(){
for
(
b
=
0
;
d
>
b
;
b
++
)
if
(
n
.
contains
(
this
,
c
[
b
]))
return
!
0
})},
closest
:
function
(
a
,
b
){
for
(
var
c
,
d
=
0
,
e
=
this
.
length
,
f
=
[],
g
=
w
.
test
(
a
)
||
"string"
!=
typeof
a
?
n
(
a
,
b
||
this
.
context
):
0
;
e
>
d
;
d
++
)
for
(
c
=
this
[
d
];
c
&&
c
!==
b
;
c
=
c
.
parentNode
)
if
(
c
.
nodeType
<
11
&&
(
g
?
g
.
index
(
c
)
>-
1
:
1
===
c
.
nodeType
&&
n
.
find
.
matchesSelector
(
c
,
a
))){
f
.
push
(
c
);
break
}
return
this
.
pushStack
(
f
.
length
>
1
?
n
.
uniqueSort
(
f
):
f
)},
index
:
function
(
a
){
return
a
?
"string"
==
typeof
a
?
n
.
inArray
(
this
[
0
],
n
(
a
)):
n
.
inArray
(
a
.
jquery
?
a
[
0
]:
a
,
this
):
this
[
0
]
&&
this
[
0
].
parentNode
?
this
.
first
().
prevAll
().
length
:
-
1
},
add
:
function
(
a
,
b
){
return
this
.
pushStack
(
n
.
uniqueSort
(
n
.
merge
(
this
.
get
(),
n
(
a
,
b
))))},
addBack
:
function
(
a
){
return
this
.
add
(
null
==
a
?
this
.
prevObject
:
this
.
prevObject
.
filter
(
a
))}});
function
F
(
a
,
b
){
do
a
=
a
[
b
];
while
(
a
&&
1
!==
a
.
nodeType
);
return
a
}
n
.
each
({
parent
:
function
(
a
){
var
b
=
a
.
parentNode
;
return
b
&&
11
!==
b
.
nodeType
?
b
:
null
},
parents
:
function
(
a
){
return
u
(
a
,
"parentNode"
)},
parentsUntil
:
function
(
a
,
b
,
c
){
return
u
(
a
,
"parentNode"
,
c
)},
next
:
function
(
a
){
return
F
(
a
,
"nextSibling"
)},
prev
:
function
(
a
){
return
F
(
a
,
"previousSibling"
)},
nextAll
:
function
(
a
){
return
u
(
a
,
"nextSibling"
)},
prevAll
:
function
(
a
){
return
u
(
a
,
"previousSibling"
)},
nextUntil
:
function
(
a
,
b
,
c
){
return
u
(
a
,
"nextSibling"
,
c
)},
prevUntil
:
function
(
a
,
b
,
c
){
return
u
(
a
,
"previousSibling"
,
c
)},
siblings
:
function
(
a
){
return
v
((
a
.
parentNode
||
{}).
firstChild
,
a
)},
children
:
function
(
a
){
return
v
(
a
.
firstChild
)},
contents
:
function
(
a
){
return
n
.
nodeName
(
a
,
"iframe"
)?
a
.
contentDocument
||
a
.
contentWindow
.
document
:
n
.
merge
([],
a
.
childNodes
)}},
function
(
a
,
b
){
n
.
fn
[
a
]
=
function
(
c
,
d
){
var
e
=
n
.
map
(
this
,
b
,
c
);
return
"Until"
!==
a
.
slice
(
-
5
)
&&
(
d
=
c
),
d
&&
"string"
==
typeof
d
&&
(
e
=
n
.
filter
(
d
,
e
)),
this
.
length
>
1
&&
(
E
[
a
]
||
(
e
=
n
.
uniqueSort
(
e
)),
D
.
test
(
a
)
&&
(
e
=
e
.
reverse
())),
this
.
pushStack
(
e
)}});
var
G
=
/
\S
+/g
;
function
H
(
a
){
var
b
=
{};
return
n
.
each
(
a
.
match
(
G
)
||
[],
function
(
a
,
c
){
b
[
c
]
=!
0
}),
b
}
n
.
Callbacks
=
function
(
a
){
a
=
"string"
==
typeof
a
?
H
(
a
):
n
.
extend
({},
a
);
var
b
,
c
,
d
,
e
,
f
=
[],
g
=
[],
h
=-
1
,
i
=
function
(){
for
(
e
=
a
.
once
,
d
=
b
=!
0
;
g
.
length
;
h
=-
1
){
c
=
g
.
shift
();
while
(
++
h
<
f
.
length
)
f
[
h
].
apply
(
c
[
0
],
c
[
1
])
===!
1
&&
a
.
stopOnFalse
&&
(
h
=
f
.
length
,
c
=!
1
)}
a
.
memory
||
(
c
=!
1
),
b
=!
1
,
e
&&
(
f
=
c
?[]:
""
)},
j
=
{
add
:
function
(){
return
f
&&
(
c
&&!
b
&&
(
h
=
f
.
length
-
1
,
g
.
push
(
c
)),
function
d
(
b
){
n
.
each
(
b
,
function
(
b
,
c
){
n
.
isFunction
(
c
)?
a
.
unique
&&
j
.
has
(
c
)
||
f
.
push
(
c
):
c
&&
c
.
length
&&
"string"
!==
n
.
type
(
c
)
&&
d
(
c
)})}(
arguments
),
c
&&!
b
&&
i
()),
this
},
remove
:
function
(){
return
n
.
each
(
arguments
,
function
(
a
,
b
){
var
c
;
while
((
c
=
n
.
inArray
(
b
,
f
,
c
))
>-
1
)
f
.
splice
(
c
,
1
),
h
>=
c
&&
h
--
}),
this
},
has
:
function
(
a
){
return
a
?
n
.
inArray
(
a
,
f
)
>-
1
:
f
.
length
>
0
},
empty
:
function
(){
return
f
&&
(
f
=
[]),
this
},
disable
:
function
(){
return
e
=
g
=
[],
f
=
c
=
""
,
this
},
disabled
:
function
(){
return
!
f
},
lock
:
function
(){
return
e
=!
0
,
c
||
j
.
disable
(),
this
},
locked
:
function
(){
return
!!
e
},
fireWith
:
function
(
a
,
c
){
return
e
||
(
c
=
c
||
[],
c
=
[
a
,
c
.
slice
?
c
.
slice
():
c
],
g
.
push
(
c
),
b
||
i
()),
this
},
fire
:
function
(){
return
j
.
fireWith
(
this
,
arguments
),
this
},
fired
:
function
(){
return
!!
d
}};
return
j
},
n
.
extend
({
Deferred
:
function
(
a
){
var
b
=
[[
"resolve"
,
"done"
,
n
.
Callbacks
(
"once memory"
),
"resolved"
],[
"reject"
,
"fail"
,
n
.
Callbacks
(
"once memory"
),
"rejected"
],[
"notify"
,
"progress"
,
n
.
Callbacks
(
"memory"
)]],
c
=
"pending"
,
d
=
{
state
:
function
(){
return
c
},
always
:
function
(){
return
e
.
done
(
arguments
).
fail
(
arguments
),
this
},
then
:
function
(){
var
a
=
arguments
;
return
n
.
Deferred
(
function
(
c
){
n
.
each
(
b
,
function
(
b
,
f
){
var
g
=
n
.
isFunction
(
a
[
b
])
&&
a
[
b
];
e
[
f
[
1
]](
function
(){
var
a
=
g
&&
g
.
apply
(
this
,
arguments
);
a
&&
n
.
isFunction
(
a
.
promise
)?
a
.
promise
().
progress
(
c
.
notify
).
done
(
c
.
resolve
).
fail
(
c
.
reject
):
c
[
f
[
0
]
+
"With"
](
this
===
d
?
c
.
promise
():
this
,
g
?[
a
]:
arguments
)})}),
a
=
null
}).
promise
()},
promise
:
function
(
a
){
return
null
!=
a
?
n
.
extend
(
a
,
d
):
d
}},
e
=
{};
return
d
.
pipe
=
d
.
then
,
n
.
each
(
b
,
function
(
a
,
f
){
var
g
=
f
[
2
],
h
=
f
[
3
];
d
[
f
[
1
]]
=
g
.
add
,
h
&&
g
.
add
(
function
(){
c
=
h
},
b
[
1
^
a
][
2
].
disable
,
b
[
2
][
2
].
lock
),
e
[
f
[
0
]]
=
function
(){
return
e
[
f
[
0
]
+
"With"
](
this
===
e
?
d
:
this
,
arguments
),
this
},
e
[
f
[
0
]
+
"With"
]
=
g
.
fireWith
}),
d
.
promise
(
e
),
a
&&
a
.
call
(
e
,
e
),
e
},
when
:
function
(
a
){
var
b
=
0
,
c
=
e
.
call
(
arguments
),
d
=
c
.
length
,
f
=
1
!==
d
||
a
&&
n
.
isFunction
(
a
.
promise
)?
d
:
0
,
g
=
1
===
f
?
a
:
n
.
Deferred
(),
h
=
function
(
a
,
b
,
c
){
return
function
(
d
){
b
[
a
]
=
this
,
c
[
a
]
=
arguments
.
length
>
1
?
e
.
call
(
arguments
):
d
,
c
===
i
?
g
.
notifyWith
(
b
,
c
):
--
f
||
g
.
resolveWith
(
b
,
c
)}},
i
,
j
,
k
;
if
(
d
>
1
)
for
(
i
=
new
Array
(
d
),
j
=
new
Array
(
d
),
k
=
new
Array
(
d
);
d
>
b
;
b
++
)
c
[
b
]
&&
n
.
isFunction
(
c
[
b
].
promise
)?
c
[
b
].
promise
().
progress
(
h
(
b
,
j
,
i
)).
done
(
h
(
b
,
k
,
c
)).
fail
(
g
.
reject
):
--
f
;
return
f
||
g
.
resolveWith
(
k
,
c
),
g
.
promise
()}});
var
I
;
n
.
fn
.
ready
=
function
(
a
){
return
n
.
ready
.
promise
().
done
(
a
),
this
},
n
.
extend
({
isReady
:
!
1
,
readyWait
:
1
,
holdReady
:
function
(
a
){
a
?
n
.
readyWait
++
:
n
.
ready
(
!
0
)},
ready
:
function
(
a
){(
a
===!
0
?
--
n
.
readyWait
:
n
.
isReady
)
||
(
n
.
isReady
=!
0
,
a
!==!
0
&&--
n
.
readyWait
>
0
||
(
I
.
resolveWith
(
d
,[
n
]),
n
.
fn
.
triggerHandler
&&
(
n
(
d
).
triggerHandler
(
"ready"
),
n
(
d
).
off
(
"ready"
))))}});
function
J
(){
d
.
addEventListener
?(
d
.
removeEventListener
(
"DOMContentLoaded"
,
K
),
a
.
removeEventListener
(
"load"
,
K
)):(
d
.
detachEvent
(
"onreadystatechange"
,
K
),
a
.
detachEvent
(
"onload"
,
K
))}
function
K
(){(
d
.
addEventListener
||
"load"
===
a
.
event
.
type
||
"complete"
===
d
.
readyState
)
&&
(
J
(),
n
.
ready
())}
n
.
ready
.
promise
=
function
(
b
){
if
(
!
I
)
if
(
I
=
n
.
Deferred
(),
"complete"
===
d
.
readyState
||
"loading"
!==
d
.
readyState
&&!
d
.
documentElement
.
doScroll
)
a
.
setTimeout
(
n
.
ready
);
else
if
(
d
.
addEventListener
)
d
.
addEventListener
(
"DOMContentLoaded"
,
K
),
a
.
addEventListener
(
"load"
,
K
);
else
{
d
.
attachEvent
(
"onreadystatechange"
,
K
),
a
.
attachEvent
(
"onload"
,
K
);
var
c
=!
1
;
try
{
c
=
null
==
a
.
frameElement
&&
d
.
documentElement
}
catch
(
e
){}
c
&&
c
.
doScroll
&&!
function
f
(){
if
(
!
n
.
isReady
){
try
{
c
.
doScroll
(
"left"
)}
catch
(
b
){
return
a
.
setTimeout
(
f
,
50
)}
J
(),
n
.
ready
()}}()}
return
I
.
promise
(
b
)},
n
.
ready
.
promise
();
var
L
;
for
(
L
in
n
(
l
))
break
;
l
.
ownFirst
=
"0"
===
L
,
l
.
inlineBlockNeedsLayout
=!
1
,
n
(
function
(){
var
a
,
b
,
c
,
e
;
c
=
d
.
getElementsByTagName
(
"body"
)[
0
],
c
&&
c
.
style
&&
(
b
=
d
.
createElement
(
"div"
),
e
=
d
.
createElement
(
"div"
),
e
.
style
.
cssText
=
"position:absolute;border:0;width:0;height:0;top:0;left:-9999px"
,
c
.
appendChild
(
e
).
appendChild
(
b
),
"undefined"
!=
typeof
b
.
style
.
zoom
&&
(
b
.
style
.
cssText
=
"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"
,
l
.
inlineBlockNeedsLayout
=
a
=
3
===
b
.
offsetWidth
,
a
&&
(
c
.
style
.
zoom
=
1
)),
c
.
removeChild
(
e
))}),
function
(){
var
a
=
d
.
createElement
(
"div"
);
l
.
deleteExpando
=!
0
;
try
{
delete
a
.
test
}
catch
(
b
){
l
.
deleteExpando
=!
1
}
a
=
null
}();
var
M
=
function
(
a
){
var
b
=
n
.
noData
[(
a
.
nodeName
+
" "
).
toLowerCase
()],
c
=+
a
.
nodeType
||
1
;
return
1
!==
c
&&
9
!==
c
?
!
1
:
!
b
||
b
!==!
0
&&
a
.
getAttribute
(
"classid"
)
===
b
},
N
=
/^
(?:\{[\w\W]
*
\}
|
\[[\w\W]
*
\])
$/
,
O
=
/
([
A-Z
])
/g
;
function
P
(
a
,
b
,
c
){
if
(
void
0
===
c
&&
1
===
a
.
nodeType
){
var
d
=
"data-"
+
b
.
replace
(
O
,
"-$1"
).
toLowerCase
();
if
(
c
=
a
.
getAttribute
(
d
),
"string"
==
typeof
c
){
try
{
c
=
"true"
===
c
?
!
0
:
"false"
===
c
?
!
1
:
"null"
===
c
?
null
:
+
c
+
""
===
c
?
+
c
:
N
.
test
(
c
)?
n
.
parseJSON
(
c
):
c
}
catch
(
e
){}
n
.
data
(
a
,
b
,
c
)}
else
c
=
void
0
;
}
return
c
}
function
Q
(
a
){
var
b
;
for
(
b
in
a
)
if
((
"data"
!==
b
||!
n
.
isEmptyObject
(
a
[
b
]))
&&
"toJSON"
!==
b
)
return
!
1
;
return
!
0
}
function
R
(
a
,
b
,
d
,
e
){
if
(
M
(
a
)){
var
f
,
g
,
h
=
n
.
expando
,
i
=
a
.
nodeType
,
j
=
i
?
n
.
cache
:
a
,
k
=
i
?
a
[
h
]:
a
[
h
]
&&
h
;
if
(
k
&&
j
[
k
]
&&
(
e
||
j
[
k
].
data
)
||
void
0
!==
d
||
"string"
!=
typeof
b
)
return
k
||
(
k
=
i
?
a
[
h
]
=
c
.
pop
()
||
n
.
guid
++
:
h
),
j
[
k
]
||
(
j
[
k
]
=
i
?{}:{
toJSON
:
n
.
noop
}),
"object"
!=
typeof
b
&&
"function"
!=
typeof
b
||
(
e
?
j
[
k
]
=
n
.
extend
(
j
[
k
],
b
):
j
[
k
].
data
=
n
.
extend
(
j
[
k
].
data
,
b
)),
g
=
j
[
k
],
e
||
(
g
.
data
||
(
g
.
data
=
{}),
g
=
g
.
data
),
void
0
!==
d
&&
(
g
[
n
.
camelCase
(
b
)]
=
d
),
"string"
==
typeof
b
?(
f
=
g
[
b
],
null
==
f
&&
(
f
=
g
[
n
.
camelCase
(
b
)])):
f
=
g
,
f
}}
function
S
(
a
,
b
,
c
){
if
(
M
(
a
)){
var
d
,
e
,
f
=
a
.
nodeType
,
g
=
f
?
n
.
cache
:
a
,
h
=
f
?
a
[
n
.
expando
]:
n
.
expando
;
if
(
g
[
h
]){
if
(
b
&&
(
d
=
c
?
g
[
h
]:
g
[
h
].
data
)){
n
.
isArray
(
b
)?
b
=
b
.
concat
(
n
.
map
(
b
,
n
.
camelCase
)):
b
in
d
?
b
=
[
b
]:(
b
=
n
.
camelCase
(
b
),
b
=
b
in
d
?[
b
]:
b
.
split
(
" "
)),
e
=
b
.
length
;
while
(
e
--
)
delete
d
[
b
[
e
]];
if
(
c
?
!
Q
(
d
):
!
n
.
isEmptyObject
(
d
))
return
}(
c
||
(
delete
g
[
h
].
data
,
Q
(
g
[
h
])))
&&
(
f
?
n
.
cleanData
([
a
],
!
0
):
l
.
deleteExpando
||
g
!=
g
.
window
?
delete
g
[
h
]:
g
[
h
]
=
void
0
)}}}
n
.
extend
({
cache
:{},
noData
:{
"applet "
:
!
0
,
"embed "
:
!
0
,
"object "
:
"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
},
hasData
:
function
(
a
){
return
a
=
a
.
nodeType
?
n
.
cache
[
a
[
n
.
expando
]]:
a
[
n
.
expando
],
!!
a
&&!
Q
(
a
)},
data
:
function
(
a
,
b
,
c
){
return
R
(
a
,
b
,
c
)},
removeData
:
function
(
a
,
b
){
return
S
(
a
,
b
)},
_data
:
function
(
a
,
b
,
c
){
return
R
(
a
,
b
,
c
,
!
0
)},
_removeData
:
function
(
a
,
b
){
return
S
(
a
,
b
,
!
0
)}}),
n
.
fn
.
extend
({
data
:
function
(
a
,
b
){
var
c
,
d
,
e
,
f
=
this
[
0
],
g
=
f
&&
f
.
attributes
;
if
(
void
0
===
a
){
if
(
this
.
length
&&
(
e
=
n
.
data
(
f
),
1
===
f
.
nodeType
&&!
n
.
_data
(
f
,
"parsedAttrs"
))){
c
=
g
.
length
;
while
(
c
--
)
g
[
c
]
&&
(
d
=
g
[
c
].
name
,
0
===
d
.
indexOf
(
"data-"
)
&&
(
d
=
n
.
camelCase
(
d
.
slice
(
5
)),
P
(
f
,
d
,
e
[
d
])));
n
.
_data
(
f
,
"parsedAttrs"
,
!
0
)}
return
e
}
return
"object"
==
typeof
a
?
this
.
each
(
function
(){
n
.
data
(
this
,
a
)}):
arguments
.
length
>
1
?
this
.
each
(
function
(){
n
.
data
(
this
,
a
,
b
)}):
f
?
P
(
f
,
a
,
n
.
data
(
f
,
a
)):
void
0
},
removeData
:
function
(
a
){
return
this
.
each
(
function
(){
n
.
removeData
(
this
,
a
)})}}),
n
.
extend
({
queue
:
function
(
a
,
b
,
c
){
var
d
;
return
a
?(
b
=
(
b
||
"fx"
)
+
"queue"
,
d
=
n
.
_data
(
a
,
b
),
c
&&
(
!
d
||
n
.
isArray
(
c
)?
d
=
n
.
_data
(
a
,
b
,
n
.
makeArray
(
c
)):
d
.
push
(
c
)),
d
||
[]):
void
0
},
dequeue
:
function
(
a
,
b
){
b
=
b
||
"fx"
;
var
c
=
n
.
queue
(
a
,
b
),
d
=
c
.
length
,
e
=
c
.
shift
(),
f
=
n
.
_queueHooks
(
a
,
b
),
g
=
function
(){
n
.
dequeue
(
a
,
b
)};
"inprogress"
===
e
&&
(
e
=
c
.
shift
(),
d
--
),
e
&&
(
"fx"
===
b
&&
c
.
unshift
(
"inprogress"
),
delete
f
.
stop
,
e
.
call
(
a
,
g
,
f
)),
!
d
&&
f
&&
f
.
empty
.
fire
()},
_queueHooks
:
function
(
a
,
b
){
var
c
=
b
+
"queueHooks"
;
return
n
.
_data
(
a
,
c
)
||
n
.
_data
(
a
,
c
,{
empty
:
n
.
Callbacks
(
"once memory"
).
add
(
function
(){
n
.
_removeData
(
a
,
b
+
"queue"
),
n
.
_removeData
(
a
,
c
)})})}}),
n
.
fn
.
extend
({
queue
:
function
(
a
,
b
){
var
c
=
2
;
return
"string"
!=
typeof
a
&&
(
b
=
a
,
a
=
"fx"
,
c
--
),
arguments
.
length
<
c
?
n
.
queue
(
this
[
0
],
a
):
void
0
===
b
?
this
:
this
.
each
(
function
(){
var
c
=
n
.
queue
(
this
,
a
,
b
);
n
.
_queueHooks
(
this
,
a
),
"fx"
===
a
&&
"inprogress"
!==
c
[
0
]
&&
n
.
dequeue
(
this
,
a
)})},
dequeue
:
function
(
a
){
return
this
.
each
(
function
(){
n
.
dequeue
(
this
,
a
)})},
clearQueue
:
function
(
a
){
return
this
.
queue
(
a
||
"fx"
,[])},
promise
:
function
(
a
,
b
){
var
c
,
d
=
1
,
e
=
n
.
Deferred
(),
f
=
this
,
g
=
this
.
length
,
h
=
function
(){
--
d
||
e
.
resolveWith
(
f
,[
f
])};
"string"
!=
typeof
a
&&
(
b
=
a
,
a
=
void
0
),
a
=
a
||
"fx"
;
while
(
g
--
)
c
=
n
.
_data
(
f
[
g
],
a
+
"queueHooks"
),
c
&&
c
.
empty
&&
(
d
++
,
c
.
empty
.
add
(
h
));
return
h
(),
e
.
promise
(
b
)}}),
function
(){
var
a
;
l
.
shrinkWrapBlocks
=
function
(){
if
(
null
!=
a
)
return
a
;
a
=!
1
;
var
b
,
c
,
e
;
return
c
=
d
.
getElementsByTagName
(
"body"
)[
0
],
c
&&
c
.
style
?(
b
=
d
.
createElement
(
"div"
),
e
=
d
.
createElement
(
"div"
),
e
.
style
.
cssText
=
"position:absolute;border:0;width:0;height:0;top:0;left:-9999px"
,
c
.
appendChild
(
e
).
appendChild
(
b
),
"undefined"
!=
typeof
b
.
style
.
zoom
&&
(
b
.
style
.
cssText
=
"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1"
,
b
.
appendChild
(
d
.
createElement
(
"div"
)).
style
.
width
=
"5px"
,
a
=
3
!==
b
.
offsetWidth
),
c
.
removeChild
(
e
),
a
):
void
0
}}();
var
T
=
/
[
+-
]?(?:\d
*
\.
|
)\d
+
(?:[
eE
][
+-
]?\d
+|
)
/
.
source
,
U
=
new
RegExp
(
"^(?:([+-])=|)("
+
T
+
")([a-z%]*)$"
,
"i"
),
V
=
[
"Top"
,
"Right"
,
"Bottom"
,
"Left"
],
W
=
function
(
a
,
b
){
return
a
=
b
||
a
,
"none"
===
n
.
css
(
a
,
"display"
)
||!
n
.
contains
(
a
.
ownerDocument
,
a
)};
function
X
(
a
,
b
,
c
,
d
){
var
e
,
f
=
1
,
g
=
20
,
h
=
d
?
function
(){
return
d
.
cur
()}:
function
(){
return
n
.
css
(
a
,
b
,
""
)},
i
=
h
(),
j
=
c
&&
c
[
3
]
||
(
n
.
cssNumber
[
b
]?
""
:
"px"
),
k
=
(
n
.
cssNumber
[
b
]
||
"px"
!==
j
&&+
i
)
&&
U
.
exec
(
n
.
css
(
a
,
b
));
if
(
k
&&
k
[
3
]
!==
j
){
j
=
j
||
k
[
3
],
c
=
c
||
[],
k
=+
i
||
1
;
do
f
=
f
||
".5"
,
k
/=
f
,
n
.
style
(
a
,
b
,
k
+
j
);
while
(
f
!==
(
f
=
h
()
/
i
)
&&
1
!==
f
&&--
g
)}
return
c
&&
(
k
=+
k
||+
i
||
0
,
e
=
c
[
1
]?
k
+
(
c
[
1
]
+
1
)
*
c
[
2
]:
+
c
[
2
],
d
&&
(
d
.
unit
=
j
,
d
.
start
=
k
,
d
.
end
=
e
)),
e
}
var
Y
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
g
){
var
h
=
0
,
i
=
a
.
length
,
j
=
null
==
c
;
if
(
"object"
===
n
.
type
(
c
)){
e
=!
0
;
for
(
h
in
c
)
Y
(
a
,
b
,
h
,
c
[
h
],
!
0
,
f
,
g
)}
else
if
(
void
0
!==
d
&&
(
e
=!
0
,
n
.
isFunction
(
d
)
||
(
g
=!
0
),
j
&&
(
g
?(
b
.
call
(
a
,
d
),
b
=
null
):(
j
=
b
,
b
=
function
(
a
,
b
,
c
){
return
j
.
call
(
n
(
a
),
c
)})),
b
))
for
(;
i
>
h
;
h
++
)
b
(
a
[
h
],
c
,
g
?
d
:
d
.
call
(
a
[
h
],
h
,
b
(
a
[
h
],
c
)));
return
e
?
a
:
j
?
b
.
call
(
a
):
i
?
b
(
a
[
0
],
c
):
f
},
Z
=
/^
(?:
checkbox|radio
)
$/i
,
$
=
/<
([\w
:-
]
+
)
/
,
_
=
/^$|
\/(?:
java|ecma
)
script/i
,
aa
=
/^
\s
+/
,
ba
=
"abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video"
;
function
ca
(
a
){
var
b
=
ba
.
split
(
"|"
),
c
=
a
.
createDocumentFragment
();
if
(
c
.
createElement
)
while
(
b
.
length
)
c
.
createElement
(
b
.
pop
());
return
c
}
!
function
(){
var
a
=
d
.
createElement
(
"div"
),
b
=
d
.
createDocumentFragment
(),
c
=
d
.
createElement
(
"input"
);
a
.
innerHTML
=
" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"
,
l
.
leadingWhitespace
=
3
===
a
.
firstChild
.
nodeType
,
l
.
tbody
=!
a
.
getElementsByTagName
(
"tbody"
).
length
,
l
.
htmlSerialize
=!!
a
.
getElementsByTagName
(
"link"
).
length
,
l
.
html5Clone
=
"<:nav></:nav>"
!==
d
.
createElement
(
"nav"
).
cloneNode
(
!
0
).
outerHTML
,
c
.
type
=
"checkbox"
,
c
.
checked
=!
0
,
b
.
appendChild
(
c
),
l
.
appendChecked
=
c
.
checked
,
a
.
innerHTML
=
"<textarea>x</textarea>"
,
l
.
noCloneChecked
=!!
a
.
cloneNode
(
!
0
).
lastChild
.
defaultValue
,
b
.
appendChild
(
a
),
c
=
d
.
createElement
(
"input"
),
c
.
setAttribute
(
"type"
,
"radio"
),
c
.
setAttribute
(
"checked"
,
"checked"
),
c
.
setAttribute
(
"name"
,
"t"
),
a
.
appendChild
(
c
),
l
.
checkClone
=
a
.
cloneNode
(
!
0
).
cloneNode
(
!
0
).
lastChild
.
checked
,
l
.
noCloneEvent
=!!
a
.
addEventListener
,
a
[
n
.
expando
]
=
1
,
l
.
attributes
=!
a
.
getAttribute
(
n
.
expando
)}();
var
da
=
{
option
:[
1
,
"<select multiple='multiple'>"
,
"</select>"
],
legend
:[
1
,
"<fieldset>"
,
"</fieldset>"
],
area
:[
1
,
"<map>"
,
"</map>"
],
param
:[
1
,
"<object>"
,
"</object>"
],
thead
:[
1
,
"<table>"
,
"</table>"
],
tr
:[
2
,
"<table><tbody>"
,
"</tbody></table>"
],
col
:[
2
,
"<table><tbody></tbody><colgroup>"
,
"</colgroup></table>"
],
td
:[
3
,
"<table><tbody><tr>"
,
"</tr></tbody></table>"
],
_default
:
l
.
htmlSerialize
?[
0
,
""
,
""
]:[
1
,
"X<div>"
,
"</div>"
]};
da
.
optgroup
=
da
.
option
,
da
.
tbody
=
da
.
tfoot
=
da
.
colgroup
=
da
.
caption
=
da
.
thead
,
da
.
th
=
da
.
td
;
function
ea
(
a
,
b
){
var
c
,
d
,
e
=
0
,
f
=
"undefined"
!=
typeof
a
.
getElementsByTagName
?
a
.
getElementsByTagName
(
b
||
"*"
):
"undefined"
!=
typeof
a
.
querySelectorAll
?
a
.
querySelectorAll
(
b
||
"*"
):
void
0
;
if
(
!
f
)
for
(
f
=
[],
c
=
a
.
childNodes
||
a
;
null
!=
(
d
=
c
[
e
]);
e
++
)
!
b
||
n
.
nodeName
(
d
,
b
)?
f
.
push
(
d
):
n
.
merge
(
f
,
ea
(
d
,
b
));
return
void
0
===
b
||
b
&&
n
.
nodeName
(
a
,
b
)?
n
.
merge
([
a
],
f
):
f
}
function
fa
(
a
,
b
){
for
(
var
c
,
d
=
0
;
null
!=
(
c
=
a
[
d
]);
d
++
)
n
.
_data
(
c
,
"globalEval"
,
!
b
||
n
.
_data
(
b
[
d
],
"globalEval"
))}
var
ga
=
/<|&#
?\w
+;/
,
ha
=
/<tbody/i
;
function
ia
(
a
){
Z
.
test
(
a
.
type
)
&&
(
a
.
defaultChecked
=
a
.
checked
)}
function
ja
(
a
,
b
,
c
,
d
,
e
){
for
(
var
f
,
g
,
h
,
i
,
j
,
k
,
m
,
o
=
a
.
length
,
p
=
ca
(
b
),
q
=
[],
r
=
0
;
o
>
r
;
r
++
)
if
(
g
=
a
[
r
],
g
||
0
===
g
)
if
(
"object"
===
n
.
type
(
g
))
n
.
merge
(
q
,
g
.
nodeType
?[
g
]:
g
);
else
if
(
ga
.
test
(
g
)){
i
=
i
||
p
.
appendChild
(
b
.
createElement
(
"div"
)),
j
=
(
$
.
exec
(
g
)
||
[
""
,
""
])[
1
].
toLowerCase
(),
m
=
da
[
j
]
||
da
.
_default
,
i
.
innerHTML
=
m
[
1
]
+
n
.
htmlPrefilter
(
g
)
+
m
[
2
],
f
=
m
[
0
];
while
(
f
--
)
i
=
i
.
lastChild
;
if
(
!
l
.
leadingWhitespace
&&
aa
.
test
(
g
)
&&
q
.
push
(
b
.
createTextNode
(
aa
.
exec
(
g
)[
0
])),
!
l
.
tbody
){
g
=
"table"
!==
j
||
ha
.
test
(
g
)?
"<table>"
!==
m
[
1
]
||
ha
.
test
(
g
)?
0
:
i
:
i
.
firstChild
,
f
=
g
&&
g
.
childNodes
.
length
;
while
(
f
--
)
n
.
nodeName
(
k
=
g
.
childNodes
[
f
],
"tbody"
)
&&!
k
.
childNodes
.
length
&&
g
.
removeChild
(
k
)}
n
.
merge
(
q
,
i
.
childNodes
),
i
.
textContent
=
""
;
while
(
i
.
firstChild
)
i
.
removeChild
(
i
.
firstChild
);
i
=
p
.
lastChild
}
else
q
.
push
(
b
.
createTextNode
(
g
));
i
&&
p
.
removeChild
(
i
),
l
.
appendChecked
||
n
.
grep
(
ea
(
q
,
"input"
),
ia
),
r
=
0
;
while
(
g
=
q
[
r
++
])
if
(
d
&&
n
.
inArray
(
g
,
d
)
>-
1
)
e
&&
e
.
push
(
g
);
else
if
(
h
=
n
.
contains
(
g
.
ownerDocument
,
g
),
i
=
ea
(
p
.
appendChild
(
g
),
"script"
),
h
&&
fa
(
i
),
c
){
f
=
0
;
while
(
g
=
i
[
f
++
])
_
.
test
(
g
.
type
||
""
)
&&
c
.
push
(
g
)}
return
i
=
null
,
p
}
!
function
(){
var
b
,
c
,
e
=
d
.
createElement
(
"div"
);
for
(
b
in
{
submit
:
!
0
,
change
:
!
0
,
focusin
:
!
0
})
c
=
"on"
+
b
,(
l
[
b
]
=
c
in
a
)
||
(
e
.
setAttribute
(
c
,
"t"
),
l
[
b
]
=
e
.
attributes
[
c
].
expando
===!
1
);
e
=
null
}();
var
ka
=
/^
(?:
input|select|textarea
)
$/i
,
la
=
/^key/
,
ma
=
/^
(?:
mouse|pointer|contextmenu|drag|drop
)
|click/
,
na
=
/^
(?:
focusinfocus|focusoutblur
)
$/
,
oa
=
/^
([^
.
]
*
)(?:\.(
.+
)
|
)
/
;
function
pa
(){
return
!
0
}
function
qa
(){
return
!
1
}
function
ra
(){
try
{
return
d
.
activeElement
}
catch
(
a
){}}
function
sa
(
a
,
b
,
c
,
d
,
e
,
f
){
var
g
,
h
;
if
(
"object"
==
typeof
b
){
"string"
!=
typeof
c
&&
(
d
=
d
||
c
,
c
=
void
0
);
for
(
h
in
b
)
sa
(
a
,
h
,
c
,
d
,
b
[
h
],
f
);
return
a
}
if
(
null
==
d
&&
null
==
e
?(
e
=
c
,
d
=
c
=
void
0
):
null
==
e
&&
(
"string"
==
typeof
c
?(
e
=
d
,
d
=
void
0
):(
e
=
d
,
d
=
c
,
c
=
void
0
)),
e
===!
1
)
e
=
qa
;
else
if
(
!
e
)
return
a
;
return
1
===
f
&&
(
g
=
e
,
e
=
function
(
a
){
return
n
().
off
(
a
),
g
.
apply
(
this
,
arguments
)},
e
.
guid
=
g
.
guid
||
(
g
.
guid
=
n
.
guid
++
)),
a
.
each
(
function
(){
n
.
event
.
add
(
this
,
b
,
e
,
d
,
c
)})}
n
.
event
=
{
global
:{},
add
:
function
(
a
,
b
,
c
,
d
,
e
){
var
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
o
,
p
,
q
,
r
=
n
.
_data
(
a
);
if
(
r
){
c
.
handler
&&
(
i
=
c
,
c
=
i
.
handler
,
e
=
i
.
selector
),
c
.
guid
||
(
c
.
guid
=
n
.
guid
++
),(
g
=
r
.
events
)
||
(
g
=
r
.
events
=
{}),(
k
=
r
.
handle
)
||
(
k
=
r
.
handle
=
function
(
a
){
return
"undefined"
==
typeof
n
||
a
&&
n
.
event
.
triggered
===
a
.
type
?
void
0
:
n
.
event
.
dispatch
.
apply
(
k
.
elem
,
arguments
)},
k
.
elem
=
a
),
b
=
(
b
||
""
).
match
(
G
)
||
[
""
],
h
=
b
.
length
;
while
(
h
--
)
f
=
oa
.
exec
(
b
[
h
])
||
[],
o
=
q
=
f
[
1
],
p
=
(
f
[
2
]
||
""
).
split
(
"."
).
sort
(),
o
&&
(
j
=
n
.
event
.
special
[
o
]
||
{},
o
=
(
e
?
j
.
delegateType
:
j
.
bindType
)
||
o
,
j
=
n
.
event
.
special
[
o
]
||
{},
l
=
n
.
extend
({
type
:
o
,
origType
:
q
,
data
:
d
,
handler
:
c
,
guid
:
c
.
guid
,
selector
:
e
,
needsContext
:
e
&&
n
.
expr
.
match
.
needsContext
.
test
(
e
),
namespace
:
p
.
join
(
"."
)},
i
),(
m
=
g
[
o
])
||
(
m
=
g
[
o
]
=
[],
m
.
delegateCount
=
0
,
j
.
setup
&&
j
.
setup
.
call
(
a
,
d
,
p
,
k
)
!==!
1
||
(
a
.
addEventListener
?
a
.
addEventListener
(
o
,
k
,
!
1
):
a
.
attachEvent
&&
a
.
attachEvent
(
"on"
+
o
,
k
))),
j
.
add
&&
(
j
.
add
.
call
(
a
,
l
),
l
.
handler
.
guid
||
(
l
.
handler
.
guid
=
c
.
guid
)),
e
?
m
.
splice
(
m
.
delegateCount
++
,
0
,
l
):
m
.
push
(
l
),
n
.
event
.
global
[
o
]
=!
0
);
a
=
null
}},
remove
:
function
(
a
,
b
,
c
,
d
,
e
){
var
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
o
,
p
,
q
,
r
=
n
.
hasData
(
a
)
&&
n
.
_data
(
a
);
if
(
r
&&
(
k
=
r
.
events
)){
b
=
(
b
||
""
).
match
(
G
)
||
[
""
],
j
=
b
.
length
;
while
(
j
--
)
if
(
h
=
oa
.
exec
(
b
[
j
])
||
[],
o
=
q
=
h
[
1
],
p
=
(
h
[
2
]
||
""
).
split
(
"."
).
sort
(),
o
){
l
=
n
.
event
.
special
[
o
]
||
{},
o
=
(
d
?
l
.
delegateType
:
l
.
bindType
)
||
o
,
m
=
k
[
o
]
||
[],
h
=
h
[
2
]
&&
new
RegExp
(
"(^|
\\
.)"
+
p
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
),
i
=
f
=
m
.
length
;
while
(
f
--
)
g
=
m
[
f
],
!
e
&&
q
!==
g
.
origType
||
c
&&
c
.
guid
!==
g
.
guid
||
h
&&!
h
.
test
(
g
.
namespace
)
||
d
&&
d
!==
g
.
selector
&&
(
"**"
!==
d
||!
g
.
selector
)
||
(
m
.
splice
(
f
,
1
),
g
.
selector
&&
m
.
delegateCount
--
,
l
.
remove
&&
l
.
remove
.
call
(
a
,
g
));
i
&&!
m
.
length
&&
(
l
.
teardown
&&
l
.
teardown
.
call
(
a
,
p
,
r
.
handle
)
!==!
1
||
n
.
removeEvent
(
a
,
o
,
r
.
handle
),
delete
k
[
o
])}
else
for
(
o
in
k
)
n
.
event
.
remove
(
a
,
o
+
b
[
j
],
c
,
d
,
!
0
);
n
.
isEmptyObject
(
k
)
&&
(
delete
r
.
handle
,
n
.
_removeData
(
a
,
"events"
))}},
trigger
:
function
(
b
,
c
,
e
,
f
){
var
g
,
h
,
i
,
j
,
l
,
m
,
o
,
p
=
[
e
||
d
],
q
=
k
.
call
(
b
,
"type"
)?
b
.
type
:
b
,
r
=
k
.
call
(
b
,
"namespace"
)?
b
.
namespace
.
split
(
"."
):[];
if
(
i
=
m
=
e
=
e
||
d
,
3
!==
e
.
nodeType
&&
8
!==
e
.
nodeType
&&!
na
.
test
(
q
+
n
.
event
.
triggered
)
&&
(
q
.
indexOf
(
"."
)
>-
1
&&
(
r
=
q
.
split
(
"."
),
q
=
r
.
shift
(),
r
.
sort
()),
h
=
q
.
indexOf
(
":"
)
<
0
&&
"on"
+
q
,
b
=
b
[
n
.
expando
]?
b
:
new
n
.
Event
(
q
,
"object"
==
typeof
b
&&
b
),
b
.
isTrigger
=
f
?
2
:
3
,
b
.
namespace
=
r
.
join
(
"."
),
b
.
rnamespace
=
b
.
namespace
?
new
RegExp
(
"(^|
\\
.)"
+
r
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
):
null
,
b
.
result
=
void
0
,
b
.
target
||
(
b
.
target
=
e
),
c
=
null
==
c
?[
b
]:
n
.
makeArray
(
c
,[
b
]),
l
=
n
.
event
.
special
[
q
]
||
{},
f
||!
l
.
trigger
||
l
.
trigger
.
apply
(
e
,
c
)
!==!
1
)){
if
(
!
f
&&!
l
.
noBubble
&&!
n
.
isWindow
(
e
)){
for
(
j
=
l
.
delegateType
||
q
,
na
.
test
(
j
+
q
)
||
(
i
=
i
.
parentNode
);
i
;
i
=
i
.
parentNode
)
p
.
push
(
i
),
m
=
i
;
m
===
(
e
.
ownerDocument
||
d
)
&&
p
.
push
(
m
.
defaultView
||
m
.
parentWindow
||
a
)}
o
=
0
;
while
((
i
=
p
[
o
++
])
&&!
b
.
isPropagationStopped
())
b
.
type
=
o
>
1
?
j
:
l
.
bindType
||
q
,
g
=
(
n
.
_data
(
i
,
"events"
)
||
{})[
b
.
type
]
&&
n
.
_data
(
i
,
"handle"
),
g
&&
g
.
apply
(
i
,
c
),
g
=
h
&&
i
[
h
],
g
&&
g
.
apply
&&
M
(
i
)
&&
(
b
.
result
=
g
.
apply
(
i
,
c
),
b
.
result
===!
1
&&
b
.
preventDefault
());
if
(
b
.
type
=
q
,
!
f
&&!
b
.
isDefaultPrevented
()
&&
(
!
l
.
_default
||
l
.
_default
.
apply
(
p
.
pop
(),
c
)
===!
1
)
&&
M
(
e
)
&&
h
&&
e
[
q
]
&&!
n
.
isWindow
(
e
)){
m
=
e
[
h
],
m
&&
(
e
[
h
]
=
null
),
n
.
event
.
triggered
=
q
;
try
{
e
[
q
]()}
catch
(
s
){}
n
.
event
.
triggered
=
void
0
,
m
&&
(
e
[
h
]
=
m
)}
return
b
.
result
}},
dispatch
:
function
(
a
){
a
=
n
.
event
.
fix
(
a
);
var
b
,
c
,
d
,
f
,
g
,
h
=
[],
i
=
e
.
call
(
arguments
),
j
=
(
n
.
_data
(
this
,
"events"
)
||
{})[
a
.
type
]
||
[],
k
=
n
.
event
.
special
[
a
.
type
]
||
{};
if
(
i
[
0
]
=
a
,
a
.
delegateTarget
=
this
,
!
k
.
preDispatch
||
k
.
preDispatch
.
call
(
this
,
a
)
!==!
1
){
h
=
n
.
event
.
handlers
.
call
(
this
,
a
,
j
),
b
=
0
;
while
((
f
=
h
[
b
++
])
&&!
a
.
isPropagationStopped
()){
a
.
currentTarget
=
f
.
elem
,
c
=
0
;
while
((
g
=
f
.
handlers
[
c
++
])
&&!
a
.
isImmediatePropagationStopped
())
a
.
rnamespace
&&!
a
.
rnamespace
.
test
(
g
.
namespace
)
||
(
a
.
handleObj
=
g
,
a
.
data
=
g
.
data
,
d
=
((
n
.
event
.
special
[
g
.
origType
]
||
{}).
handle
||
g
.
handler
).
apply
(
f
.
elem
,
i
),
void
0
!==
d
&&
(
a
.
result
=
d
)
===!
1
&&
(
a
.
preventDefault
(),
a
.
stopPropagation
()))}
return
k
.
postDispatch
&&
k
.
postDispatch
.
call
(
this
,
a
),
a
.
result
}},
handlers
:
function
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
=
[],
h
=
b
.
delegateCount
,
i
=
a
.
target
;
if
(
h
&&
i
.
nodeType
&&
(
"click"
!==
a
.
type
||
isNaN
(
a
.
button
)
||
a
.
button
<
1
))
for
(;
i
!=
this
;
i
=
i
.
parentNode
||
this
)
if
(
1
===
i
.
nodeType
&&
(
i
.
disabled
!==!
0
||
"click"
!==
a
.
type
)){
for
(
d
=
[],
c
=
0
;
h
>
c
;
c
++
)
f
=
b
[
c
],
e
=
f
.
selector
+
" "
,
void
0
===
d
[
e
]
&&
(
d
[
e
]
=
f
.
needsContext
?
n
(
e
,
this
).
index
(
i
)
>-
1
:
n
.
find
(
e
,
this
,
null
,[
i
]).
length
),
d
[
e
]
&&
d
.
push
(
f
);
d
.
length
&&
g
.
push
({
elem
:
i
,
handlers
:
d
})}
return
h
<
b
.
length
&&
g
.
push
({
elem
:
this
,
handlers
:
b
.
slice
(
h
)}),
g
},
fix
:
function
(
a
){
if
(
a
[
n
.
expando
])
return
a
;
var
b
,
c
,
e
,
f
=
a
.
type
,
g
=
a
,
h
=
this
.
fixHooks
[
f
];
h
||
(
this
.
fixHooks
[
f
]
=
h
=
ma
.
test
(
f
)?
this
.
mouseHooks
:
la
.
test
(
f
)?
this
.
keyHooks
:{}),
e
=
h
.
props
?
this
.
props
.
concat
(
h
.
props
):
this
.
props
,
a
=
new
n
.
Event
(
g
),
b
=
e
.
length
;
while
(
b
--
)
c
=
e
[
b
],
a
[
c
]
=
g
[
c
];
return
a
.
target
||
(
a
.
target
=
g
.
srcElement
||
d
),
3
===
a
.
target
.
nodeType
&&
(
a
.
target
=
a
.
target
.
parentNode
),
a
.
metaKey
=!!
a
.
metaKey
,
h
.
filter
?
h
.
filter
(
a
,
g
):
a
},
props
:
"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which"
.
split
(
" "
),
fixHooks
:{},
keyHooks
:{
props
:
"char charCode key keyCode"
.
split
(
" "
),
filter
:
function
(
a
,
b
){
return
null
==
a
.
which
&&
(
a
.
which
=
null
!=
b
.
charCode
?
b
.
charCode
:
b
.
keyCode
),
a
}},
mouseHooks
:{
props
:
"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement"
.
split
(
" "
),
filter
:
function
(
a
,
b
){
var
c
,
e
,
f
,
g
=
b
.
button
,
h
=
b
.
fromElement
;
return
null
==
a
.
pageX
&&
null
!=
b
.
clientX
&&
(
e
=
a
.
target
.
ownerDocument
||
d
,
f
=
e
.
documentElement
,
c
=
e
.
body
,
a
.
pageX
=
b
.
clientX
+
(
f
&&
f
.
scrollLeft
||
c
&&
c
.
scrollLeft
||
0
)
-
(
f
&&
f
.
clientLeft
||
c
&&
c
.
clientLeft
||
0
),
a
.
pageY
=
b
.
clientY
+
(
f
&&
f
.
scrollTop
||
c
&&
c
.
scrollTop
||
0
)
-
(
f
&&
f
.
clientTop
||
c
&&
c
.
clientTop
||
0
)),
!
a
.
relatedTarget
&&
h
&&
(
a
.
relatedTarget
=
h
===
a
.
target
?
b
.
toElement
:
h
),
a
.
which
||
void
0
===
g
||
(
a
.
which
=
1
&
g
?
1
:
2
&
g
?
3
:
4
&
g
?
2
:
0
),
a
}},
special
:{
load
:{
noBubble
:
!
0
},
focus
:{
trigger
:
function
(){
if
(
this
!==
ra
()
&&
this
.
focus
)
try
{
return
this
.
focus
(),
!
1
}
catch
(
a
){}},
delegateType
:
"focusin"
},
blur
:{
trigger
:
function
(){
return
this
===
ra
()
&&
this
.
blur
?(
this
.
blur
(),
!
1
):
void
0
},
delegateType
:
"focusout"
},
click
:{
trigger
:
function
(){
return
n
.
nodeName
(
this
,
"input"
)
&&
"checkbox"
===
this
.
type
&&
this
.
click
?(
this
.
click
(),
!
1
):
void
0
},
_default
:
function
(
a
){
return
n
.
nodeName
(
a
.
target
,
"a"
)}},
beforeunload
:{
postDispatch
:
function
(
a
){
void
0
!==
a
.
result
&&
a
.
originalEvent
&&
(
a
.
originalEvent
.
returnValue
=
a
.
result
)}}},
simulate
:
function
(
a
,
b
,
c
){
var
d
=
n
.
extend
(
new
n
.
Event
,
c
,{
type
:
a
,
isSimulated
:
!
0
});
n
.
event
.
trigger
(
d
,
null
,
b
),
d
.
isDefaultPrevented
()
&&
c
.
preventDefault
()}},
n
.
removeEvent
=
d
.
removeEventListener
?
function
(
a
,
b
,
c
){
a
.
removeEventListener
&&
a
.
removeEventListener
(
b
,
c
)}:
function
(
a
,
b
,
c
){
var
d
=
"on"
+
b
;
a
.
detachEvent
&&
(
"undefined"
==
typeof
a
[
d
]
&&
(
a
[
d
]
=
null
),
a
.
detachEvent
(
d
,
c
))},
n
.
Event
=
function
(
a
,
b
){
return
this
instanceof
n
.
Event
?(
a
&&
a
.
type
?(
this
.
originalEvent
=
a
,
this
.
type
=
a
.
type
,
this
.
isDefaultPrevented
=
a
.
defaultPrevented
||
void
0
===
a
.
defaultPrevented
&&
a
.
returnValue
===!
1
?
pa
:
qa
):
this
.
type
=
a
,
b
&&
n
.
extend
(
this
,
b
),
this
.
timeStamp
=
a
&&
a
.
timeStamp
||
n
.
now
(),
void
(
this
[
n
.
expando
]
=!
0
)):
new
n
.
Event
(
a
,
b
)},
n
.
Event
.
prototype
=
{
constructor
:
n
.
Event
,
isDefaultPrevented
:
qa
,
isPropagationStopped
:
qa
,
isImmediatePropagationStopped
:
qa
,
preventDefault
:
function
(){
var
a
=
this
.
originalEvent
;
this
.
isDefaultPrevented
=
pa
,
a
&&
(
a
.
preventDefault
?
a
.
preventDefault
():
a
.
returnValue
=!
1
)},
stopPropagation
:
function
(){
var
a
=
this
.
originalEvent
;
this
.
isPropagationStopped
=
pa
,
a
&&!
this
.
isSimulated
&&
(
a
.
stopPropagation
&&
a
.
stopPropagation
(),
a
.
cancelBubble
=!
0
)},
stopImmediatePropagation
:
function
(){
var
a
=
this
.
originalEvent
;
this
.
isImmediatePropagationStopped
=
pa
,
a
&&
a
.
stopImmediatePropagation
&&
a
.
stopImmediatePropagation
(),
this
.
stopPropagation
()}},
n
.
each
({
mouseenter
:
"mouseover"
,
mouseleave
:
"mouseout"
,
pointerenter
:
"pointerover"
,
pointerleave
:
"pointerout"
},
function
(
a
,
b
){
n
.
event
.
special
[
a
]
=
{
delegateType
:
b
,
bindType
:
b
,
handle
:
function
(
a
){
var
c
,
d
=
this
,
e
=
a
.
relatedTarget
,
f
=
a
.
handleObj
;
return
e
&&
(
e
===
d
||
n
.
contains
(
d
,
e
))
||
(
a
.
type
=
f
.
origType
,
c
=
f
.
handler
.
apply
(
this
,
arguments
),
a
.
type
=
b
),
c
}}}),
l
.
submit
||
(
n
.
event
.
special
.
submit
=
{
setup
:
function
(){
return
n
.
nodeName
(
this
,
"form"
)?
!
1
:
void
n
.
event
.
add
(
this
,
"click._submit keypress._submit"
,
function
(
a
){
var
b
=
a
.
target
,
c
=
n
.
nodeName
(
b
,
"input"
)
||
n
.
nodeName
(
b
,
"button"
)?
n
.
prop
(
b
,
"form"
):
void
0
;
c
&&!
n
.
_data
(
c
,
"submit"
)
&&
(
n
.
event
.
add
(
c
,
"submit._submit"
,
function
(
a
){
a
.
_submitBubble
=!
0
}),
n
.
_data
(
c
,
"submit"
,
!
0
))})},
postDispatch
:
function
(
a
){
a
.
_submitBubble
&&
(
delete
a
.
_submitBubble
,
this
.
parentNode
&&!
a
.
isTrigger
&&
n
.
event
.
simulate
(
"submit"
,
this
.
parentNode
,
a
))},
teardown
:
function
(){
return
n
.
nodeName
(
this
,
"form"
)?
!
1
:
void
n
.
event
.
remove
(
this
,
"._submit"
)}}),
l
.
change
||
(
n
.
event
.
special
.
change
=
{
setup
:
function
(){
return
ka
.
test
(
this
.
nodeName
)?(
"checkbox"
!==
this
.
type
&&
"radio"
!==
this
.
type
||
(
n
.
event
.
add
(
this
,
"propertychange._change"
,
function
(
a
){
"checked"
===
a
.
originalEvent
.
propertyName
&&
(
this
.
_justChanged
=!
0
)}),
n
.
event
.
add
(
this
,
"click._change"
,
function
(
a
){
this
.
_justChanged
&&!
a
.
isTrigger
&&
(
this
.
_justChanged
=!
1
),
n
.
event
.
simulate
(
"change"
,
this
,
a
)})),
!
1
):
void
n
.
event
.
add
(
this
,
"beforeactivate._change"
,
function
(
a
){
var
b
=
a
.
target
;
ka
.
test
(
b
.
nodeName
)
&&!
n
.
_data
(
b
,
"change"
)
&&
(
n
.
event
.
add
(
b
,
"change._change"
,
function
(
a
){
!
this
.
parentNode
||
a
.
isSimulated
||
a
.
isTrigger
||
n
.
event
.
simulate
(
"change"
,
this
.
parentNode
,
a
)}),
n
.
_data
(
b
,
"change"
,
!
0
))})},
handle
:
function
(
a
){
var
b
=
a
.
target
;
return
this
!==
b
||
a
.
isSimulated
||
a
.
isTrigger
||
"radio"
!==
b
.
type
&&
"checkbox"
!==
b
.
type
?
a
.
handleObj
.
handler
.
apply
(
this
,
arguments
):
void
0
},
teardown
:
function
(){
return
n
.
event
.
remove
(
this
,
"._change"
),
!
ka
.
test
(
this
.
nodeName
)}}),
l
.
focusin
||
n
.
each
({
focus
:
"focusin"
,
blur
:
"focusout"
},
function
(
a
,
b
){
var
c
=
function
(
a
){
n
.
event
.
simulate
(
b
,
a
.
target
,
n
.
event
.
fix
(
a
))};
n
.
event
.
special
[
b
]
=
{
setup
:
function
(){
var
d
=
this
.
ownerDocument
||
this
,
e
=
n
.
_data
(
d
,
b
);
e
||
d
.
addEventListener
(
a
,
c
,
!
0
),
n
.
_data
(
d
,
b
,(
e
||
0
)
+
1
)},
teardown
:
function
(){
var
d
=
this
.
ownerDocument
||
this
,
e
=
n
.
_data
(
d
,
b
)
-
1
;
e
?
n
.
_data
(
d
,
b
,
e
):(
d
.
removeEventListener
(
a
,
c
,
!
0
),
n
.
_removeData
(
d
,
b
))}}}),
n
.
fn
.
extend
({
on
:
function
(
a
,
b
,
c
,
d
){
return
sa
(
this
,
a
,
b
,
c
,
d
)},
one
:
function
(
a
,
b
,
c
,
d
){
return
sa
(
this
,
a
,
b
,
c
,
d
,
1
)},
off
:
function
(
a
,
b
,
c
){
var
d
,
e
;
if
(
a
&&
a
.
preventDefault
&&
a
.
handleObj
)
return
d
=
a
.
handleObj
,
n
(
a
.
delegateTarget
).
off
(
d
.
namespace
?
d
.
origType
+
"."
+
d
.
namespace
:
d
.
origType
,
d
.
selector
,
d
.
handler
),
this
;
if
(
"object"
==
typeof
a
){
for
(
e
in
a
)
this
.
off
(
e
,
b
,
a
[
e
]);
return
this
}
return
b
!==!
1
&&
"function"
!=
typeof
b
||
(
c
=
b
,
b
=
void
0
),
c
===!
1
&&
(
c
=
qa
),
this
.
each
(
function
(){
n
.
event
.
remove
(
this
,
a
,
c
,
b
)})},
trigger
:
function
(
a
,
b
){
return
this
.
each
(
function
(){
n
.
event
.
trigger
(
a
,
b
,
this
)})},
triggerHandler
:
function
(
a
,
b
){
var
c
=
this
[
0
];
return
c
?
n
.
event
.
trigger
(
a
,
b
,
c
,
!
0
):
void
0
}});
var
ta
=
/ jQuery
\d
+="
(?:
null|
\d
+
)
"/g
,
ua
=
new
RegExp
(
"<(?:"
+
ba
+
")[
\\
s/>]"
,
"i"
),
va
=
/<
(?!
area|br|col|embed|hr|img|input|link|meta|param
)(([\w
:-
]
+
)[^
>
]
*
)\/
>/gi
,
wa
=
/<script|<style|<link/i
,
xa
=
/checked
\s
*
(?:[^
=
]
|=
\s
*.checked.
)
/i
,
ya
=
/^true
\/(
.*
)
/
,
za
=
/^
\s
*<!
(?:\[
CDATA
\[
|--
)
|
(?:\]\]
|--
)
>
\s
*$/g
,
Aa
=
ca
(
d
),
Ba
=
Aa
.
appendChild
(
d
.
createElement
(
"div"
));
function
Ca
(
a
,
b
){
return
n
.
nodeName
(
a
,
"table"
)
&&
n
.
nodeName
(
11
!==
b
.
nodeType
?
b
:
b
.
firstChild
,
"tr"
)?
a
.
getElementsByTagName
(
"tbody"
)[
0
]
||
a
.
appendChild
(
a
.
ownerDocument
.
createElement
(
"tbody"
)):
a
}
function
Da
(
a
){
return
a
.
type
=
(
null
!==
n
.
find
.
attr
(
a
,
"type"
))
+
"/"
+
a
.
type
,
a
}
function
Ea
(
a
){
var
b
=
ya
.
exec
(
a
.
type
);
return
b
?
a
.
type
=
b
[
1
]:
a
.
removeAttribute
(
"type"
),
a
}
function
Fa
(
a
,
b
){
if
(
1
===
b
.
nodeType
&&
n
.
hasData
(
a
)){
var
c
,
d
,
e
,
f
=
n
.
_data
(
a
),
g
=
n
.
_data
(
b
,
f
),
h
=
f
.
events
;
if
(
h
){
delete
g
.
handle
,
g
.
events
=
{};
for
(
c
in
h
)
for
(
d
=
0
,
e
=
h
[
c
].
length
;
e
>
d
;
d
++
)
n
.
event
.
add
(
b
,
c
,
h
[
c
][
d
])}
g
.
data
&&
(
g
.
data
=
n
.
extend
({},
g
.
data
))}}
function
Ga
(
a
,
b
){
var
c
,
d
,
e
;
if
(
1
===
b
.
nodeType
){
if
(
c
=
b
.
nodeName
.
toLowerCase
(),
!
l
.
noCloneEvent
&&
b
[
n
.
expando
]){
e
=
n
.
_data
(
b
);
for
(
d
in
e
.
events
)
n
.
removeEvent
(
b
,
d
,
e
.
handle
);
b
.
removeAttribute
(
n
.
expando
)}
"script"
===
c
&&
b
.
text
!==
a
.
text
?(
Da
(
b
).
text
=
a
.
text
,
Ea
(
b
)):
"object"
===
c
?(
b
.
parentNode
&&
(
b
.
outerHTML
=
a
.
outerHTML
),
l
.
html5Clone
&&
a
.
innerHTML
&&!
n
.
trim
(
b
.
innerHTML
)
&&
(
b
.
innerHTML
=
a
.
innerHTML
)):
"input"
===
c
&&
Z
.
test
(
a
.
type
)?(
b
.
defaultChecked
=
b
.
checked
=
a
.
checked
,
b
.
value
!==
a
.
value
&&
(
b
.
value
=
a
.
value
)):
"option"
===
c
?
b
.
defaultSelected
=
b
.
selected
=
a
.
defaultSelected
:
"input"
!==
c
&&
"textarea"
!==
c
||
(
b
.
defaultValue
=
a
.
defaultValue
)}}
function
Ha
(
a
,
b
,
c
,
d
){
b
=
f
.
apply
([],
b
);
var
e
,
g
,
h
,
i
,
j
,
k
,
m
=
0
,
o
=
a
.
length
,
p
=
o
-
1
,
q
=
b
[
0
],
r
=
n
.
isFunction
(
q
);
if
(
r
||
o
>
1
&&
"string"
==
typeof
q
&&!
l
.
checkClone
&&
xa
.
test
(
q
))
return
a
.
each
(
function
(
e
){
var
f
=
a
.
eq
(
e
);
r
&&
(
b
[
0
]
=
q
.
call
(
this
,
e
,
f
.
html
())),
Ha
(
f
,
b
,
c
,
d
)});
if
(
o
&&
(
k
=
ja
(
b
,
a
[
0
].
ownerDocument
,
!
1
,
a
,
d
),
e
=
k
.
firstChild
,
1
===
k
.
childNodes
.
length
&&
(
k
=
e
),
e
||
d
)){
for
(
i
=
n
.
map
(
ea
(
k
,
"script"
),
Da
),
h
=
i
.
length
;
o
>
m
;
m
++
)
g
=
k
,
m
!==
p
&&
(
g
=
n
.
clone
(
g
,
!
0
,
!
0
),
h
&&
n
.
merge
(
i
,
ea
(
g
,
"script"
))),
c
.
call
(
a
[
m
],
g
,
m
);
if
(
h
)
for
(
j
=
i
[
i
.
length
-
1
].
ownerDocument
,
n
.
map
(
i
,
Ea
),
m
=
0
;
h
>
m
;
m
++
)
g
=
i
[
m
],
_
.
test
(
g
.
type
||
""
)
&&!
n
.
_data
(
g
,
"globalEval"
)
&&
n
.
contains
(
j
,
g
)
&&
(
g
.
src
?
n
.
_evalUrl
&&
n
.
_evalUrl
(
g
.
src
):
n
.
globalEval
((
g
.
text
||
g
.
textContent
||
g
.
innerHTML
||
""
).
replace
(
za
,
""
)));
k
=
e
=
null
}
return
a
}
function
Ia
(
a
,
b
,
c
){
for
(
var
d
,
e
=
b
?
n
.
filter
(
b
,
a
):
a
,
f
=
0
;
null
!=
(
d
=
e
[
f
]);
f
++
)
c
||
1
!==
d
.
nodeType
||
n
.
cleanData
(
ea
(
d
)),
d
.
parentNode
&&
(
c
&&
n
.
contains
(
d
.
ownerDocument
,
d
)
&&
fa
(
ea
(
d
,
"script"
)),
d
.
parentNode
.
removeChild
(
d
));
return
a
}
n
.
extend
({
htmlPrefilter
:
function
(
a
){
return
a
.
replace
(
va
,
"<$1></$2>"
)},
clone
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
,
i
=
n
.
contains
(
a
.
ownerDocument
,
a
);
if
(
l
.
html5Clone
||
n
.
isXMLDoc
(
a
)
||!
ua
.
test
(
"<"
+
a
.
nodeName
+
">"
)?
f
=
a
.
cloneNode
(
!
0
):(
Ba
.
innerHTML
=
a
.
outerHTML
,
Ba
.
removeChild
(
f
=
Ba
.
firstChild
)),
!
(
l
.
noCloneEvent
&&
l
.
noCloneChecked
||
1
!==
a
.
nodeType
&&
11
!==
a
.
nodeType
||
n
.
isXMLDoc
(
a
)))
for
(
d
=
ea
(
f
),
h
=
ea
(
a
),
g
=
0
;
null
!=
(
e
=
h
[
g
]);
++
g
)
d
[
g
]
&&
Ga
(
e
,
d
[
g
]);
if
(
b
)
if
(
c
)
for
(
h
=
h
||
ea
(
a
),
d
=
d
||
ea
(
f
),
g
=
0
;
null
!=
(
e
=
h
[
g
]);
g
++
)
Fa
(
e
,
d
[
g
]);
else
Fa
(
a
,
f
);
return
d
=
ea
(
f
,
"script"
),
d
.
length
>
0
&&
fa
(
d
,
!
i
&&
ea
(
a
,
"script"
)),
d
=
h
=
e
=
null
,
f
},
cleanData
:
function
(
a
,
b
){
for
(
var
d
,
e
,
f
,
g
,
h
=
0
,
i
=
n
.
expando
,
j
=
n
.
cache
,
k
=
l
.
attributes
,
m
=
n
.
event
.
special
;
null
!=
(
d
=
a
[
h
]);
h
++
)
if
((
b
||
M
(
d
))
&&
(
f
=
d
[
i
],
g
=
f
&&
j
[
f
])){
if
(
g
.
events
)
for
(
e
in
g
.
events
)
m
[
e
]?
n
.
event
.
remove
(
d
,
e
):
n
.
removeEvent
(
d
,
e
,
g
.
handle
);
j
[
f
]
&&
(
delete
j
[
f
],
k
||
"undefined"
==
typeof
d
.
removeAttribute
?
d
[
i
]
=
void
0
:
d
.
removeAttribute
(
i
),
c
.
push
(
f
))}}}),
n
.
fn
.
extend
({
domManip
:
Ha
,
detach
:
function
(
a
){
return
Ia
(
this
,
a
,
!
0
)},
remove
:
function
(
a
){
return
Ia
(
this
,
a
)},
text
:
function
(
a
){
return
Y
(
this
,
function
(
a
){
return
void
0
===
a
?
n
.
text
(
this
):
this
.
empty
().
append
((
this
[
0
]
&&
this
[
0
].
ownerDocument
||
d
).
createTextNode
(
a
))},
null
,
a
,
arguments
.
length
)},
append
:
function
(){
return
Ha
(
this
,
arguments
,
function
(
a
){
if
(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
){
var
b
=
Ca
(
this
,
a
);
b
.
appendChild
(
a
)}})},
prepend
:
function
(){
return
Ha
(
this
,
arguments
,
function
(
a
){
if
(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
){
var
b
=
Ca
(
this
,
a
);
b
.
insertBefore
(
a
,
b
.
firstChild
)}})},
before
:
function
(){
return
Ha
(
this
,
arguments
,
function
(
a
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
a
,
this
)})},
after
:
function
(){
return
Ha
(
this
,
arguments
,
function
(
a
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
a
,
this
.
nextSibling
)})},
empty
:
function
(){
for
(
var
a
,
b
=
0
;
null
!=
(
a
=
this
[
b
]);
b
++
){
1
===
a
.
nodeType
&&
n
.
cleanData
(
ea
(
a
,
!
1
));
while
(
a
.
firstChild
)
a
.
removeChild
(
a
.
firstChild
);
a
.
options
&&
n
.
nodeName
(
a
,
"select"
)
&&
(
a
.
options
.
length
=
0
)}
return
this
},
clone
:
function
(
a
,
b
){
return
a
=
null
==
a
?
!
1
:
a
,
b
=
null
==
b
?
a
:
b
,
this
.
map
(
function
(){
return
n
.
clone
(
this
,
a
,
b
)})},
html
:
function
(
a
){
return
Y
(
this
,
function
(
a
){
var
b
=
this
[
0
]
||
{},
c
=
0
,
d
=
this
.
length
;
if
(
void
0
===
a
)
return
1
===
b
.
nodeType
?
b
.
innerHTML
.
replace
(
ta
,
""
):
void
0
;
if
(
"string"
==
typeof
a
&&!
wa
.
test
(
a
)
&&
(
l
.
htmlSerialize
||!
ua
.
test
(
a
))
&&
(
l
.
leadingWhitespace
||!
aa
.
test
(
a
))
&&!
da
[(
$
.
exec
(
a
)
||
[
""
,
""
])[
1
].
toLowerCase
()]){
a
=
n
.
htmlPrefilter
(
a
);
try
{
for
(;
d
>
c
;
c
++
)
b
=
this
[
c
]
||
{},
1
===
b
.
nodeType
&&
(
n
.
cleanData
(
ea
(
b
,
!
1
)),
b
.
innerHTML
=
a
);
b
=
0
}
catch
(
e
){}}
b
&&
this
.
empty
().
append
(
a
)},
null
,
a
,
arguments
.
length
)},
replaceWith
:
function
(){
var
a
=
[];
return
Ha
(
this
,
arguments
,
function
(
b
){
var
c
=
this
.
parentNode
;
n
.
inArray
(
this
,
a
)
<
0
&&
(
n
.
cleanData
(
ea
(
this
)),
c
&&
c
.
replaceChild
(
b
,
this
))},
a
)}}),
n
.
each
({
appendTo
:
"append"
,
prependTo
:
"prepend"
,
insertBefore
:
"before"
,
insertAfter
:
"after"
,
replaceAll
:
"replaceWith"
},
function
(
a
,
b
){
n
.
fn
[
a
]
=
function
(
a
){
for
(
var
c
,
d
=
0
,
e
=
[],
f
=
n
(
a
),
h
=
f
.
length
-
1
;
h
>=
d
;
d
++
)
c
=
d
===
h
?
this
:
this
.
clone
(
!
0
),
n
(
f
[
d
])[
b
](
c
),
g
.
apply
(
e
,
c
.
get
());
return
this
.
pushStack
(
e
)}});
var
Ja
,
Ka
=
{
HTML
:
"block"
,
BODY
:
"block"
};
function
La
(
a
,
b
){
var
c
=
n
(
b
.
createElement
(
a
)).
appendTo
(
b
.
body
),
d
=
n
.
css
(
c
[
0
],
"display"
);
return
c
.
detach
(),
d
}
function
Ma
(
a
){
var
b
=
d
,
c
=
Ka
[
a
];
return
c
||
(
c
=
La
(
a
,
b
),
"none"
!==
c
&&
c
||
(
Ja
=
(
Ja
||
n
(
"<iframe frameborder='0' width='0' height='0'/>"
)).
appendTo
(
b
.
documentElement
),
b
=
(
Ja
[
0
].
contentWindow
||
Ja
[
0
].
contentDocument
).
document
,
b
.
write
(),
b
.
close
(),
c
=
La
(
a
,
b
),
Ja
.
detach
()),
Ka
[
a
]
=
c
),
c
}
var
Na
=
/^margin/
,
Oa
=
new
RegExp
(
"^("
+
T
+
")(?!px)[a-z%]+$"
,
"i"
),
Pa
=
function
(
a
,
b
,
c
,
d
){
var
e
,
f
,
g
=
{};
for
(
f
in
b
)
g
[
f
]
=
a
.
style
[
f
],
a
.
style
[
f
]
=
b
[
f
];
e
=
c
.
apply
(
a
,
d
||
[]);
for
(
f
in
b
)
a
.
style
[
f
]
=
g
[
f
];
return
e
},
Qa
=
d
.
documentElement
;
!
function
(){
var
b
,
c
,
e
,
f
,
g
,
h
,
i
=
d
.
createElement
(
"div"
),
j
=
d
.
createElement
(
"div"
);
if
(
j
.
style
){
j
.
style
.
cssText
=
"float:left;opacity:.5"
,
l
.
opacity
=
"0.5"
===
j
.
style
.
opacity
,
l
.
cssFloat
=!!
j
.
style
.
cssFloat
,
j
.
style
.
backgroundClip
=
"content-box"
,
j
.
cloneNode
(
!
0
).
style
.
backgroundClip
=
""
,
l
.
clearCloneStyle
=
"content-box"
===
j
.
style
.
backgroundClip
,
i
=
d
.
createElement
(
"div"
),
i
.
style
.
cssText
=
"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute"
,
j
.
innerHTML
=
""
,
i
.
appendChild
(
j
),
l
.
boxSizing
=
""
===
j
.
style
.
boxSizing
||
""
===
j
.
style
.
MozBoxSizing
||
""
===
j
.
style
.
WebkitBoxSizing
,
n
.
extend
(
l
,{
reliableHiddenOffsets
:
function
(){
return
null
==
b
&&
k
(),
f
},
boxSizingReliable
:
function
(){
return
null
==
b
&&
k
(),
e
},
pixelMarginRight
:
function
(){
return
null
==
b
&&
k
(),
c
},
pixelPosition
:
function
(){
return
null
==
b
&&
k
(),
b
},
reliableMarginRight
:
function
(){
return
null
==
b
&&
k
(),
g
},
reliableMarginLeft
:
function
(){
return
null
==
b
&&
k
(),
h
}});
function
k
(){
var
k
,
l
,
m
=
d
.
documentElement
;
m
.
appendChild
(
i
),
j
.
style
.
cssText
=
"-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%"
,
b
=
e
=
h
=!
1
,
c
=
g
=!
0
,
a
.
getComputedStyle
&&
(
l
=
a
.
getComputedStyle
(
j
),
b
=
"1%"
!==
(
l
||
{}).
top
,
h
=
"2px"
===
(
l
||
{}).
marginLeft
,
e
=
"4px"
===
(
l
||
{
width
:
"4px"
}).
width
,
j
.
style
.
marginRight
=
"50%"
,
c
=
"4px"
===
(
l
||
{
marginRight
:
"4px"
}).
marginRight
,
k
=
j
.
appendChild
(
d
.
createElement
(
"div"
)),
k
.
style
.
cssText
=
j
.
style
.
cssText
=
"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0"
,
k
.
style
.
marginRight
=
k
.
style
.
width
=
"0"
,
j
.
style
.
width
=
"1px"
,
g
=!
parseFloat
((
a
.
getComputedStyle
(
k
)
||
{}).
marginRight
),
j
.
removeChild
(
k
)),
j
.
style
.
display
=
"none"
,
f
=
0
===
j
.
getClientRects
().
length
,
f
&&
(
j
.
style
.
display
=
""
,
j
.
innerHTML
=
"<table><tr><td></td><td>t</td></tr></table>"
,
j
.
childNodes
[
0
].
style
.
borderCollapse
=
"separate"
,
k
=
j
.
getElementsByTagName
(
"td"
),
k
[
0
].
style
.
cssText
=
"margin:0;border:0;padding:0;display:none"
,
f
=
0
===
k
[
0
].
offsetHeight
,
f
&&
(
k
[
0
].
style
.
display
=
""
,
k
[
1
].
style
.
display
=
"none"
,
f
=
0
===
k
[
0
].
offsetHeight
)),
m
.
removeChild
(
i
)}}}();
var
Ra
,
Sa
,
Ta
=
/^
(
top|right|bottom|left
)
$/
;
a
.
getComputedStyle
?(
Ra
=
function
(
b
){
var
c
=
b
.
ownerDocument
.
defaultView
;
return
c
&&
c
.
opener
||
(
c
=
a
),
c
.
getComputedStyle
(
b
)},
Sa
=
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
=
a
.
style
;
return
c
=
c
||
Ra
(
a
),
g
=
c
?
c
.
getPropertyValue
(
b
)
||
c
[
b
]:
void
0
,
""
!==
g
&&
void
0
!==
g
||
n
.
contains
(
a
.
ownerDocument
,
a
)
||
(
g
=
n
.
style
(
a
,
b
)),
c
&&!
l
.
pixelMarginRight
()
&&
Oa
.
test
(
g
)
&&
Na
.
test
(
b
)
&&
(
d
=
h
.
width
,
e
=
h
.
minWidth
,
f
=
h
.
maxWidth
,
h
.
minWidth
=
h
.
maxWidth
=
h
.
width
=
g
,
g
=
c
.
width
,
h
.
width
=
d
,
h
.
minWidth
=
e
,
h
.
maxWidth
=
f
),
void
0
===
g
?
g
:
g
+
""
}):
Qa
.
currentStyle
&&
(
Ra
=
function
(
a
){
return
a
.
currentStyle
},
Sa
=
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
=
a
.
style
;
return
c
=
c
||
Ra
(
a
),
g
=
c
?
c
[
b
]:
void
0
,
null
==
g
&&
h
&&
h
[
b
]
&&
(
g
=
h
[
b
]),
Oa
.
test
(
g
)
&&!
Ta
.
test
(
b
)
&&
(
d
=
h
.
left
,
e
=
a
.
runtimeStyle
,
f
=
e
&&
e
.
left
,
f
&&
(
e
.
left
=
a
.
currentStyle
.
left
),
h
.
left
=
"fontSize"
===
b
?
"1em"
:
g
,
g
=
h
.
pixelLeft
+
"px"
,
h
.
left
=
d
,
f
&&
(
e
.
left
=
f
)),
void
0
===
g
?
g
:
g
+
""
||
"auto"
});
function
Ua
(
a
,
b
){
return
{
get
:
function
(){
return
a
()?
void
delete
this
.
get
:(
this
.
get
=
b
).
apply
(
this
,
arguments
)}}}
var
Va
=
/alpha
\([^
)
]
*
\)
/i
,
Wa
=
/opacity
\s
*=
\s
*
([^
)
]
*
)
/i
,
Xa
=
/^
(
none|table
(?!
-c
[
ea
])
.+
)
/
,
Ya
=
new
RegExp
(
"^("
+
T
+
")(.*)$"
,
"i"
),
Za
=
{
position
:
"absolute"
,
visibility
:
"hidden"
,
display
:
"block"
},
$a
=
{
letterSpacing
:
"0"
,
fontWeight
:
"400"
},
_a
=
[
"Webkit"
,
"O"
,
"Moz"
,
"ms"
],
ab
=
d
.
createElement
(
"div"
).
style
;
function
bb
(
a
){
if
(
a
in
ab
)
return
a
;
var
b
=
a
.
charAt
(
0
).
toUpperCase
()
+
a
.
slice
(
1
),
c
=
_a
.
length
;
while
(
c
--
)
if
(
a
=
_a
[
c
]
+
b
,
a
in
ab
)
return
a
}
function
cb
(
a
,
b
){
for
(
var
c
,
d
,
e
,
f
=
[],
g
=
0
,
h
=
a
.
length
;
h
>
g
;
g
++
)
d
=
a
[
g
],
d
.
style
&&
(
f
[
g
]
=
n
.
_data
(
d
,
"olddisplay"
),
c
=
d
.
style
.
display
,
b
?(
f
[
g
]
||
"none"
!==
c
||
(
d
.
style
.
display
=
""
),
""
===
d
.
style
.
display
&&
W
(
d
)
&&
(
f
[
g
]
=
n
.
_data
(
d
,
"olddisplay"
,
Ma
(
d
.
nodeName
)))):(
e
=
W
(
d
),(
c
&&
"none"
!==
c
||!
e
)
&&
n
.
_data
(
d
,
"olddisplay"
,
e
?
c
:
n
.
css
(
d
,
"display"
))));
for
(
g
=
0
;
h
>
g
;
g
++
)
d
=
a
[
g
],
d
.
style
&&
(
b
&&
"none"
!==
d
.
style
.
display
&&
""
!==
d
.
style
.
display
||
(
d
.
style
.
display
=
b
?
f
[
g
]
||
""
:
"none"
));
return
a
}
function
db
(
a
,
b
,
c
){
var
d
=
Ya
.
exec
(
b
);
return
d
?
Math
.
max
(
0
,
d
[
1
]
-
(
c
||
0
))
+
(
d
[
2
]
||
"px"
):
b
}
function
eb
(
a
,
b
,
c
,
d
,
e
){
for
(
var
f
=
c
===
(
d
?
"border"
:
"content"
)?
4
:
"width"
===
b
?
1
:
0
,
g
=
0
;
4
>
f
;
f
+=
2
)
"margin"
===
c
&&
(
g
+=
n
.
css
(
a
,
c
+
V
[
f
],
!
0
,
e
)),
d
?(
"content"
===
c
&&
(
g
-=
n
.
css
(
a
,
"padding"
+
V
[
f
],
!
0
,
e
)),
"margin"
!==
c
&&
(
g
-=
n
.
css
(
a
,
"border"
+
V
[
f
]
+
"Width"
,
!
0
,
e
))):(
g
+=
n
.
css
(
a
,
"padding"
+
V
[
f
],
!
0
,
e
),
"padding"
!==
c
&&
(
g
+=
n
.
css
(
a
,
"border"
+
V
[
f
]
+
"Width"
,
!
0
,
e
)));
return
g
}
function
fb
(
a
,
b
,
c
){
var
d
=!
0
,
e
=
"width"
===
b
?
a
.
offsetWidth
:
a
.
offsetHeight
,
f
=
Ra
(
a
),
g
=
l
.
boxSizing
&&
"border-box"
===
n
.
css
(
a
,
"boxSizing"
,
!
1
,
f
);
if
(
0
>=
e
||
null
==
e
){
if
(
e
=
Sa
(
a
,
b
,
f
),(
0
>
e
||
null
==
e
)
&&
(
e
=
a
.
style
[
b
]),
Oa
.
test
(
e
))
return
e
;
d
=
g
&&
(
l
.
boxSizingReliable
()
||
e
===
a
.
style
[
b
]),
e
=
parseFloat
(
e
)
||
0
}
return
e
+
eb
(
a
,
b
,
c
||
(
g
?
"border"
:
"content"
),
d
,
f
)
+
"px"
}
n
.
extend
({
cssHooks
:{
opacity
:{
get
:
function
(
a
,
b
){
if
(
b
){
var
c
=
Sa
(
a
,
"opacity"
);
return
""
===
c
?
"1"
:
c
}}}},
cssNumber
:{
animationIterationCount
:
!
0
,
columnCount
:
!
0
,
fillOpacity
:
!
0
,
flexGrow
:
!
0
,
flexShrink
:
!
0
,
fontWeight
:
!
0
,
lineHeight
:
!
0
,
opacity
:
!
0
,
order
:
!
0
,
orphans
:
!
0
,
widows
:
!
0
,
zIndex
:
!
0
,
zoom
:
!
0
},
cssProps
:{
"float"
:
l
.
cssFloat
?
"cssFloat"
:
"styleFloat"
},
style
:
function
(
a
,
b
,
c
,
d
){
if
(
a
&&
3
!==
a
.
nodeType
&&
8
!==
a
.
nodeType
&&
a
.
style
){
var
e
,
f
,
g
,
h
=
n
.
camelCase
(
b
),
i
=
a
.
style
;
if
(
b
=
n
.
cssProps
[
h
]
||
(
n
.
cssProps
[
h
]
=
bb
(
h
)
||
h
),
g
=
n
.
cssHooks
[
b
]
||
n
.
cssHooks
[
h
],
void
0
===
c
)
return
g
&&
"get"
in
g
&&
void
0
!==
(
e
=
g
.
get
(
a
,
!
1
,
d
))?
e
:
i
[
b
];
if
(
f
=
typeof
c
,
"string"
===
f
&&
(
e
=
U
.
exec
(
c
))
&&
e
[
1
]
&&
(
c
=
X
(
a
,
b
,
e
),
f
=
"number"
),
null
!=
c
&&
c
===
c
&&
(
"number"
===
f
&&
(
c
+=
e
&&
e
[
3
]
||
(
n
.
cssNumber
[
h
]?
""
:
"px"
)),
l
.
clearCloneStyle
||
""
!==
c
||
0
!==
b
.
indexOf
(
"background"
)
||
(
i
[
b
]
=
"inherit"
),
!
(
g
&&
"set"
in
g
&&
void
0
===
(
c
=
g
.
set
(
a
,
c
,
d
)))))
try
{
i
[
b
]
=
c
}
catch
(
j
){}}},
css
:
function
(
a
,
b
,
c
,
d
){
var
e
,
f
,
g
,
h
=
n
.
camelCase
(
b
);
return
b
=
n
.
cssProps
[
h
]
||
(
n
.
cssProps
[
h
]
=
bb
(
h
)
||
h
),
g
=
n
.
cssHooks
[
b
]
||
n
.
cssHooks
[
h
],
g
&&
"get"
in
g
&&
(
f
=
g
.
get
(
a
,
!
0
,
c
)),
void
0
===
f
&&
(
f
=
Sa
(
a
,
b
,
d
)),
"normal"
===
f
&&
b
in
$a
&&
(
f
=
$a
[
b
]),
""
===
c
||
c
?(
e
=
parseFloat
(
f
),
c
===!
0
||
isFinite
(
e
)?
e
||
0
:
f
):
f
}}),
n
.
each
([
"height"
,
"width"
],
function
(
a
,
b
){
n
.
cssHooks
[
b
]
=
{
get
:
function
(
a
,
c
,
d
){
return
c
?
Xa
.
test
(
n
.
css
(
a
,
"display"
))
&&
0
===
a
.
offsetWidth
?
Pa
(
a
,
Za
,
function
(){
return
fb
(
a
,
b
,
d
)}):
fb
(
a
,
b
,
d
):
void
0
},
set
:
function
(
a
,
c
,
d
){
var
e
=
d
&&
Ra
(
a
);
return
db
(
a
,
c
,
d
?
eb
(
a
,
b
,
d
,
l
.
boxSizing
&&
"border-box"
===
n
.
css
(
a
,
"boxSizing"
,
!
1
,
e
),
e
):
0
)}}}),
l
.
opacity
||
(
n
.
cssHooks
.
opacity
=
{
get
:
function
(
a
,
b
){
return
Wa
.
test
((
b
&&
a
.
currentStyle
?
a
.
currentStyle
.
filter
:
a
.
style
.
filter
)
||
""
)?.
01
*
parseFloat
(
RegExp
.
$1
)
+
""
:
b
?
"1"
:
""
},
set
:
function
(
a
,
b
){
var
c
=
a
.
style
,
d
=
a
.
currentStyle
,
e
=
n
.
isNumeric
(
b
)?
"alpha(opacity="
+
100
*
b
+
")"
:
""
,
f
=
d
&&
d
.
filter
||
c
.
filter
||
""
;
c
.
zoom
=
1
,(
b
>=
1
||
""
===
b
)
&&
""
===
n
.
trim
(
f
.
replace
(
Va
,
""
))
&&
c
.
removeAttribute
&&
(
c
.
removeAttribute
(
"filter"
),
""
===
b
||
d
&&!
d
.
filter
)
||
(
c
.
filter
=
Va
.
test
(
f
)?
f
.
replace
(
Va
,
e
):
f
+
" "
+
e
)}}),
n
.
cssHooks
.
marginRight
=
Ua
(
l
.
reliableMarginRight
,
function
(
a
,
b
){
return
b
?
Pa
(
a
,{
display
:
"inline-block"
},
Sa
,[
a
,
"marginRight"
]):
void
0
}),
n
.
cssHooks
.
marginLeft
=
Ua
(
l
.
reliableMarginLeft
,
function
(
a
,
b
){
return
b
?(
parseFloat
(
Sa
(
a
,
"marginLeft"
))
||
(
n
.
contains
(
a
.
ownerDocument
,
a
)?
a
.
getBoundingClientRect
().
left
-
Pa
(
a
,{
marginLeft
:
0
},
function
(){
return
a
.
getBoundingClientRect
().
left
}):
0
))
+
"px"
:
void
0
}),
n
.
each
({
margin
:
""
,
padding
:
""
,
border
:
"Width"
},
function
(
a
,
b
){
n
.
cssHooks
[
a
+
b
]
=
{
expand
:
function
(
c
){
for
(
var
d
=
0
,
e
=
{},
f
=
"string"
==
typeof
c
?
c
.
split
(
" "
):[
c
];
4
>
d
;
d
++
)
e
[
a
+
V
[
d
]
+
b
]
=
f
[
d
]
||
f
[
d
-
2
]
||
f
[
0
];
return
e
}},
Na
.
test
(
a
)
||
(
n
.
cssHooks
[
a
+
b
].
set
=
db
)}),
n
.
fn
.
extend
({
css
:
function
(
a
,
b
){
return
Y
(
this
,
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
{},
g
=
0
;
if
(
n
.
isArray
(
b
)){
for
(
d
=
Ra
(
a
),
e
=
b
.
length
;
e
>
g
;
g
++
)
f
[
b
[
g
]]
=
n
.
css
(
a
,
b
[
g
],
!
1
,
d
);
return
f
}
return
void
0
!==
c
?
n
.
style
(
a
,
b
,
c
):
n
.
css
(
a
,
b
)},
a
,
b
,
arguments
.
length
>
1
)},
show
:
function
(){
return
cb
(
this
,
!
0
)},
hide
:
function
(){
return
cb
(
this
)},
toggle
:
function
(
a
){
return
"boolean"
==
typeof
a
?
a
?
this
.
show
():
this
.
hide
():
this
.
each
(
function
(){
W
(
this
)?
n
(
this
).
show
():
n
(
this
).
hide
()})}});
function
gb
(
a
,
b
,
c
,
d
,
e
){
return
new
gb
.
prototype
.
init
(
a
,
b
,
c
,
d
,
e
)}
n
.
Tween
=
gb
,
gb
.
prototype
=
{
constructor
:
gb
,
init
:
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
elem
=
a
,
this
.
prop
=
c
,
this
.
easing
=
e
||
n
.
easing
.
_default
,
this
.
options
=
b
,
this
.
start
=
this
.
now
=
this
.
cur
(),
this
.
end
=
d
,
this
.
unit
=
f
||
(
n
.
cssNumber
[
c
]?
""
:
"px"
)},
cur
:
function
(){
var
a
=
gb
.
propHooks
[
this
.
prop
];
return
a
&&
a
.
get
?
a
.
get
(
this
):
gb
.
propHooks
.
_default
.
get
(
this
)},
run
:
function
(
a
){
var
b
,
c
=
gb
.
propHooks
[
this
.
prop
];
return
this
.
options
.
duration
?
this
.
pos
=
b
=
n
.
easing
[
this
.
easing
](
a
,
this
.
options
.
duration
*
a
,
0
,
1
,
this
.
options
.
duration
):
this
.
pos
=
b
=
a
,
this
.
now
=
(
this
.
end
-
this
.
start
)
*
b
+
this
.
start
,
this
.
options
.
step
&&
this
.
options
.
step
.
call
(
this
.
elem
,
this
.
now
,
this
),
c
&&
c
.
set
?
c
.
set
(
this
):
gb
.
propHooks
.
_default
.
set
(
this
),
this
}},
gb
.
prototype
.
init
.
prototype
=
gb
.
prototype
,
gb
.
propHooks
=
{
_default
:{
get
:
function
(
a
){
var
b
;
return
1
!==
a
.
elem
.
nodeType
||
null
!=
a
.
elem
[
a
.
prop
]
&&
null
==
a
.
elem
.
style
[
a
.
prop
]?
a
.
elem
[
a
.
prop
]:(
b
=
n
.
css
(
a
.
elem
,
a
.
prop
,
""
),
b
&&
"auto"
!==
b
?
b
:
0
)},
set
:
function
(
a
){
n
.
fx
.
step
[
a
.
prop
]?
n
.
fx
.
step
[
a
.
prop
](
a
):
1
!==
a
.
elem
.
nodeType
||
null
==
a
.
elem
.
style
[
n
.
cssProps
[
a
.
prop
]]
&&!
n
.
cssHooks
[
a
.
prop
]?
a
.
elem
[
a
.
prop
]
=
a
.
now
:
n
.
style
(
a
.
elem
,
a
.
prop
,
a
.
now
+
a
.
unit
)}}},
gb
.
propHooks
.
scrollTop
=
gb
.
propHooks
.
scrollLeft
=
{
set
:
function
(
a
){
a
.
elem
.
nodeType
&&
a
.
elem
.
parentNode
&&
(
a
.
elem
[
a
.
prop
]
=
a
.
now
)}},
n
.
easing
=
{
linear
:
function
(
a
){
return
a
},
swing
:
function
(
a
){
return
.
5
-
Math
.
cos
(
a
*
Math
.
PI
)
/
2
},
_default
:
"swing"
},
n
.
fx
=
gb
.
prototype
.
init
,
n
.
fx
.
step
=
{};
var
hb
,
ib
,
jb
=
/^
(?:
toggle|show|hide
)
$/
,
kb
=
/queueHooks$/
;
function
lb
(){
return
a
.
setTimeout
(
function
(){
hb
=
void
0
}),
hb
=
n
.
now
()}
function
mb
(
a
,
b
){
var
c
,
d
=
{
height
:
a
},
e
=
0
;
for
(
b
=
b
?
1
:
0
;
4
>
e
;
e
+=
2
-
b
)
c
=
V
[
e
],
d
[
"margin"
+
c
]
=
d
[
"padding"
+
c
]
=
a
;
return
b
&&
(
d
.
opacity
=
d
.
width
=
a
),
d
}
function
nb
(
a
,
b
,
c
){
for
(
var
d
,
e
=
(
qb
.
tweeners
[
b
]
||
[]).
concat
(
qb
.
tweeners
[
"*"
]),
f
=
0
,
g
=
e
.
length
;
g
>
f
;
f
++
)
if
(
d
=
e
[
f
].
call
(
c
,
b
,
a
))
return
d
}
function
ob
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
m
=
this
,
o
=
{},
p
=
a
.
style
,
q
=
a
.
nodeType
&&
W
(
a
),
r
=
n
.
_data
(
a
,
"fxshow"
);
c
.
queue
||
(
h
=
n
.
_queueHooks
(
a
,
"fx"
),
null
==
h
.
unqueued
&&
(
h
.
unqueued
=
0
,
i
=
h
.
empty
.
fire
,
h
.
empty
.
fire
=
function
(){
h
.
unqueued
||
i
()}),
h
.
unqueued
++
,
m
.
always
(
function
(){
m
.
always
(
function
(){
h
.
unqueued
--
,
n
.
queue
(
a
,
"fx"
).
length
||
h
.
empty
.
fire
()})})),
1
===
a
.
nodeType
&&
(
"height"
in
b
||
"width"
in
b
)
&&
(
c
.
overflow
=
[
p
.
overflow
,
p
.
overflowX
,
p
.
overflowY
],
j
=
n
.
css
(
a
,
"display"
),
k
=
"none"
===
j
?
n
.
_data
(
a
,
"olddisplay"
)
||
Ma
(
a
.
nodeName
):
j
,
"inline"
===
k
&&
"none"
===
n
.
css
(
a
,
"float"
)
&&
(
l
.
inlineBlockNeedsLayout
&&
"inline"
!==
Ma
(
a
.
nodeName
)?
p
.
zoom
=
1
:
p
.
display
=
"inline-block"
)),
c
.
overflow
&&
(
p
.
overflow
=
"hidden"
,
l
.
shrinkWrapBlocks
()
||
m
.
always
(
function
(){
p
.
overflow
=
c
.
overflow
[
0
],
p
.
overflowX
=
c
.
overflow
[
1
],
p
.
overflowY
=
c
.
overflow
[
2
]}));
for
(
d
in
b
)
if
(
e
=
b
[
d
],
jb
.
exec
(
e
)){
if
(
delete
b
[
d
],
f
=
f
||
"toggle"
===
e
,
e
===
(
q
?
"hide"
:
"show"
)){
if
(
"show"
!==
e
||!
r
||
void
0
===
r
[
d
])
continue
;
q
=!
0
}
o
[
d
]
=
r
&&
r
[
d
]
||
n
.
style
(
a
,
d
)}
else
j
=
void
0
;
if
(
n
.
isEmptyObject
(
o
))
"inline"
===
(
"none"
===
j
?
Ma
(
a
.
nodeName
):
j
)
&&
(
p
.
display
=
j
);
else
{
r
?
"hidden"
in
r
&&
(
q
=
r
.
hidden
):
r
=
n
.
_data
(
a
,
"fxshow"
,{}),
f
&&
(
r
.
hidden
=!
q
),
q
?
n
(
a
).
show
():
m
.
done
(
function
(){
n
(
a
).
hide
()}),
m
.
done
(
function
(){
var
b
;
n
.
_removeData
(
a
,
"fxshow"
);
for
(
b
in
o
)
n
.
style
(
a
,
b
,
o
[
b
])});
for
(
d
in
o
)
g
=
nb
(
q
?
r
[
d
]:
0
,
d
,
m
),
d
in
r
||
(
r
[
d
]
=
g
.
start
,
q
&&
(
g
.
end
=
g
.
start
,
g
.
start
=
"width"
===
d
||
"height"
===
d
?
1
:
0
))}}
function
pb
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
;
for
(
c
in
a
)
if
(
d
=
n
.
camelCase
(
c
),
e
=
b
[
d
],
f
=
a
[
c
],
n
.
isArray
(
f
)
&&
(
e
=
f
[
1
],
f
=
a
[
c
]
=
f
[
0
]),
c
!==
d
&&
(
a
[
d
]
=
f
,
delete
a
[
c
]),
g
=
n
.
cssHooks
[
d
],
g
&&
"expand"
in
g
){
f
=
g
.
expand
(
f
),
delete
a
[
d
];
for
(
c
in
f
)
c
in
a
||
(
a
[
c
]
=
f
[
c
],
b
[
c
]
=
e
)}
else
b
[
d
]
=
e
}
function
qb
(
a
,
b
,
c
){
var
d
,
e
,
f
=
0
,
g
=
qb
.
prefilters
.
length
,
h
=
n
.
Deferred
().
always
(
function
(){
delete
i
.
elem
}),
i
=
function
(){
if
(
e
)
return
!
1
;
for
(
var
b
=
hb
||
lb
(),
c
=
Math
.
max
(
0
,
j
.
startTime
+
j
.
duration
-
b
),
d
=
c
/
j
.
duration
||
0
,
f
=
1
-
d
,
g
=
0
,
i
=
j
.
tweens
.
length
;
i
>
g
;
g
++
)
j
.
tweens
[
g
].
run
(
f
);
return
h
.
notifyWith
(
a
,[
j
,
f
,
c
]),
1
>
f
&&
i
?
c
:(
h
.
resolveWith
(
a
,[
j
]),
!
1
)},
j
=
h
.
promise
({
elem
:
a
,
props
:
n
.
extend
({},
b
),
opts
:
n
.
extend
(
!
0
,{
specialEasing
:{},
easing
:
n
.
easing
.
_default
},
c
),
originalProperties
:
b
,
originalOptions
:
c
,
startTime
:
hb
||
lb
(),
duration
:
c
.
duration
,
tweens
:[],
createTween
:
function
(
b
,
c
){
var
d
=
n
.
Tween
(
a
,
j
.
opts
,
b
,
c
,
j
.
opts
.
specialEasing
[
b
]
||
j
.
opts
.
easing
);
return
j
.
tweens
.
push
(
d
),
d
},
stop
:
function
(
b
){
var
c
=
0
,
d
=
b
?
j
.
tweens
.
length
:
0
;
if
(
e
)
return
this
;
for
(
e
=!
0
;
d
>
c
;
c
++
)
j
.
tweens
[
c
].
run
(
1
);
return
b
?(
h
.
notifyWith
(
a
,[
j
,
1
,
0
]),
h
.
resolveWith
(
a
,[
j
,
b
])):
h
.
rejectWith
(
a
,[
j
,
b
]),
this
}}),
k
=
j
.
props
;
for
(
pb
(
k
,
j
.
opts
.
specialEasing
);
g
>
f
;
f
++
)
if
(
d
=
qb
.
prefilters
[
f
].
call
(
j
,
a
,
k
,
j
.
opts
))
return
n
.
isFunction
(
d
.
stop
)
&&
(
n
.
_queueHooks
(
j
.
elem
,
j
.
opts
.
queue
).
stop
=
n
.
proxy
(
d
.
stop
,
d
)),
d
;
return
n
.
map
(
k
,
nb
,
j
),
n
.
isFunction
(
j
.
opts
.
start
)
&&
j
.
opts
.
start
.
call
(
a
,
j
),
n
.
fx
.
timer
(
n
.
extend
(
i
,{
elem
:
a
,
anim
:
j
,
queue
:
j
.
opts
.
queue
})),
j
.
progress
(
j
.
opts
.
progress
).
done
(
j
.
opts
.
done
,
j
.
opts
.
complete
).
fail
(
j
.
opts
.
fail
).
always
(
j
.
opts
.
always
)}
n
.
Animation
=
n
.
extend
(
qb
,{
tweeners
:{
"*"
:[
function
(
a
,
b
){
var
c
=
this
.
createTween
(
a
,
b
);
return
X
(
c
.
elem
,
a
,
U
.
exec
(
b
),
c
),
c
}]},
tweener
:
function
(
a
,
b
){
n
.
isFunction
(
a
)?(
b
=
a
,
a
=
[
"*"
]):
a
=
a
.
match
(
G
);
for
(
var
c
,
d
=
0
,
e
=
a
.
length
;
e
>
d
;
d
++
)
c
=
a
[
d
],
qb
.
tweeners
[
c
]
=
qb
.
tweeners
[
c
]
||
[],
qb
.
tweeners
[
c
].
unshift
(
b
)},
prefilters
:[
ob
],
prefilter
:
function
(
a
,
b
){
b
?
qb
.
prefilters
.
unshift
(
a
):
qb
.
prefilters
.
push
(
a
)}}),
n
.
speed
=
function
(
a
,
b
,
c
){
var
d
=
a
&&
"object"
==
typeof
a
?
n
.
extend
({},
a
):{
complete
:
c
||!
c
&&
b
||
n
.
isFunction
(
a
)
&&
a
,
duration
:
a
,
easing
:
c
&&
b
||
b
&&!
n
.
isFunction
(
b
)
&&
b
};
return
d
.
duration
=
n
.
fx
.
off
?
0
:
"number"
==
typeof
d
.
duration
?
d
.
duration
:
d
.
duration
in
n
.
fx
.
speeds
?
n
.
fx
.
speeds
[
d
.
duration
]:
n
.
fx
.
speeds
.
_default
,
null
!=
d
.
queue
&&
d
.
queue
!==!
0
||
(
d
.
queue
=
"fx"
),
d
.
old
=
d
.
complete
,
d
.
complete
=
function
(){
n
.
isFunction
(
d
.
old
)
&&
d
.
old
.
call
(
this
),
d
.
queue
&&
n
.
dequeue
(
this
,
d
.
queue
)},
d
},
n
.
fn
.
extend
({
fadeTo
:
function
(
a
,
b
,
c
,
d
){
return
this
.
filter
(
W
).
css
(
"opacity"
,
0
).
show
().
end
().
animate
({
opacity
:
b
},
a
,
c
,
d
)},
animate
:
function
(
a
,
b
,
c
,
d
){
var
e
=
n
.
isEmptyObject
(
a
),
f
=
n
.
speed
(
b
,
c
,
d
),
g
=
function
(){
var
b
=
qb
(
this
,
n
.
extend
({},
a
),
f
);(
e
||
n
.
_data
(
this
,
"finish"
))
&&
b
.
stop
(
!
0
)};
return
g
.
finish
=
g
,
e
||
f
.
queue
===!
1
?
this
.
each
(
g
):
this
.
queue
(
f
.
queue
,
g
)},
stop
:
function
(
a
,
b
,
c
){
var
d
=
function
(
a
){
var
b
=
a
.
stop
;
delete
a
.
stop
,
b
(
c
)};
return
"string"
!=
typeof
a
&&
(
c
=
b
,
b
=
a
,
a
=
void
0
),
b
&&
a
!==!
1
&&
this
.
queue
(
a
||
"fx"
,[]),
this
.
each
(
function
(){
var
b
=!
0
,
e
=
null
!=
a
&&
a
+
"queueHooks"
,
f
=
n
.
timers
,
g
=
n
.
_data
(
this
);
if
(
e
)
g
[
e
]
&&
g
[
e
].
stop
&&
d
(
g
[
e
]);
else
for
(
e
in
g
)
g
[
e
]
&&
g
[
e
].
stop
&&
kb
.
test
(
e
)
&&
d
(
g
[
e
]);
for
(
e
=
f
.
length
;
e
--
;)
f
[
e
].
elem
!==
this
||
null
!=
a
&&
f
[
e
].
queue
!==
a
||
(
f
[
e
].
anim
.
stop
(
c
),
b
=!
1
,
f
.
splice
(
e
,
1
));
!
b
&&
c
||
n
.
dequeue
(
this
,
a
)})},
finish
:
function
(
a
){
return
a
!==!
1
&&
(
a
=
a
||
"fx"
),
this
.
each
(
function
(){
var
b
,
c
=
n
.
_data
(
this
),
d
=
c
[
a
+
"queue"
],
e
=
c
[
a
+
"queueHooks"
],
f
=
n
.
timers
,
g
=
d
?
d
.
length
:
0
;
for
(
c
.
finish
=!
0
,
n
.
queue
(
this
,
a
,[]),
e
&&
e
.
stop
&&
e
.
stop
.
call
(
this
,
!
0
),
b
=
f
.
length
;
b
--
;)
f
[
b
].
elem
===
this
&&
f
[
b
].
queue
===
a
&&
(
f
[
b
].
anim
.
stop
(
!
0
),
f
.
splice
(
b
,
1
));
for
(
b
=
0
;
g
>
b
;
b
++
)
d
[
b
]
&&
d
[
b
].
finish
&&
d
[
b
].
finish
.
call
(
this
);
delete
c
.
finish
})}}),
n
.
each
([
"toggle"
,
"show"
,
"hide"
],
function
(
a
,
b
){
var
c
=
n
.
fn
[
b
];
n
.
fn
[
b
]
=
function
(
a
,
d
,
e
){
return
null
==
a
||
"boolean"
==
typeof
a
?
c
.
apply
(
this
,
arguments
):
this
.
animate
(
mb
(
b
,
!
0
),
a
,
d
,
e
)}}),
n
.
each
({
slideDown
:
mb
(
"show"
),
slideUp
:
mb
(
"hide"
),
slideToggle
:
mb
(
"toggle"
),
fadeIn
:{
opacity
:
"show"
},
fadeOut
:{
opacity
:
"hide"
},
fadeToggle
:{
opacity
:
"toggle"
}},
function
(
a
,
b
){
n
.
fn
[
a
]
=
function
(
a
,
c
,
d
){
return
this
.
animate
(
b
,
a
,
c
,
d
)}}),
n
.
timers
=
[],
n
.
fx
.
tick
=
function
(){
var
a
,
b
=
n
.
timers
,
c
=
0
;
for
(
hb
=
n
.
now
();
c
<
b
.
length
;
c
++
)
a
=
b
[
c
],
a
()
||
b
[
c
]
!==
a
||
b
.
splice
(
c
--
,
1
);
b
.
length
||
n
.
fx
.
stop
(),
hb
=
void
0
},
n
.
fx
.
timer
=
function
(
a
){
n
.
timers
.
push
(
a
),
a
()?
n
.
fx
.
start
():
n
.
timers
.
pop
()},
n
.
fx
.
interval
=
13
,
n
.
fx
.
start
=
function
(){
ib
||
(
ib
=
a
.
setInterval
(
n
.
fx
.
tick
,
n
.
fx
.
interval
))},
n
.
fx
.
stop
=
function
(){
a
.
clearInterval
(
ib
),
ib
=
null
},
n
.
fx
.
speeds
=
{
slow
:
600
,
fast
:
200
,
_default
:
400
},
n
.
fn
.
delay
=
function
(
b
,
c
){
return
b
=
n
.
fx
?
n
.
fx
.
speeds
[
b
]
||
b
:
b
,
c
=
c
||
"fx"
,
this
.
queue
(
c
,
function
(
c
,
d
){
var
e
=
a
.
setTimeout
(
c
,
b
);
d
.
stop
=
function
(){
a
.
clearTimeout
(
e
)}})},
function
(){
var
a
,
b
=
d
.
createElement
(
"input"
),
c
=
d
.
createElement
(
"div"
),
e
=
d
.
createElement
(
"select"
),
f
=
e
.
appendChild
(
d
.
createElement
(
"option"
));
c
=
d
.
createElement
(
"div"
),
c
.
setAttribute
(
"className"
,
"t"
),
c
.
innerHTML
=
" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"
,
a
=
c
.
getElementsByTagName
(
"a"
)[
0
],
b
.
setAttribute
(
"type"
,
"checkbox"
),
c
.
appendChild
(
b
),
a
=
c
.
getElementsByTagName
(
"a"
)[
0
],
a
.
style
.
cssText
=
"top:1px"
,
l
.
getSetAttribute
=
"t"
!==
c
.
className
,
l
.
style
=
/top/
.
test
(
a
.
getAttribute
(
"style"
)),
l
.
hrefNormalized
=
"/a"
===
a
.
getAttribute
(
"href"
),
l
.
checkOn
=!!
b
.
value
,
l
.
optSelected
=
f
.
selected
,
l
.
enctype
=!!
d
.
createElement
(
"form"
).
enctype
,
e
.
disabled
=!
0
,
l
.
optDisabled
=!
f
.
disabled
,
b
=
d
.
createElement
(
"input"
),
b
.
setAttribute
(
"value"
,
""
),
l
.
input
=
""
===
b
.
getAttribute
(
"value"
),
b
.
value
=
"t"
,
b
.
setAttribute
(
"type"
,
"radio"
),
l
.
radioValue
=
"t"
===
b
.
value
}();
var
rb
=
/
\r
/g
,
sb
=
/
[\x
20
\t\r\n\f]
+/g
;
n
.
fn
.
extend
({
val
:
function
(
a
){
var
b
,
c
,
d
,
e
=
this
[
0
];{
if
(
arguments
.
length
)
return
d
=
n
.
isFunction
(
a
),
this
.
each
(
function
(
c
){
var
e
;
1
===
this
.
nodeType
&&
(
e
=
d
?
a
.
call
(
this
,
c
,
n
(
this
).
val
()):
a
,
null
==
e
?
e
=
""
:
"number"
==
typeof
e
?
e
+=
""
:
n
.
isArray
(
e
)
&&
(
e
=
n
.
map
(
e
,
function
(
a
){
return
null
==
a
?
""
:
a
+
""
})),
b
=
n
.
valHooks
[
this
.
type
]
||
n
.
valHooks
[
this
.
nodeName
.
toLowerCase
()],
b
&&
"set"
in
b
&&
void
0
!==
b
.
set
(
this
,
e
,
"value"
)
||
(
this
.
value
=
e
))});
if
(
e
)
return
b
=
n
.
valHooks
[
e
.
type
]
||
n
.
valHooks
[
e
.
nodeName
.
toLowerCase
()],
b
&&
"get"
in
b
&&
void
0
!==
(
c
=
b
.
get
(
e
,
"value"
))?
c
:(
c
=
e
.
value
,
"string"
==
typeof
c
?
c
.
replace
(
rb
,
""
):
null
==
c
?
""
:
c
)}}}),
n
.
extend
({
valHooks
:{
option
:{
get
:
function
(
a
){
var
b
=
n
.
find
.
attr
(
a
,
"value"
);
return
null
!=
b
?
b
:
n
.
trim
(
n
.
text
(
a
)).
replace
(
sb
,
" "
)}},
select
:{
get
:
function
(
a
){
for
(
var
b
,
c
,
d
=
a
.
options
,
e
=
a
.
selectedIndex
,
f
=
"select-one"
===
a
.
type
||
0
>
e
,
g
=
f
?
null
:[],
h
=
f
?
e
+
1
:
d
.
length
,
i
=
0
>
e
?
h
:
f
?
e
:
0
;
h
>
i
;
i
++
)
if
(
c
=
d
[
i
],(
c
.
selected
||
i
===
e
)
&&
(
l
.
optDisabled
?
!
c
.
disabled
:
null
===
c
.
getAttribute
(
"disabled"
))
&&
(
!
c
.
parentNode
.
disabled
||!
n
.
nodeName
(
c
.
parentNode
,
"optgroup"
))){
if
(
b
=
n
(
c
).
val
(),
f
)
return
b
;
g
.
push
(
b
)}
return
g
},
set
:
function
(
a
,
b
){
var
c
,
d
,
e
=
a
.
options
,
f
=
n
.
makeArray
(
b
),
g
=
e
.
length
;
while
(
g
--
)
if
(
d
=
e
[
g
],
n
.
inArray
(
n
.
valHooks
.
option
.
get
(
d
),
f
)
>-
1
)
try
{
d
.
selected
=
c
=!
0
}
catch
(
h
){
d
.
scrollHeight
}
else
d
.
selected
=!
1
;
return
c
||
(
a
.
selectedIndex
=-
1
),
e
}}}}),
n
.
each
([
"radio"
,
"checkbox"
],
function
(){
n
.
valHooks
[
this
]
=
{
set
:
function
(
a
,
b
){
return
n
.
isArray
(
b
)?
a
.
checked
=
n
.
inArray
(
n
(
a
).
val
(),
b
)
>-
1
:
void
0
}},
l
.
checkOn
||
(
n
.
valHooks
[
this
].
get
=
function
(
a
){
return
null
===
a
.
getAttribute
(
"value"
)?
"on"
:
a
.
value
})});
var
tb
,
ub
,
vb
=
n
.
expr
.
attrHandle
,
wb
=
/^
(?:
checked|selected
)
$/i
,
xb
=
l
.
getSetAttribute
,
yb
=
l
.
input
;
n
.
fn
.
extend
({
attr
:
function
(
a
,
b
){
return
Y
(
this
,
n
.
attr
,
a
,
b
,
arguments
.
length
>
1
)},
removeAttr
:
function
(
a
){
return
this
.
each
(
function
(){
n
.
removeAttr
(
this
,
a
)})}}),
n
.
extend
({
attr
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
a
.
nodeType
;
if
(
3
!==
f
&&
8
!==
f
&&
2
!==
f
)
return
"undefined"
==
typeof
a
.
getAttribute
?
n
.
prop
(
a
,
b
,
c
):(
1
===
f
&&
n
.
isXMLDoc
(
a
)
||
(
b
=
b
.
toLowerCase
(),
e
=
n
.
attrHooks
[
b
]
||
(
n
.
expr
.
match
.
bool
.
test
(
b
)?
ub
:
tb
)),
void
0
!==
c
?
null
===
c
?
void
n
.
removeAttr
(
a
,
b
):
e
&&
"set"
in
e
&&
void
0
!==
(
d
=
e
.
set
(
a
,
c
,
b
))?
d
:(
a
.
setAttribute
(
b
,
c
+
""
),
c
):
e
&&
"get"
in
e
&&
null
!==
(
d
=
e
.
get
(
a
,
b
))?
d
:(
d
=
n
.
find
.
attr
(
a
,
b
),
null
==
d
?
void
0
:
d
))},
attrHooks
:{
type
:{
set
:
function
(
a
,
b
){
if
(
!
l
.
radioValue
&&
"radio"
===
b
&&
n
.
nodeName
(
a
,
"input"
)){
var
c
=
a
.
value
;
return
a
.
setAttribute
(
"type"
,
b
),
c
&&
(
a
.
value
=
c
),
b
}}}},
removeAttr
:
function
(
a
,
b
){
var
c
,
d
,
e
=
0
,
f
=
b
&&
b
.
match
(
G
);
if
(
f
&&
1
===
a
.
nodeType
)
while
(
c
=
f
[
e
++
])
d
=
n
.
propFix
[
c
]
||
c
,
n
.
expr
.
match
.
bool
.
test
(
c
)?
yb
&&
xb
||!
wb
.
test
(
c
)?
a
[
d
]
=!
1
:
a
[
n
.
camelCase
(
"default-"
+
c
)]
=
a
[
d
]
=!
1
:
n
.
attr
(
a
,
c
,
""
),
a
.
removeAttribute
(
xb
?
c
:
d
)}}),
ub
=
{
set
:
function
(
a
,
b
,
c
){
return
b
===!
1
?
n
.
removeAttr
(
a
,
c
):
yb
&&
xb
||!
wb
.
test
(
c
)?
a
.
setAttribute
(
!
xb
&&
n
.
propFix
[
c
]
||
c
,
c
):
a
[
n
.
camelCase
(
"default-"
+
c
)]
=
a
[
c
]
=!
0
,
c
}},
n
.
each
(
n
.
expr
.
match
.
bool
.
source
.
match
(
/
\w
+/g
),
function
(
a
,
b
){
var
c
=
vb
[
b
]
||
n
.
find
.
attr
;
yb
&&
xb
||!
wb
.
test
(
b
)?
vb
[
b
]
=
function
(
a
,
b
,
d
){
var
e
,
f
;
return
d
||
(
f
=
vb
[
b
],
vb
[
b
]
=
e
,
e
=
null
!=
c
(
a
,
b
,
d
)?
b
.
toLowerCase
():
null
,
vb
[
b
]
=
f
),
e
}:
vb
[
b
]
=
function
(
a
,
b
,
c
){
return
c
?
void
0
:
a
[
n
.
camelCase
(
"default-"
+
b
)]?
b
.
toLowerCase
():
null
}}),
yb
&&
xb
||
(
n
.
attrHooks
.
value
=
{
set
:
function
(
a
,
b
,
c
){
return
n
.
nodeName
(
a
,
"input"
)?
void
(
a
.
defaultValue
=
b
):
tb
&&
tb
.
set
(
a
,
b
,
c
)}}),
xb
||
(
tb
=
{
set
:
function
(
a
,
b
,
c
){
var
d
=
a
.
getAttributeNode
(
c
);
return
d
||
a
.
setAttributeNode
(
d
=
a
.
ownerDocument
.
createAttribute
(
c
)),
d
.
value
=
b
+=
""
,
"value"
===
c
||
b
===
a
.
getAttribute
(
c
)?
b
:
void
0
}},
vb
.
id
=
vb
.
name
=
vb
.
coords
=
function
(
a
,
b
,
c
){
var
d
;
return
c
?
void
0
:(
d
=
a
.
getAttributeNode
(
b
))
&&
""
!==
d
.
value
?
d
.
value
:
null
},
n
.
valHooks
.
button
=
{
get
:
function
(
a
,
b
){
var
c
=
a
.
getAttributeNode
(
b
);
return
c
&&
c
.
specified
?
c
.
value
:
void
0
},
set
:
tb
.
set
},
n
.
attrHooks
.
contenteditable
=
{
set
:
function
(
a
,
b
,
c
){
tb
.
set
(
a
,
""
===
b
?
!
1
:
b
,
c
)}},
n
.
each
([
"width"
,
"height"
],
function
(
a
,
b
){
n
.
attrHooks
[
b
]
=
{
set
:
function
(
a
,
c
){
return
""
===
c
?(
a
.
setAttribute
(
b
,
"auto"
),
c
):
void
0
}}})),
l
.
style
||
(
n
.
attrHooks
.
style
=
{
get
:
function
(
a
){
return
a
.
style
.
cssText
||
void
0
},
set
:
function
(
a
,
b
){
return
a
.
style
.
cssText
=
b
+
""
}});
var
zb
=
/^
(?:
input|select|textarea|button|object
)
$/i
,
Ab
=
/^
(?:
a|area
)
$/i
;
n
.
fn
.
extend
({
prop
:
function
(
a
,
b
){
return
Y
(
this
,
n
.
prop
,
a
,
b
,
arguments
.
length
>
1
)},
removeProp
:
function
(
a
){
return
a
=
n
.
propFix
[
a
]
||
a
,
this
.
each
(
function
(){
try
{
this
[
a
]
=
void
0
,
delete
this
[
a
]}
catch
(
b
){}})}}),
n
.
extend
({
prop
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
a
.
nodeType
;
if
(
3
!==
f
&&
8
!==
f
&&
2
!==
f
)
return
1
===
f
&&
n
.
isXMLDoc
(
a
)
||
(
b
=
n
.
propFix
[
b
]
||
b
,
e
=
n
.
propHooks
[
b
]),
void
0
!==
c
?
e
&&
"set"
in
e
&&
void
0
!==
(
d
=
e
.
set
(
a
,
c
,
b
))?
d
:
a
[
b
]
=
c
:
e
&&
"get"
in
e
&&
null
!==
(
d
=
e
.
get
(
a
,
b
))?
d
:
a
[
b
]},
propHooks
:{
tabIndex
:{
get
:
function
(
a
){
var
b
=
n
.
find
.
attr
(
a
,
"tabindex"
);
return
b
?
parseInt
(
b
,
10
):
zb
.
test
(
a
.
nodeName
)
||
Ab
.
test
(
a
.
nodeName
)
&&
a
.
href
?
0
:
-
1
}}},
propFix
:{
"for"
:
"htmlFor"
,
"class"
:
"className"
}}),
l
.
hrefNormalized
||
n
.
each
([
"href"
,
"src"
],
function
(
a
,
b
){
n
.
propHooks
[
b
]
=
{
get
:
function
(
a
){
return
a
.
getAttribute
(
b
,
4
)}}}),
l
.
optSelected
||
(
n
.
propHooks
.
selected
=
{
get
:
function
(
a
){
var
b
=
a
.
parentNode
;
return
b
&&
(
b
.
selectedIndex
,
b
.
parentNode
&&
b
.
parentNode
.
selectedIndex
),
null
},
set
:
function
(
a
){
var
b
=
a
.
parentNode
;
b
&&
(
b
.
selectedIndex
,
b
.
parentNode
&&
b
.
parentNode
.
selectedIndex
)}}),
n
.
each
([
"tabIndex"
,
"readOnly"
,
"maxLength"
,
"cellSpacing"
,
"cellPadding"
,
"rowSpan"
,
"colSpan"
,
"useMap"
,
"frameBorder"
,
"contentEditable"
],
function
(){
n
.
propFix
[
this
.
toLowerCase
()]
=
this
}),
l
.
enctype
||
(
n
.
propFix
.
enctype
=
"encoding"
);
var
Bb
=
/
[\t\r\n\f]
/g
;
function
Cb
(
a
){
return
n
.
attr
(
a
,
"class"
)
||
""
}
n
.
fn
.
extend
({
addClass
:
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
=
0
;
if
(
n
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
n
(
this
).
addClass
(
a
.
call
(
this
,
b
,
Cb
(
this
)))});
if
(
"string"
==
typeof
a
&&
a
){
b
=
a
.
match
(
G
)
||
[];
while
(
c
=
this
[
i
++
])
if
(
e
=
Cb
(
c
),
d
=
1
===
c
.
nodeType
&&
(
" "
+
e
+
" "
).
replace
(
Bb
,
" "
)){
g
=
0
;
while
(
f
=
b
[
g
++
])
d
.
indexOf
(
" "
+
f
+
" "
)
<
0
&&
(
d
+=
f
+
" "
);
h
=
n
.
trim
(
d
),
e
!==
h
&&
n
.
attr
(
c
,
"class"
,
h
)}}
return
this
},
removeClass
:
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
=
0
;
if
(
n
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
n
(
this
).
removeClass
(
a
.
call
(
this
,
b
,
Cb
(
this
)))});
if
(
!
arguments
.
length
)
return
this
.
attr
(
"class"
,
""
);
if
(
"string"
==
typeof
a
&&
a
){
b
=
a
.
match
(
G
)
||
[];
while
(
c
=
this
[
i
++
])
if
(
e
=
Cb
(
c
),
d
=
1
===
c
.
nodeType
&&
(
" "
+
e
+
" "
).
replace
(
Bb
,
" "
)){
g
=
0
;
while
(
f
=
b
[
g
++
])
while
(
d
.
indexOf
(
" "
+
f
+
" "
)
>-
1
)
d
=
d
.
replace
(
" "
+
f
+
" "
,
" "
);
h
=
n
.
trim
(
d
),
e
!==
h
&&
n
.
attr
(
c
,
"class"
,
h
)}}
return
this
},
toggleClass
:
function
(
a
,
b
){
var
c
=
typeof
a
;
return
"boolean"
==
typeof
b
&&
"string"
===
c
?
b
?
this
.
addClass
(
a
):
this
.
removeClass
(
a
):
n
.
isFunction
(
a
)?
this
.
each
(
function
(
c
){
n
(
this
).
toggleClass
(
a
.
call
(
this
,
c
,
Cb
(
this
),
b
),
b
)}):
this
.
each
(
function
(){
var
b
,
d
,
e
,
f
;
if
(
"string"
===
c
){
d
=
0
,
e
=
n
(
this
),
f
=
a
.
match
(
G
)
||
[];
while
(
b
=
f
[
d
++
])
e
.
hasClass
(
b
)?
e
.
removeClass
(
b
):
e
.
addClass
(
b
)}
else
void
0
!==
a
&&
"boolean"
!==
c
||
(
b
=
Cb
(
this
),
b
&&
n
.
_data
(
this
,
"__className__"
,
b
),
n
.
attr
(
this
,
"class"
,
b
||
a
===!
1
?
""
:
n
.
_data
(
this
,
"__className__"
)
||
""
))})},
hasClass
:
function
(
a
){
var
b
,
c
,
d
=
0
;
b
=
" "
+
a
+
" "
;
while
(
c
=
this
[
d
++
])
if
(
1
===
c
.
nodeType
&&
(
" "
+
Cb
(
c
)
+
" "
).
replace
(
Bb
,
" "
).
indexOf
(
b
)
>-
1
)
return
!
0
;
return
!
1
}}),
n
.
each
(
"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu"
.
split
(
" "
),
function
(
a
,
b
){
n
.
fn
[
b
]
=
function
(
a
,
c
){
return
arguments
.
length
>
0
?
this
.
on
(
b
,
null
,
a
,
c
):
this
.
trigger
(
b
)}}),
n
.
fn
.
extend
({
hover
:
function
(
a
,
b
){
return
this
.
mouseenter
(
a
).
mouseleave
(
b
||
a
)}});
var
Db
=
a
.
location
,
Eb
=
n
.
now
(),
Fb
=
/
\?
/
,
Gb
=
/
(
,
)
|
(\[
|{
)
|
(
}|]
)
|"
(?:[^
"
\\\r\n]
|
\\[
"
\\\/
bfnrt
]
|
\\
u
[\d
a-fA-F
]{4})
*"
\s
*:
?
|true|false|null|-
?(?!
0
\d)\d
+
(?:\.\d
+|
)(?:[
eE
][
+-
]?\d
+|
)
/g
;
n
.
parseJSON
=
function
(
b
){
if
(
a
.
JSON
&&
a
.
JSON
.
parse
)
return
a
.
JSON
.
parse
(
b
+
""
);
var
c
,
d
=
null
,
e
=
n
.
trim
(
b
+
""
);
return
e
&&!
n
.
trim
(
e
.
replace
(
Gb
,
function
(
a
,
b
,
e
,
f
){
return
c
&&
b
&&
(
d
=
0
),
0
===
d
?
a
:(
c
=
e
||
b
,
d
+=!
f
-!
e
,
""
)}))?
Function
(
"return "
+
e
)():
n
.
error
(
"Invalid JSON: "
+
b
)},
n
.
parseXML
=
function
(
b
){
var
c
,
d
;
if
(
!
b
||
"string"
!=
typeof
b
)
return
null
;
try
{
a
.
DOMParser
?(
d
=
new
a
.
DOMParser
,
c
=
d
.
parseFromString
(
b
,
"text/xml"
)):(
c
=
new
a
.
ActiveXObject
(
"Microsoft.XMLDOM"
),
c
.
async
=
"false"
,
c
.
loadXML
(
b
))}
catch
(
e
){
c
=
void
0
}
return
c
&&
c
.
documentElement
&&!
c
.
getElementsByTagName
(
"parsererror"
).
length
||
n
.
error
(
"Invalid XML: "
+
b
),
c
};
var
Hb
=
/#.*$/
,
Ib
=
/
([
?&
])
_=
[^
&
]
*/
,
Jb
=
/^
(
.*
?)
:
[
\t]
*
([^\r\n]
*
)\r?
$/gm
,
Kb
=
/^
(?:
about|app|app-storage|.+-extension|file|res|widget
)
:$/
,
Lb
=
/^
(?:
GET|HEAD
)
$/
,
Mb
=
/^
\/\/
/
,
Nb
=
/^
([\w
.+-
]
+:
)(?:\/\/(?:[^\/
?#
]
*@|
)([^\/
?#:
]
*
)(?:
:
(\d
+
)
|
)
|
)
/
,
Ob
=
{},
Pb
=
{},
Qb
=
"*/"
.
concat
(
"*"
),
Rb
=
Db
.
href
,
Sb
=
Nb
.
exec
(
Rb
.
toLowerCase
())
||
[];
function
Tb
(
a
){
return
function
(
b
,
c
){
"string"
!=
typeof
b
&&
(
c
=
b
,
b
=
"*"
);
var
d
,
e
=
0
,
f
=
b
.
toLowerCase
().
match
(
G
)
||
[];
if
(
n
.
isFunction
(
c
))
while
(
d
=
f
[
e
++
])
"+"
===
d
.
charAt
(
0
)?(
d
=
d
.
slice
(
1
)
||
"*"
,(
a
[
d
]
=
a
[
d
]
||
[]).
unshift
(
c
)):(
a
[
d
]
=
a
[
d
]
||
[]).
push
(
c
)}}
function
Ub
(
a
,
b
,
c
,
d
){
var
e
=
{},
f
=
a
===
Pb
;
function
g
(
h
){
var
i
;
return
e
[
h
]
=!
0
,
n
.
each
(
a
[
h
]
||
[],
function
(
a
,
h
){
var
j
=
h
(
b
,
c
,
d
);
return
"string"
!=
typeof
j
||
f
||
e
[
j
]?
f
?
!
(
i
=
j
):
void
0
:(
b
.
dataTypes
.
unshift
(
j
),
g
(
j
),
!
1
)}),
i
}
return
g
(
b
.
dataTypes
[
0
])
||!
e
[
"*"
]
&&
g
(
"*"
)}
function
Vb
(
a
,
b
){
var
c
,
d
,
e
=
n
.
ajaxSettings
.
flatOptions
||
{};
for
(
d
in
b
)
void
0
!==
b
[
d
]
&&
((
e
[
d
]?
a
:
c
||
(
c
=
{}))[
d
]
=
b
[
d
]);
return
c
&&
n
.
extend
(
!
0
,
a
,
c
),
a
}
function
Wb
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
=
a
.
contents
,
i
=
a
.
dataTypes
;
while
(
"*"
===
i
[
0
])
i
.
shift
(),
void
0
===
e
&&
(
e
=
a
.
mimeType
||
b
.
getResponseHeader
(
"Content-Type"
));
if
(
e
)
for
(
g
in
h
)
if
(
h
[
g
]
&&
h
[
g
].
test
(
e
)){
i
.
unshift
(
g
);
break
}
if
(
i
[
0
]
in
c
)
f
=
i
[
0
];
else
{
for
(
g
in
c
){
if
(
!
i
[
0
]
||
a
.
converters
[
g
+
" "
+
i
[
0
]]){
f
=
g
;
break
}
d
||
(
d
=
g
)}
f
=
f
||
d
}
return
f
?(
f
!==
i
[
0
]
&&
i
.
unshift
(
f
),
c
[
f
]):
void
0
}
function
Xb
(
a
,
b
,
c
,
d
){
var
e
,
f
,
g
,
h
,
i
,
j
=
{},
k
=
a
.
dataTypes
.
slice
();
if
(
k
[
1
])
for
(
g
in
a
.
converters
)
j
[
g
.
toLowerCase
()]
=
a
.
converters
[
g
];
f
=
k
.
shift
();
while
(
f
)
if
(
a
.
responseFields
[
f
]
&&
(
c
[
a
.
responseFields
[
f
]]
=
b
),
!
i
&&
d
&&
a
.
dataFilter
&&
(
b
=
a
.
dataFilter
(
b
,
a
.
dataType
)),
i
=
f
,
f
=
k
.
shift
())
if
(
"*"
===
f
)
f
=
i
;
else
if
(
"*"
!==
i
&&
i
!==
f
){
if
(
g
=
j
[
i
+
" "
+
f
]
||
j
[
"* "
+
f
],
!
g
)
for
(
e
in
j
)
if
(
h
=
e
.
split
(
" "
),
h
[
1
]
===
f
&&
(
g
=
j
[
i
+
" "
+
h
[
0
]]
||
j
[
"* "
+
h
[
0
]])){
g
===!
0
?
g
=
j
[
e
]:
j
[
e
]
!==!
0
&&
(
f
=
h
[
0
],
k
.
unshift
(
h
[
1
]));
break
}
if
(
g
!==!
0
)
if
(
g
&&
a
[
"throws"
])
b
=
g
(
b
);
else
try
{
b
=
g
(
b
)}
catch
(
l
){
return
{
state
:
"parsererror"
,
error
:
g
?
l
:
"No conversion from "
+
i
+
" to "
+
f
}}}
return
{
state
:
"success"
,
data
:
b
}}
n
.
extend
({
active
:
0
,
lastModified
:{},
etag
:{},
ajaxSettings
:{
url
:
Rb
,
type
:
"GET"
,
isLocal
:
Kb
.
test
(
Sb
[
1
]),
global
:
!
0
,
processData
:
!
0
,
async
:
!
0
,
contentType
:
"application/x-www-form-urlencoded; charset=UTF-8"
,
accepts
:{
"*"
:
Qb
,
text
:
"text/plain"
,
html
:
"text/html"
,
xml
:
"application/xml, text/xml"
,
json
:
"application/json, text/javascript"
},
contents
:{
xml
:
/
\b
xml
\b
/
,
html
:
/
\b
html/
,
json
:
/
\b
json
\b
/
},
responseFields
:{
xml
:
"responseXML"
,
text
:
"responseText"
,
json
:
"responseJSON"
},
converters
:{
"* text"
:
String
,
"text html"
:
!
0
,
"text json"
:
n
.
parseJSON
,
"text xml"
:
n
.
parseXML
},
flatOptions
:{
url
:
!
0
,
context
:
!
0
}},
ajaxSetup
:
function
(
a
,
b
){
return
b
?
Vb
(
Vb
(
a
,
n
.
ajaxSettings
),
b
):
Vb
(
n
.
ajaxSettings
,
a
)},
ajaxPrefilter
:
Tb
(
Ob
),
ajaxTransport
:
Tb
(
Pb
),
ajax
:
function
(
b
,
c
){
"object"
==
typeof
b
&&
(
c
=
b
,
b
=
void
0
),
c
=
c
||
{};
var
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
=
n
.
ajaxSetup
({},
c
),
m
=
l
.
context
||
l
,
o
=
l
.
context
&&
(
m
.
nodeType
||
m
.
jquery
)?
n
(
m
):
n
.
event
,
p
=
n
.
Deferred
(),
q
=
n
.
Callbacks
(
"once memory"
),
r
=
l
.
statusCode
||
{},
s
=
{},
t
=
{},
u
=
0
,
v
=
"canceled"
,
w
=
{
readyState
:
0
,
getResponseHeader
:
function
(
a
){
var
b
;
if
(
2
===
u
){
if
(
!
k
){
k
=
{};
while
(
b
=
Jb
.
exec
(
g
))
k
[
b
[
1
].
toLowerCase
()]
=
b
[
2
]}
b
=
k
[
a
.
toLowerCase
()]}
return
null
==
b
?
null
:
b
},
getAllResponseHeaders
:
function
(){
return
2
===
u
?
g
:
null
},
setRequestHeader
:
function
(
a
,
b
){
var
c
=
a
.
toLowerCase
();
return
u
||
(
a
=
t
[
c
]
=
t
[
c
]
||
a
,
s
[
a
]
=
b
),
this
},
overrideMimeType
:
function
(
a
){
return
u
||
(
l
.
mimeType
=
a
),
this
},
statusCode
:
function
(
a
){
var
b
;
if
(
a
)
if
(
2
>
u
)
for
(
b
in
a
)
r
[
b
]
=
[
r
[
b
],
a
[
b
]];
else
w
.
always
(
a
[
w
.
status
]);
return
this
},
abort
:
function
(
a
){
var
b
=
a
||
v
;
return
j
&&
j
.
abort
(
b
),
y
(
0
,
b
),
this
}};
if
(
p
.
promise
(
w
).
complete
=
q
.
add
,
w
.
success
=
w
.
done
,
w
.
error
=
w
.
fail
,
l
.
url
=
((
b
||
l
.
url
||
Rb
)
+
""
).
replace
(
Hb
,
""
).
replace
(
Mb
,
Sb
[
1
]
+
"//"
),
l
.
type
=
c
.
method
||
c
.
type
||
l
.
method
||
l
.
type
,
l
.
dataTypes
=
n
.
trim
(
l
.
dataType
||
"*"
).
toLowerCase
().
match
(
G
)
||
[
""
],
null
==
l
.
crossDomain
&&
(
d
=
Nb
.
exec
(
l
.
url
.
toLowerCase
()),
l
.
crossDomain
=!
(
!
d
||
d
[
1
]
===
Sb
[
1
]
&&
d
[
2
]
===
Sb
[
2
]
&&
(
d
[
3
]
||
(
"http:"
===
d
[
1
]?
"80"
:
"443"
))
===
(
Sb
[
3
]
||
(
"http:"
===
Sb
[
1
]?
"80"
:
"443"
)))),
l
.
data
&&
l
.
processData
&&
"string"
!=
typeof
l
.
data
&&
(
l
.
data
=
n
.
param
(
l
.
data
,
l
.
traditional
)),
Ub
(
Ob
,
l
,
c
,
w
),
2
===
u
)
return
w
;
i
=
n
.
event
&&
l
.
global
,
i
&&
0
===
n
.
active
++&&
n
.
event
.
trigger
(
"ajaxStart"
),
l
.
type
=
l
.
type
.
toUpperCase
(),
l
.
hasContent
=!
Lb
.
test
(
l
.
type
),
f
=
l
.
url
,
l
.
hasContent
||
(
l
.
data
&&
(
f
=
l
.
url
+=
(
Fb
.
test
(
f
)?
"&"
:
"?"
)
+
l
.
data
,
delete
l
.
data
),
l
.
cache
===!
1
&&
(
l
.
url
=
Ib
.
test
(
f
)?
f
.
replace
(
Ib
,
"$1_="
+
Eb
++
):
f
+
(
Fb
.
test
(
f
)?
"&"
:
"?"
)
+
"_="
+
Eb
++
)),
l
.
ifModified
&&
(
n
.
lastModified
[
f
]
&&
w
.
setRequestHeader
(
"If-Modified-Since"
,
n
.
lastModified
[
f
]),
n
.
etag
[
f
]
&&
w
.
setRequestHeader
(
"If-None-Match"
,
n
.
etag
[
f
])),(
l
.
data
&&
l
.
hasContent
&&
l
.
contentType
!==!
1
||
c
.
contentType
)
&&
w
.
setRequestHeader
(
"Content-Type"
,
l
.
contentType
),
w
.
setRequestHeader
(
"Accept"
,
l
.
dataTypes
[
0
]
&&
l
.
accepts
[
l
.
dataTypes
[
0
]]?
l
.
accepts
[
l
.
dataTypes
[
0
]]
+
(
"*"
!==
l
.
dataTypes
[
0
]?
", "
+
Qb
+
"; q=0.01"
:
""
):
l
.
accepts
[
"*"
]);
for
(
e
in
l
.
headers
)
w
.
setRequestHeader
(
e
,
l
.
headers
[
e
]);
if
(
l
.
beforeSend
&&
(
l
.
beforeSend
.
call
(
m
,
w
,
l
)
===!
1
||
2
===
u
))
return
w
.
abort
();
v
=
"abort"
;
for
(
e
in
{
success
:
1
,
error
:
1
,
complete
:
1
})
w
[
e
](
l
[
e
]);
if
(
j
=
Ub
(
Pb
,
l
,
c
,
w
)){
if
(
w
.
readyState
=
1
,
i
&&
o
.
trigger
(
"ajaxSend"
,[
w
,
l
]),
2
===
u
)
return
w
;
l
.
async
&&
l
.
timeout
>
0
&&
(
h
=
a
.
setTimeout
(
function
(){
w
.
abort
(
"timeout"
)},
l
.
timeout
));
try
{
u
=
1
,
j
.
send
(
s
,
y
)}
catch
(
x
){
if
(
!
(
2
>
u
))
throw
x
;
y
(
-
1
,
x
)}}
else
y
(
-
1
,
"No Transport"
);
function
y
(
b
,
c
,
d
,
e
){
var
k
,
s
,
t
,
v
,
x
,
y
=
c
;
2
!==
u
&&
(
u
=
2
,
h
&&
a
.
clearTimeout
(
h
),
j
=
void
0
,
g
=
e
||
""
,
w
.
readyState
=
b
>
0
?
4
:
0
,
k
=
b
>=
200
&&
300
>
b
||
304
===
b
,
d
&&
(
v
=
Wb
(
l
,
w
,
d
)),
v
=
Xb
(
l
,
v
,
w
,
k
),
k
?(
l
.
ifModified
&&
(
x
=
w
.
getResponseHeader
(
"Last-Modified"
),
x
&&
(
n
.
lastModified
[
f
]
=
x
),
x
=
w
.
getResponseHeader
(
"etag"
),
x
&&
(
n
.
etag
[
f
]
=
x
)),
204
===
b
||
"HEAD"
===
l
.
type
?
y
=
"nocontent"
:
304
===
b
?
y
=
"notmodified"
:(
y
=
v
.
state
,
s
=
v
.
data
,
t
=
v
.
error
,
k
=!
t
)):(
t
=
y
,
!
b
&&
y
||
(
y
=
"error"
,
0
>
b
&&
(
b
=
0
))),
w
.
status
=
b
,
w
.
statusText
=
(
c
||
y
)
+
""
,
k
?
p
.
resolveWith
(
m
,[
s
,
y
,
w
]):
p
.
rejectWith
(
m
,[
w
,
y
,
t
]),
w
.
statusCode
(
r
),
r
=
void
0
,
i
&&
o
.
trigger
(
k
?
"ajaxSuccess"
:
"ajaxError"
,[
w
,
l
,
k
?
s
:
t
]),
q
.
fireWith
(
m
,[
w
,
y
]),
i
&&
(
o
.
trigger
(
"ajaxComplete"
,[
w
,
l
]),
--
n
.
active
||
n
.
event
.
trigger
(
"ajaxStop"
)))}
return
w
},
getJSON
:
function
(
a
,
b
,
c
){
return
n
.
get
(
a
,
b
,
c
,
"json"
)},
getScript
:
function
(
a
,
b
){
return
n
.
get
(
a
,
void
0
,
b
,
"script"
)}}),
n
.
each
([
"get"
,
"post"
],
function
(
a
,
b
){
n
[
b
]
=
function
(
a
,
c
,
d
,
e
){
return
n
.
isFunction
(
c
)
&&
(
e
=
e
||
d
,
d
=
c
,
c
=
void
0
),
n
.
ajax
(
n
.
extend
({
url
:
a
,
type
:
b
,
dataType
:
e
,
data
:
c
,
success
:
d
},
n
.
isPlainObject
(
a
)
&&
a
))}}),
n
.
_evalUrl
=
function
(
a
){
return
n
.
ajax
({
url
:
a
,
type
:
"GET"
,
dataType
:
"script"
,
cache
:
!
0
,
async
:
!
1
,
global
:
!
1
,
"throws"
:
!
0
})},
n
.
fn
.
extend
({
wrapAll
:
function
(
a
){
if
(
n
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
n
(
this
).
wrapAll
(
a
.
call
(
this
,
b
))});
if
(
this
[
0
]){
var
b
=
n
(
a
,
this
[
0
].
ownerDocument
).
eq
(
0
).
clone
(
!
0
);
this
[
0
].
parentNode
&&
b
.
insertBefore
(
this
[
0
]),
b
.
map
(
function
(){
var
a
=
this
;
while
(
a
.
firstChild
&&
1
===
a
.
firstChild
.
nodeType
)
a
=
a
.
firstChild
;
return
a
}).
append
(
this
)}
return
this
},
wrapInner
:
function
(
a
){
return
n
.
isFunction
(
a
)?
this
.
each
(
function
(
b
){
n
(
this
).
wrapInner
(
a
.
call
(
this
,
b
))}):
this
.
each
(
function
(){
var
b
=
n
(
this
),
c
=
b
.
contents
();
c
.
length
?
c
.
wrapAll
(
a
):
b
.
append
(
a
)})},
wrap
:
function
(
a
){
var
b
=
n
.
isFunction
(
a
);
return
this
.
each
(
function
(
c
){
n
(
this
).
wrapAll
(
b
?
a
.
call
(
this
,
c
):
a
)})},
unwrap
:
function
(){
return
this
.
parent
().
each
(
function
(){
n
.
nodeName
(
this
,
"body"
)
||
n
(
this
).
replaceWith
(
this
.
childNodes
)}).
end
()}});
function
Yb
(
a
){
return
a
.
style
&&
a
.
style
.
display
||
n
.
css
(
a
,
"display"
)}
function
Zb
(
a
){
if
(
!
n
.
contains
(
a
.
ownerDocument
||
d
,
a
))
return
!
0
;
while
(
a
&&
1
===
a
.
nodeType
){
if
(
"none"
===
Yb
(
a
)
||
"hidden"
===
a
.
type
)
return
!
0
;
a
=
a
.
parentNode
}
return
!
1
}
n
.
expr
.
filters
.
hidden
=
function
(
a
){
return
l
.
reliableHiddenOffsets
()?
a
.
offsetWidth
<=
0
&&
a
.
offsetHeight
<=
0
&&!
a
.
getClientRects
().
length
:
Zb
(
a
)},
n
.
expr
.
filters
.
visible
=
function
(
a
){
return
!
n
.
expr
.
filters
.
hidden
(
a
)};
var
$b
=
/%20/g
,
_b
=
/
\[\]
$/
,
ac
=
/
\r?\n
/g
,
bc
=
/^
(?:
submit|button|image|reset|file
)
$/i
,
cc
=
/^
(?:
input|select|textarea|keygen
)
/i
;
function
dc
(
a
,
b
,
c
,
d
){
var
e
;
if
(
n
.
isArray
(
b
))
n
.
each
(
b
,
function
(
b
,
e
){
c
||
_b
.
test
(
a
)?
d
(
a
,
e
):
dc
(
a
+
"["
+
(
"object"
==
typeof
e
&&
null
!=
e
?
b
:
""
)
+
"]"
,
e
,
c
,
d
)});
else
if
(
c
||
"object"
!==
n
.
type
(
b
))
d
(
a
,
b
);
else
for
(
e
in
b
)
dc
(
a
+
"["
+
e
+
"]"
,
b
[
e
],
c
,
d
)}
n
.
param
=
function
(
a
,
b
){
var
c
,
d
=
[],
e
=
function
(
a
,
b
){
b
=
n
.
isFunction
(
b
)?
b
():
null
==
b
?
""
:
b
,
d
[
d
.
length
]
=
encodeURIComponent
(
a
)
+
"="
+
encodeURIComponent
(
b
)};
if
(
void
0
===
b
&&
(
b
=
n
.
ajaxSettings
&&
n
.
ajaxSettings
.
traditional
),
n
.
isArray
(
a
)
||
a
.
jquery
&&!
n
.
isPlainObject
(
a
))
n
.
each
(
a
,
function
(){
e
(
this
.
name
,
this
.
value
)});
else
for
(
c
in
a
)
dc
(
c
,
a
[
c
],
b
,
e
);
return
d
.
join
(
"&"
).
replace
(
$b
,
"+"
)},
n
.
fn
.
extend
({
serialize
:
function
(){
return
n
.
param
(
this
.
serializeArray
())},
serializeArray
:
function
(){
return
this
.
map
(
function
(){
var
a
=
n
.
prop
(
this
,
"elements"
);
return
a
?
n
.
makeArray
(
a
):
this
}).
filter
(
function
(){
var
a
=
this
.
type
;
return
this
.
name
&&!
n
(
this
).
is
(
":disabled"
)
&&
cc
.
test
(
this
.
nodeName
)
&&!
bc
.
test
(
a
)
&&
(
this
.
checked
||!
Z
.
test
(
a
))}).
map
(
function
(
a
,
b
){
var
c
=
n
(
this
).
val
();
return
null
==
c
?
null
:
n
.
isArray
(
c
)?
n
.
map
(
c
,
function
(
a
){
return
{
name
:
b
.
name
,
value
:
a
.
replace
(
ac
,
"
\
r
\n
"
)}}):{
name
:
b
.
name
,
value
:
c
.
replace
(
ac
,
"
\
r
\n
"
)}}).
get
()}}),
n
.
ajaxSettings
.
xhr
=
void
0
!==
a
.
ActiveXObject
?
function
(){
return
this
.
isLocal
?
ic
():
d
.
documentMode
>
8
?
hc
():
/^
(
get|post|head|put|delete|options
)
$/i
.
test
(
this
.
type
)
&&
hc
()
||
ic
()}:
hc
;
var
ec
=
0
,
fc
=
{},
gc
=
n
.
ajaxSettings
.
xhr
();
a
.
attachEvent
&&
a
.
attachEvent
(
"onunload"
,
function
(){
for
(
var
a
in
fc
)
fc
[
a
](
void
0
,
!
0
)}),
l
.
cors
=!!
gc
&&
"withCredentials"
in
gc
,
gc
=
l
.
ajax
=!!
gc
,
gc
&&
n
.
ajaxTransport
(
function
(
b
){
if
(
!
b
.
crossDomain
||
l
.
cors
){
var
c
;
return
{
send
:
function
(
d
,
e
){
var
f
,
g
=
b
.
xhr
(),
h
=++
ec
;
if
(
g
.
open
(
b
.
type
,
b
.
url
,
b
.
async
,
b
.
username
,
b
.
password
),
b
.
xhrFields
)
for
(
f
in
b
.
xhrFields
)
g
[
f
]
=
b
.
xhrFields
[
f
];
b
.
mimeType
&&
g
.
overrideMimeType
&&
g
.
overrideMimeType
(
b
.
mimeType
),
b
.
crossDomain
||
d
[
"X-Requested-With"
]
||
(
d
[
"X-Requested-With"
]
=
"XMLHttpRequest"
);
for
(
f
in
d
)
void
0
!==
d
[
f
]
&&
g
.
setRequestHeader
(
f
,
d
[
f
]
+
""
);
g
.
send
(
b
.
hasContent
&&
b
.
data
||
null
),
c
=
function
(
a
,
d
){
var
f
,
i
,
j
;
if
(
c
&&
(
d
||
4
===
g
.
readyState
))
if
(
delete
fc
[
h
],
c
=
void
0
,
g
.
onreadystatechange
=
n
.
noop
,
d
)
4
!==
g
.
readyState
&&
g
.
abort
();
else
{
j
=
{},
f
=
g
.
status
,
"string"
==
typeof
g
.
responseText
&&
(
j
.
text
=
g
.
responseText
);
try
{
i
=
g
.
statusText
}
catch
(
k
){
i
=
""
}
f
||!
b
.
isLocal
||
b
.
crossDomain
?
1223
===
f
&&
(
f
=
204
):
f
=
j
.
text
?
200
:
404
}
j
&&
e
(
f
,
i
,
j
,
g
.
getAllResponseHeaders
())},
b
.
async
?
4
===
g
.
readyState
?
a
.
setTimeout
(
c
):
g
.
onreadystatechange
=
fc
[
h
]
=
c
:
c
()},
abort
:
function
(){
c
&&
c
(
void
0
,
!
0
)}}}});
function
hc
(){
try
{
return
new
a
.
XMLHttpRequest
}
catch
(
b
){}}
function
ic
(){
try
{
return
new
a
.
ActiveXObject
(
"Microsoft.XMLHTTP"
)}
catch
(
b
){}}
n
.
ajaxSetup
({
accepts
:{
script
:
"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents
:{
script
:
/
\b(?:
java|ecma
)
script
\b
/
},
converters
:{
"text script"
:
function
(
a
){
return
n
.
globalEval
(
a
),
a
}}}),
n
.
ajaxPrefilter
(
"script"
,
function
(
a
){
void
0
===
a
.
cache
&&
(
a
.
cache
=!
1
),
a
.
crossDomain
&&
(
a
.
type
=
"GET"
,
a
.
global
=!
1
)}),
n
.
ajaxTransport
(
"script"
,
function
(
a
){
if
(
a
.
crossDomain
){
var
b
,
c
=
d
.
head
||
n
(
"head"
)[
0
]
||
d
.
documentElement
;
return
{
send
:
function
(
e
,
f
){
b
=
d
.
createElement
(
"script"
),
b
.
async
=!
0
,
a
.
scriptCharset
&&
(
b
.
charset
=
a
.
scriptCharset
),
b
.
src
=
a
.
url
,
b
.
onload
=
b
.
onreadystatechange
=
function
(
a
,
c
){(
c
||!
b
.
readyState
||
/loaded|complete/
.
test
(
b
.
readyState
))
&&
(
b
.
onload
=
b
.
onreadystatechange
=
null
,
b
.
parentNode
&&
b
.
parentNode
.
removeChild
(
b
),
b
=
null
,
c
||
f
(
200
,
"success"
))},
c
.
insertBefore
(
b
,
c
.
firstChild
)},
abort
:
function
(){
b
&&
b
.
onload
(
void
0
,
!
0
)}}}});
var
jc
=
[],
kc
=
/
(
=
)\?(?=
&|$
)
|
\?\?
/
;
n
.
ajaxSetup
({
jsonp
:
"callback"
,
jsonpCallback
:
function
(){
var
a
=
jc
.
pop
()
||
n
.
expando
+
"_"
+
Eb
++
;
return
this
[
a
]
=!
0
,
a
}}),
n
.
ajaxPrefilter
(
"json jsonp"
,
function
(
b
,
c
,
d
){
var
e
,
f
,
g
,
h
=
b
.
jsonp
!==!
1
&&
(
kc
.
test
(
b
.
url
)?
"url"
:
"string"
==
typeof
b
.
data
&&
0
===
(
b
.
contentType
||
""
).
indexOf
(
"application/x-www-form-urlencoded"
)
&&
kc
.
test
(
b
.
data
)
&&
"data"
);
return
h
||
"jsonp"
===
b
.
dataTypes
[
0
]?(
e
=
b
.
jsonpCallback
=
n
.
isFunction
(
b
.
jsonpCallback
)?
b
.
jsonpCallback
():
b
.
jsonpCallback
,
h
?
b
[
h
]
=
b
[
h
].
replace
(
kc
,
"$1"
+
e
):
b
.
jsonp
!==!
1
&&
(
b
.
url
+=
(
Fb
.
test
(
b
.
url
)?
"&"
:
"?"
)
+
b
.
jsonp
+
"="
+
e
),
b
.
converters
[
"script json"
]
=
function
(){
return
g
||
n
.
error
(
e
+
" was not called"
),
g
[
0
]},
b
.
dataTypes
[
0
]
=
"json"
,
f
=
a
[
e
],
a
[
e
]
=
function
(){
g
=
arguments
},
d
.
always
(
function
(){
void
0
===
f
?
n
(
a
).
removeProp
(
e
):
a
[
e
]
=
f
,
b
[
e
]
&&
(
b
.
jsonpCallback
=
c
.
jsonpCallback
,
jc
.
push
(
e
)),
g
&&
n
.
isFunction
(
f
)
&&
f
(
g
[
0
]),
g
=
f
=
void
0
}),
"script"
):
void
0
}),
n
.
parseHTML
=
function
(
a
,
b
,
c
){
if
(
!
a
||
"string"
!=
typeof
a
)
return
null
;
"boolean"
==
typeof
b
&&
(
c
=
b
,
b
=!
1
),
b
=
b
||
d
;
var
e
=
x
.
exec
(
a
),
f
=!
c
&&
[];
return
e
?[
b
.
createElement
(
e
[
1
])]:(
e
=
ja
([
a
],
b
,
f
),
f
&&
f
.
length
&&
n
(
f
).
remove
(),
n
.
merge
([],
e
.
childNodes
))};
var
lc
=
n
.
fn
.
load
;
n
.
fn
.
load
=
function
(
a
,
b
,
c
){
if
(
"string"
!=
typeof
a
&&
lc
)
return
lc
.
apply
(
this
,
arguments
);
var
d
,
e
,
f
,
g
=
this
,
h
=
a
.
indexOf
(
" "
);
return
h
>-
1
&&
(
d
=
n
.
trim
(
a
.
slice
(
h
,
a
.
length
)),
a
=
a
.
slice
(
0
,
h
)),
n
.
isFunction
(
b
)?(
c
=
b
,
b
=
void
0
):
b
&&
"object"
==
typeof
b
&&
(
e
=
"POST"
),
g
.
length
>
0
&&
n
.
ajax
({
url
:
a
,
type
:
e
||
"GET"
,
dataType
:
"html"
,
data
:
b
}).
done
(
function
(
a
){
f
=
arguments
,
g
.
html
(
d
?
n
(
"<div>"
).
append
(
n
.
parseHTML
(
a
)).
find
(
d
):
a
)}).
always
(
c
&&
function
(
a
,
b
){
g
.
each
(
function
(){
c
.
apply
(
this
,
f
||
[
a
.
responseText
,
b
,
a
])})}),
this
},
n
.
each
([
"ajaxStart"
,
"ajaxStop"
,
"ajaxComplete"
,
"ajaxError"
,
"ajaxSuccess"
,
"ajaxSend"
],
function
(
a
,
b
){
n
.
fn
[
b
]
=
function
(
a
){
return
this
.
on
(
b
,
a
)}}),
n
.
expr
.
filters
.
animated
=
function
(
a
){
return
n
.
grep
(
n
.
timers
,
function
(
b
){
return
a
===
b
.
elem
}).
length
};
function
mc
(
a
){
return
n
.
isWindow
(
a
)?
a
:
9
===
a
.
nodeType
?
a
.
defaultView
||
a
.
parentWindow
:
!
1
}
n
.
offset
=
{
setOffset
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
=
n
.
css
(
a
,
"position"
),
l
=
n
(
a
),
m
=
{};
"static"
===
k
&&
(
a
.
style
.
position
=
"relative"
),
h
=
l
.
offset
(),
f
=
n
.
css
(
a
,
"top"
),
i
=
n
.
css
(
a
,
"left"
),
j
=
(
"absolute"
===
k
||
"fixed"
===
k
)
&&
n
.
inArray
(
"auto"
,[
f
,
i
])
>-
1
,
j
?(
d
=
l
.
position
(),
g
=
d
.
top
,
e
=
d
.
left
):(
g
=
parseFloat
(
f
)
||
0
,
e
=
parseFloat
(
i
)
||
0
),
n
.
isFunction
(
b
)
&&
(
b
=
b
.
call
(
a
,
c
,
n
.
extend
({},
h
))),
null
!=
b
.
top
&&
(
m
.
top
=
b
.
top
-
h
.
top
+
g
),
null
!=
b
.
left
&&
(
m
.
left
=
b
.
left
-
h
.
left
+
e
),
"using"
in
b
?
b
.
using
.
call
(
a
,
m
):
l
.
css
(
m
)}},
n
.
fn
.
extend
({
offset
:
function
(
a
){
if
(
arguments
.
length
)
return
void
0
===
a
?
this
:
this
.
each
(
function
(
b
){
n
.
offset
.
setOffset
(
this
,
a
,
b
)});
var
b
,
c
,
d
=
{
top
:
0
,
left
:
0
},
e
=
this
[
0
],
f
=
e
&&
e
.
ownerDocument
;
if
(
f
)
return
b
=
f
.
documentElement
,
n
.
contains
(
b
,
e
)?(
"undefined"
!=
typeof
e
.
getBoundingClientRect
&&
(
d
=
e
.
getBoundingClientRect
()),
c
=
mc
(
f
),{
top
:
d
.
top
+
(
c
.
pageYOffset
||
b
.
scrollTop
)
-
(
b
.
clientTop
||
0
),
left
:
d
.
left
+
(
c
.
pageXOffset
||
b
.
scrollLeft
)
-
(
b
.
clientLeft
||
0
)}):
d
},
position
:
function
(){
if
(
this
[
0
]){
var
a
,
b
,
c
=
{
top
:
0
,
left
:
0
},
d
=
this
[
0
];
return
"fixed"
===
n
.
css
(
d
,
"position"
)?
b
=
d
.
getBoundingClientRect
():(
a
=
this
.
offsetParent
(),
b
=
this
.
offset
(),
n
.
nodeName
(
a
[
0
],
"html"
)
||
(
c
=
a
.
offset
()),
c
.
top
+=
n
.
css
(
a
[
0
],
"borderTopWidth"
,
!
0
),
c
.
left
+=
n
.
css
(
a
[
0
],
"borderLeftWidth"
,
!
0
)),{
top
:
b
.
top
-
c
.
top
-
n
.
css
(
d
,
"marginTop"
,
!
0
),
left
:
b
.
left
-
c
.
left
-
n
.
css
(
d
,
"marginLeft"
,
!
0
)}}},
offsetParent
:
function
(){
return
this
.
map
(
function
(){
var
a
=
this
.
offsetParent
;
while
(
a
&&!
n
.
nodeName
(
a
,
"html"
)
&&
"static"
===
n
.
css
(
a
,
"position"
))
a
=
a
.
offsetParent
;
return
a
||
Qa
})}}),
n
.
each
({
scrollLeft
:
"pageXOffset"
,
scrollTop
:
"pageYOffset"
},
function
(
a
,
b
){
var
c
=
/Y/
.
test
(
b
);
n
.
fn
[
a
]
=
function
(
d
){
return
Y
(
this
,
function
(
a
,
d
,
e
){
var
f
=
mc
(
a
);
return
void
0
===
e
?
f
?
b
in
f
?
f
[
b
]:
f
.
document
.
documentElement
[
d
]:
a
[
d
]:
void
(
f
?
f
.
scrollTo
(
c
?
n
(
f
).
scrollLeft
():
e
,
c
?
e
:
n
(
f
).
scrollTop
()):
a
[
d
]
=
e
)},
a
,
d
,
arguments
.
length
,
null
)}}),
n
.
each
([
"top"
,
"left"
],
function
(
a
,
b
){
n
.
cssHooks
[
b
]
=
Ua
(
l
.
pixelPosition
,
function
(
a
,
c
){
return
c
?(
c
=
Sa
(
a
,
b
),
Oa
.
test
(
c
)?
n
(
a
).
position
()[
b
]
+
"px"
:
c
):
void
0
})}),
n
.
each
({
Height
:
"height"
,
Width
:
"width"
},
function
(
a
,
b
){
n
.
each
({
padding
:
"inner"
+
a
,
content
:
b
,
""
:
"outer"
+
a
},
function
(
c
,
d
){
n
.
fn
[
d
]
=
function
(
d
,
e
){
var
f
=
arguments
.
length
&&
(
c
||
"boolean"
!=
typeof
d
),
g
=
c
||
(
d
===!
0
||
e
===!
0
?
"margin"
:
"border"
);
return
Y
(
this
,
function
(
b
,
c
,
d
){
var
e
;
return
n
.
isWindow
(
b
)?
b
.
document
.
documentElement
[
"client"
+
a
]:
9
===
b
.
nodeType
?(
e
=
b
.
documentElement
,
Math
.
max
(
b
.
body
[
"scroll"
+
a
],
e
[
"scroll"
+
a
],
b
.
body
[
"offset"
+
a
],
e
[
"offset"
+
a
],
e
[
"client"
+
a
])):
void
0
===
d
?
n
.
css
(
b
,
c
,
g
):
n
.
style
(
b
,
c
,
d
,
g
)},
b
,
f
?
d
:
void
0
,
f
,
null
)}})}),
n
.
fn
.
extend
({
bind
:
function
(
a
,
b
,
c
){
return
this
.
on
(
a
,
null
,
b
,
c
)},
unbind
:
function
(
a
,
b
){
return
this
.
off
(
a
,
null
,
b
)},
delegate
:
function
(
a
,
b
,
c
,
d
){
return
this
.
on
(
b
,
a
,
c
,
d
)},
undelegate
:
function
(
a
,
b
,
c
){
return
1
===
arguments
.
length
?
this
.
off
(
a
,
"**"
):
this
.
off
(
b
,
a
||
"**"
,
c
)}}),
n
.
fn
.
size
=
function
(){
return
this
.
length
},
n
.
fn
.
andSelf
=
n
.
fn
.
addBack
,
"function"
==
typeof
define
&&
define
.
amd
&&
define
(
"jquery"
,[],
function
(){
return
n
});
var
nc
=
a
.
jQuery
,
oc
=
a
.
$
;
return
n
.
noConflict
=
function
(
b
){
return
a
.
$
===
n
&&
(
a
.
$
=
oc
),
b
&&
a
.
jQuery
===
n
&&
(
a
.
jQuery
=
nc
),
n
},
b
||
(
a
.
jQuery
=
a
.
$
=
n
),
n
});
Day21-30/code/web1807/example01.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title></title>
<style>
h1
{
font
:
72px
arial
;
}
#bar
{
color
:
red
;
}
.foo
{
color
:
green
;
}
h1
{
color
:
blue
!important
;
}
#timer
{
width
:
250px
;
height
:
30px
;
line-height
:
30px
;
text-align
:
center
;
color
:
yellow
;
background-color
:
blue
;
float
:
right
;
}
</style>
</head>
<body>
<div
id=
"timer"
></div>
<h1
id=
"bar"
class=
"foo"
>
Hello, world!
</h1>
<button
onclick=
"shutdown()"
>
关闭
</button>
<button
onclick=
"openBaidu()"
>
打开百度
</button>
<script>
function
openBaidu
()
{
window
.
open
(
'https://www.baidu.com'
,
''
,
'width=300,height=200'
);
}
function
shutdown
()
{
if
(
window
.
confirm
(
'确定要退出吗?'
))
{
window
.
close
();
}
}
var
weekdays
=
[
'日'
,
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
];
function
showTime
()
{
var
now
=
new
Date
();
var
year
=
now
.
getFullYear
();
var
month
=
now
.
getMonth
()
+
1
;
var
date
=
now
.
getDate
();
var
hour
=
now
.
getHours
();
var
minute
=
now
.
getMinutes
();
var
second
=
now
.
getSeconds
();
var
day
=
now
.
getDay
();
var
timeStr
=
year
+
'年'
+
(
month
<
10
?
'0'
:
''
)
+
month
+
'月'
+
(
date
<
10
?
'0'
:
''
)
+
date
+
'日 '
+
(
hour
<
10
?
'0'
:
''
)
+
hour
+
':'
+
(
minute
<
10
?
'0'
:
''
)
+
minute
+
':'
+
(
second
<
10
?
'0'
:
''
)
+
second
+
' 星期<b>'
+
weekdays
[
day
]
+
'</b>'
;
var
div
=
document
.
getElementById
(
'timer'
);
div
.
innerHTML
=
timeStr
;
}
showTime
();
window
.
setInterval
(
showTime
,
1000
);
// 1TBS风格 - C/Unix - Dennis M. Ritchie
// Allman风格 - FreeBSD - Allman
// while循环 / do-while循环 / for循环
// while循环 - 不确定循环的次数
// for循环 - 循环的次数是确定的
// do-while循环 - 至少执行一次
// var flag = true;
// do {
// var yearStr = window.prompt('请输入年份: ');
// var year = parseInt(yearStr);
// if (year == yearStr && year > 0) {
// if (year % 4 == 0 && year % 100 != 0
// || year % 400 == 0) {
// window.alert(year + '年是闰年');
// } else {
// window.alert(year + '年不是闰年');
// }
// flag = window.confirm('是否继续?');
// } else {
// window.alert('请输入有效的年份!');
// }
// } while (flag);
</script>
</body>
</html>
Day21-30/code/web1807/example02.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title>
成都机动车限行查询
</title>
<style>
#search
{
width
:
640px
;
margin
:
0
auto
;
text-align
:
center
;
margin-top
:
150px
;
}
#carno
{
display
:
inline-block
;
width
:
460px
;
height
:
36px
;
font
:
36px
/
36px
arial
;
text-align
:
center
;
vertical-align
:
middle
;
border
:
none
;
outline
:
none
;
border-bottom
:
1px
dotted
darkgray
;
}
#search
input
[
type
=
button
]
{
width
:
80px
;
height
:
36px
;
font
:
28px
/
36px
arial
;
border
:
none
;
color
:
white
;
background-color
:
red
;
vertical-align
:
middle
;
}
#result
{
width
:
640px
;
margin
:
0
auto
;
text-align
:
center
;
font
:
32px
/
36px
arial
;
}
</style>
</head>
<body>
<div
id=
"search"
>
<input
type=
"text"
id=
"carno"
placeholder=
"请输入车牌号"
>
<input
type=
"button"
value=
"查询"
onclick=
"showResult()"
>
<input
type=
"button"
value=
"清除"
onclick=
"clearResult()"
>
</div>
<hr>
<p
id=
"result"
></p>
<script>
var
p
=
document
.
getElementById
(
'result'
);
function
clearResult
()
{
p
.
textContent
=
''
;
}
function
showResult
()
{
var
input
=
document
.
getElementById
(
'carno'
);
var
carNo
=
input
.
value
;
var
regex
=
/^
[
京津沪渝辽吉黑冀鲁豫晋陕甘闽粤桂川云贵苏浙皖湘鄂赣青新宁蒙藏琼
][
A-Z
]\s
*
[
0-9A-Z
]{5}
$/
;
if
(
regex
.
test
(
carNo
))
{
var
digitStr
=
lastDigit
(
carNo
);
if
(
digitStr
)
{
var
digit
=
parseInt
(
digitStr
);
var
day
=
new
Date
().
getDay
();
if
(
digit
%
5
==
day
||
digit
%
5
==
day
-
5
)
{
p
.
innerHTML
=
carNo
+
'今日限行<br>'
+
p
.
innerHTML
;
}
else
{
p
.
innerHTML
=
carNo
+
'今日不限行<br>'
+
p
.
innerHTML
;
}
}
else
{
p
.
innerHTML
=
carNo
+
'不是有效的车牌号<br>'
+
p
.
innerHTML
;
}
}
else
{
p
.
innerHTML
=
carNo
+
'不是有效的车牌号<br>'
+
p
.
innerHTML
;
}
input
.
value
=
''
;
}
function
lastDigit
(
str
)
{
for
(
var
index
=
str
.
length
-
1
;
index
>=
0
;
index
-=
1
)
{
var
digitStr
=
str
[
index
];
if
(
digitStr
>=
'0'
&&
digitStr
<=
'9'
)
{
return
digitStr
;
}
}
return
null
;
}
</script>
</body>
</html>
\ No newline at end of file
Day21-30/code/web1807/example03.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title>
延迟跳转
</title>
</head>
<body>
<h3><span
id=
"counter"
>
5
</span>
秒钟以后自动跳转到百度
</h3>
<script>
var
countDown
=
5
;
var
span
=
document
.
getElementById
(
'counter'
);
window
.
setTimeout
(
function
()
{
countDown
-=
1
;
if
(
countDown
==
0
)
{
// window对象的location属性代表浏览器地址栏
window
.
location
.
href
=
'https://www.baidu.com'
;
}
else
{
span
.
textContent
=
countDown
;
// arguments是函数中的隐含对象
// 通过arguments[0]、arguments[1]可以获得函数的参数
// 通过arguments.callee可以获得正在被调用的函数
window
.
setTimeout
(
arguments
.
callee
,
1000
);
}
},
1000
);
</script>
</body>
</html>
Day21-30/code/web1807/example04.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title></title>
<style>
#adv
{
width
:
705px
;
margin
:
0
auto
;
}
</style>
</head>
<body>
<div
id=
"adv"
>
<img
src=
"img/slide-1.jpg"
alt=
""
width=
"705"
>
</div>
<script>
var
index
=
0
;
var
images
=
[
'slide-1.jpg'
,
'slide-2.jpg'
,
'slide-3.jpg'
,
'slide-4.jpg'
]
// 通过document对象获取页面元素的常用方法有5个:
// document.getElementById('...') ==> 通过ID获取单个元素
// document.getElementsByTagName('...') ==> 通过标签名获取元素的列表
// document.getElementsByClassName('...') ==> 通过类名获取元素的列表
// document.querySelector('...') ==> 通过样式表选择器获取单个元素
// document.querySelectorAll('...') ==> 通过样式表选择器获取元素的列表
var
img
=
document
.
querySelector
(
'img'
);
// var img = document.getElementsByTagName('img')[0];
var
timerId
;
startIt
();
var
div
=
document
.
querySelector
(
'#adv'
);
div
.
addEventListener
(
'mouseover'
,
stopIt
);
div
.
addEventListener
(
'mouseout'
,
startIt
);
function
startIt
()
{
timerId
=
window
.
setInterval
(
function
()
{
index
+=
1
;
index
%=
images
.
length
;
img
.
src
=
'img/'
+
images
[
index
];
},
2000
);
}
function
stopIt
()
{
window
.
clearInterval
(
timerId
);
}
</script>
</body>
</html>
Day21-30/code/web1807/example05.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title></title>
<style>
#one
{
width
:
400px
;
height
:
400px
;
background-color
:
indianred
;
margin
:
60px
auto
;
}
#two
{
width
:
300px
;
height
:
300px
;
background-color
:
darkseagreen
;
}
#three
{
width
:
200px
;
height
:
200px
;
background-color
:
lightsteelblue
;
}
#two
,
#three
{
position
:
relative
;
left
:
50px
;
top
:
50px
;
}
</style>
</head>
<body>
<div
id=
"one"
>
<div
id=
"two"
>
<div
id=
"three"
></div>
</div>
</div>
<script>
var
one
=
document
.
querySelector
(
'#one'
);
var
two
=
document
.
querySelector
(
'#two'
);
var
three
=
document
.
querySelector
(
'#three'
);
// addEventListener方法的第一个参数是事件名
// 第二个参数是事件发生时需要执行的回调函数
// 第三个参数是一个布尔值
// 如果是true表示事件捕获 - 从外层向内层传递事件
// 如果是false表示事件冒泡 - 从内存向外层传递事件
// 一般情况下事件处理的方式都是事件冒泡(默认行为)
// 如果想阻止事件的传播行为可以调用事件对象的stopPropagation方法
one
.
addEventListener
(
'click'
,
function
()
{
window
.
alert
(
'I am one!'
);
});
two
.
addEventListener
(
'click'
,
function
()
{
window
.
alert
(
'I am two!'
);
});
// 事件回调函数中的第一个参数是事件对象(封装了和事件相关的信息)
three
.
addEventListener
(
'click'
,
function
(
evt
)
{
window
.
alert
(
'I am three!'
);
evt
.
stopPropagation
();
});
</script>
</body>
</html>
Day21-30/code/web1807/example06.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title></title>
<style>
#buttons
>
button
{
border
:
none
;
outline
:
none
;
width
:
120px
;
height
:
40px
;
font
:
22px
/
40px
Arial
;
background-color
:
red
;
color
:
white
;
}
</style>
</head>
<body>
<div
id=
"buttons"
>
<button><input
type=
"checkbox"
>
苹果
</button>
<button><input
type=
"checkbox"
>
香蕉
</button>
<button><input
type=
"checkbox"
>
草莓
</button>
<button><input
type=
"checkbox"
>
蓝莓
</button>
<button><input
type=
"checkbox"
>
榴莲
</button>
<button><input
type=
"checkbox"
>
西瓜
</button>
<button><input
type=
"checkbox"
>
芒果
</button>
<button><input
type=
"checkbox"
>
柠檬
</button>
</div>
<script>
var
buttons
=
document
.
querySelectorAll
(
'#buttons>button'
);
for
(
var
i
=
0
;
i
<
buttons
.
length
;
i
+=
1
)
{
buttons
[
i
].
firstChild
.
addEventListener
(
'click'
,
function
(
evt
)
{
var
checkbox
=
evt
.
target
||
evt
.
srcElement
;
if
(
checkbox
.
checked
)
{
checkbox
.
parentNode
.
style
.
backgroundColor
=
'lightseagreen'
;
}
else
{
checkbox
.
parentNode
.
style
.
backgroundColor
=
'red'
;
}
evt
.
stopPropagation
();
});
buttons
[
i
].
addEventListener
(
'click'
,
function
(
evt
)
{
// 通过事件对象的target属性可以获取事件源(谁引发了事件)
// 但是有的浏览器是通过srcElement属性获取事件源的
// 可以通过短路或运算来解决这个兼容性问题
var
button
=
evt
.
target
||
evt
.
srcElement
;
// 当获取到一个元素之后可以通过它的属性来获取它的父元素、子元素以及兄弟元素
// parentNode - 父元素
// firstChild / lastChild / children - 第一个子元素 / 最后一个子元素 / 所有子元素
// previousSibling / nextSibling - 前一个兄弟元素 / 后一个兄弟元素
var
checkbox
=
button
.
firstChild
;
checkbox
.
checked
=
!
checkbox
.
checked
;
if
(
checkbox
.
checked
)
{
button
.
style
.
backgroundColor
=
'lightseagreen'
;
}
else
{
button
.
style
.
backgroundColor
=
'red'
;
}
});
}
</script>
</body>
</html>
Day21-30/code/web180
4/example08
.html
→
Day21-30/code/web180
7/example07
.html
View file @
bdaac352
...
@@ -51,8 +51,10 @@
...
@@ -51,8 +51,10 @@
</style>
</style>
</head>
</head>
<body>
<body>
<!-- <a href="mailto:957658@qq.com">联系站长</a> -->
<div
id=
"container"
>
<div
id=
"container"
>
<ul
id=
"fruits"
>
<ul
id=
"fruits"
>
<!-- a标签有默认的跳转页面的行为有两种方法可以阻止它的默认行为-->
<li>
苹果
<a
href=
""
>
×
</a></li>
<li>
苹果
<a
href=
""
>
×
</a></li>
<li>
香蕉
<a
href=
""
>
×
</a></li>
<li>
香蕉
<a
href=
""
>
×
</a></li>
<li>
火龙果
<a
href=
""
>
×
</a></li>
<li>
火龙果
<a
href=
""
>
×
</a></li>
...
@@ -61,51 +63,47 @@
...
@@ -61,51 +63,47 @@
<input
type=
"text"
name=
"fruit"
>
<input
type=
"text"
name=
"fruit"
>
<input
id=
"ok"
type=
"button"
value=
"确定"
>
<input
id=
"ok"
type=
"button"
value=
"确定"
>
</div>
</div>
<script
src=
"js/
common
.js"
></script>
<script
src=
"js/
mylib
.js"
></script>
<script>
<script>
function
removeItem
(
evt
)
{
function
removeItem
(
evt
)
{
evt
=
evt
||
window
.
event
;
evt
.
preventDefault
();
prevent
(
evt
);
// 用自定义函数阻止事件的默认行为
var
a
=
evt
.
target
||
evt
.
srcElement
;
var
target
=
evt
.
target
||
evt
.
srcElement
;
var
li
=
a
.
parentNode
;
var
li
=
target
.
parentNode
;
li
.
parentNode
.
removeChild
(
li
);
li
.
parentNode
.
removeChild
(
li
);
}
}
(
function
()
{
function
addItem
()
{
function
addItem
(
evt
)
{
var
fruitName
=
input
.
value
.
trim
();
var
fruitName
=
textInput
.
value
.
trim
();
if
(
fruitName
.
length
>
0
)
{
if
(
fruitName
.
length
>
0
)
{
var
li
=
document
.
createElement
(
"li"
);
var
li
=
document
.
createElement
(
'li'
);
li
.
textContent
=
fruitName
;
li
.
textContent
=
fruitName
;
li
.
style
.
backgroundColor
=
"rgba(20, 150, 180, 0.5)"
;
li
.
style
.
backgroundColor
=
randomColor
()
;
var
a
=
document
.
createElement
(
"a"
);
var
a
=
document
.
createElement
(
'a'
);
a
.
href
=
""
;
a
.
href
=
''
;
a
.
textContent
=
"×"
;
a
.
textContent
=
'×'
;
bind
(
a
,
"click"
,
removeItem
);
a
.
addEventListener
(
'click'
,
removeItem
);
li
.
appendChild
(
a
);
li
.
appendChild
(
a
);
var
ul
=
document
.
getElementById
(
"fruits"
);
ul
.
insertBefore
(
li
,
ul
.
firstChild
);
ul
.
insertBefore
(
li
,
ul
.
children
[
0
]);
}
}
textInput
.
value
=
""
;
input
.
value
=
''
;
textI
nput
.
focus
();
i
nput
.
focus
();
}
}
var
anchors
=
document
.
querySelectorAll
(
"#fruits>li>a"
);
var
anchors
=
document
.
querySelectorAll
(
'#fruits a'
);
for
(
var
i
=
0
;
i
<
anchors
.
length
;
i
+=
1
)
{
for
(
var
i
=
0
;
i
<
anchors
.
length
;
i
+=
1
)
{
bind
(
anchors
[
i
],
"click"
,
removeItem
);
anchors
[
i
].
addEventListener
(
'click'
,
removeItem
);
}
}
var
btn
=
document
.
getElementById
(
"ok"
);
var
textInput
=
document
.
getElementsByName
(
"fruit"
)[
0
];
var
ul
=
document
.
getElementById
(
'fruits'
);
bind
(
textInput
,
"keyup"
,
function
(
evt
)
{
var
input
=
document
.
querySelector
(
'#container input[type=text]'
);
evt
=
evt
||
window
.
event
;
input
.
addEventListener
(
'keypress'
,
function
(
evt
)
{
var
code
=
evt
.
keyCode
||
evt
.
which
;
var
key
=
evt
.
keyCode
||
evt
.
which
;
// console.log(code);
if
(
key
==
13
)
{
if
(
code
==
13
)
{
addItem
();
addItem
();
}
}
});
});
bind
(
btn
,
"click"
,
addItem
);
var
okButton
=
document
.
querySelector
(
'#ok'
);
})(
);
okButton
.
addEventListener
(
'click'
,
addItem
);
</script>
</script>
</body>
</body>
</html>
</html>
Day21-30/code/web1807/example08.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html
lang=
"zh"
>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
<style>
#adv
{
width
:
200px
;
height
:
200px
;
color
:
yellow
;
position
:
fixed
;
right
:
10px
;
top
:
10px
;
background-color
:
blue
;
}
#adv
button
{
float
:
right
;
border
:
none
;
outline
:
none
;
color
:
white
;
background-color
:
gray
;
}
</style>
</head>
<body>
<div
id=
"adv"
>
此广告位招租
<button>
关闭
</button>
</div>
<script>
+
function
()
{
var
advDiv
=
document
.
querySelector
(
'#adv'
);
var
button
=
document
.
querySelector
(
'#adv button'
);
var
counter
=
0
;
button
.
addEventListener
(
'click'
,
function
()
{
counter
+=
1
;
if
(
counter
<
3
)
{
var
currentStyle
=
document
.
defaultView
.
getComputedStyle
(
advDiv
);
var
newTop
=
parseInt
(
currentStyle
.
top
)
+
20
;
var
newRight
=
parseInt
(
currentStyle
.
right
)
+
20
;
advDiv
.
style
.
top
=
newTop
+
'px'
;
advDiv
.
style
.
right
=
newRight
+
'px'
;
}
else
{
advDiv
.
style
.
display
=
'none'
;
}
});
}();
// 鼠标按下 - mousedown
// 鼠标移动 - mousemove
// 鼠标松开 - mouseup
// clientX / clientY - 鼠标的横纵坐标
</script>
</body>
</html>
\ No newline at end of file
Day21-30/code/web1807/example09.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title></title>
<style>
#data
{
border-collapse
:
collapse
;
}
#data
td
,
#data
th
{
width
:
120px
;
height
:
40px
;
text-align
:
center
;
border
:
1px
solid
black
;
}
#buttons
{
margin
:
10px
0
;
}
</style>
</head>
<body>
<table
id=
"data"
>
<caption>
数据统计表
</caption>
<tbody>
<tr>
<th>
姓名
</th>
<th>
年龄
</th>
<th>
性别
</th>
<th>
身高
</th>
<th>
体重
</th>
</tr>
<tr>
<td>
Item1
</td>
<td>
Item2
</td>
<td>
Item3
</td>
<td>
Item4
</td>
<td>
Item5
</td>
</tr>
<tr>
<td>
Item1
</td>
<td>
Item2
</td>
<td>
Item3
</td>
<td>
Item4
</td>
<td>
Item5
</td>
</tr>
<tr>
<td>
Item1
</td>
<td>
Item2
</td>
<td>
Item3
</td>
<td>
Item4
</td>
<td>
Item5
</td>
</tr>
<tr>
<td>
Item1
</td>
<td>
Item2
</td>
<td>
Item3
</td>
<td>
Item4
</td>
<td>
Item5
</td>
</tr>
<tr>
<td>
Item1
</td>
<td>
Item2
</td>
<td>
Item3
</td>
<td>
Item4
</td>
<td>
Item5
</td>
</tr>
<tr>
<td>
Item1
</td>
<td>
Item2
</td>
<td>
Item3
</td>
<td>
Item4
</td>
<td>
Item5
</td>
</tr>
</tbody>
</table>
<div
id=
"buttons"
>
<button
id=
"pretty"
>
隔行换色
</button>
<button
id=
"clear"
>
清除数据
</button>
<button
id=
"remove"
>
删单元格
</button>
<button
id=
"hide"
>
隐藏表格
</button>
</div>
<!-- jQuery: Write Less Do More -->
<!-- 加载本地的jQuery文件适合开发和测试时使用 -->
<script
src=
"js/jquery.min.js"
></script>
<!-- 下面的方式适合商业项目通过CDN服务器来加速获取jQuery的JS文件 -->
<!-- <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> -->
<script>
// JavaScript Object Notation == JSON
var
stu
=
{
'id'
:
1001
,
'name'
:
'骆昊'
,
'age'
:
15
,
'study'
:
function
(
course
)
{
alert
(
this
.
name
+
'正在学习'
+
course
);
},
'watchAv'
:
function
()
{
if
(
this
.
age
>=
18
)
{
alert
(
this
.
name
+
'正在观看岛国动作片'
);
}
else
{
alert
(
this
.
name
+
'只能观看《熊出没》'
);
}
}
};
stu
.
study
(
'Python'
);
stu
.
watchAv
();
$
(
function
()
{
$
(
'#hide'
).
on
(
'click'
,
function
()
{
// 根据样式表选择器获取元素 获取到的不是原生的JS对象
// 而是经过jQuery封装过后的对象(有更多的方法方便操作)
$
(
'#data'
).
fadeOut
(
2000
);
});
$
(
'#remove'
).
on
(
'click'
,
function
()
{
$
(
'#data tr:gt(0):last-child'
).
remove
();
});
$
(
'#clear'
).
on
(
'click'
,
function
()
{
$
(
'#data tr:gt(0)>td'
).
empty
();
});
$
(
'#pretty'
).
on
(
'click'
,
function
()
{
$
(
'#data tr:gt(0):odd'
).
css
({
'background-color'
:
'#ccc'
,
'font-size'
:
'36px'
,
'font-weight'
:
'bolder'
});
$
(
'#data tr:gt(0):even'
).
css
(
'background-color'
,
'#abc'
);
});
});
</script>
</body>
</html>
Day21-30/code/web180
4/example12
.html
→
Day21-30/code/web180
7/example10
.html
View file @
bdaac352
...
@@ -58,48 +58,39 @@
...
@@ -58,48 +58,39 @@
<li>
火龙果
<a
href=
""
>
×
</a></li>
<li>
火龙果
<a
href=
""
>
×
</a></li>
<li>
西瓜
<a
href=
""
>
×
</a></li>
<li>
西瓜
<a
href=
""
>
×
</a></li>
</ul>
</ul>
<input
type=
"text"
name=
"fruit"
>
<input
id=
'name'
type=
"text"
name=
"fruit"
>
<input
id=
"ok"
type=
"button"
value=
"确定"
>
<input
id=
"ok"
type=
"button"
value=
"确定"
>
</div>
</div>
<script
src=
"js/jquery.min.js"
></script>
<script
src=
"js/jquery.min.js"
></script>
<script>
<script>
// 写JavaScript代码时为什么推荐使用jQuery而不写原生JavaScript
// 因为jQuery对象有更多的属性和方法, 能够用更少的代码做更多的事情
// 而且jQuery对象的方法使用灵活且没有浏览器兼容性问题
// 当加载jQuery成功时会在window对象上绑定名为jQuery的属性
// 该属性还有一个名字叫$, $既是一个对象也是一个函数
// 当$作为函数时有以下四种最常用的用法:
// 1. 如果$函数的参数是一个函数, 传入的函数是页面加载完成时要执行的回调函数
// 2. 如果$函数的参数是选择器字符串, 那么$函数会返回代表元素的jQuery对象(其本质是一个数组)
// 3. 如果$函数的参数是标签字符串, 那么$函数会创建该标签并返回对应的jQuery对象
// 4. 如果$函数的参数是原生JavaScript对象(DOM), 那么$函数将该对象处理成jQuery对象
// 用法1
$
(
function
()
{
function
removeItem
(
evt
)
{
function
removeItem
(
evt
)
{
evt
.
preventDefault
();
evt
.
preventDefault
();
// 用法4
// $函数的第四种用法:参数是原生的JS对象
// 将原生的JS对象包装成对应的jQuery对象
$
(
evt
.
target
).
parent
().
remove
();
$
(
evt
.
target
).
parent
().
remove
();
}
}
function
addItem
(
evt
)
{
// $函数的第一种用法: 参数是另一个函数
// 用法2
// 传入的函数是页面加载完成之后要执行的回调函数
var
fruitName
=
$
(
"#fruits+input"
).
val
().
trim
();
// $(document).ready(function() {});
$
(
function
()
{
// $函数的第二种用法:参数是一个选择器字符串
// 获取元素并得到与之对应的jQuery对象(伪数组)
$
(
'#fruits a'
).
on
(
'click'
,
removeItem
);
$
(
'#ok'
).
on
(
'click'
,
function
()
{
var
fruitName
=
$
(
'#name'
).
val
().
trim
();
if
(
fruitName
.
length
>
0
)
{
if
(
fruitName
.
length
>
0
)
{
// 用法3
$
(
'#fruits'
).
append
(
var
$li
=
$
(
"<li>"
).
text
(
fruitName
);
// $函数的第三种用法:参数是一个标签字符串
// 用法3
// 创建新元素并得到与之对应的jQuery对象
var
$a
=
$
(
"<a href=''>"
).
text
(
"×"
).
on
(
"click"
,
removeItem
);
$
(
'<li>'
).
text
(
fruitName
).
append
(
$
(
"#fruits"
).
append
(
$li
.
append
(
$a
));
$
(
'<a>'
).
attr
(
'href'
,
''
).
text
(
'×'
).
on
(
'click'
,
removeItem
)
)
);
}
}
$
(
"#fruits+input"
).
val
(
""
);
// 对jQuery对象使用下标运算或调用get()方法会得到原生JS对象
$
(
"#fruits+input"
).
focus
();
$
(
'#name'
).
val
(
''
).
get
(
0
).
focus
();
}
});
// 用法2
$
(
"#fruits a"
).
on
(
"click"
,
removeItem
);
$
(
"#ok"
).
on
(
"click"
,
addItem
);
});
});
</script>
</script>
</body>
</body>
...
...
Day21-30/code/web1807/example11.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title></title>
</head>
<body>
<button
id=
"ok"
>
换一组
</button>
<div
id=
"container"
></div>
<!-- HTML: Hyper-Text Markup Language -->
<!-- XML: eXtensible Markup Language -->
<!-- XML最为重要的用途是在两个异构的系统之间交换数据 -->
<!-- 现在这项功能基本上被JSON和YAML格式替代了 -->
<!-- Ajax: Asynchronous JavaScript and XML -->
<!-- 通过JavaScript代码向服务器发起异步请求并获得数据 -->
<!-- 异步请求:在不中断用户体验的前提下向服务器发出请求 -->
<!-- 获得数据后可以通过DOM操作对页面进行局部刷新加载服务器返回的数据 -->
<script>
(
function
()
{
var
div
=
document
.
getElementById
(
'container'
);
var
button
=
document
.
getElementById
(
'ok'
);
button
.
addEventListener
(
'click'
,
function
()
{
// 1. 创建异步请求对象
var
xhr
=
new
XMLHttpRequest
();
if
(
xhr
)
{
var
url
=
'http://api.tianapi.com/meinv/?key=772a81a51ae5c780251b1f98ea431b84&num=10'
;
// 2. 配置异步请求
xhr
.
open
(
'get'
,
url
,
true
);
// 3. 绑定事件回调函数(服务器成功响应后要干什么)
xhr
.
onreadystatechange
=
function
()
{
if
(
xhr
.
readyState
==
4
&&
xhr
.
status
==
200
)
{
div
.
innerHTML
=
''
;
// 5. 解析服务器返回的JSON格式的数据
var
jsonObj
=
JSON
.
parse
(
xhr
.
responseText
);
var
array
=
jsonObj
.
newslist
;
// 6. 通过DOM操作实现页面的局部刷新
for
(
var
i
=
0
;
i
<
array
.
length
;
i
+=
1
)
{
var
img
=
document
.
createElement
(
'img'
);
img
.
src
=
array
[
i
].
picUrl
;
img
.
width
=
'250'
;
div
.
appendChild
(
img
);
}
}
};
// 4. 发出请求
xhr
.
send
();
}
else
{
alert
(
'使用垃圾浏览器还想看美女,做梦!'
);
}
});
})();
</script>
</body>
</html>
Day21-30/code/web1807/example12.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title></title>
</head>
<body>
<button
id=
"ok"
>
换一组
</button>
<div
id=
"container"
></div>
<script
src=
"js/jquery.min.js"
></script>
<script>
$
(
function
()
{
$
(
'#ok'
).
on
(
'click'
,
function
()
{
$
.
ajax
({
'url'
:
'http://api.tianapi.com/meinv/'
,
'type'
:
'get'
,
'data'
:
{
'key'
:
'772a81a51ae5c780251b1f98ea431b84'
,
'num'
:
12
},
'dataType'
:
'json'
,
'success'
:
function
(
jsonObj
)
{
$
(
'#container'
).
empty
();
$
.
each
(
jsonObj
.
newslist
,
function
(
index
,
mmObj
)
{
var
img
=
$
(
'<img>'
).
attr
(
'width'
,
'250'
)
.
attr
(
'src'
,
mmObj
.
picUrl
);
$
(
'#container'
).
append
(
img
);
});
}
});
/*
var url = 'http://api.tianapi.com/meinv/?key=772a81a51ae5c780251b1f98ea431b84&num=10';
$.getJSON(url, function(jsonObj) {
$('#container').empty();
$.each(jsonObj.newslist, function(index, mm) {
$('#container').append(
$('<img>').attr('width', '250').attr('src', mm.picUrl)
);
});
});
*/
});
});
</script>
</body>
</html>
Day21-30/code/web180
4/example05
.html
→
Day21-30/code/web180
7/homework01
.html
View file @
bdaac352
...
@@ -27,11 +27,14 @@
...
@@ -27,11 +27,14 @@
color
:
#ccc
;
color
:
#ccc
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
#adv
li
:first-child
{
color
:
lightseagreen
;
}
</style>
</style>
</head>
</head>
<body>
<body>
<div
id=
"adv"
>
<div
id=
"adv"
>
<img
id=
"image"
src=
"img/slide-1.jpg"
alt=
""
>
<img
src=
"img/slide-1.jpg"
alt=
""
>
<ul>
<ul>
<li
class=
"dot"
>
●
</li>
<li
class=
"dot"
>
●
</li>
<li
class=
"dot"
>
●
</li>
<li
class=
"dot"
>
●
</li>
...
@@ -39,49 +42,47 @@
...
@@ -39,49 +42,47 @@
<li
class=
"dot"
>
●
</li>
<li
class=
"dot"
>
●
</li>
</ul>
</ul>
</div>
</div>
<script
src=
"js/common.js"
></script>
<script>
<script>
(
function
()
{
var
img
=
document
.
querySelector
(
'#adv>img'
);
var
index
=
1
;
var
items
=
document
.
querySelectorAll
(
'#adv li'
);
var
img
=
document
.
getElementById
(
"image"
);
var
timerId
=
0
;
var
timerId
=
0
;
function
startTimer
()
{
for
(
var
i
=
0
;
i
<
items
.
length
;
i
+=
1
)
{
items
[
i
].
index
=
i
;
items
[
i
].
addEventListener
(
'mouseover'
,
function
(
evt
)
{
index
=
evt
.
target
.
index
;
changeItemsColor
(
index
);
img
.
src
=
'img/'
+
images
[
index
];
if
(
timerId
!=
0
)
{
window
.
clearInterval
(
timerId
);
timerId
=
0
;
}
});
items
[
i
].
addEventListener
(
'mouseout'
,
startIt
);
}
var
images
=
[
'slide-1.jpg'
,
'slide-2.jpg'
,
'slide-3.jpg'
,
'slide-4.jpg'
];
var
index
=
0
;
startIt
();
function
startIt
()
{
if
(
timerId
==
0
)
{
if
(
timerId
==
0
)
{
timerId
=
setInterval
(
function
()
{
timerId
=
window
.
setInterval
(
function
()
{
index
+=
1
;
index
+=
1
;
if
(
index
>
4
)
{
index
%=
images
.
length
;
index
=
1
;
changeItemsColor
(
index
);
}
img
.
src
=
'img/'
+
images
[
index
];
img
.
src
=
"img/slide-"
+
index
+
".jpg"
;
},
2000
);
},
2000
);
}
}
}
}
startTimer
();
function
changeItemsColor
(
index
)
{
// 通过document对象获取页面上的元素(标签)有以下方法:
for
(
var
i
=
0
;
i
<
items
.
length
;
i
+=
1
)
{
// 1. document.getElementById("...")
items
[
i
].
style
.
color
=
'#ccc'
;
// 2. document.getElementsByTagName("...")
}
// 3. document.getElementsByClassName("...")
items
[
index
].
style
.
color
=
'lightseagreen'
;
// 4. document.getElementsByName("...")
// 5. document.querySelector("...")
// 6. document.querySelectorAll("...")
var
liList
=
document
.
querySelectorAll
(
"#adv .dot"
);
for
(
var
i
=
0
;
i
<
liList
.
length
;
i
+=
1
)
{
liList
[
i
].
index
=
i
+
1
;
bind
(
liList
[
i
],
"click"
,
function
(
evt
)
{
evt
=
evt
||
event
;
var
target
=
evt
.
target
||
evt
.
srcElement
;
index
=
target
.
index
;
img
.
src
=
"img/slide-"
+
index
+
".jpg"
;
clearInterval
(
timerId
);
timerId
=
0
;
});
bind
(
liList
[
i
],
"mouseout"
,
function
(
evt
)
{
startTimer
();
});
}
}
})();
</script>
</script>
</body>
</body>
</html>
</html>
Day21-30/code/web180
4/example07
.html
→
Day21-30/code/web180
7/homework02
.html
View file @
bdaac352
...
@@ -21,41 +21,24 @@
...
@@ -21,41 +21,24 @@
</head>
</head>
<body>
<body>
<div
id=
"container"
>
<div
id=
"container"
>
<img
src=
"img/
hello.jpg"
alt=
"
"
>
<img
src=
"img/
picture-1.jpg"
alt=
"狗屎
"
>
<ul>
<ul
id=
"items"
>
<li><img
src=
"img/thumb-1.jpg"
alt=
""
></li>
<li><img
src=
"img/thumb-1.jpg"
alt=
""
></li>
<li><img
src=
"img/thumb-2.jpg"
alt=
""
></li>
<li><img
src=
"img/thumb-2.jpg"
alt=
""
></li>
<li><img
src=
"img/thumb-3.jpg"
alt=
""
></li>
<li><img
src=
"img/thumb-3.jpg"
alt=
""
></li>
</ul>
</ul>
</div>
</div>
<script
src=
"js/common.js"
></script>
<script>
<script>
+
function
()
{
// 通过querySelector用父子选择器获取img标签
var
img
=
document
.
querySelector
(
'#container>img'
);
var
img
=
document
.
querySelector
(
'#container>img'
);
var
images
=
document
.
querySelectorAll
(
'#items img'
);
function
showPhoto
(
evt
)
{
for
(
var
i
=
0
;
i
<
images
.
length
;
i
+=
1
)
{
evt
=
evt
||
window
.
event
;
// 事件回调函数在for循环的时候并没有执行所以也取不到循环变量i当前的值
// 获取事件源(谁引发了事件)
// JavaScript是动态弱类型语言可以在运行时动态的添加(或删除)对象的属性
var
target
=
evt
.
target
||
evt
.
srcElement
;
images
[
i
].
picture
=
'img/picture-'
+
(
i
+
1
)
+
'.jpg'
;
img
.
src
=
"img/"
+
target
.
parentNode
.
photoName
;
images
[
i
].
addEventListener
(
'mouseover'
,
function
(
evt
)
{
img
.
src
=
evt
.
target
.
picture
;
});
}
}
var
imgNames
=
[
"hello.jpg"
,
"goodbye.jpg"
,
"oneshit.jpg"
];
// 通过querySelectorAll用后代选择器获取指定的li标签
// var ul = document.querySelector("#container>ul");
// 通过元素获取相关节点的属性:
// parentNode - 获取父节点
// children - 获取所有子节点
// nextSibling - 获取相邻下一个兄弟节点
// previousSibling - 获取相邻上一个兄弟节点
var
ul
=
img
.
nextSibling
.
nextSibling
;
console
.
log
(
ul
);
for
(
var
i
=
0
;
i
<
ul
.
children
.
length
;
i
+=
1
)
{
ul
.
children
[
i
].
photoName
=
imgNames
[
i
];
bind
(
ul
.
children
[
i
],
"mouseover"
,
showPhoto
);
}
}();
</script>
</script>
</body>
</body>
</html>
</html>
Day21-30/code/web180
4/example09
.html
→
Day21-30/code/web180
7/homework03
.html
View file @
bdaac352
...
@@ -23,6 +23,8 @@
...
@@ -23,6 +23,8 @@
height
:
30px
;
height
:
30px
;
background-color
:
red
;
background-color
:
red
;
color
:
white
;
color
:
white
;
font-size
:
16px
;
cursor
:
pointer
;
}
}
.small
{
.small
{
width
:
80px
;
width
:
80px
;
...
@@ -32,43 +34,42 @@
...
@@ -32,43 +34,42 @@
</style>
</style>
</head>
</head>
<body>
<body>
<div
id=
"container"
>
<div
id=
"container"
></div>
</div>
<div
id=
"buttons"
>
<div
id=
"buttons"
>
<button
id=
"add"
>
添加
</button>
<button
id=
"add"
>
添加
</button>
<button
id=
"fla"
>
闪烁
</button>
<button
id=
"fla"
>
闪烁
</button>
</div>
</div>
<script
src=
"js/
common
.js"
></script>
<script
src=
"js/
mylib
.js"
></script>
<script>
<script>
(
function
()
{
var
bigDiv
=
document
.
querySelector
(
'#container'
);
var
container
=
document
.
getElementById
(
"container"
);
var
addButton
=
document
.
querySelector
(
'#add'
);
var
addButton
=
document
.
getElementById
(
"add"
);
addButton
.
addEventListener
(
'click'
,
function
()
{
var
flaButton
=
document
.
getElementById
(
"fla"
);
var
smallDiv
=
document
.
createElement
(
'div'
);
bind
(
addButton
,
"click"
,
function
()
{
smallDiv
.
className
=
'small'
;
var
div
=
document
.
createElement
(
"div"
);
// smallDiv.style.width = '80px';
div
.
className
=
"small"
;
// smallDiv.style.height = '80px';
div
.
style
.
backgroundColor
=
randomColor
();
// smallDiv.style.float = 'left';
container
.
insertBefore
(
div
,
container
.
children
[
0
]);
smallDiv
.
style
.
backgroundColor
=
randomColor
();
bigDiv
.
insertBefore
(
smallDiv
,
bigDiv
.
firstChild
);
});
});
var
timerId
=
0
;
var
flaButton
=
document
.
querySelector
(
'#fla'
);
bind
(
flaButton
,
"click"
,
function
(
evt
)
{
var
isFlashing
=
false
;
evt
=
prepare
(
evt
);
var
timerId
;
if
(
timerId
==
0
)
{
flaButton
.
addEventListener
(
'click'
,
function
(
evt
)
{
evt
.
target
.
textContent
=
"停止"
;
isFlashing
=
!
isFlashing
;
timerId
=
setInterval
(
function
()
{
if
(
isFlashing
)
{
var
divs
=
document
.
querySelectorAll
(
"#container>div"
);
timerId
=
window
.
setInterval
(
function
()
{
var
divs
=
document
.
querySelectorAll
(
'#container>div'
);
for
(
var
i
=
0
;
i
<
divs
.
length
;
i
+=
1
)
{
for
(
var
i
=
0
;
i
<
divs
.
length
;
i
+=
1
)
{
divs
[
i
].
style
.
backgroundColor
=
randomColor
();
divs
[
i
].
style
.
backgroundColor
=
randomColor
();
}
}
},
200
);
},
200
);
flaButton
.
textContent
=
'暂停'
;
}
else
{
}
else
{
evt
.
target
.
textContent
=
"闪烁"
;
window
.
clearInterval
(
timerId
);
clearInterval
(
timerId
);
flaButton
.
textContent
=
'闪烁'
;
timerId
=
0
;
}
}
});
});
})();
</script>
</script>
</body>
</body>
</html>
</html>
Day21-30/code/web180
4/example13
.html
→
Day21-30/code/web180
7/homework04
.html
View file @
bdaac352
...
@@ -21,6 +21,7 @@
...
@@ -21,6 +21,7 @@
<body>
<body>
<table
id=
"data"
>
<table
id=
"data"
>
<caption>
数据统计表
</caption>
<caption>
数据统计表
</caption>
<tbody>
<tr>
<tr>
<th>
姓名
</th>
<th>
姓名
</th>
<th>
年龄
</th>
<th>
年龄
</th>
...
@@ -59,7 +60,7 @@
...
@@ -59,7 +60,7 @@
<tr>
<tr>
<td>
Item1
</td>
<td>
Item1
</td>
<td>
Item2
</td>
<td>
Item2
</td>
<td>
<a>
Item3
</a>
</td>
<td>
Item3
</td>
<td>
Item4
</td>
<td>
Item4
</td>
<td>
Item5
</td>
<td>
Item5
</td>
</tr>
</tr>
...
@@ -68,39 +69,55 @@
...
@@ -68,39 +69,55 @@
<td>
Item2
</td>
<td>
Item2
</td>
<td>
Item3
</td>
<td>
Item3
</td>
<td>
Item4
</td>
<td>
Item4
</td>
<td>
<a>
Item5
</a>
</td>
<td>
Item5
</td>
</tr>
</tr>
</tbody>
</table>
</table>
<div
id=
"buttons"
>
<div
id=
"buttons"
>
<button
id=
"pretty"
>
美化表格
</button>
<button
id=
"pretty"
>
隔行换色
</button>
<button
id=
"clear"
>
清除数据
</button>
<button
id=
"clear"
>
清除数据
</button>
<button
id=
"remove"
>
删单元格
</button>
<button
id=
"remove"
>
删单元格
</button>
<button
id=
"hide"
>
隐藏表格
</button>
<button
id=
"hide"
>
隐藏表格
</button>
</div>
</div>
<script
src=
"js/
jquery.min
.js"
></script>
<script
src=
"js/
mylib
.js"
></script>
<script>
<script>
$
(
function
()
{
function
prettify
()
{
$
(
"#pretty"
).
on
(
"click"
,
function
()
{
var
trs
=
document
.
querySelectorAll
(
'#data tr'
);
$
(
"#data tr:gt(0)"
).
css
(
"color"
,
"white"
);
for
(
var
i
=
1
;
i
<
trs
.
length
;
i
+=
1
)
{
$
(
"#data tr:odd"
).
css
(
"background-color"
,
"darkgreen"
);
trs
[
i
].
style
.
backgroundColor
=
$
(
"#data tr:even"
).
css
(
"background-color"
,
"darkmagenta"
);
i
%
2
==
0
?
'lightgray'
:
'lightsteelblue'
;
$
(
"#data tr:eq(0)"
).
css
(
"background-color"
,
"white"
);
}
});
}
$
(
"#clear"
).
on
(
"click"
,
function
()
{
$
(
"#data tr:gt(0) td"
).
html
(
""
);
function
clear
()
{
});
var
tds
=
document
.
querySelectorAll
(
'#data td'
);
$
(
"#remove"
).
on
(
"click"
,
function
()
{
for
(
var
i
=
0
;
i
<
tds
.
length
;
i
+=
1
)
{
$
(
"#data tr:gt(0):last"
).
remove
();
tds
[
i
].
textContent
=
''
;
});
}
$
(
"#hide"
).
on
(
"click"
,
function
()
{
}
$
(
"#data"
).
fadeOut
(
2000
,
function
()
{
$
(
"#data"
).
css
({
function
removeLastRow
()
{
"display"
:
"block"
,
var
table
=
document
.
getElementById
(
'data'
);
"visibility"
:
"hidden"
if
(
table
.
rows
.
length
>
1
)
{
});
table
.
deleteRow
(
table
.
rows
.
length
-
1
);
});
}
});
}
});
function
hideTable
()
{
var
table
=
document
.
getElementById
(
'data'
);
table
.
style
.
visibility
=
'hidden'
;
}
+
function
()
{
var
prettyBtn
=
document
.
querySelector
(
'#pretty'
);
prettyBtn
.
addEventListener
(
'click'
,
prettify
)
var
clearBtn
=
document
.
querySelector
(
'#clear'
);
clearBtn
.
addEventListener
(
'click'
,
clear
);
var
removeBtn
=
document
.
querySelector
(
'#remove'
);
removeBtn
.
addEventListener
(
'click'
,
removeLastRow
);
var
hideBtn
=
document
.
querySelector
(
'#hide'
);
hideBtn
.
addEventListener
(
'click'
,
hideTable
);
}();
</script>
</script>
</body>
</body>
</html>
</html>
Day21-30/code/web1807/homework05.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title></title>
<style>
*
{
margin
:
0
;
padding
:
0
;
}
body
{
width
:
960px
;
margin
:
20px
auto
;
}
#cart
{
margin
:
0
auto
;
width
:
850px
;
}
#cart-header
{
height
:
40px
;
background-color
:
lightgray
;
margin-bottom
:
20px
;
}
#cart-header
div
{
line-height
:
40px
;
}
.left
{
float
:
left
;
}
.right
{
float
:
right
;
}
.w110
{
width
:
100px
;
}
.ml10
{
margin-left
:
10px
;
}
.w120
{
width
:
120px
;
}
.w250
{
width
:
250px
;
}
.center
{
text-align
:
center
;
}
.w20
{
width
:
20px
;
}
.w90
{
width
:
90px
;
}
.clear
{
clear
:
both
;
}
#cart-items
>
div
{
height
:
100px
;
}
#cart-items
>
div
>
div
{
line-height
:
100px
;
}
.w250
span
{
display
:
inline-block
;
font-size
:
12px
;
line-height
:
16px
!important
;
}
.single-item
{
border-bottom
:
1px
solid
gray
;
}
.small-button
{
display
:
inline-block
;
width
:
20px
;
height
:
20px
;
border
:
none
;
}
.big-button
{
color
:
white
;
background-color
:
red
;
display
:
inline-block
;
width
:
120px
;
height
:
40px
;
border
:
none
;
font-size
:
22px
;
}
#totalCount
,
#totalPrice
{
color
:
red
;
}
#totalPrice
{
font
:
bolder
20px
Arial
;
display
:
inline-block
;
width
:
150px
;
}
#cart
a
{
text-decoration
:
none
;
}
#cart
a
:link
,
#cart
a
:visited
,
#cart
a
:active
{
color
:
gray
;
}
</style>
</head>
<body>
<div
id=
"cart"
>
<div
id=
"cart-header"
>
<div
class=
"left w110 ml10"
>
<input
id=
"selectAll"
type=
"checkbox"
>
<label
for=
"selectAll"
>
全选
</label>
</div>
<div
class=
"left w250"
>
商品
</div>
<div
class=
"left w120 center"
>
单价
</div>
<div
class=
"left w120 center"
>
数量
</div>
<div
class=
"left w120 center"
>
小计
</div>
<div
class=
"left w120 center"
>
操作
</div>
</div>
<div
id=
"cart-items"
>
<div
class=
"clear single-item"
>
<div
class=
"left w20 ml10"
>
<input
name=
"selectOne"
type=
"checkbox"
>
</div>
<div
class=
"left w90"
>
<a
href=
""
>
<img
src=
"img/a1.jpg"
>
</a>
</div>
<div
class=
"left w250"
>
<span>
海澜之家/Heilan Home春装商务白衬衫男修身HNCAD3A067Y 漂白(69) 漂
</span>
</div>
<div
class=
"left w120 center"
>
¥
<span
class=
"price"
>
138.00
</span></div>
<div
class=
"left w120 center"
>
<button
class=
"small-button"
>
-
</button>
<input
class=
"center count"
readonly
type=
"text"
size=
"3"
value=
"1"
>
<button
class=
"small-button"
>
+
</button>
</div>
<div
class=
"left w120 center"
>
¥
<span>
138.00
</span></div>
<div
class=
"left w120 center"
>
<a
href=
"javascript:void(0);"
>
删除
</a>
</div>
</div>
<div
class=
"clear single-item"
>
<div
class=
"left w20 ml10"
>
<input
name=
"selectOne"
type=
"checkbox"
>
</div>
<div
class=
"left w90"
>
<a
href=
""
>
<img
src=
"img/a2.jpg"
>
</a>
</div>
<div
class=
"left w250"
>
<span>
HLA海澜之家长袖衬衫男牛津纺休闲干净透气HNEAJ1E048A浅灰
</span>
</div>
<div
class=
"left w120 center"
>
¥
<span
class=
"price"
>
128.00
</span></div>
<div
class=
"left w120 center"
>
<button
class=
"small-button"
>
-
</button>
<input
class=
"center count"
readonly
type=
"text"
size=
"3"
value=
"1"
>
<button
class=
"small-button"
>
+
</button>
</div>
<div
class=
"left w120 center"
>
¥
<span>
128.00
</span></div>
<div
class=
"left w120 center"
>
<a
href=
"javascript:void(0);"
>
删除
</a>
</div>
</div>
<div
class=
"clear single-item"
>
<div
class=
"left w20 ml10"
>
<input
name=
"selectOne"
type=
"checkbox"
>
</div>
<div
class=
"left w90"
>
<a
href=
""
>
<img
src=
"img/a3.jpg"
>
</a>
</div>
<div
class=
"left w250"
>
<span>
HLA海澜之家牛津纺清新休闲衬衫2018春季新品质感柔软长袖衬衫男
</span>
</div>
<div
class=
"left w120 center"
>
¥
<span
class=
"price"
>
99.00
</span></div>
<div
class=
"left w120 center"
>
<button
class=
"small-button"
>
-
</button>
<input
class=
"center count"
readonly
type=
"text"
size=
"3"
value=
"1"
>
<button
class=
"small-button"
>
+
</button>
</div>
<div
class=
"left w120 center"
>
¥
99.00
</div>
<div
class=
"left w120 center"
>
<a
href=
"javascript:void(0);"
>
删除
</a>
</div>
</div>
</div>
<div
id=
"cart-footer"
>
<div
class=
"clear left"
>
<a
id=
"clearSelected"
href=
"javascript:void(0);"
>
删除选中商品
</a>
</div>
<div
class=
"right"
>
<span>
总共选中了
<span
id=
"totalCount"
>
0
</span>
件商品
</span>
<span>
总计:
<span
id=
"totalPrice"
>
¥
0.00
</span></span>
<button
id=
"pay"
class=
"big-button"
>
去结算
</button>
</div>
</div>
</div>
<script
src=
"js/jquery.min.js"
></script>
<script>
function
calcTotal
()
{
var
amountsInput
=
$
(
'.single-item input[type=text]'
);
var
pricesSpan
=
$
(
'.single-item .price'
);
var
checkboxes
=
$
(
'.single-item input[type=checkbox]'
);
var
totalAmount
=
0
;
var
totalPrice
=
0
;
amountsInput
.
each
(
function
(
index
)
{
if
(
checkboxes
[
index
].
checked
)
{
var
amount
=
parseInt
(
$
(
this
).
val
());
totalAmount
+=
amount
;
var
price
=
parseFloat
(
$
(
pricesSpan
[
index
]).
text
());
var
currentPrice
=
(
price
*
amount
).
toFixed
(
2
);
$
(
this
).
parent
().
next
().
find
(
'span'
).
text
(
currentPrice
);
totalPrice
+=
parseFloat
(
currentPrice
);
}
});
$
(
'#totalCount'
).
text
(
totalAmount
);
$
(
'#totalPrice'
).
text
(
'¥'
+
totalPrice
.
toFixed
(
2
));
}
$
(
function
()
{
$
(
'#selectAll'
).
on
(
'click'
,
function
(
evt
)
{
$
(
'.single-item input[type=checkbox]'
).
prop
(
'checked'
,
evt
.
target
.
checked
);
calcTotal
();
});
$
(
'.single-item button'
).
on
(
'click'
,
function
(
evt
)
{
var
op
=
$
(
evt
.
target
).
text
();
if
(
op
==
'-'
)
{
var
numInput
=
$
(
evt
.
target
).
next
();
var
num
=
parseInt
(
numInput
.
val
());
if
(
num
>
1
)
{
numInput
.
val
(
num
-
1
);
}
}
else
{
var
numInput
=
$
(
evt
.
target
).
prev
();
var
num
=
parseInt
(
numInput
.
val
());
if
(
num
<
200
)
{
numInput
.
val
(
num
+
1
);
}
}
$
(
evt
.
target
).
parent
().
parent
().
find
(
'input[type=checkbox]'
).
prop
(
'checked'
,
true
);
calcTotal
();
});
$
(
'.single-item input[type=checkbox]'
).
on
(
'click'
,
function
()
{
calcTotal
();
});
$
(
'.single-item a'
).
on
(
'click'
,
function
(
evt
)
{
if
(
confirm
(
'确定要删除该商品吗?'
))
{
$
(
evt
.
target
).
parent
().
parent
().
remove
();
calcTotal
();
}
});
$
(
'#clearSelected'
).
on
(
'click'
,
function
()
{
if
(
confirm
(
'确定要删除选中的商品吗?'
))
{
$
(
'.single-item'
).
each
(
function
()
{
if
(
$
(
this
).
find
(
'input:checkbox'
).
prop
(
'checked'
))
{
$
(
this
).
remove
();
}
});
calcTotal
();
}
});
});
</script>
</body>
</html>
Day21-30/code/web1807/homework06.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title></title>
<style>
#one
,
#two
,
#three
{
width
:
200px
;
height
:
200px
;
position
:
fixed
;
}
#one
{
left
:
50px
;
top
:
50px
;
background-color
:
lightpink
;
}
#two
{
left
:
200px
;
top
:
150px
;
background-color
:
lightgreen
;
}
#three
{
right
:
30px
;
top
:
100px
;
background-color
:
lightgoldenrodyellow
;
}
</style>
</head>
<body>
<div
id=
"one"
></div>
<div
id=
"two"
></div>
<div
id=
"three"
></div>
<script
src=
"js/jquery.min.js"
></script>
<script>
$
(
function
()
{
makeDraggable
(
$
(
'#one'
));
makeDraggable
(
$
(
'#two'
));
makeDraggable
(
$
(
'#three'
));
});
var
draggables
=
[];
function
makeDraggable
(
jqElem
)
{
draggables
.
push
(
jqElem
);
jqElem
.
on
(
'mousedown'
,
function
(
evt
)
{
this
.
isMouseDown
=
true
;
this
.
oldX
=
evt
.
clientX
;
this
.
oldY
=
evt
.
clientY
;
this
.
oldLeft
=
parseInt
(
$
(
evt
.
target
).
css
(
'left'
));
this
.
oldTop
=
parseInt
(
$
(
evt
.
target
).
css
(
'top'
));
$
.
each
(
draggables
,
function
(
index
,
elem
)
{
elem
.
css
(
'z-index'
,
'0'
);
});
$
(
evt
.
target
).
css
(
'z-index'
,
'99'
);
})
.
on
(
'mousemove'
,
function
(
evt
)
{
if
(
this
.
isMouseDown
)
{
var
dx
=
evt
.
clientX
-
this
.
oldX
;
var
dy
=
evt
.
clientY
-
this
.
oldY
;
$
(
evt
.
target
).
css
(
'left'
,
this
.
oldLeft
+
dx
+
'px'
);
$
(
evt
.
target
).
css
(
'top'
,
this
.
oldTop
+
dy
+
'px'
);
}
})
.
on
(
'mouseup'
,
function
(
evt
)
{
this
.
isMouseDown
=
false
;
})
.
on
(
'mouseout'
,
function
(
evt
)
{
this
.
isMouseDown
=
false
;
});
}
</script>
</body>
</html>
Day21-30/code/web1807/homework07.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
<style>
#container
{
width
:
400px
;
margin
:
0
auto
;
padding-top
:
120px
;
text-align
:
center
;
}
#container
input
{
font-size
:
22px
;
line-height
:
30px
;
height
:
30px
;
outline
:
none
;
}
#keyword
{
width
:
300px
;
border
:
none
;
text-align
:
center
;
border-bottom
:
1px
solid
gray
;
}
#search
{
width
:
80px
;
color
:
white
;
border
:
none
;
background-color
:
red
;
}
#result
{
width
:
400px
;
margin
:
10px
auto
;
font-size
:
18px
;
}
</style>
</head>
<body>
<div
id=
"container"
>
<input
id=
"keyword"
type=
"text"
placeholder=
"请输入关键词"
>
<input
id=
"search"
type=
"button"
value=
"查询"
>
</div>
<hr>
<p
id=
"result"
></p>
<script
src=
"js/jquery.min.js"
></script>
<script>
$
(
function
()
{
$
(
"#search"
).
on
(
"click"
,
function
()
{
var
keyword
=
$
(
"#keyword"
).
val
().
trim
();
if
(
keyword
.
length
>
0
)
{
var
url
=
"http://api.tianapi.com/txapi/dream/"
;
$
.
ajax
({
"url"
:
url
,
"type"
:
"get"
,
"data"
:
{
"key"
:
"772a81a51ae5c780251b1f98ea431b84"
,
"word"
:
keyword
,
},
"dataType"
:
"json"
,
"success"
:
function
(
jsonObj
)
{
if
(
jsonObj
.
code
==
250
)
{
$
(
"#result"
).
text
(
jsonObj
.
msg
);
}
else
{
$
(
"#result"
).
text
(
jsonObj
.
newslist
[
0
].
result
);
}
}
});
}
});
});
</script>
</body>
</html>
Day21-30/code/web1807/img/a1.jpg
0 → 100644
View file @
bdaac352
4.64 KB
Day21-30/code/web1807/img/a2.jpg
0 → 100644
View file @
bdaac352
5.33 KB
Day21-30/code/web1807/img/a3.jpg
0 → 100644
View file @
bdaac352
5.39 KB
Day21-30/code/web180
4/img/hello
.jpg
→
Day21-30/code/web180
7/img/picture-1
.jpg
View file @
bdaac352
File moved
Day21-30/code/web180
4/img/goodbye
.jpg
→
Day21-30/code/web180
7/img/picture-2
.jpg
View file @
bdaac352
File moved
Day21-30/code/web180
4/img/oneshit
.jpg
→
Day21-30/code/web180
7/img/picture-3
.jpg
View file @
bdaac352
File moved
Day21-30/code/web180
4
/img/slide-1.jpg
→
Day21-30/code/web180
7
/img/slide-1.jpg
View file @
bdaac352
File moved
Day21-30/code/web180
4
/img/slide-2.jpg
→
Day21-30/code/web180
7
/img/slide-2.jpg
View file @
bdaac352
File moved
Day21-30/code/web180
4
/img/slide-3.jpg
→
Day21-30/code/web180
7
/img/slide-3.jpg
View file @
bdaac352
File moved
Day21-30/code/web180
4
/img/slide-4.jpg
→
Day21-30/code/web180
7
/img/slide-4.jpg
View file @
bdaac352
File moved
Day21-30/code/web180
4
/img/thumb-1.jpg
→
Day21-30/code/web180
7
/img/thumb-1.jpg
View file @
bdaac352
File moved
Day21-30/code/web180
4
/img/thumb-2.jpg
→
Day21-30/code/web180
7
/img/thumb-2.jpg
View file @
bdaac352
File moved
Day21-30/code/web180
4
/img/thumb-3.jpg
→
Day21-30/code/web180
7
/img/thumb-3.jpg
View file @
bdaac352
File moved
Day21-30/code/web1807/index.html
0 → 100644
View file @
bdaac352
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title></title>
<style>
*
{
font-size
:
18px
;
}
h2
{
font-size
:
22px
;
}
h3
{
font-size
:
20px
;
}
ul
li
{
list-style
:
circle
;
}
</style>
</head>
<body>
<h2>
JavaScript课堂案例
</h2>
<hr>
<h3>
Make English as your working language!!!
</h3>
<h3>
浏览器中的JavaScript:
</h3>
<ul>
<li>
ECMAScript: JavaScript语法规范
</li>
<li>
BOM: 浏览器对象模型(Browser Object Model),把浏览器当成一个对象(window),通过这个对象可以操控浏览器
</li>
<li>
DOM: 文档对象模型(Document Object Model),把整个页面当成一个对象(document),通过这个对象可以操作整个页面
</li>
</ul>
<hr>
<h3>
课堂案例
</h3>
<ol>
<li><a
href=
"example01.html"
>
例子1:BOM和DOM的感性认识
</a></li>
<li><a
href=
"example02.html"
>
例子2:成都机动车限行查询
</a></li>
<li><a
href=
"example03.html"
>
例子3:延迟跳转到百度
</a></li>
<li>
<a
href=
"example04.html"
>
例子4:轮播广告
</a>
<span><a
href=
"#homework01"
>
完整效果请参考作业1
</a></span>
</li>
<li><a
href=
"example05.html"
>
例子5:事件冒泡和事件捕获
</a></li>
<li><a
href=
"example06.html"
>
例子6:获取事件源和访问相关元素
</a></li>
<li><a
href=
"example07.html"
>
例子7:动态添加和删除元素
</a></li>
<li><a
href=
"example08.html"
>
例子8:流氓浮动广告
</a></li>
<li><a
href=
"example09.html"
>
例子9:jQuery实现表格效果
</a></li>
<li><a
href=
"example10.html"
>
例子10:jQuery实现动态列表
</a></li>
<li><a
href=
"example11.html"
>
例子11:Ajax加载美女图片(原生JavaScript)
</a></li>
<li><a
href=
"example12.html"
>
例子12:Ajax加载美女图片(jQuery)
</a></li>
</ol>
<h3>
课后练习
</h3>
<ol>
<li>
<a
name=
"homework01"
></a>
<a
href=
"homework01.html"
>
练习1:轮播广告
</a>
</li>
<li><a
href=
"homework02.html"
>
练习2:缩略图效果
</a></li>
<li><a
href=
"homework03.html"
>
练习3:闪烁的方块
</a></li>
<li><a
href=
"homework04.html"
>
练习4:表格效果
</a></li>
<li><a
href=
"homework05.html"
>
练习5:购物车效果(仿京东)
</a></li>
<li><a
href=
"homework06.html"
>
练习6:可拖拽的元素
</a></li>
<li><a
href=
"homework07.html"
>
练习7:周公解梦(Ajax)
</a></li>
</ol>
</body>
</html>
Day21-30/code/web1807/js/jquery.min.js
0 → 100644
View file @
bdaac352
/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
!
function
(
e
,
t
){
"use strict"
;
"object"
==
typeof
module
&&
"object"
==
typeof
module
.
exports
?
module
.
exports
=
e
.
document
?
t
(
e
,
!
0
):
function
(
e
){
if
(
!
e
.
document
)
throw
new
Error
(
"jQuery requires a window with a document"
);
return
t
(
e
)}:
t
(
e
)}(
"undefined"
!=
typeof
window
?
window
:
this
,
function
(
e
,
t
){
"use strict"
;
var
n
=
[],
r
=
e
.
document
,
i
=
Object
.
getPrototypeOf
,
o
=
n
.
slice
,
a
=
n
.
concat
,
s
=
n
.
push
,
u
=
n
.
indexOf
,
l
=
{},
c
=
l
.
toString
,
f
=
l
.
hasOwnProperty
,
p
=
f
.
toString
,
d
=
p
.
call
(
Object
),
h
=
{},
g
=
function
e
(
t
){
return
"function"
==
typeof
t
&&
"number"
!=
typeof
t
.
nodeType
},
y
=
function
e
(
t
){
return
null
!=
t
&&
t
===
t
.
window
},
v
=
{
type
:
!
0
,
src
:
!
0
,
noModule
:
!
0
};
function
m
(
e
,
t
,
n
){
var
i
,
o
=
(
t
=
t
||
r
).
createElement
(
"script"
);
if
(
o
.
text
=
e
,
n
)
for
(
i
in
v
)
n
[
i
]
&&
(
o
[
i
]
=
n
[
i
]);
t
.
head
.
appendChild
(
o
).
parentNode
.
removeChild
(
o
)}
function
x
(
e
){
return
null
==
e
?
e
+
""
:
"object"
==
typeof
e
||
"function"
==
typeof
e
?
l
[
c
.
call
(
e
)]
||
"object"
:
typeof
e
}
var
b
=
"3.3.1"
,
w
=
function
(
e
,
t
){
return
new
w
.
fn
.
init
(
e
,
t
)},
T
=
/^
[\s\u
FEFF
\x
A0
]
+|
[\s\u
FEFF
\x
A0
]
+$/g
;
w
.
fn
=
w
.
prototype
=
{
jquery
:
"3.3.1"
,
constructor
:
w
,
length
:
0
,
toArray
:
function
(){
return
o
.
call
(
this
)},
get
:
function
(
e
){
return
null
==
e
?
o
.
call
(
this
):
e
<
0
?
this
[
e
+
this
.
length
]:
this
[
e
]},
pushStack
:
function
(
e
){
var
t
=
w
.
merge
(
this
.
constructor
(),
e
);
return
t
.
prevObject
=
this
,
t
},
each
:
function
(
e
){
return
w
.
each
(
this
,
e
)},
map
:
function
(
e
){
return
this
.
pushStack
(
w
.
map
(
this
,
function
(
t
,
n
){
return
e
.
call
(
t
,
n
,
t
)}))},
slice
:
function
(){
return
this
.
pushStack
(
o
.
apply
(
this
,
arguments
))},
first
:
function
(){
return
this
.
eq
(
0
)},
last
:
function
(){
return
this
.
eq
(
-
1
)},
eq
:
function
(
e
){
var
t
=
this
.
length
,
n
=+
e
+
(
e
<
0
?
t
:
0
);
return
this
.
pushStack
(
n
>=
0
&&
n
<
t
?[
this
[
n
]]:[])},
end
:
function
(){
return
this
.
prevObject
||
this
.
constructor
()},
push
:
s
,
sort
:
n
.
sort
,
splice
:
n
.
splice
},
w
.
extend
=
w
.
fn
.
extend
=
function
(){
var
e
,
t
,
n
,
r
,
i
,
o
,
a
=
arguments
[
0
]
||
{},
s
=
1
,
u
=
arguments
.
length
,
l
=!
1
;
for
(
"boolean"
==
typeof
a
&&
(
l
=
a
,
a
=
arguments
[
s
]
||
{},
s
++
),
"object"
==
typeof
a
||
g
(
a
)
||
(
a
=
{}),
s
===
u
&&
(
a
=
this
,
s
--
);
s
<
u
;
s
++
)
if
(
null
!=
(
e
=
arguments
[
s
]))
for
(
t
in
e
)
n
=
a
[
t
],
a
!==
(
r
=
e
[
t
])
&&
(
l
&&
r
&&
(
w
.
isPlainObject
(
r
)
||
(
i
=
Array
.
isArray
(
r
)))?(
i
?(
i
=!
1
,
o
=
n
&&
Array
.
isArray
(
n
)?
n
:[]):
o
=
n
&&
w
.
isPlainObject
(
n
)?
n
:{},
a
[
t
]
=
w
.
extend
(
l
,
o
,
r
)):
void
0
!==
r
&&
(
a
[
t
]
=
r
));
return
a
},
w
.
extend
({
expando
:
"jQuery"
+
(
"3.3.1"
+
Math
.
random
()).
replace
(
/
\D
/g
,
""
),
isReady
:
!
0
,
error
:
function
(
e
){
throw
new
Error
(
e
)},
noop
:
function
(){},
isPlainObject
:
function
(
e
){
var
t
,
n
;
return
!
(
!
e
||
"[object Object]"
!==
c
.
call
(
e
))
&&
(
!
(
t
=
i
(
e
))
||
"function"
==
typeof
(
n
=
f
.
call
(
t
,
"constructor"
)
&&
t
.
constructor
)
&&
p
.
call
(
n
)
===
d
)},
isEmptyObject
:
function
(
e
){
var
t
;
for
(
t
in
e
)
return
!
1
;
return
!
0
},
globalEval
:
function
(
e
){
m
(
e
)},
each
:
function
(
e
,
t
){
var
n
,
r
=
0
;
if
(
C
(
e
)){
for
(
n
=
e
.
length
;
r
<
n
;
r
++
)
if
(
!
1
===
t
.
call
(
e
[
r
],
r
,
e
[
r
]))
break
}
else
for
(
r
in
e
)
if
(
!
1
===
t
.
call
(
e
[
r
],
r
,
e
[
r
]))
break
;
return
e
},
trim
:
function
(
e
){
return
null
==
e
?
""
:(
e
+
""
).
replace
(
T
,
""
)},
makeArray
:
function
(
e
,
t
){
var
n
=
t
||
[];
return
null
!=
e
&&
(
C
(
Object
(
e
))?
w
.
merge
(
n
,
"string"
==
typeof
e
?[
e
]:
e
):
s
.
call
(
n
,
e
)),
n
},
inArray
:
function
(
e
,
t
,
n
){
return
null
==
t
?
-
1
:
u
.
call
(
t
,
e
,
n
)},
merge
:
function
(
e
,
t
){
for
(
var
n
=+
t
.
length
,
r
=
0
,
i
=
e
.
length
;
r
<
n
;
r
++
)
e
[
i
++
]
=
t
[
r
];
return
e
.
length
=
i
,
e
},
grep
:
function
(
e
,
t
,
n
){
for
(
var
r
,
i
=
[],
o
=
0
,
a
=
e
.
length
,
s
=!
n
;
o
<
a
;
o
++
)(
r
=!
t
(
e
[
o
],
o
))
!==
s
&&
i
.
push
(
e
[
o
]);
return
i
},
map
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
=
0
,
s
=
[];
if
(
C
(
e
))
for
(
r
=
e
.
length
;
o
<
r
;
o
++
)
null
!=
(
i
=
t
(
e
[
o
],
o
,
n
))
&&
s
.
push
(
i
);
else
for
(
o
in
e
)
null
!=
(
i
=
t
(
e
[
o
],
o
,
n
))
&&
s
.
push
(
i
);
return
a
.
apply
([],
s
)},
guid
:
1
,
support
:
h
}),
"function"
==
typeof
Symbol
&&
(
w
.
fn
[
Symbol
.
iterator
]
=
n
[
Symbol
.
iterator
]),
w
.
each
(
"Boolean Number String Function Array Date RegExp Object Error Symbol"
.
split
(
" "
),
function
(
e
,
t
){
l
[
"[object "
+
t
+
"]"
]
=
t
.
toLowerCase
()});
function
C
(
e
){
var
t
=!!
e
&&
"length"
in
e
&&
e
.
length
,
n
=
x
(
e
);
return
!
g
(
e
)
&&!
y
(
e
)
&&
(
"array"
===
n
||
0
===
t
||
"number"
==
typeof
t
&&
t
>
0
&&
t
-
1
in
e
)}
var
E
=
function
(
e
){
var
t
,
n
,
r
,
i
,
o
,
a
,
s
,
u
,
l
,
c
,
f
,
p
,
d
,
h
,
g
,
y
,
v
,
m
,
x
,
b
=
"sizzle"
+
1
*
new
Date
,
w
=
e
.
document
,
T
=
0
,
C
=
0
,
E
=
ae
(),
k
=
ae
(),
S
=
ae
(),
D
=
function
(
e
,
t
){
return
e
===
t
&&
(
f
=!
0
),
0
},
N
=
{}.
hasOwnProperty
,
A
=
[],
j
=
A
.
pop
,
q
=
A
.
push
,
L
=
A
.
push
,
H
=
A
.
slice
,
O
=
function
(
e
,
t
){
for
(
var
n
=
0
,
r
=
e
.
length
;
n
<
r
;
n
++
)
if
(
e
[
n
]
===
t
)
return
n
;
return
-
1
},
P
=
"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped"
,
M
=
"[
\\
x20
\\
t
\\
r
\
\n
\\
f]"
,
R
=
"(?:
\\\\
.|[
\\
w-]|[^
\
0-
\\
xa0])+"
,
I
=
"
\\
["
+
M
+
"*("
+
R
+
")(?:"
+
M
+
"*([*^$|!~]?=)"
+
M
+
"*(?:'((?:
\\\\
.|[^
\\\\
'])*)'|
\"
((?:
\\\\
.|[^
\\\\
\"
])*)
\"
|("
+
R
+
"))|)"
+
M
+
"*
\\
]"
,
W
=
":("
+
R
+
")(?:
\\
((('((?:
\\\\
.|[^
\\\\
'])*)'|
\"
((?:
\\\\
.|[^
\\\\
\"
])*)
\"
)|((?:
\\\\
.|[^
\\\\
()[
\\
]]|"
+
I
+
")*)|.*)
\\
)|)"
,
$
=
new
RegExp
(
M
+
"+"
,
"g"
),
B
=
new
RegExp
(
"^"
+
M
+
"+|((?:^|[^
\\\\
])(?:
\\\\
.)*)"
+
M
+
"+$"
,
"g"
),
F
=
new
RegExp
(
"^"
+
M
+
"*,"
+
M
+
"*"
),
_
=
new
RegExp
(
"^"
+
M
+
"*([>+~]|"
+
M
+
")"
+
M
+
"*"
),
z
=
new
RegExp
(
"="
+
M
+
"*([^
\\
]'
\"
]*?)"
+
M
+
"*
\\
]"
,
"g"
),
X
=
new
RegExp
(
W
),
U
=
new
RegExp
(
"^"
+
R
+
"$"
),
V
=
{
ID
:
new
RegExp
(
"^#("
+
R
+
")"
),
CLASS
:
new
RegExp
(
"^
\\
.("
+
R
+
")"
),
TAG
:
new
RegExp
(
"^("
+
R
+
"|[*])"
),
ATTR
:
new
RegExp
(
"^"
+
I
),
PSEUDO
:
new
RegExp
(
"^"
+
W
),
CHILD
:
new
RegExp
(
"^:(only|first|last|nth|nth-last)-(child|of-type)(?:
\\
("
+
M
+
"*(even|odd|(([+-]|)(
\\
d*)n|)"
+
M
+
"*(?:([+-]|)"
+
M
+
"*(
\\
d+)|))"
+
M
+
"*
\\
)|)"
,
"i"
),
bool
:
new
RegExp
(
"^(?:"
+
P
+
")$"
,
"i"
),
needsContext
:
new
RegExp
(
"^"
+
M
+
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:
\\
("
+
M
+
"*((?:-
\\
d)?
\\
d*)"
+
M
+
"*
\\
)|)(?=[^-]|$)"
,
"i"
)},
G
=
/^
(?:
input|select|textarea|button
)
$/i
,
Y
=
/^h
\d
$/i
,
Q
=
/^
[^
{
]
+
\{\s
*
\[
native
\w
/
,
J
=
/^
(?:
#
([\w
-
]
+
)
|
(\w
+
)
|
\.([\w
-
]
+
))
$/
,
K
=
/
[
+~
]
/
,
Z
=
new
RegExp
(
"
\\\\
([
\\
da-f]{1,6}"
+
M
+
"?|("
+
M
+
")|.)"
,
"ig"
),
ee
=
function
(
e
,
t
,
n
){
var
r
=
"0x"
+
t
-
65536
;
return
r
!==
r
||
n
?
t
:
r
<
0
?
String
.
fromCharCode
(
r
+
65536
):
String
.
fromCharCode
(
r
>>
10
|
55296
,
1023
&
r
|
56320
)},
te
=
/
([\0
-
\x
1f
\x
7f
]
|^-
?\d)
|^-$|
[^\0
-
\x
1f
\x
7f-
\u
FFFF
\w
-
]
/g
,
ne
=
function
(
e
,
t
){
return
t
?
"
\
0"
===
e
?
"
\
ufffd"
:
e
.
slice
(
0
,
-
1
)
+
"
\
\"
+e.charCodeAt(e.length-1).toString(16)+"
":"
\\
"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("
form
"in e||"
label
"in e)},{dir:"
parentNode
",next:"
legend
"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"
string
"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+"
"]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("
object
"!==t.nodeName.toLowerCase()){(c=t.getAttribute("
id
"))?c=c.replace(te,ne):t.setAttribute("
id
",c=b),s=(h=a(e)).length;while(s--)h[s]="
#
"+c+"
"+ve(h[s]);v=h.join("
,
"),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("
id
")}}}return u(e.replace(B,"
$1
"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+"
")>r.cacheLength&&delete t[e.shift()],t[n+"
"]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("
fieldset
");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("
|
"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"
input
"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("
input
"===n||"
button
"===n)&&t.type===e}}function de(e){return function(t){return"
form
"in t?t.parentNode&&!1===t.disabled?"
label
"in t?"
label
"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"
label
"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"
undefined
"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"
HTML
"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("
unload
",re,!1):i.attachEvent&&i.attachEvent("
onunload
",re)),n.attributes=ue(function(e){return e.className="
i
",!e.getAttribute("
className
")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("
*
").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("
id
")===t}},r.find.ID=function(e,t){if("
undefined
"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="
undefined
"!=typeof e.getAttributeNode&&e.getAttributeNode("
id
");return n&&n.value===t}},r.find.ID=function(e,t){if("
undefined
"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("
id
"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("
id
"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"
undefined
"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("
*
"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("
undefined
"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="
<
a
id
=
'"+b+"'
><
/a><select id='"+b+"-
\r\\
' msallowcapture=''><option selected=''></
option
><
/select>",e.querySelectorAll
(
"
[
msallowcapture^=''
]
"
)
.length&&y.push
(
"
[
*^$
]
="+M+"*
(?:
''|
\"\")
"
)
,e.querySelectorAll
(
"
[
selected
]
"
)
.length||y.push
(
"
\\[
"+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-
]
"
)
.length||y.push
(
"~="
)
,e.querySelectorAll
(
":checked"
)
.length||y.push
(
":checked"
)
,e.querySelectorAll
(
"a#"+b+"+*"
)
.length||y.push
(
".#.+
[
+~
]
"
)
}
)
,ue
(
function
(
e
)
{e.innerHTML="<a href='' disabled='disabled'></
a
><
select
disabled
=
'disabled'
><
option
/><
/select>";var t=d.createElement
(
"input"
)
;t.setAttribute
(
"type","hidden"
)
,e.appendChild
(
t
)
.setAttribute
(
"name","D"
)
,e.querySelectorAll
(
"
[
name=d
]
"
)
.length&&y.push
(
"name"+M+"*
[
*^$|!~
]?
="
)
,2!==e.querySelectorAll
(
":enabled"
)
.length&&y.push
(
":enabled",":disabled"
)
,h.appendChild
(
e
)
.disabled=!0,2!==e.querySelectorAll
(
":disabled"
)
.length&&y.push
(
":enabled",":disabled"
)
,e.querySelectorAll
(
"*,:x"
)
,y.push
(
",.*:"
)
}
))
,
(
n.matchesSelector=Q.test
(
m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector
))
&&ue
(
function
(
e
)
{n.disconnectedMatch=m.call
(
e,"*"
)
,m.call
(
e,"
[
s!=''
]
:x"
)
,v.push
(
"!=",W
)
}
)
,y=y.length&&new RegExp
(
y.join
(
"|"
))
,v=v.length&&new RegExp
(
v.join
(
"|"
))
,t=Q.test
(
h.compareDocumentPosition
)
,x=t||Q.test
(
h.contains
)?
function
(
e,t
)
{var n=9===e.nodeType
?
e.documentElement:e,r=t&&t.parentNode;return e===r||!
(
!r||1!==r.nodeType||!
(
n.contains
?
n.contains
(
r
)
:e.compareDocumentPosition&&16&e.compareDocumentPosition
(
r
)))
}:function
(
e,t
)
{if
(
t
)
while
(
t=t.parentNode
)
if
(
t===e
)
return!0;return!1},D=t
?
function
(
e,t
)
{if
(
e===t
)
return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||
(
1&
(
r=
(
e.ownerDocument||e
)
===
(
t.ownerDocument||t
)?
e.compareDocumentPosition
(
t
)
:1
)
||!n.sortDetached&&t.compareDocumentPosition
(
e
)
===r
?
e===d||e.ownerDocument===w&&x
(
w,e
)?
-1:t===d||t.ownerDocument===w&&x
(
w,t
)?
1:c
?
O
(
c,e
)
-O
(
c,t
)
:0:4&r
?
-1:1
)
}:function
(
e,t
)
{if
(
e===t
)
return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=
[
e
]
,s=
[
t
]
;if
(
!i||!o
)
return e===d
?
-1:t===d
?
1:i
?
-1:o
?
1:c
?
O
(
c,e
)
-O
(
c,t
)
:0;if
(
i===o
)
return ce
(
e,t
)
;n=e;while
(
n=n.parentNode
)
a.unshift
(
n
)
;n=t;while
(
n=n.parentNode
)
s.unshift
(
n
)
;while
(
a
[
r
]
===s
[
r
])
r++;return r
?
ce
(
a
[
r
]
,s
[
r
])
:a
[
r
]
===w
?
-1:s
[
r
]
===w
?
1:0},d
)
:d},oe.matches=function
(
e,t
)
{return oe
(
e,null,null,t
)
},oe.matchesSelector=function
(
e,t
)
{if
((
e.ownerDocument||e
)
!==d&&p
(
e
)
,t=t.replace
(
z,"='$1']"
)
,n.matchesSelector&&g&&!S
[
t+" "
]
&&
(
!v||!v.test
(
t
))
&&
(
!y||!y.test
(
t
)))
try{var r=m.call
(
e,t
)
;if
(
r||n.disconnectedMatch||e.document&&11!==e.document.nodeType
)
return r}catch
(
e
)
{}return oe
(
t,d,null,
[
e
])
.length>0},oe.contains=function
(
e,t
)
{return
(
e.ownerDocument||e
)
!==d&&p
(
e
)
,x
(
e,t
)
},oe.attr=function
(
e,t
)
{
(
e.ownerDocument||e
)
!==d&&p
(
e
)
;var i=r.attrHandle
[
t.toLowerCase()
]
,o=i&&N.call
(
r.attrHandle,t.toLowerCase
())?
i
(
e,t,!g
)
:void 0;return void 0!==o
?
o:n.attributes||!g
?
e.getAttribute
(
t
)
:
(
o=e.getAttributeNode
(
t
))
&&o.specified
?
o.value:null},oe.escape=function
(
e
)
{return
(
e+""
)
.replace
(
te,ne
)
},oe.error=function
(
e
)
{throw new Error
(
"Syntax error, unrecognized expression: "+e
)
},oe.uniqueSort=function
(
e
)
{var t,r=
[]
,i=0,o=0;if
(
f=!n.detectDuplicates,c=!n.sortStable&&e.slice
(
0
)
,e.sort
(
D
)
,f
)
{while
(
t=e
[
o++
])
t===e
[
o
]
&&
(
i=r.push
(
o
))
;while
(
i--
)
e.splice
(
r
[
i
]
,1
)
}return c=null,e},i=oe.getText=function
(
e
)
{var t,n="",r=0,o=e.nodeType;if
(
o
)
{if
(
1===o||9===o||11===o
)
{if
(
"string"==typeof e.textContent
)
return e.textContent;for
(
e=e.firstChild;e;e=e.nextSibling
)
n+=i
(
e
)
}else if
(
3===o||4===o
)
return e.nodeValue}else while
(
t=e
[
r++
])
n+=i
(
t
)
;return n},
(
r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function
(
e
)
{return e
[
1
]
=e
[
1
]
.replace
(
Z,ee
)
,e
[
3
]
=
(
e
[
3
]
||e
[
4
]
||e
[
5
]
||""
)
.replace
(
Z,ee
)
,"~="===e
[
2
]
&&
(
e
[
3
]
=" "+e
[
3
]
+" "
)
,e.slice
(
0,4
)
},CHILD:function
(
e
)
{return e
[
1
]
=e
[
1
]
.toLowerCase
()
,"nth"===e
[
1
]
.slice
(
0,3
)?(
e
[
3
]
||oe.error
(
e
[
0
])
,e
[
4
]
=+
(
e
[
4
]?
e
[
5
]
+
(
e
[
6
]
||1
)
:2*
(
"even"===e
[
3
]
||"odd"===e
[
3
]))
,e
[
5
]
=+
(
e
[
7
]
+e
[
8
]
||"odd"===e
[
3
]))
:e
[
3
]
&&oe.error
(
e
[
0
])
,e},PSEUDO:function
(
e
)
{var t,n=!e
[
6
]
&&e
[
2
]
;return V.CHILD.test
(
e
[
0
])?
null:
(
e
[
3
]?
e
[
2
]
=e
[
4
]
||e
[
5
]
||"":n&&X.test
(
n
)
&&
(
t=a
(
n,!0
))
&&
(
t=n.indexOf
(
"
)
",n.length-t
)
-n.length
)
&&
(
e
[
0
]
=e
[
0
]
.slice
(
0,t
)
,e
[
2
]
=n.slice
(
0,t
))
,e.slice
(
0,3
))
}},filter:{TAG:function
(
e
)
{var t=e.replace
(
Z,ee
)
.toLowerCase
()
;return"*"===e
?
function
()
{return!0}:function
(
e
)
{return e.nodeName&&e.nodeName.toLowerCase
()
===t}},CLASS:function
(
e
)
{var t=E
[
e+" "
]
;return t||
(
t=new RegExp
(
"
(
^|"+M+"
)
"+e+"
(
"+M+"|$
)
"
))
&&E
(
e,function
(
e
)
{return t.test
(
"string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute
(
"class"
)
||""
)
}
)
},ATTR:function
(
e,t,n
)
{return function
(
r
)
{var i=oe.attr
(
r,e
)
;return null==i
?
"!="===t:!t||
(
i+="","="===t
?
i===n:"!="===t
?
i!==n:"^="===t
?
n&&0===i.indexOf
(
n
)
:"*="===t
?
n&&i.indexOf
(
n
)
>-1:"$="===t
?
n&&i.slice
(
-n.length
)
===n:"~="===t
?(
" "+i.replace
(
$," "
)
+" "
)
.indexOf
(
n
)
>-1:"|="===t&&
(
i===n||i.slice
(
0,n.length+1
)
===n+"-"
))
}},CHILD:function
(
e,t,n,r,i
)
{var o="nth"!==e.slice
(
0,3
)
,a="last"!==e.slice
(
-4
)
,s="of-type"===t;return 1===r&&0===i
?
function
(
e
)
{return!!e.parentNode}:function
(
t,n,u
)
{var l,c,f,p,d,h,g=o!==a
?
"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase
()
,m=!u&&!s,x=!1;if
(
y
)
{if
(
o
)
{while
(
g
)
{p=t;while
(
p=p
[
g
])
if
(
s
?
p.nodeName.toLowerCase
()
===v:1===p.nodeType
)
return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if
(
h=
[
a?y.firstChild:y.lastChild
]
,a&&m
)
{x=
(
d=
(
l=
(
c=
(
f=
(
p=y
)[
b
]
||
(
p
[
b
]
={}
))[
p.uniqueID
]
||
(
f
[
p.uniqueID
]
={}
))[
e
]
||
[])[
0
]
===T&&l
[
1
])
&&l
[
2
]
,p=d&&y.childNodes
[
d
]
;while
(
p=++d&&p&&p
[
g
]
||
(
x=d=0
)
||h.pop
())
if
(
1===p.nodeType&&++x&&p===t
)
{c
[
e
]
=
[
T,d,x
]
;break}}else if
(
m&&
(
x=d=
(
l=
(
c=
(
f=
(
p=t
)[
b
]
||
(
p
[
b
]
={}
))[
p.uniqueID
]
||
(
f
[
p.uniqueID
]
={}
))[
e
]
||
[])[
0
]
===T&&l
[
1
])
,!1===x
)
while
(
p=++d&&p&&p
[
g
]
||
(
x=d=0
)
||h.pop
())
if
((
s
?
p.nodeName.toLowerCase
()
===v:1===p.nodeType
)
&&++x&&
(
m&&
((
c=
(
f=p
[
b
]
||
(
p
[
b
]
={}
))[
p.uniqueID
]
||
(
f
[
p.uniqueID
]
={}
))[
e
]
=
[
T,x
])
,p===t
))
break;return
(
x-=i
)
===r||x%r==0&&x/
r
>=
0
}}},
PSEUDO
:
function
(
e
,
t
){
var
n
,
i
=
r
.
pseudos
[
e
]
||
r
.
setFilters
[
e
.
toLowerCase
()]
||
oe
.
error
(
"unsupported pseudo: "
+
e
);
return
i
[
b
]?
i
(
t
):
i
.
length
>
1
?(
n
=
[
e
,
e
,
""
,
t
],
r
.
setFilters
.
hasOwnProperty
(
e
.
toLowerCase
())?
se
(
function
(
e
,
n
){
var
r
,
o
=
i
(
e
,
t
),
a
=
o
.
length
;
while
(
a
--
)
e
[
r
=
O
(
e
,
o
[
a
])]
=!
(
n
[
r
]
=
o
[
a
])}):
function
(
e
){
return
i
(
e
,
0
,
n
)}):
i
}},
pseudos
:{
not
:
se
(
function
(
e
){
var
t
=
[],
n
=
[],
r
=
s
(
e
.
replace
(
B
,
"$1"
));
return
r
[
b
]?
se
(
function
(
e
,
t
,
n
,
i
){
var
o
,
a
=
r
(
e
,
null
,
i
,[]),
s
=
e
.
length
;
while
(
s
--
)(
o
=
a
[
s
])
&&
(
e
[
s
]
=!
(
t
[
s
]
=
o
))}):
function
(
e
,
i
,
o
){
return
t
[
0
]
=
e
,
r
(
t
,
null
,
o
,
n
),
t
[
0
]
=
null
,
!
n
.
pop
()}}),
has
:
se
(
function
(
e
){
return
function
(
t
){
return
oe
(
e
,
t
).
length
>
0
}}),
contains
:
se
(
function
(
e
){
return
e
=
e
.
replace
(
Z
,
ee
),
function
(
t
){
return
(
t
.
textContent
||
t
.
innerText
||
i
(
t
)).
indexOf
(
e
)
>-
1
}}),
lang
:
se
(
function
(
e
){
return
U
.
test
(
e
||
""
)
||
oe
.
error
(
"unsupported lang: "
+
e
),
e
=
e
.
replace
(
Z
,
ee
).
toLowerCase
(),
function
(
t
){
var
n
;
do
{
if
(
n
=
g
?
t
.
lang
:
t
.
getAttribute
(
"xml:lang"
)
||
t
.
getAttribute
(
"lang"
))
return
(
n
=
n
.
toLowerCase
())
===
e
||
0
===
n
.
indexOf
(
e
+
"-"
)}
while
((
t
=
t
.
parentNode
)
&&
1
===
t
.
nodeType
);
return
!
1
}}),
target
:
function
(
t
){
var
n
=
e
.
location
&&
e
.
location
.
hash
;
return
n
&&
n
.
slice
(
1
)
===
t
.
id
},
root
:
function
(
e
){
return
e
===
h
},
focus
:
function
(
e
){
return
e
===
d
.
activeElement
&&
(
!
d
.
hasFocus
||
d
.
hasFocus
())
&&!!
(
e
.
type
||
e
.
href
||~
e
.
tabIndex
)},
enabled
:
de
(
!
1
),
disabled
:
de
(
!
0
),
checked
:
function
(
e
){
var
t
=
e
.
nodeName
.
toLowerCase
();
return
"input"
===
t
&&!!
e
.
checked
||
"option"
===
t
&&!!
e
.
selected
},
selected
:
function
(
e
){
return
e
.
parentNode
&&
e
.
parentNode
.
selectedIndex
,
!
0
===
e
.
selected
},
empty
:
function
(
e
){
for
(
e
=
e
.
firstChild
;
e
;
e
=
e
.
nextSibling
)
if
(
e
.
nodeType
<
6
)
return
!
1
;
return
!
0
},
parent
:
function
(
e
){
return
!
r
.
pseudos
.
empty
(
e
)},
header
:
function
(
e
){
return
Y
.
test
(
e
.
nodeName
)},
input
:
function
(
e
){
return
G
.
test
(
e
.
nodeName
)},
button
:
function
(
e
){
var
t
=
e
.
nodeName
.
toLowerCase
();
return
"input"
===
t
&&
"button"
===
e
.
type
||
"button"
===
t
},
text
:
function
(
e
){
var
t
;
return
"input"
===
e
.
nodeName
.
toLowerCase
()
&&
"text"
===
e
.
type
&&
(
null
==
(
t
=
e
.
getAttribute
(
"type"
))
||
"text"
===
t
.
toLowerCase
())},
first
:
he
(
function
(){
return
[
0
]}),
last
:
he
(
function
(
e
,
t
){
return
[
t
-
1
]}),
eq
:
he
(
function
(
e
,
t
,
n
){
return
[
n
<
0
?
n
+
t
:
n
]}),
even
:
he
(
function
(
e
,
t
){
for
(
var
n
=
0
;
n
<
t
;
n
+=
2
)
e
.
push
(
n
);
return
e
}),
odd
:
he
(
function
(
e
,
t
){
for
(
var
n
=
1
;
n
<
t
;
n
+=
2
)
e
.
push
(
n
);
return
e
}),
lt
:
he
(
function
(
e
,
t
,
n
){
for
(
var
r
=
n
<
0
?
n
+
t
:
n
;
--
r
>=
0
;)
e
.
push
(
r
);
return
e
}),
gt
:
he
(
function
(
e
,
t
,
n
){
for
(
var
r
=
n
<
0
?
n
+
t
:
n
;
++
r
<
t
;)
e
.
push
(
r
);
return
e
})}}).
pseudos
.
nth
=
r
.
pseudos
.
eq
;
for
(
t
in
{
radio
:
!
0
,
checkbox
:
!
0
,
file
:
!
0
,
password
:
!
0
,
image
:
!
0
})
r
.
pseudos
[
t
]
=
fe
(
t
);
for
(
t
in
{
submit
:
!
0
,
reset
:
!
0
})
r
.
pseudos
[
t
]
=
pe
(
t
);
function
ye
(){}
ye
.
prototype
=
r
.
filters
=
r
.
pseudos
,
r
.
setFilters
=
new
ye
,
a
=
oe
.
tokenize
=
function
(
e
,
t
){
var
n
,
i
,
o
,
a
,
s
,
u
,
l
,
c
=
k
[
e
+
" "
];
if
(
c
)
return
t
?
0
:
c
.
slice
(
0
);
s
=
e
,
u
=
[],
l
=
r
.
preFilter
;
while
(
s
){
n
&&!
(
i
=
F
.
exec
(
s
))
||
(
i
&&
(
s
=
s
.
slice
(
i
[
0
].
length
)
||
s
),
u
.
push
(
o
=
[])),
n
=!
1
,(
i
=
_
.
exec
(
s
))
&&
(
n
=
i
.
shift
(),
o
.
push
({
value
:
n
,
type
:
i
[
0
].
replace
(
B
,
" "
)}),
s
=
s
.
slice
(
n
.
length
));
for
(
a
in
r
.
filter
)
!
(
i
=
V
[
a
].
exec
(
s
))
||
l
[
a
]
&&!
(
i
=
l
[
a
](
i
))
||
(
n
=
i
.
shift
(),
o
.
push
({
value
:
n
,
type
:
a
,
matches
:
i
}),
s
=
s
.
slice
(
n
.
length
));
if
(
!
n
)
break
}
return
t
?
s
.
length
:
s
?
oe
.
error
(
e
):
k
(
e
,
u
).
slice
(
0
)};
function
ve
(
e
){
for
(
var
t
=
0
,
n
=
e
.
length
,
r
=
""
;
t
<
n
;
t
++
)
r
+=
e
[
t
].
value
;
return
r
}
function
me
(
e
,
t
,
n
){
var
r
=
t
.
dir
,
i
=
t
.
next
,
o
=
i
||
r
,
a
=
n
&&
"parentNode"
===
o
,
s
=
C
++
;
return
t
.
first
?
function
(
t
,
n
,
i
){
while
(
t
=
t
[
r
])
if
(
1
===
t
.
nodeType
||
a
)
return
e
(
t
,
n
,
i
);
return
!
1
}:
function
(
t
,
n
,
u
){
var
l
,
c
,
f
,
p
=
[
T
,
s
];
if
(
u
){
while
(
t
=
t
[
r
])
if
((
1
===
t
.
nodeType
||
a
)
&&
e
(
t
,
n
,
u
))
return
!
0
}
else
while
(
t
=
t
[
r
])
if
(
1
===
t
.
nodeType
||
a
)
if
(
f
=
t
[
b
]
||
(
t
[
b
]
=
{}),
c
=
f
[
t
.
uniqueID
]
||
(
f
[
t
.
uniqueID
]
=
{}),
i
&&
i
===
t
.
nodeName
.
toLowerCase
())
t
=
t
[
r
]
||
t
;
else
{
if
((
l
=
c
[
o
])
&&
l
[
0
]
===
T
&&
l
[
1
]
===
s
)
return
p
[
2
]
=
l
[
2
];
if
(
c
[
o
]
=
p
,
p
[
2
]
=
e
(
t
,
n
,
u
))
return
!
0
}
return
!
1
}}
function
xe
(
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
be
(
e
,
t
,
n
){
for
(
var
r
=
0
,
i
=
t
.
length
;
r
<
i
;
r
++
)
oe
(
e
,
t
[
r
],
n
);
return
n
}
function
we
(
e
,
t
,
n
,
r
,
i
){
for
(
var
o
,
a
=
[],
s
=
0
,
u
=
e
.
length
,
l
=
null
!=
t
;
s
<
u
;
s
++
)(
o
=
e
[
s
])
&&
(
n
&&!
n
(
o
,
r
,
i
)
||
(
a
.
push
(
o
),
l
&&
t
.
push
(
s
)));
return
a
}
function
Te
(
e
,
t
,
n
,
r
,
i
,
o
){
return
r
&&!
r
[
b
]
&&
(
r
=
Te
(
r
)),
i
&&!
i
[
b
]
&&
(
i
=
Te
(
i
,
o
)),
se
(
function
(
o
,
a
,
s
,
u
){
var
l
,
c
,
f
,
p
=
[],
d
=
[],
h
=
a
.
length
,
g
=
o
||
be
(
t
||
"*"
,
s
.
nodeType
?[
s
]:
s
,[]),
y
=!
e
||!
o
&&
t
?
g
:
we
(
g
,
p
,
e
,
s
,
u
),
v
=
n
?
i
||
(
o
?
e
:
h
||
r
)?[]:
a
:
y
;
if
(
n
&&
n
(
y
,
v
,
s
,
u
),
r
){
l
=
we
(
v
,
d
),
r
(
l
,[],
s
,
u
),
c
=
l
.
length
;
while
(
c
--
)(
f
=
l
[
c
])
&&
(
v
[
d
[
c
]]
=!
(
y
[
d
[
c
]]
=
f
))}
if
(
o
){
if
(
i
||
e
){
if
(
i
){
l
=
[],
c
=
v
.
length
;
while
(
c
--
)(
f
=
v
[
c
])
&&
l
.
push
(
y
[
c
]
=
f
);
i
(
null
,
v
=
[],
l
,
u
)}
c
=
v
.
length
;
while
(
c
--
)(
f
=
v
[
c
])
&&
(
l
=
i
?
O
(
o
,
f
):
p
[
c
])
>-
1
&&
(
o
[
l
]
=!
(
a
[
l
]
=
f
))}}
else
v
=
we
(
v
===
a
?
v
.
splice
(
h
,
v
.
length
):
v
),
i
?
i
(
null
,
a
,
v
,
u
):
L
.
apply
(
a
,
v
)})}
function
Ce
(
e
){
for
(
var
t
,
n
,
i
,
o
=
e
.
length
,
a
=
r
.
relative
[
e
[
0
].
type
],
s
=
a
||
r
.
relative
[
" "
],
u
=
a
?
1
:
0
,
c
=
me
(
function
(
e
){
return
e
===
t
},
s
,
!
0
),
f
=
me
(
function
(
e
){
return
O
(
t
,
e
)
>-
1
},
s
,
!
0
),
p
=
[
function
(
e
,
n
,
r
){
var
i
=!
a
&&
(
r
||
n
!==
l
)
||
((
t
=
n
).
nodeType
?
c
(
e
,
n
,
r
):
f
(
e
,
n
,
r
));
return
t
=
null
,
i
}];
u
<
o
;
u
++
)
if
(
n
=
r
.
relative
[
e
[
u
].
type
])
p
=
[
me
(
xe
(
p
),
n
)];
else
{
if
((
n
=
r
.
filter
[
e
[
u
].
type
].
apply
(
null
,
e
[
u
].
matches
))[
b
]){
for
(
i
=++
u
;
i
<
o
;
i
++
)
if
(
r
.
relative
[
e
[
i
].
type
])
break
;
return
Te
(
u
>
1
&&
xe
(
p
),
u
>
1
&&
ve
(
e
.
slice
(
0
,
u
-
1
).
concat
({
value
:
" "
===
e
[
u
-
2
].
type
?
"*"
:
""
})).
replace
(
B
,
"$1"
),
n
,
u
<
i
&&
Ce
(
e
.
slice
(
u
,
i
)),
i
<
o
&&
Ce
(
e
=
e
.
slice
(
i
)),
i
<
o
&&
ve
(
e
))}
p
.
push
(
n
)}
return
xe
(
p
)}
function
Ee
(
e
,
t
){
var
n
=
t
.
length
>
0
,
i
=
e
.
length
>
0
,
o
=
function
(
o
,
a
,
s
,
u
,
c
){
var
f
,
h
,
y
,
v
=
0
,
m
=
"0"
,
x
=
o
&&
[],
b
=
[],
w
=
l
,
C
=
o
||
i
&&
r
.
find
.
TAG
(
"*"
,
c
),
E
=
T
+=
null
==
w
?
1
:
Math
.
random
()
||
.
1
,
k
=
C
.
length
;
for
(
c
&&
(
l
=
a
===
d
||
a
||
c
);
m
!==
k
&&
null
!=
(
f
=
C
[
m
]);
m
++
){
if
(
i
&&
f
){
h
=
0
,
a
||
f
.
ownerDocument
===
d
||
(
p
(
f
),
s
=!
g
);
while
(
y
=
e
[
h
++
])
if
(
y
(
f
,
a
||
d
,
s
)){
u
.
push
(
f
);
break
}
c
&&
(
T
=
E
)}
n
&&
((
f
=!
y
&&
f
)
&&
v
--
,
o
&&
x
.
push
(
f
))}
if
(
v
+=
m
,
n
&&
m
!==
v
){
h
=
0
;
while
(
y
=
t
[
h
++
])
y
(
x
,
b
,
a
,
s
);
if
(
o
){
if
(
v
>
0
)
while
(
m
--
)
x
[
m
]
||
b
[
m
]
||
(
b
[
m
]
=
j
.
call
(
u
));
b
=
we
(
b
)}
L
.
apply
(
u
,
b
),
c
&&!
o
&&
b
.
length
>
0
&&
v
+
t
.
length
>
1
&&
oe
.
uniqueSort
(
u
)}
return
c
&&
(
T
=
E
,
l
=
w
),
x
};
return
n
?
se
(
o
):
o
}
return
s
=
oe
.
compile
=
function
(
e
,
t
){
var
n
,
r
=
[],
i
=
[],
o
=
S
[
e
+
" "
];
if
(
!
o
){
t
||
(
t
=
a
(
e
)),
n
=
t
.
length
;
while
(
n
--
)(
o
=
Ce
(
t
[
n
]))[
b
]?
r
.
push
(
o
):
i
.
push
(
o
);(
o
=
S
(
e
,
Ee
(
i
,
r
))).
selector
=
e
}
return
o
},
u
=
oe
.
select
=
function
(
e
,
t
,
n
,
i
){
var
o
,
u
,
l
,
c
,
f
,
p
=
"function"
==
typeof
e
&&
e
,
d
=!
i
&&
a
(
e
=
p
.
selector
||
e
);
if
(
n
=
n
||
[],
1
===
d
.
length
){
if
((
u
=
d
[
0
]
=
d
[
0
].
slice
(
0
)).
length
>
2
&&
"ID"
===
(
l
=
u
[
0
]).
type
&&
9
===
t
.
nodeType
&&
g
&&
r
.
relative
[
u
[
1
].
type
]){
if
(
!
(
t
=
(
r
.
find
.
ID
(
l
.
matches
[
0
].
replace
(
Z
,
ee
),
t
)
||
[])[
0
]))
return
n
;
p
&&
(
t
=
t
.
parentNode
),
e
=
e
.
slice
(
u
.
shift
().
value
.
length
)}
o
=
V
.
needsContext
.
test
(
e
)?
0
:
u
.
length
;
while
(
o
--
){
if
(
l
=
u
[
o
],
r
.
relative
[
c
=
l
.
type
])
break
;
if
((
f
=
r
.
find
[
c
])
&&
(
i
=
f
(
l
.
matches
[
0
].
replace
(
Z
,
ee
),
K
.
test
(
u
[
0
].
type
)
&&
ge
(
t
.
parentNode
)
||
t
))){
if
(
u
.
splice
(
o
,
1
),
!
(
e
=
i
.
length
&&
ve
(
u
)))
return
L
.
apply
(
n
,
i
),
n
;
break
}}}
return
(
p
||
s
(
e
,
d
))(
i
,
t
,
!
g
,
n
,
!
t
||
K
.
test
(
e
)
&&
ge
(
t
.
parentNode
)
||
t
),
n
},
n
.
sortStable
=
b
.
split
(
""
).
sort
(
D
).
join
(
""
)
===
b
,
n
.
detectDuplicates
=!!
f
,
p
(),
n
.
sortDetached
=
ue
(
function
(
e
){
return
1
&
e
.
compareDocumentPosition
(
d
.
createElement
(
"fieldset"
))}),
ue
(
function
(
e
){
return
e
.
innerHTML
=
"<a href='#'></a>"
,
"#"
===
e
.
firstChild
.
getAttribute
(
"href"
)})
||
le
(
"type|href|height|width"
,
function
(
e
,
t
,
n
){
if
(
!
n
)
return
e
.
getAttribute
(
t
,
"type"
===
t
.
toLowerCase
()?
1
:
2
)}),
n
.
attributes
&&
ue
(
function
(
e
){
return
e
.
innerHTML
=
"<input/>"
,
e
.
firstChild
.
setAttribute
(
"value"
,
""
),
""
===
e
.
firstChild
.
getAttribute
(
"value"
)})
||
le
(
"value"
,
function
(
e
,
t
,
n
){
if
(
!
n
&&
"input"
===
e
.
nodeName
.
toLowerCase
())
return
e
.
defaultValue
}),
ue
(
function
(
e
){
return
null
==
e
.
getAttribute
(
"disabled"
)})
||
le
(
P
,
function
(
e
,
t
,
n
){
var
r
;
if
(
!
n
)
return
!
0
===
e
[
t
]?
t
.
toLowerCase
():(
r
=
e
.
getAttributeNode
(
t
))
&&
r
.
specified
?
r
.
value
:
null
}),
oe
}(
e
);
w
.
find
=
E
,
w
.
expr
=
E
.
selectors
,
w
.
expr
[
":"
]
=
w
.
expr
.
pseudos
,
w
.
uniqueSort
=
w
.
unique
=
E
.
uniqueSort
,
w
.
text
=
E
.
getText
,
w
.
isXMLDoc
=
E
.
isXML
,
w
.
contains
=
E
.
contains
,
w
.
escapeSelector
=
E
.
escape
;
var
k
=
function
(
e
,
t
,
n
){
var
r
=
[],
i
=
void
0
!==
n
;
while
((
e
=
e
[
t
])
&&
9
!==
e
.
nodeType
)
if
(
1
===
e
.
nodeType
){
if
(
i
&&
w
(
e
).
is
(
n
))
break
;
r
.
push
(
e
)}
return
r
},
S
=
function
(
e
,
t
){
for
(
var
n
=
[];
e
;
e
=
e
.
nextSibling
)
1
===
e
.
nodeType
&&
e
!==
t
&&
n
.
push
(
e
);
return
n
},
D
=
w
.
expr
.
match
.
needsContext
;
function
N
(
e
,
t
){
return
e
.
nodeName
&&
e
.
nodeName
.
toLowerCase
()
===
t
.
toLowerCase
()}
var
A
=
/^<
([
a-z
][^\/\0
>:
\x
20
\t\r\n\f]
*
)[\x
20
\t\r\n\f]
*
\/?
>
(?:
<
\/\1
>|
)
$/i
;
function
j
(
e
,
t
,
n
){
return
g
(
t
)?
w
.
grep
(
e
,
function
(
e
,
r
){
return
!!
t
.
call
(
e
,
r
,
e
)
!==
n
}):
t
.
nodeType
?
w
.
grep
(
e
,
function
(
e
){
return
e
===
t
!==
n
}):
"string"
!=
typeof
t
?
w
.
grep
(
e
,
function
(
e
){
return
u
.
call
(
t
,
e
)
>-
1
!==
n
}):
w
.
filter
(
t
,
e
,
n
)}
w
.
filter
=
function
(
e
,
t
,
n
){
var
r
=
t
[
0
];
return
n
&&
(
e
=
":not("
+
e
+
")"
),
1
===
t
.
length
&&
1
===
r
.
nodeType
?
w
.
find
.
matchesSelector
(
r
,
e
)?[
r
]:[]:
w
.
find
.
matches
(
e
,
w
.
grep
(
t
,
function
(
e
){
return
1
===
e
.
nodeType
}))},
w
.
fn
.
extend
({
find
:
function
(
e
){
var
t
,
n
,
r
=
this
.
length
,
i
=
this
;
if
(
"string"
!=
typeof
e
)
return
this
.
pushStack
(
w
(
e
).
filter
(
function
(){
for
(
t
=
0
;
t
<
r
;
t
++
)
if
(
w
.
contains
(
i
[
t
],
this
))
return
!
0
}));
for
(
n
=
this
.
pushStack
([]),
t
=
0
;
t
<
r
;
t
++
)
w
.
find
(
e
,
i
[
t
],
n
);
return
r
>
1
?
w
.
uniqueSort
(
n
):
n
},
filter
:
function
(
e
){
return
this
.
pushStack
(
j
(
this
,
e
||
[],
!
1
))},
not
:
function
(
e
){
return
this
.
pushStack
(
j
(
this
,
e
||
[],
!
0
))},
is
:
function
(
e
){
return
!!
j
(
this
,
"string"
==
typeof
e
&&
D
.
test
(
e
)?
w
(
e
):
e
||
[],
!
1
).
length
}});
var
q
,
L
=
/^
(?:\s
*
(
<
[\w\W]
+>
)[^
>
]
*|#
([\w
-
]
+
))
$/
;(
w
.
fn
.
init
=
function
(
e
,
t
,
n
){
var
i
,
o
;
if
(
!
e
)
return
this
;
if
(
n
=
n
||
q
,
"string"
==
typeof
e
){
if
(
!
(
i
=
"<"
===
e
[
0
]
&&
">"
===
e
[
e
.
length
-
1
]
&&
e
.
length
>=
3
?[
null
,
e
,
null
]:
L
.
exec
(
e
))
||!
i
[
1
]
&&
t
)
return
!
t
||
t
.
jquery
?(
t
||
n
).
find
(
e
):
this
.
constructor
(
t
).
find
(
e
);
if
(
i
[
1
]){
if
(
t
=
t
instanceof
w
?
t
[
0
]:
t
,
w
.
merge
(
this
,
w
.
parseHTML
(
i
[
1
],
t
&&
t
.
nodeType
?
t
.
ownerDocument
||
t
:
r
,
!
0
)),
A
.
test
(
i
[
1
])
&&
w
.
isPlainObject
(
t
))
for
(
i
in
t
)
g
(
this
[
i
])?
this
[
i
](
t
[
i
]):
this
.
attr
(
i
,
t
[
i
]);
return
this
}
return
(
o
=
r
.
getElementById
(
i
[
2
]))
&&
(
this
[
0
]
=
o
,
this
.
length
=
1
),
this
}
return
e
.
nodeType
?(
this
[
0
]
=
e
,
this
.
length
=
1
,
this
):
g
(
e
)?
void
0
!==
n
.
ready
?
n
.
ready
(
e
):
e
(
w
):
w
.
makeArray
(
e
,
this
)}).
prototype
=
w
.
fn
,
q
=
w
(
r
);
var
H
=
/^
(?:
parents|prev
(?:
Until|All
))
/
,
O
=
{
children
:
!
0
,
contents
:
!
0
,
next
:
!
0
,
prev
:
!
0
};
w
.
fn
.
extend
({
has
:
function
(
e
){
var
t
=
w
(
e
,
this
),
n
=
t
.
length
;
return
this
.
filter
(
function
(){
for
(
var
e
=
0
;
e
<
n
;
e
++
)
if
(
w
.
contains
(
this
,
t
[
e
]))
return
!
0
})},
closest
:
function
(
e
,
t
){
var
n
,
r
=
0
,
i
=
this
.
length
,
o
=
[],
a
=
"string"
!=
typeof
e
&&
w
(
e
);
if
(
!
D
.
test
(
e
))
for
(;
r
<
i
;
r
++
)
for
(
n
=
this
[
r
];
n
&&
n
!==
t
;
n
=
n
.
parentNode
)
if
(
n
.
nodeType
<
11
&&
(
a
?
a
.
index
(
n
)
>-
1
:
1
===
n
.
nodeType
&&
w
.
find
.
matchesSelector
(
n
,
e
))){
o
.
push
(
n
);
break
}
return
this
.
pushStack
(
o
.
length
>
1
?
w
.
uniqueSort
(
o
):
o
)},
index
:
function
(
e
){
return
e
?
"string"
==
typeof
e
?
u
.
call
(
w
(
e
),
this
[
0
]):
u
.
call
(
this
,
e
.
jquery
?
e
[
0
]:
e
):
this
[
0
]
&&
this
[
0
].
parentNode
?
this
.
first
().
prevAll
().
length
:
-
1
},
add
:
function
(
e
,
t
){
return
this
.
pushStack
(
w
.
uniqueSort
(
w
.
merge
(
this
.
get
(),
w
(
e
,
t
))))},
addBack
:
function
(
e
){
return
this
.
add
(
null
==
e
?
this
.
prevObject
:
this
.
prevObject
.
filter
(
e
))}});
function
P
(
e
,
t
){
while
((
e
=
e
[
t
])
&&
1
!==
e
.
nodeType
);
return
e
}
w
.
each
({
parent
:
function
(
e
){
var
t
=
e
.
parentNode
;
return
t
&&
11
!==
t
.
nodeType
?
t
:
null
},
parents
:
function
(
e
){
return
k
(
e
,
"parentNode"
)},
parentsUntil
:
function
(
e
,
t
,
n
){
return
k
(
e
,
"parentNode"
,
n
)},
next
:
function
(
e
){
return
P
(
e
,
"nextSibling"
)},
prev
:
function
(
e
){
return
P
(
e
,
"previousSibling"
)},
nextAll
:
function
(
e
){
return
k
(
e
,
"nextSibling"
)},
prevAll
:
function
(
e
){
return
k
(
e
,
"previousSibling"
)},
nextUntil
:
function
(
e
,
t
,
n
){
return
k
(
e
,
"nextSibling"
,
n
)},
prevUntil
:
function
(
e
,
t
,
n
){
return
k
(
e
,
"previousSibling"
,
n
)},
siblings
:
function
(
e
){
return
S
((
e
.
parentNode
||
{}).
firstChild
,
e
)},
children
:
function
(
e
){
return
S
(
e
.
firstChild
)},
contents
:
function
(
e
){
return
N
(
e
,
"iframe"
)?
e
.
contentDocument
:(
N
(
e
,
"template"
)
&&
(
e
=
e
.
content
||
e
),
w
.
merge
([],
e
.
childNodes
))}},
function
(
e
,
t
){
w
.
fn
[
e
]
=
function
(
n
,
r
){
var
i
=
w
.
map
(
this
,
t
,
n
);
return
"Until"
!==
e
.
slice
(
-
5
)
&&
(
r
=
n
),
r
&&
"string"
==
typeof
r
&&
(
i
=
w
.
filter
(
r
,
i
)),
this
.
length
>
1
&&
(
O
[
e
]
||
w
.
uniqueSort
(
i
),
H
.
test
(
e
)
&&
i
.
reverse
()),
this
.
pushStack
(
i
)}});
var
M
=
/
[^\x
20
\t\r\n\f]
+/g
;
function
R
(
e
){
var
t
=
{};
return
w
.
each
(
e
.
match
(
M
)
||
[],
function
(
e
,
n
){
t
[
n
]
=!
0
}),
t
}
w
.
Callbacks
=
function
(
e
){
e
=
"string"
==
typeof
e
?
R
(
e
):
w
.
extend
({},
e
);
var
t
,
n
,
r
,
i
,
o
=
[],
a
=
[],
s
=-
1
,
u
=
function
(){
for
(
i
=
i
||
e
.
once
,
r
=
t
=!
0
;
a
.
length
;
s
=-
1
){
n
=
a
.
shift
();
while
(
++
s
<
o
.
length
)
!
1
===
o
[
s
].
apply
(
n
[
0
],
n
[
1
])
&&
e
.
stopOnFalse
&&
(
s
=
o
.
length
,
n
=!
1
)}
e
.
memory
||
(
n
=!
1
),
t
=!
1
,
i
&&
(
o
=
n
?[]:
""
)},
l
=
{
add
:
function
(){
return
o
&&
(
n
&&!
t
&&
(
s
=
o
.
length
-
1
,
a
.
push
(
n
)),
function
t
(
n
){
w
.
each
(
n
,
function
(
n
,
r
){
g
(
r
)?
e
.
unique
&&
l
.
has
(
r
)
||
o
.
push
(
r
):
r
&&
r
.
length
&&
"string"
!==
x
(
r
)
&&
t
(
r
)})}(
arguments
),
n
&&!
t
&&
u
()),
this
},
remove
:
function
(){
return
w
.
each
(
arguments
,
function
(
e
,
t
){
var
n
;
while
((
n
=
w
.
inArray
(
t
,
o
,
n
))
>-
1
)
o
.
splice
(
n
,
1
),
n
<=
s
&&
s
--
}),
this
},
has
:
function
(
e
){
return
e
?
w
.
inArray
(
e
,
o
)
>-
1
:
o
.
length
>
0
},
empty
:
function
(){
return
o
&&
(
o
=
[]),
this
},
disable
:
function
(){
return
i
=
a
=
[],
o
=
n
=
""
,
this
},
disabled
:
function
(){
return
!
o
},
lock
:
function
(){
return
i
=
a
=
[],
n
||
t
||
(
o
=
n
=
""
),
this
},
locked
:
function
(){
return
!!
i
},
fireWith
:
function
(
e
,
n
){
return
i
||
(
n
=
[
e
,(
n
=
n
||
[]).
slice
?
n
.
slice
():
n
],
a
.
push
(
n
),
t
||
u
()),
this
},
fire
:
function
(){
return
l
.
fireWith
(
this
,
arguments
),
this
},
fired
:
function
(){
return
!!
r
}};
return
l
};
function
I
(
e
){
return
e
}
function
W
(
e
){
throw
e
}
function
$
(
e
,
t
,
n
,
r
){
var
i
;
try
{
e
&&
g
(
i
=
e
.
promise
)?
i
.
call
(
e
).
done
(
t
).
fail
(
n
):
e
&&
g
(
i
=
e
.
then
)?
i
.
call
(
e
,
t
,
n
):
t
.
apply
(
void
0
,[
e
].
slice
(
r
))}
catch
(
e
){
n
.
apply
(
void
0
,[
e
])}}
w
.
extend
({
Deferred
:
function
(
t
){
var
n
=
[[
"notify"
,
"progress"
,
w
.
Callbacks
(
"memory"
),
w
.
Callbacks
(
"memory"
),
2
],[
"resolve"
,
"done"
,
w
.
Callbacks
(
"once memory"
),
w
.
Callbacks
(
"once memory"
),
0
,
"resolved"
],[
"reject"
,
"fail"
,
w
.
Callbacks
(
"once memory"
),
w
.
Callbacks
(
"once memory"
),
1
,
"rejected"
]],
r
=
"pending"
,
i
=
{
state
:
function
(){
return
r
},
always
:
function
(){
return
o
.
done
(
arguments
).
fail
(
arguments
),
this
},
"catch"
:
function
(
e
){
return
i
.
then
(
null
,
e
)},
pipe
:
function
(){
var
e
=
arguments
;
return
w
.
Deferred
(
function
(
t
){
w
.
each
(
n
,
function
(
n
,
r
){
var
i
=
g
(
e
[
r
[
4
]])
&&
e
[
r
[
4
]];
o
[
r
[
1
]](
function
(){
var
e
=
i
&&
i
.
apply
(
this
,
arguments
);
e
&&
g
(
e
.
promise
)?
e
.
promise
().
progress
(
t
.
notify
).
done
(
t
.
resolve
).
fail
(
t
.
reject
):
t
[
r
[
0
]
+
"With"
](
this
,
i
?[
e
]:
arguments
)})}),
e
=
null
}).
promise
()},
then
:
function
(
t
,
r
,
i
){
var
o
=
0
;
function
a
(
t
,
n
,
r
,
i
){
return
function
(){
var
s
=
this
,
u
=
arguments
,
l
=
function
(){
var
e
,
l
;
if
(
!
(
t
<
o
)){
if
((
e
=
r
.
apply
(
s
,
u
))
===
n
.
promise
())
throw
new
TypeError
(
"Thenable self-resolution"
);
l
=
e
&&
(
"object"
==
typeof
e
||
"function"
==
typeof
e
)
&&
e
.
then
,
g
(
l
)?
i
?
l
.
call
(
e
,
a
(
o
,
n
,
I
,
i
),
a
(
o
,
n
,
W
,
i
)):(
o
++
,
l
.
call
(
e
,
a
(
o
,
n
,
I
,
i
),
a
(
o
,
n
,
W
,
i
),
a
(
o
,
n
,
I
,
n
.
notifyWith
))):(
r
!==
I
&&
(
s
=
void
0
,
u
=
[
e
]),(
i
||
n
.
resolveWith
)(
s
,
u
))}},
c
=
i
?
l
:
function
(){
try
{
l
()}
catch
(
e
){
w
.
Deferred
.
exceptionHook
&&
w
.
Deferred
.
exceptionHook
(
e
,
c
.
stackTrace
),
t
+
1
>=
o
&&
(
r
!==
W
&&
(
s
=
void
0
,
u
=
[
e
]),
n
.
rejectWith
(
s
,
u
))}};
t
?
c
():(
w
.
Deferred
.
getStackHook
&&
(
c
.
stackTrace
=
w
.
Deferred
.
getStackHook
()),
e
.
setTimeout
(
c
))}}
return
w
.
Deferred
(
function
(
e
){
n
[
0
][
3
].
add
(
a
(
0
,
e
,
g
(
i
)?
i
:
I
,
e
.
notifyWith
)),
n
[
1
][
3
].
add
(
a
(
0
,
e
,
g
(
t
)?
t
:
I
)),
n
[
2
][
3
].
add
(
a
(
0
,
e
,
g
(
r
)?
r
:
W
))}).
promise
()},
promise
:
function
(
e
){
return
null
!=
e
?
w
.
extend
(
e
,
i
):
i
}},
o
=
{};
return
w
.
each
(
n
,
function
(
e
,
t
){
var
a
=
t
[
2
],
s
=
t
[
5
];
i
[
t
[
1
]]
=
a
.
add
,
s
&&
a
.
add
(
function
(){
r
=
s
},
n
[
3
-
e
][
2
].
disable
,
n
[
3
-
e
][
3
].
disable
,
n
[
0
][
2
].
lock
,
n
[
0
][
3
].
lock
),
a
.
add
(
t
[
3
].
fire
),
o
[
t
[
0
]]
=
function
(){
return
o
[
t
[
0
]
+
"With"
](
this
===
o
?
void
0
:
this
,
arguments
),
this
},
o
[
t
[
0
]
+
"With"
]
=
a
.
fireWith
}),
i
.
promise
(
o
),
t
&&
t
.
call
(
o
,
o
),
o
},
when
:
function
(
e
){
var
t
=
arguments
.
length
,
n
=
t
,
r
=
Array
(
n
),
i
=
o
.
call
(
arguments
),
a
=
w
.
Deferred
(),
s
=
function
(
e
){
return
function
(
n
){
r
[
e
]
=
this
,
i
[
e
]
=
arguments
.
length
>
1
?
o
.
call
(
arguments
):
n
,
--
t
||
a
.
resolveWith
(
r
,
i
)}};
if
(
t
<=
1
&&
(
$
(
e
,
a
.
done
(
s
(
n
)).
resolve
,
a
.
reject
,
!
t
),
"pending"
===
a
.
state
()
||
g
(
i
[
n
]
&&
i
[
n
].
then
)))
return
a
.
then
();
while
(
n
--
)
$
(
i
[
n
],
s
(
n
),
a
.
reject
);
return
a
.
promise
()}});
var
B
=
/^
(
Eval|Internal|Range|Reference|Syntax|Type|URI
)
Error$/
;
w
.
Deferred
.
exceptionHook
=
function
(
t
,
n
){
e
.
console
&&
e
.
console
.
warn
&&
t
&&
B
.
test
(
t
.
name
)
&&
e
.
console
.
warn
(
"jQuery.Deferred exception: "
+
t
.
message
,
t
.
stack
,
n
)},
w
.
readyException
=
function
(
t
){
e
.
setTimeout
(
function
(){
throw
t
})};
var
F
=
w
.
Deferred
();
w
.
fn
.
ready
=
function
(
e
){
return
F
.
then
(
e
)[
"catch"
](
function
(
e
){
w
.
readyException
(
e
)}),
this
},
w
.
extend
({
isReady
:
!
1
,
readyWait
:
1
,
ready
:
function
(
e
){(
!
0
===
e
?
--
w
.
readyWait
:
w
.
isReady
)
||
(
w
.
isReady
=!
0
,
!
0
!==
e
&&--
w
.
readyWait
>
0
||
F
.
resolveWith
(
r
,[
w
]))}}),
w
.
ready
.
then
=
F
.
then
;
function
_
(){
r
.
removeEventListener
(
"DOMContentLoaded"
,
_
),
e
.
removeEventListener
(
"load"
,
_
),
w
.
ready
()}
"complete"
===
r
.
readyState
||
"loading"
!==
r
.
readyState
&&!
r
.
documentElement
.
doScroll
?
e
.
setTimeout
(
w
.
ready
):(
r
.
addEventListener
(
"DOMContentLoaded"
,
_
),
e
.
addEventListener
(
"load"
,
_
));
var
z
=
function
(
e
,
t
,
n
,
r
,
i
,
o
,
a
){
var
s
=
0
,
u
=
e
.
length
,
l
=
null
==
n
;
if
(
"object"
===
x
(
n
)){
i
=!
0
;
for
(
s
in
n
)
z
(
e
,
t
,
s
,
n
[
s
],
!
0
,
o
,
a
)}
else
if
(
void
0
!==
r
&&
(
i
=!
0
,
g
(
r
)
||
(
a
=!
0
),
l
&&
(
a
?(
t
.
call
(
e
,
r
),
t
=
null
):(
l
=
t
,
t
=
function
(
e
,
t
,
n
){
return
l
.
call
(
w
(
e
),
n
)})),
t
))
for
(;
s
<
u
;
s
++
)
t
(
e
[
s
],
n
,
a
?
r
:
r
.
call
(
e
[
s
],
s
,
t
(
e
[
s
],
n
)));
return
i
?
e
:
l
?
t
.
call
(
e
):
u
?
t
(
e
[
0
],
n
):
o
},
X
=
/^-ms-/
,
U
=
/-
([
a-z
])
/g
;
function
V
(
e
,
t
){
return
t
.
toUpperCase
()}
function
G
(
e
){
return
e
.
replace
(
X
,
"ms-"
).
replace
(
U
,
V
)}
var
Y
=
function
(
e
){
return
1
===
e
.
nodeType
||
9
===
e
.
nodeType
||!+
e
.
nodeType
};
function
Q
(){
this
.
expando
=
w
.
expando
+
Q
.
uid
++
}
Q
.
uid
=
1
,
Q
.
prototype
=
{
cache
:
function
(
e
){
var
t
=
e
[
this
.
expando
];
return
t
||
(
t
=
{},
Y
(
e
)
&&
(
e
.
nodeType
?
e
[
this
.
expando
]
=
t
:
Object
.
defineProperty
(
e
,
this
.
expando
,{
value
:
t
,
configurable
:
!
0
}))),
t
},
set
:
function
(
e
,
t
,
n
){
var
r
,
i
=
this
.
cache
(
e
);
if
(
"string"
==
typeof
t
)
i
[
G
(
t
)]
=
n
;
else
for
(
r
in
t
)
i
[
G
(
r
)]
=
t
[
r
];
return
i
},
get
:
function
(
e
,
t
){
return
void
0
===
t
?
this
.
cache
(
e
):
e
[
this
.
expando
]
&&
e
[
this
.
expando
][
G
(
t
)]},
access
:
function
(
e
,
t
,
n
){
return
void
0
===
t
||
t
&&
"string"
==
typeof
t
&&
void
0
===
n
?
this
.
get
(
e
,
t
):(
this
.
set
(
e
,
t
,
n
),
void
0
!==
n
?
n
:
t
)},
remove
:
function
(
e
,
t
){
var
n
,
r
=
e
[
this
.
expando
];
if
(
void
0
!==
r
){
if
(
void
0
!==
t
){
n
=
(
t
=
Array
.
isArray
(
t
)?
t
.
map
(
G
):(
t
=
G
(
t
))
in
r
?[
t
]:
t
.
match
(
M
)
||
[]).
length
;
while
(
n
--
)
delete
r
[
t
[
n
]]}(
void
0
===
t
||
w
.
isEmptyObject
(
r
))
&&
(
e
.
nodeType
?
e
[
this
.
expando
]
=
void
0
:
delete
e
[
this
.
expando
])}},
hasData
:
function
(
e
){
var
t
=
e
[
this
.
expando
];
return
void
0
!==
t
&&!
w
.
isEmptyObject
(
t
)}};
var
J
=
new
Q
,
K
=
new
Q
,
Z
=
/^
(?:\{[\w\W]
*
\}
|
\[[\w\W]
*
\])
$/
,
ee
=
/
[
A-Z
]
/g
;
function
te
(
e
){
return
"true"
===
e
||
"false"
!==
e
&&
(
"null"
===
e
?
null
:
e
===+
e
+
""
?
+
e
:
Z
.
test
(
e
)?
JSON
.
parse
(
e
):
e
)}
function
ne
(
e
,
t
,
n
){
var
r
;
if
(
void
0
===
n
&&
1
===
e
.
nodeType
)
if
(
r
=
"data-"
+
t
.
replace
(
ee
,
"-$&"
).
toLowerCase
(),
"string"
==
typeof
(
n
=
e
.
getAttribute
(
r
))){
try
{
n
=
te
(
n
)}
catch
(
e
){}
K
.
set
(
e
,
t
,
n
)}
else
n
=
void
0
;
return
n
}
w
.
extend
({
hasData
:
function
(
e
){
return
K
.
hasData
(
e
)
||
J
.
hasData
(
e
)},
data
:
function
(
e
,
t
,
n
){
return
K
.
access
(
e
,
t
,
n
)},
removeData
:
function
(
e
,
t
){
K
.
remove
(
e
,
t
)},
_data
:
function
(
e
,
t
,
n
){
return
J
.
access
(
e
,
t
,
n
)},
_removeData
:
function
(
e
,
t
){
J
.
remove
(
e
,
t
)}}),
w
.
fn
.
extend
({
data
:
function
(
e
,
t
){
var
n
,
r
,
i
,
o
=
this
[
0
],
a
=
o
&&
o
.
attributes
;
if
(
void
0
===
e
){
if
(
this
.
length
&&
(
i
=
K
.
get
(
o
),
1
===
o
.
nodeType
&&!
J
.
get
(
o
,
"hasDataAttrs"
))){
n
=
a
.
length
;
while
(
n
--
)
a
[
n
]
&&
0
===
(
r
=
a
[
n
].
name
).
indexOf
(
"data-"
)
&&
(
r
=
G
(
r
.
slice
(
5
)),
ne
(
o
,
r
,
i
[
r
]));
J
.
set
(
o
,
"hasDataAttrs"
,
!
0
)}
return
i
}
return
"object"
==
typeof
e
?
this
.
each
(
function
(){
K
.
set
(
this
,
e
)}):
z
(
this
,
function
(
t
){
var
n
;
if
(
o
&&
void
0
===
t
){
if
(
void
0
!==
(
n
=
K
.
get
(
o
,
e
)))
return
n
;
if
(
void
0
!==
(
n
=
ne
(
o
,
e
)))
return
n
}
else
this
.
each
(
function
(){
K
.
set
(
this
,
e
,
t
)})},
null
,
t
,
arguments
.
length
>
1
,
null
,
!
0
)},
removeData
:
function
(
e
){
return
this
.
each
(
function
(){
K
.
remove
(
this
,
e
)})}}),
w
.
extend
({
queue
:
function
(
e
,
t
,
n
){
var
r
;
if
(
e
)
return
t
=
(
t
||
"fx"
)
+
"queue"
,
r
=
J
.
get
(
e
,
t
),
n
&&
(
!
r
||
Array
.
isArray
(
n
)?
r
=
J
.
access
(
e
,
t
,
w
.
makeArray
(
n
)):
r
.
push
(
n
)),
r
||
[]},
dequeue
:
function
(
e
,
t
){
t
=
t
||
"fx"
;
var
n
=
w
.
queue
(
e
,
t
),
r
=
n
.
length
,
i
=
n
.
shift
(),
o
=
w
.
_queueHooks
(
e
,
t
),
a
=
function
(){
w
.
dequeue
(
e
,
t
)};
"inprogress"
===
i
&&
(
i
=
n
.
shift
(),
r
--
),
i
&&
(
"fx"
===
t
&&
n
.
unshift
(
"inprogress"
),
delete
o
.
stop
,
i
.
call
(
e
,
a
,
o
)),
!
r
&&
o
&&
o
.
empty
.
fire
()},
_queueHooks
:
function
(
e
,
t
){
var
n
=
t
+
"queueHooks"
;
return
J
.
get
(
e
,
n
)
||
J
.
access
(
e
,
n
,{
empty
:
w
.
Callbacks
(
"once memory"
).
add
(
function
(){
J
.
remove
(
e
,[
t
+
"queue"
,
n
])})})}}),
w
.
fn
.
extend
({
queue
:
function
(
e
,
t
){
var
n
=
2
;
return
"string"
!=
typeof
e
&&
(
t
=
e
,
e
=
"fx"
,
n
--
),
arguments
.
length
<
n
?
w
.
queue
(
this
[
0
],
e
):
void
0
===
t
?
this
:
this
.
each
(
function
(){
var
n
=
w
.
queue
(
this
,
e
,
t
);
w
.
_queueHooks
(
this
,
e
),
"fx"
===
e
&&
"inprogress"
!==
n
[
0
]
&&
w
.
dequeue
(
this
,
e
)})},
dequeue
:
function
(
e
){
return
this
.
each
(
function
(){
w
.
dequeue
(
this
,
e
)})},
clearQueue
:
function
(
e
){
return
this
.
queue
(
e
||
"fx"
,[])},
promise
:
function
(
e
,
t
){
var
n
,
r
=
1
,
i
=
w
.
Deferred
(),
o
=
this
,
a
=
this
.
length
,
s
=
function
(){
--
r
||
i
.
resolveWith
(
o
,[
o
])};
"string"
!=
typeof
e
&&
(
t
=
e
,
e
=
void
0
),
e
=
e
||
"fx"
;
while
(
a
--
)(
n
=
J
.
get
(
o
[
a
],
e
+
"queueHooks"
))
&&
n
.
empty
&&
(
r
++
,
n
.
empty
.
add
(
s
));
return
s
(),
i
.
promise
(
t
)}});
var
re
=
/
[
+-
]?(?:\d
*
\.
|
)\d
+
(?:[
eE
][
+-
]?\d
+|
)
/
.
source
,
ie
=
new
RegExp
(
"^(?:([+-])=|)("
+
re
+
")([a-z%]*)$"
,
"i"
),
oe
=
[
"Top"
,
"Right"
,
"Bottom"
,
"Left"
],
ae
=
function
(
e
,
t
){
return
"none"
===
(
e
=
t
||
e
).
style
.
display
||
""
===
e
.
style
.
display
&&
w
.
contains
(
e
.
ownerDocument
,
e
)
&&
"none"
===
w
.
css
(
e
,
"display"
)},
se
=
function
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
=
{};
for
(
o
in
t
)
a
[
o
]
=
e
.
style
[
o
],
e
.
style
[
o
]
=
t
[
o
];
i
=
n
.
apply
(
e
,
r
||
[]);
for
(
o
in
t
)
e
.
style
[
o
]
=
a
[
o
];
return
i
};
function
ue
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
=
20
,
s
=
r
?
function
(){
return
r
.
cur
()}:
function
(){
return
w
.
css
(
e
,
t
,
""
)},
u
=
s
(),
l
=
n
&&
n
[
3
]
||
(
w
.
cssNumber
[
t
]?
""
:
"px"
),
c
=
(
w
.
cssNumber
[
t
]
||
"px"
!==
l
&&+
u
)
&&
ie
.
exec
(
w
.
css
(
e
,
t
));
if
(
c
&&
c
[
3
]
!==
l
){
u
/=
2
,
l
=
l
||
c
[
3
],
c
=+
u
||
1
;
while
(
a
--
)
w
.
style
(
e
,
t
,
c
+
l
),(
1
-
o
)
*
(
1
-
(
o
=
s
()
/
u
||
.
5
))
<=
0
&&
(
a
=
0
),
c
/=
o
;
c
*=
2
,
w
.
style
(
e
,
t
,
c
+
l
),
n
=
n
||
[]}
return
n
&&
(
c
=+
c
||+
u
||
0
,
i
=
n
[
1
]?
c
+
(
n
[
1
]
+
1
)
*
n
[
2
]:
+
n
[
2
],
r
&&
(
r
.
unit
=
l
,
r
.
start
=
c
,
r
.
end
=
i
)),
i
}
var
le
=
{};
function
ce
(
e
){
var
t
,
n
=
e
.
ownerDocument
,
r
=
e
.
nodeName
,
i
=
le
[
r
];
return
i
||
(
t
=
n
.
body
.
appendChild
(
n
.
createElement
(
r
)),
i
=
w
.
css
(
t
,
"display"
),
t
.
parentNode
.
removeChild
(
t
),
"none"
===
i
&&
(
i
=
"block"
),
le
[
r
]
=
i
,
i
)}
function
fe
(
e
,
t
){
for
(
var
n
,
r
,
i
=
[],
o
=
0
,
a
=
e
.
length
;
o
<
a
;
o
++
)(
r
=
e
[
o
]).
style
&&
(
n
=
r
.
style
.
display
,
t
?(
"none"
===
n
&&
(
i
[
o
]
=
J
.
get
(
r
,
"display"
)
||
null
,
i
[
o
]
||
(
r
.
style
.
display
=
""
)),
""
===
r
.
style
.
display
&&
ae
(
r
)
&&
(
i
[
o
]
=
ce
(
r
))):
"none"
!==
n
&&
(
i
[
o
]
=
"none"
,
J
.
set
(
r
,
"display"
,
n
)));
for
(
o
=
0
;
o
<
a
;
o
++
)
null
!=
i
[
o
]
&&
(
e
[
o
].
style
.
display
=
i
[
o
]);
return
e
}
w
.
fn
.
extend
({
show
:
function
(){
return
fe
(
this
,
!
0
)},
hide
:
function
(){
return
fe
(
this
)},
toggle
:
function
(
e
){
return
"boolean"
==
typeof
e
?
e
?
this
.
show
():
this
.
hide
():
this
.
each
(
function
(){
ae
(
this
)?
w
(
this
).
show
():
w
(
this
).
hide
()})}});
var
pe
=
/^
(?:
checkbox|radio
)
$/i
,
de
=
/<
([
a-z
][^\/\0
>
\x
20
\t\r\n\f]
+
)
/i
,
he
=
/^$|^module$|
\/(?:
java|ecma
)
script/i
,
ge
=
{
option
:[
1
,
"<select multiple='multiple'>"
,
"</select>"
],
thead
:[
1
,
"<table>"
,
"</table>"
],
col
:[
2
,
"<table><colgroup>"
,
"</colgroup></table>"
],
tr
:[
2
,
"<table><tbody>"
,
"</tbody></table>"
],
td
:[
3
,
"<table><tbody><tr>"
,
"</tr></tbody></table>"
],
_default
:[
0
,
""
,
""
]};
ge
.
optgroup
=
ge
.
option
,
ge
.
tbody
=
ge
.
tfoot
=
ge
.
colgroup
=
ge
.
caption
=
ge
.
thead
,
ge
.
th
=
ge
.
td
;
function
ye
(
e
,
t
){
var
n
;
return
n
=
"undefined"
!=
typeof
e
.
getElementsByTagName
?
e
.
getElementsByTagName
(
t
||
"*"
):
"undefined"
!=
typeof
e
.
querySelectorAll
?
e
.
querySelectorAll
(
t
||
"*"
):[],
void
0
===
t
||
t
&&
N
(
e
,
t
)?
w
.
merge
([
e
],
n
):
n
}
function
ve
(
e
,
t
){
for
(
var
n
=
0
,
r
=
e
.
length
;
n
<
r
;
n
++
)
J
.
set
(
e
[
n
],
"globalEval"
,
!
t
||
J
.
get
(
t
[
n
],
"globalEval"
))}
var
me
=
/<|&#
?\w
+;/
;
function
xe
(
e
,
t
,
n
,
r
,
i
){
for
(
var
o
,
a
,
s
,
u
,
l
,
c
,
f
=
t
.
createDocumentFragment
(),
p
=
[],
d
=
0
,
h
=
e
.
length
;
d
<
h
;
d
++
)
if
((
o
=
e
[
d
])
||
0
===
o
)
if
(
"object"
===
x
(
o
))
w
.
merge
(
p
,
o
.
nodeType
?[
o
]:
o
);
else
if
(
me
.
test
(
o
)){
a
=
a
||
f
.
appendChild
(
t
.
createElement
(
"div"
)),
s
=
(
de
.
exec
(
o
)
||
[
""
,
""
])[
1
].
toLowerCase
(),
u
=
ge
[
s
]
||
ge
.
_default
,
a
.
innerHTML
=
u
[
1
]
+
w
.
htmlPrefilter
(
o
)
+
u
[
2
],
c
=
u
[
0
];
while
(
c
--
)
a
=
a
.
lastChild
;
w
.
merge
(
p
,
a
.
childNodes
),(
a
=
f
.
firstChild
).
textContent
=
""
}
else
p
.
push
(
t
.
createTextNode
(
o
));
f
.
textContent
=
""
,
d
=
0
;
while
(
o
=
p
[
d
++
])
if
(
r
&&
w
.
inArray
(
o
,
r
)
>-
1
)
i
&&
i
.
push
(
o
);
else
if
(
l
=
w
.
contains
(
o
.
ownerDocument
,
o
),
a
=
ye
(
f
.
appendChild
(
o
),
"script"
),
l
&&
ve
(
a
),
n
){
c
=
0
;
while
(
o
=
a
[
c
++
])
he
.
test
(
o
.
type
||
""
)
&&
n
.
push
(
o
)}
return
f
}
!
function
(){
var
e
=
r
.
createDocumentFragment
().
appendChild
(
r
.
createElement
(
"div"
)),
t
=
r
.
createElement
(
"input"
);
t
.
setAttribute
(
"type"
,
"radio"
),
t
.
setAttribute
(
"checked"
,
"checked"
),
t
.
setAttribute
(
"name"
,
"t"
),
e
.
appendChild
(
t
),
h
.
checkClone
=
e
.
cloneNode
(
!
0
).
cloneNode
(
!
0
).
lastChild
.
checked
,
e
.
innerHTML
=
"<textarea>x</textarea>"
,
h
.
noCloneChecked
=!!
e
.
cloneNode
(
!
0
).
lastChild
.
defaultValue
}();
var
be
=
r
.
documentElement
,
we
=
/^key/
,
Te
=
/^
(?:
mouse|pointer|contextmenu|drag|drop
)
|click/
,
Ce
=
/^
([^
.
]
*
)(?:\.(
.+
)
|
)
/
;
function
Ee
(){
return
!
0
}
function
ke
(){
return
!
1
}
function
Se
(){
try
{
return
r
.
activeElement
}
catch
(
e
){}}
function
De
(
e
,
t
,
n
,
r
,
i
,
o
){
var
a
,
s
;
if
(
"object"
==
typeof
t
){
"string"
!=
typeof
n
&&
(
r
=
r
||
n
,
n
=
void
0
);
for
(
s
in
t
)
De
(
e
,
s
,
n
,
r
,
t
[
s
],
o
);
return
e
}
if
(
null
==
r
&&
null
==
i
?(
i
=
n
,
r
=
n
=
void
0
):
null
==
i
&&
(
"string"
==
typeof
n
?(
i
=
r
,
r
=
void
0
):(
i
=
r
,
r
=
n
,
n
=
void
0
)),
!
1
===
i
)
i
=
ke
;
else
if
(
!
i
)
return
e
;
return
1
===
o
&&
(
a
=
i
,(
i
=
function
(
e
){
return
w
().
off
(
e
),
a
.
apply
(
this
,
arguments
)}).
guid
=
a
.
guid
||
(
a
.
guid
=
w
.
guid
++
)),
e
.
each
(
function
(){
w
.
event
.
add
(
this
,
t
,
i
,
r
,
n
)})}
w
.
event
=
{
global
:{},
add
:
function
(
e
,
t
,
n
,
r
,
i
){
var
o
,
a
,
s
,
u
,
l
,
c
,
f
,
p
,
d
,
h
,
g
,
y
=
J
.
get
(
e
);
if
(
y
){
n
.
handler
&&
(
n
=
(
o
=
n
).
handler
,
i
=
o
.
selector
),
i
&&
w
.
find
.
matchesSelector
(
be
,
i
),
n
.
guid
||
(
n
.
guid
=
w
.
guid
++
),(
u
=
y
.
events
)
||
(
u
=
y
.
events
=
{}),(
a
=
y
.
handle
)
||
(
a
=
y
.
handle
=
function
(
t
){
return
"undefined"
!=
typeof
w
&&
w
.
event
.
triggered
!==
t
.
type
?
w
.
event
.
dispatch
.
apply
(
e
,
arguments
):
void
0
}),
l
=
(
t
=
(
t
||
""
).
match
(
M
)
||
[
""
]).
length
;
while
(
l
--
)
d
=
g
=
(
s
=
Ce
.
exec
(
t
[
l
])
||
[])[
1
],
h
=
(
s
[
2
]
||
""
).
split
(
"."
).
sort
(),
d
&&
(
f
=
w
.
event
.
special
[
d
]
||
{},
d
=
(
i
?
f
.
delegateType
:
f
.
bindType
)
||
d
,
f
=
w
.
event
.
special
[
d
]
||
{},
c
=
w
.
extend
({
type
:
d
,
origType
:
g
,
data
:
r
,
handler
:
n
,
guid
:
n
.
guid
,
selector
:
i
,
needsContext
:
i
&&
w
.
expr
.
match
.
needsContext
.
test
(
i
),
namespace
:
h
.
join
(
"."
)},
o
),(
p
=
u
[
d
])
||
((
p
=
u
[
d
]
=
[]).
delegateCount
=
0
,
f
.
setup
&&!
1
!==
f
.
setup
.
call
(
e
,
r
,
h
,
a
)
||
e
.
addEventListener
&&
e
.
addEventListener
(
d
,
a
)),
f
.
add
&&
(
f
.
add
.
call
(
e
,
c
),
c
.
handler
.
guid
||
(
c
.
handler
.
guid
=
n
.
guid
)),
i
?
p
.
splice
(
p
.
delegateCount
++
,
0
,
c
):
p
.
push
(
c
),
w
.
event
.
global
[
d
]
=!
0
)}},
remove
:
function
(
e
,
t
,
n
,
r
,
i
){
var
o
,
a
,
s
,
u
,
l
,
c
,
f
,
p
,
d
,
h
,
g
,
y
=
J
.
hasData
(
e
)
&&
J
.
get
(
e
);
if
(
y
&&
(
u
=
y
.
events
)){
l
=
(
t
=
(
t
||
""
).
match
(
M
)
||
[
""
]).
length
;
while
(
l
--
)
if
(
s
=
Ce
.
exec
(
t
[
l
])
||
[],
d
=
g
=
s
[
1
],
h
=
(
s
[
2
]
||
""
).
split
(
"."
).
sort
(),
d
){
f
=
w
.
event
.
special
[
d
]
||
{},
p
=
u
[
d
=
(
r
?
f
.
delegateType
:
f
.
bindType
)
||
d
]
||
[],
s
=
s
[
2
]
&&
new
RegExp
(
"(^|
\\
.)"
+
h
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
),
a
=
o
=
p
.
length
;
while
(
o
--
)
c
=
p
[
o
],
!
i
&&
g
!==
c
.
origType
||
n
&&
n
.
guid
!==
c
.
guid
||
s
&&!
s
.
test
(
c
.
namespace
)
||
r
&&
r
!==
c
.
selector
&&
(
"**"
!==
r
||!
c
.
selector
)
||
(
p
.
splice
(
o
,
1
),
c
.
selector
&&
p
.
delegateCount
--
,
f
.
remove
&&
f
.
remove
.
call
(
e
,
c
));
a
&&!
p
.
length
&&
(
f
.
teardown
&&!
1
!==
f
.
teardown
.
call
(
e
,
h
,
y
.
handle
)
||
w
.
removeEvent
(
e
,
d
,
y
.
handle
),
delete
u
[
d
])}
else
for
(
d
in
u
)
w
.
event
.
remove
(
e
,
d
+
t
[
l
],
n
,
r
,
!
0
);
w
.
isEmptyObject
(
u
)
&&
J
.
remove
(
e
,
"handle events"
)}},
dispatch
:
function
(
e
){
var
t
=
w
.
event
.
fix
(
e
),
n
,
r
,
i
,
o
,
a
,
s
,
u
=
new
Array
(
arguments
.
length
),
l
=
(
J
.
get
(
this
,
"events"
)
||
{})[
t
.
type
]
||
[],
c
=
w
.
event
.
special
[
t
.
type
]
||
{};
for
(
u
[
0
]
=
t
,
n
=
1
;
n
<
arguments
.
length
;
n
++
)
u
[
n
]
=
arguments
[
n
];
if
(
t
.
delegateTarget
=
this
,
!
c
.
preDispatch
||!
1
!==
c
.
preDispatch
.
call
(
this
,
t
)){
s
=
w
.
event
.
handlers
.
call
(
this
,
t
,
l
),
n
=
0
;
while
((
o
=
s
[
n
++
])
&&!
t
.
isPropagationStopped
()){
t
.
currentTarget
=
o
.
elem
,
r
=
0
;
while
((
a
=
o
.
handlers
[
r
++
])
&&!
t
.
isImmediatePropagationStopped
())
t
.
rnamespace
&&!
t
.
rnamespace
.
test
(
a
.
namespace
)
||
(
t
.
handleObj
=
a
,
t
.
data
=
a
.
data
,
void
0
!==
(
i
=
((
w
.
event
.
special
[
a
.
origType
]
||
{}).
handle
||
a
.
handler
).
apply
(
o
.
elem
,
u
))
&&!
1
===
(
t
.
result
=
i
)
&&
(
t
.
preventDefault
(),
t
.
stopPropagation
()))}
return
c
.
postDispatch
&&
c
.
postDispatch
.
call
(
this
,
t
),
t
.
result
}},
handlers
:
function
(
e
,
t
){
var
n
,
r
,
i
,
o
,
a
,
s
=
[],
u
=
t
.
delegateCount
,
l
=
e
.
target
;
if
(
u
&&
l
.
nodeType
&&!
(
"click"
===
e
.
type
&&
e
.
button
>=
1
))
for
(;
l
!==
this
;
l
=
l
.
parentNode
||
this
)
if
(
1
===
l
.
nodeType
&&
(
"click"
!==
e
.
type
||!
0
!==
l
.
disabled
)){
for
(
o
=
[],
a
=
{},
n
=
0
;
n
<
u
;
n
++
)
void
0
===
a
[
i
=
(
r
=
t
[
n
]).
selector
+
" "
]
&&
(
a
[
i
]
=
r
.
needsContext
?
w
(
i
,
this
).
index
(
l
)
>-
1
:
w
.
find
(
i
,
this
,
null
,[
l
]).
length
),
a
[
i
]
&&
o
.
push
(
r
);
o
.
length
&&
s
.
push
({
elem
:
l
,
handlers
:
o
})}
return
l
=
this
,
u
<
t
.
length
&&
s
.
push
({
elem
:
l
,
handlers
:
t
.
slice
(
u
)}),
s
},
addProp
:
function
(
e
,
t
){
Object
.
defineProperty
(
w
.
Event
.
prototype
,
e
,{
enumerable
:
!
0
,
configurable
:
!
0
,
get
:
g
(
t
)?
function
(){
if
(
this
.
originalEvent
)
return
t
(
this
.
originalEvent
)}:
function
(){
if
(
this
.
originalEvent
)
return
this
.
originalEvent
[
e
]},
set
:
function
(
t
){
Object
.
defineProperty
(
this
,
e
,{
enumerable
:
!
0
,
configurable
:
!
0
,
writable
:
!
0
,
value
:
t
})}})},
fix
:
function
(
e
){
return
e
[
w
.
expando
]?
e
:
new
w
.
Event
(
e
)},
special
:{
load
:{
noBubble
:
!
0
},
focus
:{
trigger
:
function
(){
if
(
this
!==
Se
()
&&
this
.
focus
)
return
this
.
focus
(),
!
1
},
delegateType
:
"focusin"
},
blur
:{
trigger
:
function
(){
if
(
this
===
Se
()
&&
this
.
blur
)
return
this
.
blur
(),
!
1
},
delegateType
:
"focusout"
},
click
:{
trigger
:
function
(){
if
(
"checkbox"
===
this
.
type
&&
this
.
click
&&
N
(
this
,
"input"
))
return
this
.
click
(),
!
1
},
_default
:
function
(
e
){
return
N
(
e
.
target
,
"a"
)}},
beforeunload
:{
postDispatch
:
function
(
e
){
void
0
!==
e
.
result
&&
e
.
originalEvent
&&
(
e
.
originalEvent
.
returnValue
=
e
.
result
)}}}},
w
.
removeEvent
=
function
(
e
,
t
,
n
){
e
.
removeEventListener
&&
e
.
removeEventListener
(
t
,
n
)},
w
.
Event
=
function
(
e
,
t
){
if
(
!
(
this
instanceof
w
.
Event
))
return
new
w
.
Event
(
e
,
t
);
e
&&
e
.
type
?(
this
.
originalEvent
=
e
,
this
.
type
=
e
.
type
,
this
.
isDefaultPrevented
=
e
.
defaultPrevented
||
void
0
===
e
.
defaultPrevented
&&!
1
===
e
.
returnValue
?
Ee
:
ke
,
this
.
target
=
e
.
target
&&
3
===
e
.
target
.
nodeType
?
e
.
target
.
parentNode
:
e
.
target
,
this
.
currentTarget
=
e
.
currentTarget
,
this
.
relatedTarget
=
e
.
relatedTarget
):
this
.
type
=
e
,
t
&&
w
.
extend
(
this
,
t
),
this
.
timeStamp
=
e
&&
e
.
timeStamp
||
Date
.
now
(),
this
[
w
.
expando
]
=!
0
},
w
.
Event
.
prototype
=
{
constructor
:
w
.
Event
,
isDefaultPrevented
:
ke
,
isPropagationStopped
:
ke
,
isImmediatePropagationStopped
:
ke
,
isSimulated
:
!
1
,
preventDefault
:
function
(){
var
e
=
this
.
originalEvent
;
this
.
isDefaultPrevented
=
Ee
,
e
&&!
this
.
isSimulated
&&
e
.
preventDefault
()},
stopPropagation
:
function
(){
var
e
=
this
.
originalEvent
;
this
.
isPropagationStopped
=
Ee
,
e
&&!
this
.
isSimulated
&&
e
.
stopPropagation
()},
stopImmediatePropagation
:
function
(){
var
e
=
this
.
originalEvent
;
this
.
isImmediatePropagationStopped
=
Ee
,
e
&&!
this
.
isSimulated
&&
e
.
stopImmediatePropagation
(),
this
.
stopPropagation
()}},
w
.
each
({
altKey
:
!
0
,
bubbles
:
!
0
,
cancelable
:
!
0
,
changedTouches
:
!
0
,
ctrlKey
:
!
0
,
detail
:
!
0
,
eventPhase
:
!
0
,
metaKey
:
!
0
,
pageX
:
!
0
,
pageY
:
!
0
,
shiftKey
:
!
0
,
view
:
!
0
,
"char"
:
!
0
,
charCode
:
!
0
,
key
:
!
0
,
keyCode
:
!
0
,
button
:
!
0
,
buttons
:
!
0
,
clientX
:
!
0
,
clientY
:
!
0
,
offsetX
:
!
0
,
offsetY
:
!
0
,
pointerId
:
!
0
,
pointerType
:
!
0
,
screenX
:
!
0
,
screenY
:
!
0
,
targetTouches
:
!
0
,
toElement
:
!
0
,
touches
:
!
0
,
which
:
function
(
e
){
var
t
=
e
.
button
;
return
null
==
e
.
which
&&
we
.
test
(
e
.
type
)?
null
!=
e
.
charCode
?
e
.
charCode
:
e
.
keyCode
:
!
e
.
which
&&
void
0
!==
t
&&
Te
.
test
(
e
.
type
)?
1
&
t
?
1
:
2
&
t
?
3
:
4
&
t
?
2
:
0
:
e
.
which
}},
w
.
event
.
addProp
),
w
.
each
({
mouseenter
:
"mouseover"
,
mouseleave
:
"mouseout"
,
pointerenter
:
"pointerover"
,
pointerleave
:
"pointerout"
},
function
(
e
,
t
){
w
.
event
.
special
[
e
]
=
{
delegateType
:
t
,
bindType
:
t
,
handle
:
function
(
e
){
var
n
,
r
=
this
,
i
=
e
.
relatedTarget
,
o
=
e
.
handleObj
;
return
i
&&
(
i
===
r
||
w
.
contains
(
r
,
i
))
||
(
e
.
type
=
o
.
origType
,
n
=
o
.
handler
.
apply
(
this
,
arguments
),
e
.
type
=
t
),
n
}}}),
w
.
fn
.
extend
({
on
:
function
(
e
,
t
,
n
,
r
){
return
De
(
this
,
e
,
t
,
n
,
r
)},
one
:
function
(
e
,
t
,
n
,
r
){
return
De
(
this
,
e
,
t
,
n
,
r
,
1
)},
off
:
function
(
e
,
t
,
n
){
var
r
,
i
;
if
(
e
&&
e
.
preventDefault
&&
e
.
handleObj
)
return
r
=
e
.
handleObj
,
w
(
e
.
delegateTarget
).
off
(
r
.
namespace
?
r
.
origType
+
"."
+
r
.
namespace
:
r
.
origType
,
r
.
selector
,
r
.
handler
),
this
;
if
(
"object"
==
typeof
e
){
for
(
i
in
e
)
this
.
off
(
i
,
t
,
e
[
i
]);
return
this
}
return
!
1
!==
t
&&
"function"
!=
typeof
t
||
(
n
=
t
,
t
=
void
0
),
!
1
===
n
&&
(
n
=
ke
),
this
.
each
(
function
(){
w
.
event
.
remove
(
this
,
e
,
n
,
t
)})}});
var
Ne
=
/<
(?!
area|br|col|embed|hr|img|input|link|meta|param
)(([
a-z
][^\/\0
>
\x
20
\t\r\n\f]
*
)[^
>
]
*
)\/
>/gi
,
Ae
=
/<script|<style|<link/i
,
je
=
/checked
\s
*
(?:[^
=
]
|=
\s
*.checked.
)
/i
,
qe
=
/^
\s
*<!
(?:\[
CDATA
\[
|--
)
|
(?:\]\]
|--
)
>
\s
*$/g
;
function
Le
(
e
,
t
){
return
N
(
e
,
"table"
)
&&
N
(
11
!==
t
.
nodeType
?
t
:
t
.
firstChild
,
"tr"
)?
w
(
e
).
children
(
"tbody"
)[
0
]
||
e
:
e
}
function
He
(
e
){
return
e
.
type
=
(
null
!==
e
.
getAttribute
(
"type"
))
+
"/"
+
e
.
type
,
e
}
function
Oe
(
e
){
return
"true/"
===
(
e
.
type
||
""
).
slice
(
0
,
5
)?
e
.
type
=
e
.
type
.
slice
(
5
):
e
.
removeAttribute
(
"type"
),
e
}
function
Pe
(
e
,
t
){
var
n
,
r
,
i
,
o
,
a
,
s
,
u
,
l
;
if
(
1
===
t
.
nodeType
){
if
(
J
.
hasData
(
e
)
&&
(
o
=
J
.
access
(
e
),
a
=
J
.
set
(
t
,
o
),
l
=
o
.
events
)){
delete
a
.
handle
,
a
.
events
=
{};
for
(
i
in
l
)
for
(
n
=
0
,
r
=
l
[
i
].
length
;
n
<
r
;
n
++
)
w
.
event
.
add
(
t
,
i
,
l
[
i
][
n
])}
K
.
hasData
(
e
)
&&
(
s
=
K
.
access
(
e
),
u
=
w
.
extend
({},
s
),
K
.
set
(
t
,
u
))}}
function
Me
(
e
,
t
){
var
n
=
t
.
nodeName
.
toLowerCase
();
"input"
===
n
&&
pe
.
test
(
e
.
type
)?
t
.
checked
=
e
.
checked
:
"input"
!==
n
&&
"textarea"
!==
n
||
(
t
.
defaultValue
=
e
.
defaultValue
)}
function
Re
(
e
,
t
,
n
,
r
){
t
=
a
.
apply
([],
t
);
var
i
,
o
,
s
,
u
,
l
,
c
,
f
=
0
,
p
=
e
.
length
,
d
=
p
-
1
,
y
=
t
[
0
],
v
=
g
(
y
);
if
(
v
||
p
>
1
&&
"string"
==
typeof
y
&&!
h
.
checkClone
&&
je
.
test
(
y
))
return
e
.
each
(
function
(
i
){
var
o
=
e
.
eq
(
i
);
v
&&
(
t
[
0
]
=
y
.
call
(
this
,
i
,
o
.
html
())),
Re
(
o
,
t
,
n
,
r
)});
if
(
p
&&
(
i
=
xe
(
t
,
e
[
0
].
ownerDocument
,
!
1
,
e
,
r
),
o
=
i
.
firstChild
,
1
===
i
.
childNodes
.
length
&&
(
i
=
o
),
o
||
r
)){
for
(
u
=
(
s
=
w
.
map
(
ye
(
i
,
"script"
),
He
)).
length
;
f
<
p
;
f
++
)
l
=
i
,
f
!==
d
&&
(
l
=
w
.
clone
(
l
,
!
0
,
!
0
),
u
&&
w
.
merge
(
s
,
ye
(
l
,
"script"
))),
n
.
call
(
e
[
f
],
l
,
f
);
if
(
u
)
for
(
c
=
s
[
s
.
length
-
1
].
ownerDocument
,
w
.
map
(
s
,
Oe
),
f
=
0
;
f
<
u
;
f
++
)
l
=
s
[
f
],
he
.
test
(
l
.
type
||
""
)
&&!
J
.
access
(
l
,
"globalEval"
)
&&
w
.
contains
(
c
,
l
)
&&
(
l
.
src
&&
"module"
!==
(
l
.
type
||
""
).
toLowerCase
()?
w
.
_evalUrl
&&
w
.
_evalUrl
(
l
.
src
):
m
(
l
.
textContent
.
replace
(
qe
,
""
),
c
,
l
))}
return
e
}
function
Ie
(
e
,
t
,
n
){
for
(
var
r
,
i
=
t
?
w
.
filter
(
t
,
e
):
e
,
o
=
0
;
null
!=
(
r
=
i
[
o
]);
o
++
)
n
||
1
!==
r
.
nodeType
||
w
.
cleanData
(
ye
(
r
)),
r
.
parentNode
&&
(
n
&&
w
.
contains
(
r
.
ownerDocument
,
r
)
&&
ve
(
ye
(
r
,
"script"
)),
r
.
parentNode
.
removeChild
(
r
));
return
e
}
w
.
extend
({
htmlPrefilter
:
function
(
e
){
return
e
.
replace
(
Ne
,
"<$1></$2>"
)},
clone
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
=
e
.
cloneNode
(
!
0
),
u
=
w
.
contains
(
e
.
ownerDocument
,
e
);
if
(
!
(
h
.
noCloneChecked
||
1
!==
e
.
nodeType
&&
11
!==
e
.
nodeType
||
w
.
isXMLDoc
(
e
)))
for
(
a
=
ye
(
s
),
r
=
0
,
i
=
(
o
=
ye
(
e
)).
length
;
r
<
i
;
r
++
)
Me
(
o
[
r
],
a
[
r
]);
if
(
t
)
if
(
n
)
for
(
o
=
o
||
ye
(
e
),
a
=
a
||
ye
(
s
),
r
=
0
,
i
=
o
.
length
;
r
<
i
;
r
++
)
Pe
(
o
[
r
],
a
[
r
]);
else
Pe
(
e
,
s
);
return
(
a
=
ye
(
s
,
"script"
)).
length
>
0
&&
ve
(
a
,
!
u
&&
ye
(
e
,
"script"
)),
s
},
cleanData
:
function
(
e
){
for
(
var
t
,
n
,
r
,
i
=
w
.
event
.
special
,
o
=
0
;
void
0
!==
(
n
=
e
[
o
]);
o
++
)
if
(
Y
(
n
)){
if
(
t
=
n
[
J
.
expando
]){
if
(
t
.
events
)
for
(
r
in
t
.
events
)
i
[
r
]?
w
.
event
.
remove
(
n
,
r
):
w
.
removeEvent
(
n
,
r
,
t
.
handle
);
n
[
J
.
expando
]
=
void
0
}
n
[
K
.
expando
]
&&
(
n
[
K
.
expando
]
=
void
0
)}}}),
w
.
fn
.
extend
({
detach
:
function
(
e
){
return
Ie
(
this
,
e
,
!
0
)},
remove
:
function
(
e
){
return
Ie
(
this
,
e
)},
text
:
function
(
e
){
return
z
(
this
,
function
(
e
){
return
void
0
===
e
?
w
.
text
(
this
):
this
.
empty
().
each
(
function
(){
1
!==
this
.
nodeType
&&
11
!==
this
.
nodeType
&&
9
!==
this
.
nodeType
||
(
this
.
textContent
=
e
)})},
null
,
e
,
arguments
.
length
)},
append
:
function
(){
return
Re
(
this
,
arguments
,
function
(
e
){
1
!==
this
.
nodeType
&&
11
!==
this
.
nodeType
&&
9
!==
this
.
nodeType
||
Le
(
this
,
e
).
appendChild
(
e
)})},
prepend
:
function
(){
return
Re
(
this
,
arguments
,
function
(
e
){
if
(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
){
var
t
=
Le
(
this
,
e
);
t
.
insertBefore
(
e
,
t
.
firstChild
)}})},
before
:
function
(){
return
Re
(
this
,
arguments
,
function
(
e
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
e
,
this
)})},
after
:
function
(){
return
Re
(
this
,
arguments
,
function
(
e
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
e
,
this
.
nextSibling
)})},
empty
:
function
(){
for
(
var
e
,
t
=
0
;
null
!=
(
e
=
this
[
t
]);
t
++
)
1
===
e
.
nodeType
&&
(
w
.
cleanData
(
ye
(
e
,
!
1
)),
e
.
textContent
=
""
);
return
this
},
clone
:
function
(
e
,
t
){
return
e
=
null
!=
e
&&
e
,
t
=
null
==
t
?
e
:
t
,
this
.
map
(
function
(){
return
w
.
clone
(
this
,
e
,
t
)})},
html
:
function
(
e
){
return
z
(
this
,
function
(
e
){
var
t
=
this
[
0
]
||
{},
n
=
0
,
r
=
this
.
length
;
if
(
void
0
===
e
&&
1
===
t
.
nodeType
)
return
t
.
innerHTML
;
if
(
"string"
==
typeof
e
&&!
Ae
.
test
(
e
)
&&!
ge
[(
de
.
exec
(
e
)
||
[
""
,
""
])[
1
].
toLowerCase
()]){
e
=
w
.
htmlPrefilter
(
e
);
try
{
for
(;
n
<
r
;
n
++
)
1
===
(
t
=
this
[
n
]
||
{}).
nodeType
&&
(
w
.
cleanData
(
ye
(
t
,
!
1
)),
t
.
innerHTML
=
e
);
t
=
0
}
catch
(
e
){}}
t
&&
this
.
empty
().
append
(
e
)},
null
,
e
,
arguments
.
length
)},
replaceWith
:
function
(){
var
e
=
[];
return
Re
(
this
,
arguments
,
function
(
t
){
var
n
=
this
.
parentNode
;
w
.
inArray
(
this
,
e
)
<
0
&&
(
w
.
cleanData
(
ye
(
this
)),
n
&&
n
.
replaceChild
(
t
,
this
))},
e
)}}),
w
.
each
({
appendTo
:
"append"
,
prependTo
:
"prepend"
,
insertBefore
:
"before"
,
insertAfter
:
"after"
,
replaceAll
:
"replaceWith"
},
function
(
e
,
t
){
w
.
fn
[
e
]
=
function
(
e
){
for
(
var
n
,
r
=
[],
i
=
w
(
e
),
o
=
i
.
length
-
1
,
a
=
0
;
a
<=
o
;
a
++
)
n
=
a
===
o
?
this
:
this
.
clone
(
!
0
),
w
(
i
[
a
])[
t
](
n
),
s
.
apply
(
r
,
n
.
get
());
return
this
.
pushStack
(
r
)}});
var
We
=
new
RegExp
(
"^("
+
re
+
")(?!px)[a-z%]+$"
,
"i"
),
$e
=
function
(
t
){
var
n
=
t
.
ownerDocument
.
defaultView
;
return
n
&&
n
.
opener
||
(
n
=
e
),
n
.
getComputedStyle
(
t
)},
Be
=
new
RegExp
(
oe
.
join
(
"|"
),
"i"
);
!
function
(){
function
t
(){
if
(
c
){
l
.
style
.
cssText
=
"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0"
,
c
.
style
.
cssText
=
"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%"
,
be
.
appendChild
(
l
).
appendChild
(
c
);
var
t
=
e
.
getComputedStyle
(
c
);
i
=
"1%"
!==
t
.
top
,
u
=
12
===
n
(
t
.
marginLeft
),
c
.
style
.
right
=
"60%"
,
s
=
36
===
n
(
t
.
right
),
o
=
36
===
n
(
t
.
width
),
c
.
style
.
position
=
"absolute"
,
a
=
36
===
c
.
offsetWidth
||
"absolute"
,
be
.
removeChild
(
l
),
c
=
null
}}
function
n
(
e
){
return
Math
.
round
(
parseFloat
(
e
))}
var
i
,
o
,
a
,
s
,
u
,
l
=
r
.
createElement
(
"div"
),
c
=
r
.
createElement
(
"div"
);
c
.
style
&&
(
c
.
style
.
backgroundClip
=
"content-box"
,
c
.
cloneNode
(
!
0
).
style
.
backgroundClip
=
""
,
h
.
clearCloneStyle
=
"content-box"
===
c
.
style
.
backgroundClip
,
w
.
extend
(
h
,{
boxSizingReliable
:
function
(){
return
t
(),
o
},
pixelBoxStyles
:
function
(){
return
t
(),
s
},
pixelPosition
:
function
(){
return
t
(),
i
},
reliableMarginLeft
:
function
(){
return
t
(),
u
},
scrollboxSize
:
function
(){
return
t
(),
a
}}))}();
function
Fe
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
=
e
.
style
;
return
(
n
=
n
||
$e
(
e
))
&&
(
""
!==
(
a
=
n
.
getPropertyValue
(
t
)
||
n
[
t
])
||
w
.
contains
(
e
.
ownerDocument
,
e
)
||
(
a
=
w
.
style
(
e
,
t
)),
!
h
.
pixelBoxStyles
()
&&
We
.
test
(
a
)
&&
Be
.
test
(
t
)
&&
(
r
=
s
.
width
,
i
=
s
.
minWidth
,
o
=
s
.
maxWidth
,
s
.
minWidth
=
s
.
maxWidth
=
s
.
width
=
a
,
a
=
n
.
width
,
s
.
width
=
r
,
s
.
minWidth
=
i
,
s
.
maxWidth
=
o
)),
void
0
!==
a
?
a
+
""
:
a
}
function
_e
(
e
,
t
){
return
{
get
:
function
(){
if
(
!
e
())
return
(
this
.
get
=
t
).
apply
(
this
,
arguments
);
delete
this
.
get
}}}
var
ze
=
/^
(
none|table
(?!
-c
[
ea
])
.+
)
/
,
Xe
=
/^--/
,
Ue
=
{
position
:
"absolute"
,
visibility
:
"hidden"
,
display
:
"block"
},
Ve
=
{
letterSpacing
:
"0"
,
fontWeight
:
"400"
},
Ge
=
[
"Webkit"
,
"Moz"
,
"ms"
],
Ye
=
r
.
createElement
(
"div"
).
style
;
function
Qe
(
e
){
if
(
e
in
Ye
)
return
e
;
var
t
=
e
[
0
].
toUpperCase
()
+
e
.
slice
(
1
),
n
=
Ge
.
length
;
while
(
n
--
)
if
((
e
=
Ge
[
n
]
+
t
)
in
Ye
)
return
e
}
function
Je
(
e
){
var
t
=
w
.
cssProps
[
e
];
return
t
||
(
t
=
w
.
cssProps
[
e
]
=
Qe
(
e
)
||
e
),
t
}
function
Ke
(
e
,
t
,
n
){
var
r
=
ie
.
exec
(
t
);
return
r
?
Math
.
max
(
0
,
r
[
2
]
-
(
n
||
0
))
+
(
r
[
3
]
||
"px"
):
t
}
function
Ze
(
e
,
t
,
n
,
r
,
i
,
o
){
var
a
=
"width"
===
t
?
1
:
0
,
s
=
0
,
u
=
0
;
if
(
n
===
(
r
?
"border"
:
"content"
))
return
0
;
for
(;
a
<
4
;
a
+=
2
)
"margin"
===
n
&&
(
u
+=
w
.
css
(
e
,
n
+
oe
[
a
],
!
0
,
i
)),
r
?(
"content"
===
n
&&
(
u
-=
w
.
css
(
e
,
"padding"
+
oe
[
a
],
!
0
,
i
)),
"margin"
!==
n
&&
(
u
-=
w
.
css
(
e
,
"border"
+
oe
[
a
]
+
"Width"
,
!
0
,
i
))):(
u
+=
w
.
css
(
e
,
"padding"
+
oe
[
a
],
!
0
,
i
),
"padding"
!==
n
?
u
+=
w
.
css
(
e
,
"border"
+
oe
[
a
]
+
"Width"
,
!
0
,
i
):
s
+=
w
.
css
(
e
,
"border"
+
oe
[
a
]
+
"Width"
,
!
0
,
i
));
return
!
r
&&
o
>=
0
&&
(
u
+=
Math
.
max
(
0
,
Math
.
ceil
(
e
[
"offset"
+
t
[
0
].
toUpperCase
()
+
t
.
slice
(
1
)]
-
o
-
u
-
s
-
.
5
))),
u
}
function
et
(
e
,
t
,
n
){
var
r
=
$e
(
e
),
i
=
Fe
(
e
,
t
,
r
),
o
=
"border-box"
===
w
.
css
(
e
,
"boxSizing"
,
!
1
,
r
),
a
=
o
;
if
(
We
.
test
(
i
)){
if
(
!
n
)
return
i
;
i
=
"auto"
}
return
a
=
a
&&
(
h
.
boxSizingReliable
()
||
i
===
e
.
style
[
t
]),(
"auto"
===
i
||!
parseFloat
(
i
)
&&
"inline"
===
w
.
css
(
e
,
"display"
,
!
1
,
r
))
&&
(
i
=
e
[
"offset"
+
t
[
0
].
toUpperCase
()
+
t
.
slice
(
1
)],
a
=!
0
),(
i
=
parseFloat
(
i
)
||
0
)
+
Ze
(
e
,
t
,
n
||
(
o
?
"border"
:
"content"
),
a
,
r
,
i
)
+
"px"
}
w
.
extend
({
cssHooks
:{
opacity
:{
get
:
function
(
e
,
t
){
if
(
t
){
var
n
=
Fe
(
e
,
"opacity"
);
return
""
===
n
?
"1"
:
n
}}}},
cssNumber
:{
animationIterationCount
:
!
0
,
columnCount
:
!
0
,
fillOpacity
:
!
0
,
flexGrow
:
!
0
,
flexShrink
:
!
0
,
fontWeight
:
!
0
,
lineHeight
:
!
0
,
opacity
:
!
0
,
order
:
!
0
,
orphans
:
!
0
,
widows
:
!
0
,
zIndex
:
!
0
,
zoom
:
!
0
},
cssProps
:{},
style
:
function
(
e
,
t
,
n
,
r
){
if
(
e
&&
3
!==
e
.
nodeType
&&
8
!==
e
.
nodeType
&&
e
.
style
){
var
i
,
o
,
a
,
s
=
G
(
t
),
u
=
Xe
.
test
(
t
),
l
=
e
.
style
;
if
(
u
||
(
t
=
Je
(
s
)),
a
=
w
.
cssHooks
[
t
]
||
w
.
cssHooks
[
s
],
void
0
===
n
)
return
a
&&
"get"
in
a
&&
void
0
!==
(
i
=
a
.
get
(
e
,
!
1
,
r
))?
i
:
l
[
t
];
"string"
==
(
o
=
typeof
n
)
&&
(
i
=
ie
.
exec
(
n
))
&&
i
[
1
]
&&
(
n
=
ue
(
e
,
t
,
i
),
o
=
"number"
),
null
!=
n
&&
n
===
n
&&
(
"number"
===
o
&&
(
n
+=
i
&&
i
[
3
]
||
(
w
.
cssNumber
[
s
]?
""
:
"px"
)),
h
.
clearCloneStyle
||
""
!==
n
||
0
!==
t
.
indexOf
(
"background"
)
||
(
l
[
t
]
=
"inherit"
),
a
&&
"set"
in
a
&&
void
0
===
(
n
=
a
.
set
(
e
,
n
,
r
))
||
(
u
?
l
.
setProperty
(
t
,
n
):
l
[
t
]
=
n
))}},
css
:
function
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
=
G
(
t
);
return
Xe
.
test
(
t
)
||
(
t
=
Je
(
s
)),(
a
=
w
.
cssHooks
[
t
]
||
w
.
cssHooks
[
s
])
&&
"get"
in
a
&&
(
i
=
a
.
get
(
e
,
!
0
,
n
)),
void
0
===
i
&&
(
i
=
Fe
(
e
,
t
,
r
)),
"normal"
===
i
&&
t
in
Ve
&&
(
i
=
Ve
[
t
]),
""
===
n
||
n
?(
o
=
parseFloat
(
i
),
!
0
===
n
||
isFinite
(
o
)?
o
||
0
:
i
):
i
}}),
w
.
each
([
"height"
,
"width"
],
function
(
e
,
t
){
w
.
cssHooks
[
t
]
=
{
get
:
function
(
e
,
n
,
r
){
if
(
n
)
return
!
ze
.
test
(
w
.
css
(
e
,
"display"
))
||
e
.
getClientRects
().
length
&&
e
.
getBoundingClientRect
().
width
?
et
(
e
,
t
,
r
):
se
(
e
,
Ue
,
function
(){
return
et
(
e
,
t
,
r
)})},
set
:
function
(
e
,
n
,
r
){
var
i
,
o
=
$e
(
e
),
a
=
"border-box"
===
w
.
css
(
e
,
"boxSizing"
,
!
1
,
o
),
s
=
r
&&
Ze
(
e
,
t
,
r
,
a
,
o
);
return
a
&&
h
.
scrollboxSize
()
===
o
.
position
&&
(
s
-=
Math
.
ceil
(
e
[
"offset"
+
t
[
0
].
toUpperCase
()
+
t
.
slice
(
1
)]
-
parseFloat
(
o
[
t
])
-
Ze
(
e
,
t
,
"border"
,
!
1
,
o
)
-
.
5
)),
s
&&
(
i
=
ie
.
exec
(
n
))
&&
"px"
!==
(
i
[
3
]
||
"px"
)
&&
(
e
.
style
[
t
]
=
n
,
n
=
w
.
css
(
e
,
t
)),
Ke
(
e
,
n
,
s
)}}}),
w
.
cssHooks
.
marginLeft
=
_e
(
h
.
reliableMarginLeft
,
function
(
e
,
t
){
if
(
t
)
return
(
parseFloat
(
Fe
(
e
,
"marginLeft"
))
||
e
.
getBoundingClientRect
().
left
-
se
(
e
,{
marginLeft
:
0
},
function
(){
return
e
.
getBoundingClientRect
().
left
}))
+
"px"
}),
w
.
each
({
margin
:
""
,
padding
:
""
,
border
:
"Width"
},
function
(
e
,
t
){
w
.
cssHooks
[
e
+
t
]
=
{
expand
:
function
(
n
){
for
(
var
r
=
0
,
i
=
{},
o
=
"string"
==
typeof
n
?
n
.
split
(
" "
):[
n
];
r
<
4
;
r
++
)
i
[
e
+
oe
[
r
]
+
t
]
=
o
[
r
]
||
o
[
r
-
2
]
||
o
[
0
];
return
i
}},
"margin"
!==
e
&&
(
w
.
cssHooks
[
e
+
t
].
set
=
Ke
)}),
w
.
fn
.
extend
({
css
:
function
(
e
,
t
){
return
z
(
this
,
function
(
e
,
t
,
n
){
var
r
,
i
,
o
=
{},
a
=
0
;
if
(
Array
.
isArray
(
t
)){
for
(
r
=
$e
(
e
),
i
=
t
.
length
;
a
<
i
;
a
++
)
o
[
t
[
a
]]
=
w
.
css
(
e
,
t
[
a
],
!
1
,
r
);
return
o
}
return
void
0
!==
n
?
w
.
style
(
e
,
t
,
n
):
w
.
css
(
e
,
t
)},
e
,
t
,
arguments
.
length
>
1
)}});
function
tt
(
e
,
t
,
n
,
r
,
i
){
return
new
tt
.
prototype
.
init
(
e
,
t
,
n
,
r
,
i
)}
w
.
Tween
=
tt
,
tt
.
prototype
=
{
constructor
:
tt
,
init
:
function
(
e
,
t
,
n
,
r
,
i
,
o
){
this
.
elem
=
e
,
this
.
prop
=
n
,
this
.
easing
=
i
||
w
.
easing
.
_default
,
this
.
options
=
t
,
this
.
start
=
this
.
now
=
this
.
cur
(),
this
.
end
=
r
,
this
.
unit
=
o
||
(
w
.
cssNumber
[
n
]?
""
:
"px"
)},
cur
:
function
(){
var
e
=
tt
.
propHooks
[
this
.
prop
];
return
e
&&
e
.
get
?
e
.
get
(
this
):
tt
.
propHooks
.
_default
.
get
(
this
)},
run
:
function
(
e
){
var
t
,
n
=
tt
.
propHooks
[
this
.
prop
];
return
this
.
options
.
duration
?
this
.
pos
=
t
=
w
.
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
):
tt
.
propHooks
.
_default
.
set
(
this
),
this
}},
tt
.
prototype
.
init
.
prototype
=
tt
.
prototype
,
tt
.
propHooks
=
{
_default
:{
get
:
function
(
e
){
var
t
;
return
1
!==
e
.
elem
.
nodeType
||
null
!=
e
.
elem
[
e
.
prop
]
&&
null
==
e
.
elem
.
style
[
e
.
prop
]?
e
.
elem
[
e
.
prop
]:(
t
=
w
.
css
(
e
.
elem
,
e
.
prop
,
""
))
&&
"auto"
!==
t
?
t
:
0
},
set
:
function
(
e
){
w
.
fx
.
step
[
e
.
prop
]?
w
.
fx
.
step
[
e
.
prop
](
e
):
1
!==
e
.
elem
.
nodeType
||
null
==
e
.
elem
.
style
[
w
.
cssProps
[
e
.
prop
]]
&&!
w
.
cssHooks
[
e
.
prop
]?
e
.
elem
[
e
.
prop
]
=
e
.
now
:
w
.
style
(
e
.
elem
,
e
.
prop
,
e
.
now
+
e
.
unit
)}}},
tt
.
propHooks
.
scrollTop
=
tt
.
propHooks
.
scrollLeft
=
{
set
:
function
(
e
){
e
.
elem
.
nodeType
&&
e
.
elem
.
parentNode
&&
(
e
.
elem
[
e
.
prop
]
=
e
.
now
)}},
w
.
easing
=
{
linear
:
function
(
e
){
return
e
},
swing
:
function
(
e
){
return
.
5
-
Math
.
cos
(
e
*
Math
.
PI
)
/
2
},
_default
:
"swing"
},
w
.
fx
=
tt
.
prototype
.
init
,
w
.
fx
.
step
=
{};
var
nt
,
rt
,
it
=
/^
(?:
toggle|show|hide
)
$/
,
ot
=
/queueHooks$/
;
function
at
(){
rt
&&
(
!
1
===
r
.
hidden
&&
e
.
requestAnimationFrame
?
e
.
requestAnimationFrame
(
at
):
e
.
setTimeout
(
at
,
w
.
fx
.
interval
),
w
.
fx
.
tick
())}
function
st
(){
return
e
.
setTimeout
(
function
(){
nt
=
void
0
}),
nt
=
Date
.
now
()}
function
ut
(
e
,
t
){
var
n
,
r
=
0
,
i
=
{
height
:
e
};
for
(
t
=
t
?
1
:
0
;
r
<
4
;
r
+=
2
-
t
)
i
[
"margin"
+
(
n
=
oe
[
r
])]
=
i
[
"padding"
+
n
]
=
e
;
return
t
&&
(
i
.
opacity
=
i
.
width
=
e
),
i
}
function
lt
(
e
,
t
,
n
){
for
(
var
r
,
i
=
(
pt
.
tweeners
[
t
]
||
[]).
concat
(
pt
.
tweeners
[
"*"
]),
o
=
0
,
a
=
i
.
length
;
o
<
a
;
o
++
)
if
(
r
=
i
[
o
].
call
(
n
,
t
,
e
))
return
r
}
function
ct
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
,
u
,
l
,
c
,
f
=
"width"
in
t
||
"height"
in
t
,
p
=
this
,
d
=
{},
h
=
e
.
style
,
g
=
e
.
nodeType
&&
ae
(
e
),
y
=
J
.
get
(
e
,
"fxshow"
);
n
.
queue
||
(
null
==
(
a
=
w
.
_queueHooks
(
e
,
"fx"
)).
unqueued
&&
(
a
.
unqueued
=
0
,
s
=
a
.
empty
.
fire
,
a
.
empty
.
fire
=
function
(){
a
.
unqueued
||
s
()}),
a
.
unqueued
++
,
p
.
always
(
function
(){
p
.
always
(
function
(){
a
.
unqueued
--
,
w
.
queue
(
e
,
"fx"
).
length
||
a
.
empty
.
fire
()})}));
for
(
r
in
t
)
if
(
i
=
t
[
r
],
it
.
test
(
i
)){
if
(
delete
t
[
r
],
o
=
o
||
"toggle"
===
i
,
i
===
(
g
?
"hide"
:
"show"
)){
if
(
"show"
!==
i
||!
y
||
void
0
===
y
[
r
])
continue
;
g
=!
0
}
d
[
r
]
=
y
&&
y
[
r
]
||
w
.
style
(
e
,
r
)}
if
((
u
=!
w
.
isEmptyObject
(
t
))
||!
w
.
isEmptyObject
(
d
)){
f
&&
1
===
e
.
nodeType
&&
(
n
.
overflow
=
[
h
.
overflow
,
h
.
overflowX
,
h
.
overflowY
],
null
==
(
l
=
y
&&
y
.
display
)
&&
(
l
=
J
.
get
(
e
,
"display"
)),
"none"
===
(
c
=
w
.
css
(
e
,
"display"
))
&&
(
l
?
c
=
l
:(
fe
([
e
],
!
0
),
l
=
e
.
style
.
display
||
l
,
c
=
w
.
css
(
e
,
"display"
),
fe
([
e
]))),(
"inline"
===
c
||
"inline-block"
===
c
&&
null
!=
l
)
&&
"none"
===
w
.
css
(
e
,
"float"
)
&&
(
u
||
(
p
.
done
(
function
(){
h
.
display
=
l
}),
null
==
l
&&
(
c
=
h
.
display
,
l
=
"none"
===
c
?
""
:
c
)),
h
.
display
=
"inline-block"
)),
n
.
overflow
&&
(
h
.
overflow
=
"hidden"
,
p
.
always
(
function
(){
h
.
overflow
=
n
.
overflow
[
0
],
h
.
overflowX
=
n
.
overflow
[
1
],
h
.
overflowY
=
n
.
overflow
[
2
]})),
u
=!
1
;
for
(
r
in
d
)
u
||
(
y
?
"hidden"
in
y
&&
(
g
=
y
.
hidden
):
y
=
J
.
access
(
e
,
"fxshow"
,{
display
:
l
}),
o
&&
(
y
.
hidden
=!
g
),
g
&&
fe
([
e
],
!
0
),
p
.
done
(
function
(){
g
||
fe
([
e
]),
J
.
remove
(
e
,
"fxshow"
);
for
(
r
in
d
)
w
.
style
(
e
,
r
,
d
[
r
])})),
u
=
lt
(
g
?
y
[
r
]:
0
,
r
,
p
),
r
in
y
||
(
y
[
r
]
=
u
.
start
,
g
&&
(
u
.
end
=
u
.
start
,
u
.
start
=
0
))}}
function
ft
(
e
,
t
){
var
n
,
r
,
i
,
o
,
a
;
for
(
n
in
e
)
if
(
r
=
G
(
n
),
i
=
t
[
r
],
o
=
e
[
n
],
Array
.
isArray
(
o
)
&&
(
i
=
o
[
1
],
o
=
e
[
n
]
=
o
[
0
]),
n
!==
r
&&
(
e
[
r
]
=
o
,
delete
e
[
n
]),(
a
=
w
.
cssHooks
[
r
])
&&
"expand"
in
a
){
o
=
a
.
expand
(
o
),
delete
e
[
r
];
for
(
n
in
o
)
n
in
e
||
(
e
[
n
]
=
o
[
n
],
t
[
n
]
=
i
)}
else
t
[
r
]
=
i
}
function
pt
(
e
,
t
,
n
){
var
r
,
i
,
o
=
0
,
a
=
pt
.
prefilters
.
length
,
s
=
w
.
Deferred
().
always
(
function
(){
delete
u
.
elem
}),
u
=
function
(){
if
(
i
)
return
!
1
;
for
(
var
t
=
nt
||
st
(),
n
=
Math
.
max
(
0
,
l
.
startTime
+
l
.
duration
-
t
),
r
=
1
-
(
n
/
l
.
duration
||
0
),
o
=
0
,
a
=
l
.
tweens
.
length
;
o
<
a
;
o
++
)
l
.
tweens
[
o
].
run
(
r
);
return
s
.
notifyWith
(
e
,[
l
,
r
,
n
]),
r
<
1
&&
a
?
n
:(
a
||
s
.
notifyWith
(
e
,[
l
,
1
,
0
]),
s
.
resolveWith
(
e
,[
l
]),
!
1
)},
l
=
s
.
promise
({
elem
:
e
,
props
:
w
.
extend
({},
t
),
opts
:
w
.
extend
(
!
0
,{
specialEasing
:{},
easing
:
w
.
easing
.
_default
},
n
),
originalProperties
:
t
,
originalOptions
:
n
,
startTime
:
nt
||
st
(),
duration
:
n
.
duration
,
tweens
:[],
createTween
:
function
(
t
,
n
){
var
r
=
w
.
Tween
(
e
,
l
.
opts
,
t
,
n
,
l
.
opts
.
specialEasing
[
t
]
||
l
.
opts
.
easing
);
return
l
.
tweens
.
push
(
r
),
r
},
stop
:
function
(
t
){
var
n
=
0
,
r
=
t
?
l
.
tweens
.
length
:
0
;
if
(
i
)
return
this
;
for
(
i
=!
0
;
n
<
r
;
n
++
)
l
.
tweens
[
n
].
run
(
1
);
return
t
?(
s
.
notifyWith
(
e
,[
l
,
1
,
0
]),
s
.
resolveWith
(
e
,[
l
,
t
])):
s
.
rejectWith
(
e
,[
l
,
t
]),
this
}}),
c
=
l
.
props
;
for
(
ft
(
c
,
l
.
opts
.
specialEasing
);
o
<
a
;
o
++
)
if
(
r
=
pt
.
prefilters
[
o
].
call
(
l
,
e
,
c
,
l
.
opts
))
return
g
(
r
.
stop
)
&&
(
w
.
_queueHooks
(
l
.
elem
,
l
.
opts
.
queue
).
stop
=
r
.
stop
.
bind
(
r
)),
r
;
return
w
.
map
(
c
,
lt
,
l
),
g
(
l
.
opts
.
start
)
&&
l
.
opts
.
start
.
call
(
e
,
l
),
l
.
progress
(
l
.
opts
.
progress
).
done
(
l
.
opts
.
done
,
l
.
opts
.
complete
).
fail
(
l
.
opts
.
fail
).
always
(
l
.
opts
.
always
),
w
.
fx
.
timer
(
w
.
extend
(
u
,{
elem
:
e
,
anim
:
l
,
queue
:
l
.
opts
.
queue
})),
l
}
w
.
Animation
=
w
.
extend
(
pt
,{
tweeners
:{
"*"
:[
function
(
e
,
t
){
var
n
=
this
.
createTween
(
e
,
t
);
return
ue
(
n
.
elem
,
e
,
ie
.
exec
(
t
),
n
),
n
}]},
tweener
:
function
(
e
,
t
){
g
(
e
)?(
t
=
e
,
e
=
[
"*"
]):
e
=
e
.
match
(
M
);
for
(
var
n
,
r
=
0
,
i
=
e
.
length
;
r
<
i
;
r
++
)
n
=
e
[
r
],
pt
.
tweeners
[
n
]
=
pt
.
tweeners
[
n
]
||
[],
pt
.
tweeners
[
n
].
unshift
(
t
)},
prefilters
:[
ct
],
prefilter
:
function
(
e
,
t
){
t
?
pt
.
prefilters
.
unshift
(
e
):
pt
.
prefilters
.
push
(
e
)}}),
w
.
speed
=
function
(
e
,
t
,
n
){
var
r
=
e
&&
"object"
==
typeof
e
?
w
.
extend
({},
e
):{
complete
:
n
||!
n
&&
t
||
g
(
e
)
&&
e
,
duration
:
e
,
easing
:
n
&&
t
||
t
&&!
g
(
t
)
&&
t
};
return
w
.
fx
.
off
?
r
.
duration
=
0
:
"number"
!=
typeof
r
.
duration
&&
(
r
.
duration
in
w
.
fx
.
speeds
?
r
.
duration
=
w
.
fx
.
speeds
[
r
.
duration
]:
r
.
duration
=
w
.
fx
.
speeds
.
_default
),
null
!=
r
.
queue
&&!
0
!==
r
.
queue
||
(
r
.
queue
=
"fx"
),
r
.
old
=
r
.
complete
,
r
.
complete
=
function
(){
g
(
r
.
old
)
&&
r
.
old
.
call
(
this
),
r
.
queue
&&
w
.
dequeue
(
this
,
r
.
queue
)},
r
},
w
.
fn
.
extend
({
fadeTo
:
function
(
e
,
t
,
n
,
r
){
return
this
.
filter
(
ae
).
css
(
"opacity"
,
0
).
show
().
end
().
animate
({
opacity
:
t
},
e
,
n
,
r
)},
animate
:
function
(
e
,
t
,
n
,
r
){
var
i
=
w
.
isEmptyObject
(
e
),
o
=
w
.
speed
(
t
,
n
,
r
),
a
=
function
(){
var
t
=
pt
(
this
,
w
.
extend
({},
e
),
o
);(
i
||
J
.
get
(
this
,
"finish"
))
&&
t
.
stop
(
!
0
)};
return
a
.
finish
=
a
,
i
||!
1
===
o
.
queue
?
this
.
each
(
a
):
this
.
queue
(
o
.
queue
,
a
)},
stop
:
function
(
e
,
t
,
n
){
var
r
=
function
(
e
){
var
t
=
e
.
stop
;
delete
e
.
stop
,
t
(
n
)};
return
"string"
!=
typeof
e
&&
(
n
=
t
,
t
=
e
,
e
=
void
0
),
t
&&!
1
!==
e
&&
this
.
queue
(
e
||
"fx"
,[]),
this
.
each
(
function
(){
var
t
=!
0
,
i
=
null
!=
e
&&
e
+
"queueHooks"
,
o
=
w
.
timers
,
a
=
J
.
get
(
this
);
if
(
i
)
a
[
i
]
&&
a
[
i
].
stop
&&
r
(
a
[
i
]);
else
for
(
i
in
a
)
a
[
i
]
&&
a
[
i
].
stop
&&
ot
.
test
(
i
)
&&
r
(
a
[
i
]);
for
(
i
=
o
.
length
;
i
--
;)
o
[
i
].
elem
!==
this
||
null
!=
e
&&
o
[
i
].
queue
!==
e
||
(
o
[
i
].
anim
.
stop
(
n
),
t
=!
1
,
o
.
splice
(
i
,
1
));
!
t
&&
n
||
w
.
dequeue
(
this
,
e
)})},
finish
:
function
(
e
){
return
!
1
!==
e
&&
(
e
=
e
||
"fx"
),
this
.
each
(
function
(){
var
t
,
n
=
J
.
get
(
this
),
r
=
n
[
e
+
"queue"
],
i
=
n
[
e
+
"queueHooks"
],
o
=
w
.
timers
,
a
=
r
?
r
.
length
:
0
;
for
(
n
.
finish
=!
0
,
w
.
queue
(
this
,
e
,[]),
i
&&
i
.
stop
&&
i
.
stop
.
call
(
this
,
!
0
),
t
=
o
.
length
;
t
--
;)
o
[
t
].
elem
===
this
&&
o
[
t
].
queue
===
e
&&
(
o
[
t
].
anim
.
stop
(
!
0
),
o
.
splice
(
t
,
1
));
for
(
t
=
0
;
t
<
a
;
t
++
)
r
[
t
]
&&
r
[
t
].
finish
&&
r
[
t
].
finish
.
call
(
this
);
delete
n
.
finish
})}}),
w
.
each
([
"toggle"
,
"show"
,
"hide"
],
function
(
e
,
t
){
var
n
=
w
.
fn
[
t
];
w
.
fn
[
t
]
=
function
(
e
,
r
,
i
){
return
null
==
e
||
"boolean"
==
typeof
e
?
n
.
apply
(
this
,
arguments
):
this
.
animate
(
ut
(
t
,
!
0
),
e
,
r
,
i
)}}),
w
.
each
({
slideDown
:
ut
(
"show"
),
slideUp
:
ut
(
"hide"
),
slideToggle
:
ut
(
"toggle"
),
fadeIn
:{
opacity
:
"show"
},
fadeOut
:{
opacity
:
"hide"
},
fadeToggle
:{
opacity
:
"toggle"
}},
function
(
e
,
t
){
w
.
fn
[
e
]
=
function
(
e
,
n
,
r
){
return
this
.
animate
(
t
,
e
,
n
,
r
)}}),
w
.
timers
=
[],
w
.
fx
.
tick
=
function
(){
var
e
,
t
=
0
,
n
=
w
.
timers
;
for
(
nt
=
Date
.
now
();
t
<
n
.
length
;
t
++
)(
e
=
n
[
t
])()
||
n
[
t
]
!==
e
||
n
.
splice
(
t
--
,
1
);
n
.
length
||
w
.
fx
.
stop
(),
nt
=
void
0
},
w
.
fx
.
timer
=
function
(
e
){
w
.
timers
.
push
(
e
),
w
.
fx
.
start
()},
w
.
fx
.
interval
=
13
,
w
.
fx
.
start
=
function
(){
rt
||
(
rt
=!
0
,
at
())},
w
.
fx
.
stop
=
function
(){
rt
=
null
},
w
.
fx
.
speeds
=
{
slow
:
600
,
fast
:
200
,
_default
:
400
},
w
.
fn
.
delay
=
function
(
t
,
n
){
return
t
=
w
.
fx
?
w
.
fx
.
speeds
[
t
]
||
t
:
t
,
n
=
n
||
"fx"
,
this
.
queue
(
n
,
function
(
n
,
r
){
var
i
=
e
.
setTimeout
(
n
,
t
);
r
.
stop
=
function
(){
e
.
clearTimeout
(
i
)}})},
function
(){
var
e
=
r
.
createElement
(
"input"
),
t
=
r
.
createElement
(
"select"
).
appendChild
(
r
.
createElement
(
"option"
));
e
.
type
=
"checkbox"
,
h
.
checkOn
=
""
!==
e
.
value
,
h
.
optSelected
=
t
.
selected
,(
e
=
r
.
createElement
(
"input"
)).
value
=
"t"
,
e
.
type
=
"radio"
,
h
.
radioValue
=
"t"
===
e
.
value
}();
var
dt
,
ht
=
w
.
expr
.
attrHandle
;
w
.
fn
.
extend
({
attr
:
function
(
e
,
t
){
return
z
(
this
,
w
.
attr
,
e
,
t
,
arguments
.
length
>
1
)},
removeAttr
:
function
(
e
){
return
this
.
each
(
function
(){
w
.
removeAttr
(
this
,
e
)})}}),
w
.
extend
({
attr
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
=
e
.
nodeType
;
if
(
3
!==
o
&&
8
!==
o
&&
2
!==
o
)
return
"undefined"
==
typeof
e
.
getAttribute
?
w
.
prop
(
e
,
t
,
n
):(
1
===
o
&&
w
.
isXMLDoc
(
e
)
||
(
i
=
w
.
attrHooks
[
t
.
toLowerCase
()]
||
(
w
.
expr
.
match
.
bool
.
test
(
t
)?
dt
:
void
0
)),
void
0
!==
n
?
null
===
n
?
void
w
.
removeAttr
(
e
,
t
):
i
&&
"set"
in
i
&&
void
0
!==
(
r
=
i
.
set
(
e
,
n
,
t
))?
r
:(
e
.
setAttribute
(
t
,
n
+
""
),
n
):
i
&&
"get"
in
i
&&
null
!==
(
r
=
i
.
get
(
e
,
t
))?
r
:
null
==
(
r
=
w
.
find
.
attr
(
e
,
t
))?
void
0
:
r
)},
attrHooks
:{
type
:{
set
:
function
(
e
,
t
){
if
(
!
h
.
radioValue
&&
"radio"
===
t
&&
N
(
e
,
"input"
)){
var
n
=
e
.
value
;
return
e
.
setAttribute
(
"type"
,
t
),
n
&&
(
e
.
value
=
n
),
t
}}}},
removeAttr
:
function
(
e
,
t
){
var
n
,
r
=
0
,
i
=
t
&&
t
.
match
(
M
);
if
(
i
&&
1
===
e
.
nodeType
)
while
(
n
=
i
[
r
++
])
e
.
removeAttribute
(
n
)}}),
dt
=
{
set
:
function
(
e
,
t
,
n
){
return
!
1
===
t
?
w
.
removeAttr
(
e
,
n
):
e
.
setAttribute
(
n
,
n
),
n
}},
w
.
each
(
w
.
expr
.
match
.
bool
.
source
.
match
(
/
\w
+/g
),
function
(
e
,
t
){
var
n
=
ht
[
t
]
||
w
.
find
.
attr
;
ht
[
t
]
=
function
(
e
,
t
,
r
){
var
i
,
o
,
a
=
t
.
toLowerCase
();
return
r
||
(
o
=
ht
[
a
],
ht
[
a
]
=
i
,
i
=
null
!=
n
(
e
,
t
,
r
)?
a
:
null
,
ht
[
a
]
=
o
),
i
}});
var
gt
=
/^
(?:
input|select|textarea|button
)
$/i
,
yt
=
/^
(?:
a|area
)
$/i
;
w
.
fn
.
extend
({
prop
:
function
(
e
,
t
){
return
z
(
this
,
w
.
prop
,
e
,
t
,
arguments
.
length
>
1
)},
removeProp
:
function
(
e
){
return
this
.
each
(
function
(){
delete
this
[
w
.
propFix
[
e
]
||
e
]})}}),
w
.
extend
({
prop
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
=
e
.
nodeType
;
if
(
3
!==
o
&&
8
!==
o
&&
2
!==
o
)
return
1
===
o
&&
w
.
isXMLDoc
(
e
)
||
(
t
=
w
.
propFix
[
t
]
||
t
,
i
=
w
.
propHooks
[
t
]),
void
0
!==
n
?
i
&&
"set"
in
i
&&
void
0
!==
(
r
=
i
.
set
(
e
,
n
,
t
))?
r
:
e
[
t
]
=
n
:
i
&&
"get"
in
i
&&
null
!==
(
r
=
i
.
get
(
e
,
t
))?
r
:
e
[
t
]},
propHooks
:{
tabIndex
:{
get
:
function
(
e
){
var
t
=
w
.
find
.
attr
(
e
,
"tabindex"
);
return
t
?
parseInt
(
t
,
10
):
gt
.
test
(
e
.
nodeName
)
||
yt
.
test
(
e
.
nodeName
)
&&
e
.
href
?
0
:
-
1
}}},
propFix
:{
"for"
:
"htmlFor"
,
"class"
:
"className"
}}),
h
.
optSelected
||
(
w
.
propHooks
.
selected
=
{
get
:
function
(
e
){
var
t
=
e
.
parentNode
;
return
t
&&
t
.
parentNode
&&
t
.
parentNode
.
selectedIndex
,
null
},
set
:
function
(
e
){
var
t
=
e
.
parentNode
;
t
&&
(
t
.
selectedIndex
,
t
.
parentNode
&&
t
.
parentNode
.
selectedIndex
)}}),
w
.
each
([
"tabIndex"
,
"readOnly"
,
"maxLength"
,
"cellSpacing"
,
"cellPadding"
,
"rowSpan"
,
"colSpan"
,
"useMap"
,
"frameBorder"
,
"contentEditable"
],
function
(){
w
.
propFix
[
this
.
toLowerCase
()]
=
this
});
function
vt
(
e
){
return
(
e
.
match
(
M
)
||
[]).
join
(
" "
)}
function
mt
(
e
){
return
e
.
getAttribute
&&
e
.
getAttribute
(
"class"
)
||
""
}
function
xt
(
e
){
return
Array
.
isArray
(
e
)?
e
:
"string"
==
typeof
e
?
e
.
match
(
M
)
||
[]:[]}
w
.
fn
.
extend
({
addClass
:
function
(
e
){
var
t
,
n
,
r
,
i
,
o
,
a
,
s
,
u
=
0
;
if
(
g
(
e
))
return
this
.
each
(
function
(
t
){
w
(
this
).
addClass
(
e
.
call
(
this
,
t
,
mt
(
this
)))});
if
((
t
=
xt
(
e
)).
length
)
while
(
n
=
this
[
u
++
])
if
(
i
=
mt
(
n
),
r
=
1
===
n
.
nodeType
&&
" "
+
vt
(
i
)
+
" "
){
a
=
0
;
while
(
o
=
t
[
a
++
])
r
.
indexOf
(
" "
+
o
+
" "
)
<
0
&&
(
r
+=
o
+
" "
);
i
!==
(
s
=
vt
(
r
))
&&
n
.
setAttribute
(
"class"
,
s
)}
return
this
},
removeClass
:
function
(
e
){
var
t
,
n
,
r
,
i
,
o
,
a
,
s
,
u
=
0
;
if
(
g
(
e
))
return
this
.
each
(
function
(
t
){
w
(
this
).
removeClass
(
e
.
call
(
this
,
t
,
mt
(
this
)))});
if
(
!
arguments
.
length
)
return
this
.
attr
(
"class"
,
""
);
if
((
t
=
xt
(
e
)).
length
)
while
(
n
=
this
[
u
++
])
if
(
i
=
mt
(
n
),
r
=
1
===
n
.
nodeType
&&
" "
+
vt
(
i
)
+
" "
){
a
=
0
;
while
(
o
=
t
[
a
++
])
while
(
r
.
indexOf
(
" "
+
o
+
" "
)
>-
1
)
r
=
r
.
replace
(
" "
+
o
+
" "
,
" "
);
i
!==
(
s
=
vt
(
r
))
&&
n
.
setAttribute
(
"class"
,
s
)}
return
this
},
toggleClass
:
function
(
e
,
t
){
var
n
=
typeof
e
,
r
=
"string"
===
n
||
Array
.
isArray
(
e
);
return
"boolean"
==
typeof
t
&&
r
?
t
?
this
.
addClass
(
e
):
this
.
removeClass
(
e
):
g
(
e
)?
this
.
each
(
function
(
n
){
w
(
this
).
toggleClass
(
e
.
call
(
this
,
n
,
mt
(
this
),
t
),
t
)}):
this
.
each
(
function
(){
var
t
,
i
,
o
,
a
;
if
(
r
){
i
=
0
,
o
=
w
(
this
),
a
=
xt
(
e
);
while
(
t
=
a
[
i
++
])
o
.
hasClass
(
t
)?
o
.
removeClass
(
t
):
o
.
addClass
(
t
)}
else
void
0
!==
e
&&
"boolean"
!==
n
||
((
t
=
mt
(
this
))
&&
J
.
set
(
this
,
"__className__"
,
t
),
this
.
setAttribute
&&
this
.
setAttribute
(
"class"
,
t
||!
1
===
e
?
""
:
J
.
get
(
this
,
"__className__"
)
||
""
))})},
hasClass
:
function
(
e
){
var
t
,
n
,
r
=
0
;
t
=
" "
+
e
+
" "
;
while
(
n
=
this
[
r
++
])
if
(
1
===
n
.
nodeType
&&
(
" "
+
vt
(
mt
(
n
))
+
" "
).
indexOf
(
t
)
>-
1
)
return
!
0
;
return
!
1
}});
var
bt
=
/
\r
/g
;
w
.
fn
.
extend
({
val
:
function
(
e
){
var
t
,
n
,
r
,
i
=
this
[
0
];{
if
(
arguments
.
length
)
return
r
=
g
(
e
),
this
.
each
(
function
(
n
){
var
i
;
1
===
this
.
nodeType
&&
(
null
==
(
i
=
r
?
e
.
call
(
this
,
n
,
w
(
this
).
val
()):
e
)?
i
=
""
:
"number"
==
typeof
i
?
i
+=
""
:
Array
.
isArray
(
i
)
&&
(
i
=
w
.
map
(
i
,
function
(
e
){
return
null
==
e
?
""
:
e
+
""
})),(
t
=
w
.
valHooks
[
this
.
type
]
||
w
.
valHooks
[
this
.
nodeName
.
toLowerCase
()])
&&
"set"
in
t
&&
void
0
!==
t
.
set
(
this
,
i
,
"value"
)
||
(
this
.
value
=
i
))});
if
(
i
)
return
(
t
=
w
.
valHooks
[
i
.
type
]
||
w
.
valHooks
[
i
.
nodeName
.
toLowerCase
()])
&&
"get"
in
t
&&
void
0
!==
(
n
=
t
.
get
(
i
,
"value"
))?
n
:
"string"
==
typeof
(
n
=
i
.
value
)?
n
.
replace
(
bt
,
""
):
null
==
n
?
""
:
n
}}}),
w
.
extend
({
valHooks
:{
option
:{
get
:
function
(
e
){
var
t
=
w
.
find
.
attr
(
e
,
"value"
);
return
null
!=
t
?
t
:
vt
(
w
.
text
(
e
))}},
select
:{
get
:
function
(
e
){
var
t
,
n
,
r
,
i
=
e
.
options
,
o
=
e
.
selectedIndex
,
a
=
"select-one"
===
e
.
type
,
s
=
a
?
null
:[],
u
=
a
?
o
+
1
:
i
.
length
;
for
(
r
=
o
<
0
?
u
:
a
?
o
:
0
;
r
<
u
;
r
++
)
if
(((
n
=
i
[
r
]).
selected
||
r
===
o
)
&&!
n
.
disabled
&&
(
!
n
.
parentNode
.
disabled
||!
N
(
n
.
parentNode
,
"optgroup"
))){
if
(
t
=
w
(
n
).
val
(),
a
)
return
t
;
s
.
push
(
t
)}
return
s
},
set
:
function
(
e
,
t
){
var
n
,
r
,
i
=
e
.
options
,
o
=
w
.
makeArray
(
t
),
a
=
i
.
length
;
while
(
a
--
)((
r
=
i
[
a
]).
selected
=
w
.
inArray
(
w
.
valHooks
.
option
.
get
(
r
),
o
)
>-
1
)
&&
(
n
=!
0
);
return
n
||
(
e
.
selectedIndex
=-
1
),
o
}}}}),
w
.
each
([
"radio"
,
"checkbox"
],
function
(){
w
.
valHooks
[
this
]
=
{
set
:
function
(
e
,
t
){
if
(
Array
.
isArray
(
t
))
return
e
.
checked
=
w
.
inArray
(
w
(
e
).
val
(),
t
)
>-
1
}},
h
.
checkOn
||
(
w
.
valHooks
[
this
].
get
=
function
(
e
){
return
null
===
e
.
getAttribute
(
"value"
)?
"on"
:
e
.
value
})}),
h
.
focusin
=
"onfocusin"
in
e
;
var
wt
=
/^
(?:
focusinfocus|focusoutblur
)
$/
,
Tt
=
function
(
e
){
e
.
stopPropagation
()};
w
.
extend
(
w
.
event
,{
trigger
:
function
(
t
,
n
,
i
,
o
){
var
a
,
s
,
u
,
l
,
c
,
p
,
d
,
h
,
v
=
[
i
||
r
],
m
=
f
.
call
(
t
,
"type"
)?
t
.
type
:
t
,
x
=
f
.
call
(
t
,
"namespace"
)?
t
.
namespace
.
split
(
"."
):[];
if
(
s
=
h
=
u
=
i
=
i
||
r
,
3
!==
i
.
nodeType
&&
8
!==
i
.
nodeType
&&!
wt
.
test
(
m
+
w
.
event
.
triggered
)
&&
(
m
.
indexOf
(
"."
)
>-
1
&&
(
m
=
(
x
=
m
.
split
(
"."
)).
shift
(),
x
.
sort
()),
c
=
m
.
indexOf
(
":"
)
<
0
&&
"on"
+
m
,
t
=
t
[
w
.
expando
]?
t
:
new
w
.
Event
(
m
,
"object"
==
typeof
t
&&
t
),
t
.
isTrigger
=
o
?
2
:
3
,
t
.
namespace
=
x
.
join
(
"."
),
t
.
rnamespace
=
t
.
namespace
?
new
RegExp
(
"(^|
\\
.)"
+
x
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
):
null
,
t
.
result
=
void
0
,
t
.
target
||
(
t
.
target
=
i
),
n
=
null
==
n
?[
t
]:
w
.
makeArray
(
n
,[
t
]),
d
=
w
.
event
.
special
[
m
]
||
{},
o
||!
d
.
trigger
||!
1
!==
d
.
trigger
.
apply
(
i
,
n
))){
if
(
!
o
&&!
d
.
noBubble
&&!
y
(
i
)){
for
(
l
=
d
.
delegateType
||
m
,
wt
.
test
(
l
+
m
)
||
(
s
=
s
.
parentNode
);
s
;
s
=
s
.
parentNode
)
v
.
push
(
s
),
u
=
s
;
u
===
(
i
.
ownerDocument
||
r
)
&&
v
.
push
(
u
.
defaultView
||
u
.
parentWindow
||
e
)}
a
=
0
;
while
((
s
=
v
[
a
++
])
&&!
t
.
isPropagationStopped
())
h
=
s
,
t
.
type
=
a
>
1
?
l
:
d
.
bindType
||
m
,(
p
=
(
J
.
get
(
s
,
"events"
)
||
{})[
t
.
type
]
&&
J
.
get
(
s
,
"handle"
))
&&
p
.
apply
(
s
,
n
),(
p
=
c
&&
s
[
c
])
&&
p
.
apply
&&
Y
(
s
)
&&
(
t
.
result
=
p
.
apply
(
s
,
n
),
!
1
===
t
.
result
&&
t
.
preventDefault
());
return
t
.
type
=
m
,
o
||
t
.
isDefaultPrevented
()
||
d
.
_default
&&!
1
!==
d
.
_default
.
apply
(
v
.
pop
(),
n
)
||!
Y
(
i
)
||
c
&&
g
(
i
[
m
])
&&!
y
(
i
)
&&
((
u
=
i
[
c
])
&&
(
i
[
c
]
=
null
),
w
.
event
.
triggered
=
m
,
t
.
isPropagationStopped
()
&&
h
.
addEventListener
(
m
,
Tt
),
i
[
m
](),
t
.
isPropagationStopped
()
&&
h
.
removeEventListener
(
m
,
Tt
),
w
.
event
.
triggered
=
void
0
,
u
&&
(
i
[
c
]
=
u
)),
t
.
result
}},
simulate
:
function
(
e
,
t
,
n
){
var
r
=
w
.
extend
(
new
w
.
Event
,
n
,{
type
:
e
,
isSimulated
:
!
0
});
w
.
event
.
trigger
(
r
,
null
,
t
)}}),
w
.
fn
.
extend
({
trigger
:
function
(
e
,
t
){
return
this
.
each
(
function
(){
w
.
event
.
trigger
(
e
,
t
,
this
)})},
triggerHandler
:
function
(
e
,
t
){
var
n
=
this
[
0
];
if
(
n
)
return
w
.
event
.
trigger
(
e
,
t
,
n
,
!
0
)}}),
h
.
focusin
||
w
.
each
({
focus
:
"focusin"
,
blur
:
"focusout"
},
function
(
e
,
t
){
var
n
=
function
(
e
){
w
.
event
.
simulate
(
t
,
e
.
target
,
w
.
event
.
fix
(
e
))};
w
.
event
.
special
[
t
]
=
{
setup
:
function
(){
var
r
=
this
.
ownerDocument
||
this
,
i
=
J
.
access
(
r
,
t
);
i
||
r
.
addEventListener
(
e
,
n
,
!
0
),
J
.
access
(
r
,
t
,(
i
||
0
)
+
1
)},
teardown
:
function
(){
var
r
=
this
.
ownerDocument
||
this
,
i
=
J
.
access
(
r
,
t
)
-
1
;
i
?
J
.
access
(
r
,
t
,
i
):(
r
.
removeEventListener
(
e
,
n
,
!
0
),
J
.
remove
(
r
,
t
))}}});
var
Ct
=
e
.
location
,
Et
=
Date
.
now
(),
kt
=
/
\?
/
;
w
.
parseXML
=
function
(
t
){
var
n
;
if
(
!
t
||
"string"
!=
typeof
t
)
return
null
;
try
{
n
=
(
new
e
.
DOMParser
).
parseFromString
(
t
,
"text/xml"
)}
catch
(
e
){
n
=
void
0
}
return
n
&&!
n
.
getElementsByTagName
(
"parsererror"
).
length
||
w
.
error
(
"Invalid XML: "
+
t
),
n
};
var
St
=
/
\[\]
$/
,
Dt
=
/
\r?\n
/g
,
Nt
=
/^
(?:
submit|button|image|reset|file
)
$/i
,
At
=
/^
(?:
input|select|textarea|keygen
)
/i
;
function
jt
(
e
,
t
,
n
,
r
){
var
i
;
if
(
Array
.
isArray
(
t
))
w
.
each
(
t
,
function
(
t
,
i
){
n
||
St
.
test
(
e
)?
r
(
e
,
i
):
jt
(
e
+
"["
+
(
"object"
==
typeof
i
&&
null
!=
i
?
t
:
""
)
+
"]"
,
i
,
n
,
r
)});
else
if
(
n
||
"object"
!==
x
(
t
))
r
(
e
,
t
);
else
for
(
i
in
t
)
jt
(
e
+
"["
+
i
+
"]"
,
t
[
i
],
n
,
r
)}
w
.
param
=
function
(
e
,
t
){
var
n
,
r
=
[],
i
=
function
(
e
,
t
){
var
n
=
g
(
t
)?
t
():
t
;
r
[
r
.
length
]
=
encodeURIComponent
(
e
)
+
"="
+
encodeURIComponent
(
null
==
n
?
""
:
n
)};
if
(
Array
.
isArray
(
e
)
||
e
.
jquery
&&!
w
.
isPlainObject
(
e
))
w
.
each
(
e
,
function
(){
i
(
this
.
name
,
this
.
value
)});
else
for
(
n
in
e
)
jt
(
n
,
e
[
n
],
t
,
i
);
return
r
.
join
(
"&"
)},
w
.
fn
.
extend
({
serialize
:
function
(){
return
w
.
param
(
this
.
serializeArray
())},
serializeArray
:
function
(){
return
this
.
map
(
function
(){
var
e
=
w
.
prop
(
this
,
"elements"
);
return
e
?
w
.
makeArray
(
e
):
this
}).
filter
(
function
(){
var
e
=
this
.
type
;
return
this
.
name
&&!
w
(
this
).
is
(
":disabled"
)
&&
At
.
test
(
this
.
nodeName
)
&&!
Nt
.
test
(
e
)
&&
(
this
.
checked
||!
pe
.
test
(
e
))}).
map
(
function
(
e
,
t
){
var
n
=
w
(
this
).
val
();
return
null
==
n
?
null
:
Array
.
isArray
(
n
)?
w
.
map
(
n
,
function
(
e
){
return
{
name
:
t
.
name
,
value
:
e
.
replace
(
Dt
,
"
\
r
\n
"
)}}):{
name
:
t
.
name
,
value
:
n
.
replace
(
Dt
,
"
\
r
\n
"
)}}).
get
()}});
var
qt
=
/%20/g
,
Lt
=
/#.*$/
,
Ht
=
/
([
?&
])
_=
[^
&
]
*/
,
Ot
=
/^
(
.*
?)
:
[
\t]
*
([^\r\n]
*
)
$/gm
,
Pt
=
/^
(?:
about|app|app-storage|.+-extension|file|res|widget
)
:$/
,
Mt
=
/^
(?:
GET|HEAD
)
$/
,
Rt
=
/^
\/\/
/
,
It
=
{},
Wt
=
{},
$t
=
"*/"
.
concat
(
"*"
),
Bt
=
r
.
createElement
(
"a"
);
Bt
.
href
=
Ct
.
href
;
function
Ft
(
e
){
return
function
(
t
,
n
){
"string"
!=
typeof
t
&&
(
n
=
t
,
t
=
"*"
);
var
r
,
i
=
0
,
o
=
t
.
toLowerCase
().
match
(
M
)
||
[];
if
(
g
(
n
))
while
(
r
=
o
[
i
++
])
"+"
===
r
[
0
]?(
r
=
r
.
slice
(
1
)
||
"*"
,(
e
[
r
]
=
e
[
r
]
||
[]).
unshift
(
n
)):(
e
[
r
]
=
e
[
r
]
||
[]).
push
(
n
)}}
function
_t
(
e
,
t
,
n
,
r
){
var
i
=
{},
o
=
e
===
Wt
;
function
a
(
s
){
var
u
;
return
i
[
s
]
=!
0
,
w
.
each
(
e
[
s
]
||
[],
function
(
e
,
s
){
var
l
=
s
(
t
,
n
,
r
);
return
"string"
!=
typeof
l
||
o
||
i
[
l
]?
o
?
!
(
u
=
l
):
void
0
:(
t
.
dataTypes
.
unshift
(
l
),
a
(
l
),
!
1
)}),
u
}
return
a
(
t
.
dataTypes
[
0
])
||!
i
[
"*"
]
&&
a
(
"*"
)}
function
zt
(
e
,
t
){
var
n
,
r
,
i
=
w
.
ajaxSettings
.
flatOptions
||
{};
for
(
n
in
t
)
void
0
!==
t
[
n
]
&&
((
i
[
n
]?
e
:
r
||
(
r
=
{}))[
n
]
=
t
[
n
]);
return
r
&&
w
.
extend
(
!
0
,
e
,
r
),
e
}
function
Xt
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
=
e
.
contents
,
u
=
e
.
dataTypes
;
while
(
"*"
===
u
[
0
])
u
.
shift
(),
void
0
===
r
&&
(
r
=
e
.
mimeType
||
t
.
getResponseHeader
(
"Content-Type"
));
if
(
r
)
for
(
i
in
s
)
if
(
s
[
i
]
&&
s
[
i
].
test
(
r
)){
u
.
unshift
(
i
);
break
}
if
(
u
[
0
]
in
n
)
o
=
u
[
0
];
else
{
for
(
i
in
n
){
if
(
!
u
[
0
]
||
e
.
converters
[
i
+
" "
+
u
[
0
]]){
o
=
i
;
break
}
a
||
(
a
=
i
)}
o
=
o
||
a
}
if
(
o
)
return
o
!==
u
[
0
]
&&
u
.
unshift
(
o
),
n
[
o
]}
function
Ut
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
,
u
,
l
=
{},
c
=
e
.
dataTypes
.
slice
();
if
(
c
[
1
])
for
(
a
in
e
.
converters
)
l
[
a
.
toLowerCase
()]
=
e
.
converters
[
a
];
o
=
c
.
shift
();
while
(
o
)
if
(
e
.
responseFields
[
o
]
&&
(
n
[
e
.
responseFields
[
o
]]
=
t
),
!
u
&&
r
&&
e
.
dataFilter
&&
(
t
=
e
.
dataFilter
(
t
,
e
.
dataType
)),
u
=
o
,
o
=
c
.
shift
())
if
(
"*"
===
o
)
o
=
u
;
else
if
(
"*"
!==
u
&&
u
!==
o
){
if
(
!
(
a
=
l
[
u
+
" "
+
o
]
||
l
[
"* "
+
o
]))
for
(
i
in
l
)
if
((
s
=
i
.
split
(
" "
))[
1
]
===
o
&&
(
a
=
l
[
u
+
" "
+
s
[
0
]]
||
l
[
"* "
+
s
[
0
]])){
!
0
===
a
?
a
=
l
[
i
]:
!
0
!==
l
[
i
]
&&
(
o
=
s
[
0
],
c
.
unshift
(
s
[
1
]));
break
}
if
(
!
0
!==
a
)
if
(
a
&&
e
[
"throws"
])
t
=
a
(
t
);
else
try
{
t
=
a
(
t
)}
catch
(
e
){
return
{
state
:
"parsererror"
,
error
:
a
?
e
:
"No conversion from "
+
u
+
" to "
+
o
}}}
return
{
state
:
"success"
,
data
:
t
}}
w
.
extend
({
active
:
0
,
lastModified
:{},
etag
:{},
ajaxSettings
:{
url
:
Ct
.
href
,
type
:
"GET"
,
isLocal
:
Pt
.
test
(
Ct
.
protocol
),
global
:
!
0
,
processData
:
!
0
,
async
:
!
0
,
contentType
:
"application/x-www-form-urlencoded; charset=UTF-8"
,
accepts
:{
"*"
:
$t
,
text
:
"text/plain"
,
html
:
"text/html"
,
xml
:
"application/xml, text/xml"
,
json
:
"application/json, text/javascript"
},
contents
:{
xml
:
/
\b
xml
\b
/
,
html
:
/
\b
html/
,
json
:
/
\b
json
\b
/
},
responseFields
:{
xml
:
"responseXML"
,
text
:
"responseText"
,
json
:
"responseJSON"
},
converters
:{
"* text"
:
String
,
"text html"
:
!
0
,
"text json"
:
JSON
.
parse
,
"text xml"
:
w
.
parseXML
},
flatOptions
:{
url
:
!
0
,
context
:
!
0
}},
ajaxSetup
:
function
(
e
,
t
){
return
t
?
zt
(
zt
(
e
,
w
.
ajaxSettings
),
t
):
zt
(
w
.
ajaxSettings
,
e
)},
ajaxPrefilter
:
Ft
(
It
),
ajaxTransport
:
Ft
(
Wt
),
ajax
:
function
(
t
,
n
){
"object"
==
typeof
t
&&
(
n
=
t
,
t
=
void
0
),
n
=
n
||
{};
var
i
,
o
,
a
,
s
,
u
,
l
,
c
,
f
,
p
,
d
,
h
=
w
.
ajaxSetup
({},
n
),
g
=
h
.
context
||
h
,
y
=
h
.
context
&&
(
g
.
nodeType
||
g
.
jquery
)?
w
(
g
):
w
.
event
,
v
=
w
.
Deferred
(),
m
=
w
.
Callbacks
(
"once memory"
),
x
=
h
.
statusCode
||
{},
b
=
{},
T
=
{},
C
=
"canceled"
,
E
=
{
readyState
:
0
,
getResponseHeader
:
function
(
e
){
var
t
;
if
(
c
){
if
(
!
s
){
s
=
{};
while
(
t
=
Ot
.
exec
(
a
))
s
[
t
[
1
].
toLowerCase
()]
=
t
[
2
]}
t
=
s
[
e
.
toLowerCase
()]}
return
null
==
t
?
null
:
t
},
getAllResponseHeaders
:
function
(){
return
c
?
a
:
null
},
setRequestHeader
:
function
(
e
,
t
){
return
null
==
c
&&
(
e
=
T
[
e
.
toLowerCase
()]
=
T
[
e
.
toLowerCase
()]
||
e
,
b
[
e
]
=
t
),
this
},
overrideMimeType
:
function
(
e
){
return
null
==
c
&&
(
h
.
mimeType
=
e
),
this
},
statusCode
:
function
(
e
){
var
t
;
if
(
e
)
if
(
c
)
E
.
always
(
e
[
E
.
status
]);
else
for
(
t
in
e
)
x
[
t
]
=
[
x
[
t
],
e
[
t
]];
return
this
},
abort
:
function
(
e
){
var
t
=
e
||
C
;
return
i
&&
i
.
abort
(
t
),
k
(
0
,
t
),
this
}};
if
(
v
.
promise
(
E
),
h
.
url
=
((
t
||
h
.
url
||
Ct
.
href
)
+
""
).
replace
(
Rt
,
Ct
.
protocol
+
"//"
),
h
.
type
=
n
.
method
||
n
.
type
||
h
.
method
||
h
.
type
,
h
.
dataTypes
=
(
h
.
dataType
||
"*"
).
toLowerCase
().
match
(
M
)
||
[
""
],
null
==
h
.
crossDomain
){
l
=
r
.
createElement
(
"a"
);
try
{
l
.
href
=
h
.
url
,
l
.
href
=
l
.
href
,
h
.
crossDomain
=
Bt
.
protocol
+
"//"
+
Bt
.
host
!=
l
.
protocol
+
"//"
+
l
.
host
}
catch
(
e
){
h
.
crossDomain
=!
0
}}
if
(
h
.
data
&&
h
.
processData
&&
"string"
!=
typeof
h
.
data
&&
(
h
.
data
=
w
.
param
(
h
.
data
,
h
.
traditional
)),
_t
(
It
,
h
,
n
,
E
),
c
)
return
E
;(
f
=
w
.
event
&&
h
.
global
)
&&
0
==
w
.
active
++&&
w
.
event
.
trigger
(
"ajaxStart"
),
h
.
type
=
h
.
type
.
toUpperCase
(),
h
.
hasContent
=!
Mt
.
test
(
h
.
type
),
o
=
h
.
url
.
replace
(
Lt
,
""
),
h
.
hasContent
?
h
.
data
&&
h
.
processData
&&
0
===
(
h
.
contentType
||
""
).
indexOf
(
"application/x-www-form-urlencoded"
)
&&
(
h
.
data
=
h
.
data
.
replace
(
qt
,
"+"
)):(
d
=
h
.
url
.
slice
(
o
.
length
),
h
.
data
&&
(
h
.
processData
||
"string"
==
typeof
h
.
data
)
&&
(
o
+=
(
kt
.
test
(
o
)?
"&"
:
"?"
)
+
h
.
data
,
delete
h
.
data
),
!
1
===
h
.
cache
&&
(
o
=
o
.
replace
(
Ht
,
"$1"
),
d
=
(
kt
.
test
(
o
)?
"&"
:
"?"
)
+
"_="
+
Et
+++
d
),
h
.
url
=
o
+
d
),
h
.
ifModified
&&
(
w
.
lastModified
[
o
]
&&
E
.
setRequestHeader
(
"If-Modified-Since"
,
w
.
lastModified
[
o
]),
w
.
etag
[
o
]
&&
E
.
setRequestHeader
(
"If-None-Match"
,
w
.
etag
[
o
])),(
h
.
data
&&
h
.
hasContent
&&!
1
!==
h
.
contentType
||
n
.
contentType
)
&&
E
.
setRequestHeader
(
"Content-Type"
,
h
.
contentType
),
E
.
setRequestHeader
(
"Accept"
,
h
.
dataTypes
[
0
]
&&
h
.
accepts
[
h
.
dataTypes
[
0
]]?
h
.
accepts
[
h
.
dataTypes
[
0
]]
+
(
"*"
!==
h
.
dataTypes
[
0
]?
", "
+
$t
+
"; q=0.01"
:
""
):
h
.
accepts
[
"*"
]);
for
(
p
in
h
.
headers
)
E
.
setRequestHeader
(
p
,
h
.
headers
[
p
]);
if
(
h
.
beforeSend
&&
(
!
1
===
h
.
beforeSend
.
call
(
g
,
E
,
h
)
||
c
))
return
E
.
abort
();
if
(
C
=
"abort"
,
m
.
add
(
h
.
complete
),
E
.
done
(
h
.
success
),
E
.
fail
(
h
.
error
),
i
=
_t
(
Wt
,
h
,
n
,
E
)){
if
(
E
.
readyState
=
1
,
f
&&
y
.
trigger
(
"ajaxSend"
,[
E
,
h
]),
c
)
return
E
;
h
.
async
&&
h
.
timeout
>
0
&&
(
u
=
e
.
setTimeout
(
function
(){
E
.
abort
(
"timeout"
)},
h
.
timeout
));
try
{
c
=!
1
,
i
.
send
(
b
,
k
)}
catch
(
e
){
if
(
c
)
throw
e
;
k
(
-
1
,
e
)}}
else
k
(
-
1
,
"No Transport"
);
function
k
(
t
,
n
,
r
,
s
){
var
l
,
p
,
d
,
b
,
T
,
C
=
n
;
c
||
(
c
=!
0
,
u
&&
e
.
clearTimeout
(
u
),
i
=
void
0
,
a
=
s
||
""
,
E
.
readyState
=
t
>
0
?
4
:
0
,
l
=
t
>=
200
&&
t
<
300
||
304
===
t
,
r
&&
(
b
=
Xt
(
h
,
E
,
r
)),
b
=
Ut
(
h
,
b
,
E
,
l
),
l
?(
h
.
ifModified
&&
((
T
=
E
.
getResponseHeader
(
"Last-Modified"
))
&&
(
w
.
lastModified
[
o
]
=
T
),(
T
=
E
.
getResponseHeader
(
"etag"
))
&&
(
w
.
etag
[
o
]
=
T
)),
204
===
t
||
"HEAD"
===
h
.
type
?
C
=
"nocontent"
:
304
===
t
?
C
=
"notmodified"
:(
C
=
b
.
state
,
p
=
b
.
data
,
l
=!
(
d
=
b
.
error
))):(
d
=
C
,
!
t
&&
C
||
(
C
=
"error"
,
t
<
0
&&
(
t
=
0
))),
E
.
status
=
t
,
E
.
statusText
=
(
n
||
C
)
+
""
,
l
?
v
.
resolveWith
(
g
,[
p
,
C
,
E
]):
v
.
rejectWith
(
g
,[
E
,
C
,
d
]),
E
.
statusCode
(
x
),
x
=
void
0
,
f
&&
y
.
trigger
(
l
?
"ajaxSuccess"
:
"ajaxError"
,[
E
,
h
,
l
?
p
:
d
]),
m
.
fireWith
(
g
,[
E
,
C
]),
f
&&
(
y
.
trigger
(
"ajaxComplete"
,[
E
,
h
]),
--
w
.
active
||
w
.
event
.
trigger
(
"ajaxStop"
)))}
return
E
},
getJSON
:
function
(
e
,
t
,
n
){
return
w
.
get
(
e
,
t
,
n
,
"json"
)},
getScript
:
function
(
e
,
t
){
return
w
.
get
(
e
,
void
0
,
t
,
"script"
)}}),
w
.
each
([
"get"
,
"post"
],
function
(
e
,
t
){
w
[
t
]
=
function
(
e
,
n
,
r
,
i
){
return
g
(
n
)
&&
(
i
=
i
||
r
,
r
=
n
,
n
=
void
0
),
w
.
ajax
(
w
.
extend
({
url
:
e
,
type
:
t
,
dataType
:
i
,
data
:
n
,
success
:
r
},
w
.
isPlainObject
(
e
)
&&
e
))}}),
w
.
_evalUrl
=
function
(
e
){
return
w
.
ajax
({
url
:
e
,
type
:
"GET"
,
dataType
:
"script"
,
cache
:
!
0
,
async
:
!
1
,
global
:
!
1
,
"throws"
:
!
0
})},
w
.
fn
.
extend
({
wrapAll
:
function
(
e
){
var
t
;
return
this
[
0
]
&&
(
g
(
e
)
&&
(
e
=
e
.
call
(
this
[
0
])),
t
=
w
(
e
,
this
[
0
].
ownerDocument
).
eq
(
0
).
clone
(
!
0
),
this
[
0
].
parentNode
&&
t
.
insertBefore
(
this
[
0
]),
t
.
map
(
function
(){
var
e
=
this
;
while
(
e
.
firstElementChild
)
e
=
e
.
firstElementChild
;
return
e
}).
append
(
this
)),
this
},
wrapInner
:
function
(
e
){
return
g
(
e
)?
this
.
each
(
function
(
t
){
w
(
this
).
wrapInner
(
e
.
call
(
this
,
t
))}):
this
.
each
(
function
(){
var
t
=
w
(
this
),
n
=
t
.
contents
();
n
.
length
?
n
.
wrapAll
(
e
):
t
.
append
(
e
)})},
wrap
:
function
(
e
){
var
t
=
g
(
e
);
return
this
.
each
(
function
(
n
){
w
(
this
).
wrapAll
(
t
?
e
.
call
(
this
,
n
):
e
)})},
unwrap
:
function
(
e
){
return
this
.
parent
(
e
).
not
(
"body"
).
each
(
function
(){
w
(
this
).
replaceWith
(
this
.
childNodes
)}),
this
}}),
w
.
expr
.
pseudos
.
hidden
=
function
(
e
){
return
!
w
.
expr
.
pseudos
.
visible
(
e
)},
w
.
expr
.
pseudos
.
visible
=
function
(
e
){
return
!!
(
e
.
offsetWidth
||
e
.
offsetHeight
||
e
.
getClientRects
().
length
)},
w
.
ajaxSettings
.
xhr
=
function
(){
try
{
return
new
e
.
XMLHttpRequest
}
catch
(
e
){}};
var
Vt
=
{
0
:
200
,
1223
:
204
},
Gt
=
w
.
ajaxSettings
.
xhr
();
h
.
cors
=!!
Gt
&&
"withCredentials"
in
Gt
,
h
.
ajax
=
Gt
=!!
Gt
,
w
.
ajaxTransport
(
function
(
t
){
var
n
,
r
;
if
(
h
.
cors
||
Gt
&&!
t
.
crossDomain
)
return
{
send
:
function
(
i
,
o
){
var
a
,
s
=
t
.
xhr
();
if
(
s
.
open
(
t
.
type
,
t
.
url
,
t
.
async
,
t
.
username
,
t
.
password
),
t
.
xhrFields
)
for
(
a
in
t
.
xhrFields
)
s
[
a
]
=
t
.
xhrFields
[
a
];
t
.
mimeType
&&
s
.
overrideMimeType
&&
s
.
overrideMimeType
(
t
.
mimeType
),
t
.
crossDomain
||
i
[
"X-Requested-With"
]
||
(
i
[
"X-Requested-With"
]
=
"XMLHttpRequest"
);
for
(
a
in
i
)
s
.
setRequestHeader
(
a
,
i
[
a
]);
n
=
function
(
e
){
return
function
(){
n
&&
(
n
=
r
=
s
.
onload
=
s
.
onerror
=
s
.
onabort
=
s
.
ontimeout
=
s
.
onreadystatechange
=
null
,
"abort"
===
e
?
s
.
abort
():
"error"
===
e
?
"number"
!=
typeof
s
.
status
?
o
(
0
,
"error"
):
o
(
s
.
status
,
s
.
statusText
):
o
(
Vt
[
s
.
status
]
||
s
.
status
,
s
.
statusText
,
"text"
!==
(
s
.
responseType
||
"text"
)
||
"string"
!=
typeof
s
.
responseText
?{
binary
:
s
.
response
}:{
text
:
s
.
responseText
},
s
.
getAllResponseHeaders
()))}},
s
.
onload
=
n
(),
r
=
s
.
onerror
=
s
.
ontimeout
=
n
(
"error"
),
void
0
!==
s
.
onabort
?
s
.
onabort
=
r
:
s
.
onreadystatechange
=
function
(){
4
===
s
.
readyState
&&
e
.
setTimeout
(
function
(){
n
&&
r
()})},
n
=
n
(
"abort"
);
try
{
s
.
send
(
t
.
hasContent
&&
t
.
data
||
null
)}
catch
(
e
){
if
(
n
)
throw
e
}},
abort
:
function
(){
n
&&
n
()}}}),
w
.
ajaxPrefilter
(
function
(
e
){
e
.
crossDomain
&&
(
e
.
contents
.
script
=!
1
)}),
w
.
ajaxSetup
({
accepts
:{
script
:
"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents
:{
script
:
/
\b(?:
java|ecma
)
script
\b
/
},
converters
:{
"text script"
:
function
(
e
){
return
w
.
globalEval
(
e
),
e
}}}),
w
.
ajaxPrefilter
(
"script"
,
function
(
e
){
void
0
===
e
.
cache
&&
(
e
.
cache
=!
1
),
e
.
crossDomain
&&
(
e
.
type
=
"GET"
)}),
w
.
ajaxTransport
(
"script"
,
function
(
e
){
if
(
e
.
crossDomain
){
var
t
,
n
;
return
{
send
:
function
(
i
,
o
){
t
=
w
(
"<script>"
).
prop
({
charset
:
e
.
scriptCharset
,
src
:
e
.
url
}).
on
(
"load error"
,
n
=
function
(
e
){
t
.
remove
(),
n
=
null
,
e
&&
o
(
"error"
===
e
.
type
?
404
:
200
,
e
.
type
)}),
r
.
head
.
appendChild
(
t
[
0
])},
abort
:
function
(){
n
&&
n
()}}}});
var
Yt
=
[],
Qt
=
/
(
=
)\?(?=
&|$
)
|
\?\?
/
;
w
.
ajaxSetup
({
jsonp
:
"callback"
,
jsonpCallback
:
function
(){
var
e
=
Yt
.
pop
()
||
w
.
expando
+
"_"
+
Et
++
;
return
this
[
e
]
=!
0
,
e
}}),
w
.
ajaxPrefilter
(
"json jsonp"
,
function
(
t
,
n
,
r
){
var
i
,
o
,
a
,
s
=!
1
!==
t
.
jsonp
&&
(
Qt
.
test
(
t
.
url
)?
"url"
:
"string"
==
typeof
t
.
data
&&
0
===
(
t
.
contentType
||
""
).
indexOf
(
"application/x-www-form-urlencoded"
)
&&
Qt
.
test
(
t
.
data
)
&&
"data"
);
if
(
s
||
"jsonp"
===
t
.
dataTypes
[
0
])
return
i
=
t
.
jsonpCallback
=
g
(
t
.
jsonpCallback
)?
t
.
jsonpCallback
():
t
.
jsonpCallback
,
s
?
t
[
s
]
=
t
[
s
].
replace
(
Qt
,
"$1"
+
i
):
!
1
!==
t
.
jsonp
&&
(
t
.
url
+=
(
kt
.
test
(
t
.
url
)?
"&"
:
"?"
)
+
t
.
jsonp
+
"="
+
i
),
t
.
converters
[
"script json"
]
=
function
(){
return
a
||
w
.
error
(
i
+
" was not called"
),
a
[
0
]},
t
.
dataTypes
[
0
]
=
"json"
,
o
=
e
[
i
],
e
[
i
]
=
function
(){
a
=
arguments
},
r
.
always
(
function
(){
void
0
===
o
?
w
(
e
).
removeProp
(
i
):
e
[
i
]
=
o
,
t
[
i
]
&&
(
t
.
jsonpCallback
=
n
.
jsonpCallback
,
Yt
.
push
(
i
)),
a
&&
g
(
o
)
&&
o
(
a
[
0
]),
a
=
o
=
void
0
}),
"script"
}),
h
.
createHTMLDocument
=
function
(){
var
e
=
r
.
implementation
.
createHTMLDocument
(
""
).
body
;
return
e
.
innerHTML
=
"<form></form><form></form>"
,
2
===
e
.
childNodes
.
length
}(),
w
.
parseHTML
=
function
(
e
,
t
,
n
){
if
(
"string"
!=
typeof
e
)
return
[];
"boolean"
==
typeof
t
&&
(
n
=
t
,
t
=!
1
);
var
i
,
o
,
a
;
return
t
||
(
h
.
createHTMLDocument
?((
i
=
(
t
=
r
.
implementation
.
createHTMLDocument
(
""
)).
createElement
(
"base"
)).
href
=
r
.
location
.
href
,
t
.
head
.
appendChild
(
i
)):
t
=
r
),
o
=
A
.
exec
(
e
),
a
=!
n
&&
[],
o
?[
t
.
createElement
(
o
[
1
])]:(
o
=
xe
([
e
],
t
,
a
),
a
&&
a
.
length
&&
w
(
a
).
remove
(),
w
.
merge
([],
o
.
childNodes
))},
w
.
fn
.
load
=
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
=
this
,
s
=
e
.
indexOf
(
" "
);
return
s
>-
1
&&
(
r
=
vt
(
e
.
slice
(
s
)),
e
=
e
.
slice
(
0
,
s
)),
g
(
t
)?(
n
=
t
,
t
=
void
0
):
t
&&
"object"
==
typeof
t
&&
(
i
=
"POST"
),
a
.
length
>
0
&&
w
.
ajax
({
url
:
e
,
type
:
i
||
"GET"
,
dataType
:
"html"
,
data
:
t
}).
done
(
function
(
e
){
o
=
arguments
,
a
.
html
(
r
?
w
(
"<div>"
).
append
(
w
.
parseHTML
(
e
)).
find
(
r
):
e
)}).
always
(
n
&&
function
(
e
,
t
){
a
.
each
(
function
(){
n
.
apply
(
this
,
o
||
[
e
.
responseText
,
t
,
e
])})}),
this
},
w
.
each
([
"ajaxStart"
,
"ajaxStop"
,
"ajaxComplete"
,
"ajaxError"
,
"ajaxSuccess"
,
"ajaxSend"
],
function
(
e
,
t
){
w
.
fn
[
t
]
=
function
(
e
){
return
this
.
on
(
t
,
e
)}}),
w
.
expr
.
pseudos
.
animated
=
function
(
e
){
return
w
.
grep
(
w
.
timers
,
function
(
t
){
return
e
===
t
.
elem
}).
length
},
w
.
offset
=
{
setOffset
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
,
u
,
l
,
c
=
w
.
css
(
e
,
"position"
),
f
=
w
(
e
),
p
=
{};
"static"
===
c
&&
(
e
.
style
.
position
=
"relative"
),
s
=
f
.
offset
(),
o
=
w
.
css
(
e
,
"top"
),
u
=
w
.
css
(
e
,
"left"
),(
l
=
(
"absolute"
===
c
||
"fixed"
===
c
)
&&
(
o
+
u
).
indexOf
(
"auto"
)
>-
1
)?(
a
=
(
r
=
f
.
position
()).
top
,
i
=
r
.
left
):(
a
=
parseFloat
(
o
)
||
0
,
i
=
parseFloat
(
u
)
||
0
),
g
(
t
)
&&
(
t
=
t
.
call
(
e
,
n
,
w
.
extend
({},
s
))),
null
!=
t
.
top
&&
(
p
.
top
=
t
.
top
-
s
.
top
+
a
),
null
!=
t
.
left
&&
(
p
.
left
=
t
.
left
-
s
.
left
+
i
),
"using"
in
t
?
t
.
using
.
call
(
e
,
p
):
f
.
css
(
p
)}},
w
.
fn
.
extend
({
offset
:
function
(
e
){
if
(
arguments
.
length
)
return
void
0
===
e
?
this
:
this
.
each
(
function
(
t
){
w
.
offset
.
setOffset
(
this
,
e
,
t
)});
var
t
,
n
,
r
=
this
[
0
];
if
(
r
)
return
r
.
getClientRects
().
length
?(
t
=
r
.
getBoundingClientRect
(),
n
=
r
.
ownerDocument
.
defaultView
,{
top
:
t
.
top
+
n
.
pageYOffset
,
left
:
t
.
left
+
n
.
pageXOffset
}):{
top
:
0
,
left
:
0
}},
position
:
function
(){
if
(
this
[
0
]){
var
e
,
t
,
n
,
r
=
this
[
0
],
i
=
{
top
:
0
,
left
:
0
};
if
(
"fixed"
===
w
.
css
(
r
,
"position"
))
t
=
r
.
getBoundingClientRect
();
else
{
t
=
this
.
offset
(),
n
=
r
.
ownerDocument
,
e
=
r
.
offsetParent
||
n
.
documentElement
;
while
(
e
&&
(
e
===
n
.
body
||
e
===
n
.
documentElement
)
&&
"static"
===
w
.
css
(
e
,
"position"
))
e
=
e
.
parentNode
;
e
&&
e
!==
r
&&
1
===
e
.
nodeType
&&
((
i
=
w
(
e
).
offset
()).
top
+=
w
.
css
(
e
,
"borderTopWidth"
,
!
0
),
i
.
left
+=
w
.
css
(
e
,
"borderLeftWidth"
,
!
0
))}
return
{
top
:
t
.
top
-
i
.
top
-
w
.
css
(
r
,
"marginTop"
,
!
0
),
left
:
t
.
left
-
i
.
left
-
w
.
css
(
r
,
"marginLeft"
,
!
0
)}}},
offsetParent
:
function
(){
return
this
.
map
(
function
(){
var
e
=
this
.
offsetParent
;
while
(
e
&&
"static"
===
w
.
css
(
e
,
"position"
))
e
=
e
.
offsetParent
;
return
e
||
be
})}}),
w
.
each
({
scrollLeft
:
"pageXOffset"
,
scrollTop
:
"pageYOffset"
},
function
(
e
,
t
){
var
n
=
"pageYOffset"
===
t
;
w
.
fn
[
e
]
=
function
(
r
){
return
z
(
this
,
function
(
e
,
r
,
i
){
var
o
;
if
(
y
(
e
)?
o
=
e
:
9
===
e
.
nodeType
&&
(
o
=
e
.
defaultView
),
void
0
===
i
)
return
o
?
o
[
t
]:
e
[
r
];
o
?
o
.
scrollTo
(
n
?
o
.
pageXOffset
:
i
,
n
?
i
:
o
.
pageYOffset
):
e
[
r
]
=
i
},
e
,
r
,
arguments
.
length
)}}),
w
.
each
([
"top"
,
"left"
],
function
(
e
,
t
){
w
.
cssHooks
[
t
]
=
_e
(
h
.
pixelPosition
,
function
(
e
,
n
){
if
(
n
)
return
n
=
Fe
(
e
,
t
),
We
.
test
(
n
)?
w
(
e
).
position
()[
t
]
+
"px"
:
n
})}),
w
.
each
({
Height
:
"height"
,
Width
:
"width"
},
function
(
e
,
t
){
w
.
each
({
padding
:
"inner"
+
e
,
content
:
t
,
""
:
"outer"
+
e
},
function
(
n
,
r
){
w
.
fn
[
r
]
=
function
(
i
,
o
){
var
a
=
arguments
.
length
&&
(
n
||
"boolean"
!=
typeof
i
),
s
=
n
||
(
!
0
===
i
||!
0
===
o
?
"margin"
:
"border"
);
return
z
(
this
,
function
(
t
,
n
,
i
){
var
o
;
return
y
(
t
)?
0
===
r
.
indexOf
(
"outer"
)?
t
[
"inner"
+
e
]:
t
.
document
.
documentElement
[
"client"
+
e
]:
9
===
t
.
nodeType
?(
o
=
t
.
documentElement
,
Math
.
max
(
t
.
body
[
"scroll"
+
e
],
o
[
"scroll"
+
e
],
t
.
body
[
"offset"
+
e
],
o
[
"offset"
+
e
],
o
[
"client"
+
e
])):
void
0
===
i
?
w
.
css
(
t
,
n
,
s
):
w
.
style
(
t
,
n
,
i
,
s
)},
t
,
a
?
i
:
void
0
,
a
)}})}),
w
.
each
(
"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu"
.
split
(
" "
),
function
(
e
,
t
){
w
.
fn
[
t
]
=
function
(
e
,
n
){
return
arguments
.
length
>
0
?
this
.
on
(
t
,
null
,
e
,
n
):
this
.
trigger
(
t
)}}),
w
.
fn
.
extend
({
hover
:
function
(
e
,
t
){
return
this
.
mouseenter
(
e
).
mouseleave
(
t
||
e
)}}),
w
.
fn
.
extend
({
bind
:
function
(
e
,
t
,
n
){
return
this
.
on
(
e
,
null
,
t
,
n
)},
unbind
:
function
(
e
,
t
){
return
this
.
off
(
e
,
null
,
t
)},
delegate
:
function
(
e
,
t
,
n
,
r
){
return
this
.
on
(
t
,
e
,
n
,
r
)},
undelegate
:
function
(
e
,
t
,
n
){
return
1
===
arguments
.
length
?
this
.
off
(
e
,
"**"
):
this
.
off
(
t
,
e
||
"**"
,
n
)}}),
w
.
proxy
=
function
(
e
,
t
){
var
n
,
r
,
i
;
if
(
"string"
==
typeof
t
&&
(
n
=
e
[
t
],
t
=
e
,
e
=
n
),
g
(
e
))
return
r
=
o
.
call
(
arguments
,
2
),
i
=
function
(){
return
e
.
apply
(
t
||
this
,
r
.
concat
(
o
.
call
(
arguments
)))},
i
.
guid
=
e
.
guid
=
e
.
guid
||
w
.
guid
++
,
i
},
w
.
holdReady
=
function
(
e
){
e
?
w
.
readyWait
++
:
w
.
ready
(
!
0
)},
w
.
isArray
=
Array
.
isArray
,
w
.
parseJSON
=
JSON
.
parse
,
w
.
nodeName
=
N
,
w
.
isFunction
=
g
,
w
.
isWindow
=
y
,
w
.
camelCase
=
G
,
w
.
type
=
x
,
w
.
now
=
Date
.
now
,
w
.
isNumeric
=
function
(
e
){
var
t
=
w
.
type
(
e
);
return
(
"number"
===
t
||
"string"
===
t
)
&&!
isNaN
(
e
-
parseFloat
(
e
))},
"function"
==
typeof
define
&&
define
.
amd
&&
define
(
"jquery"
,[],
function
(){
return
w
});
var
Jt
=
e
.
jQuery
,
Kt
=
e
.
$
;
return
w
.
noConflict
=
function
(
t
){
return
e
.
$
===
w
&&
(
e
.
$
=
Kt
),
t
&&
e
.
jQuery
===
w
&&
(
e
.
jQuery
=
Jt
),
w
},
t
||
(
e
.
jQuery
=
e
.
$
=
w
),
w
});
Day21-30/code/web1807/js/mylib.js
0 → 100644
View file @
bdaac352
function
randomColor
()
{
var
r
=
parseInt
(
Math
.
random
()
*
128
+
128
);
var
g
=
parseInt
(
Math
.
random
()
*
128
+
128
);
var
b
=
parseInt
(
Math
.
random
()
*
128
+
128
);
return
'rgb('
+
r
+
', '
+
g
+
', '
+
b
+
')'
;
}
\ No newline at end of file
Day21-30/code/web1807/message.json
0 → 100644
View file @
bdaac352
{
"from"
:
"骆昊"
,
"to"
:
"王大锤"
,
"content"
:
"今天晚上你请我吃饭!"
}
\ No newline at end of file
Day21-30/code/web1807/message.xml
0 → 100644
View file @
bdaac352
<?xml version="1.0" encoding="utf-8"?>
<message>
<from>
骆昊
</from>
<to>
王大锤
</to>
<content>
今天晚上你请我吃饭!
</content>
</message>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment