diff --git a/.eslintignore b/.eslintignore
index 09704f4..ac926c6 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,2 +1,3 @@
 **/bundle/**/*.js
 **/dist/**/*.js
+coverage
diff --git a/.stylelintignore b/.stylelintignore
index 418c78f..468b0a5 100644
--- a/.stylelintignore
+++ b/.stylelintignore
@@ -1,3 +1,2 @@
 **/css/**/*.css
 **/dist/**/*.css
-public/scss/common/_slider.css
diff --git a/app.js b/app.js
index c2f2ef9..24fa13b 100644
--- a/app.js
+++ b/app.js
@@ -17,18 +17,19 @@ const path = require('path');
 const bodyParser = require('body-parser');
 const cookieParser = require('cookie-parser');
 const favicon = require('serve-favicon');
-const session = require('yoho-express-session');
-const memcached = require('yoho-connect-memcached');
-const _ = require('lodash');
+const session = require('express-session');
+const memcached = require('connect-memcached');
+const hbs = require('express-handlebars');
 const pkg = require('./package.json');
-const cookie = require('./library/cookie');
+
+const yohoLib = require('yoho-node-lib');
 
 const app = express();
 const MemcachedStore = memcached(session);
-const seo = require('./doraemon/middleware/seo');
 
-// 指定libray目录
-global.library = path.resolve('./library');
+// 全局注册library
+yohoLib.global(config);
+
 global.middleware = path.resolve('./doraemon/middleware');
 global.utils = path.resolve('./utils');
 
@@ -36,8 +37,15 @@ global.utils = path.resolve('./utils');
 app.locals.devEnv = app.get('env') === 'development';
 app.locals.version = pkg.version;
 
-
 app.set('view engine', '.hbs');
+app.set('views', './doraemon/views');
+app.engine('.hbs', hbs({
+    extname: '.hbs',
+    defaultLayout: 'layout',
+    layoutsDir: './doraemon/views',
+    partialsDir: './doraemon/views/partial',
+    helpers: global.yoho.helpers
+}));
 
 app.use(favicon(path.join(__dirname, '/public/favicon.ico')));
 app.use(express.static(path.join(__dirname, 'public')));
@@ -63,26 +71,41 @@ app.use(session({
 }));
 
 app.use((req, res, next) => {
-    req.user = {};
-
-    // 从 PHP 写的 SESSION 中获取到当前登录用户的 UID
-    if (req.session && _.isNumber(req.session._LOGIN_UID)) {
-        req.user.uid = req.session._LOGIN_UID;
-    }
+    req.user = {}; // 全局的用户数据
+    req.yoho = {}; // req和res绑定yoho对象,用于传递全局数据, 如req.yoho.channel等
 
-    // session 没有读取到的时候,从 cookie 读取 UID
-    if (!req.user.uid && req.cookies._UID) {
-        req.user.uid = cookie.getUid(req);
-    }
     next();
 });
 
-app.use(seo());
+const logger = global.yoho.logger;
 
 // dispatcher
-require('./dispatch')(app);
+try {
+    const mobileCheck = require('./doraemon/middleware/mobile-check');
+    const user = require('./doraemon/middleware/user');
+    const seo = require('./doraemon/middleware/seo');
+    const setYohoData = require('./doraemon/middleware/set-yoho-data');
+    const errorHanlder = require('./doraemon/middleware/error-handler');
+    const setPageInfo = require('./doraemon/middleware/set-pageinfo');
+
+    // YOHO 前置中间件
+    app.use(mobileCheck());
+    app.use(setYohoData());
+    app.use(user());
+    app.use(seo());
+    app.use(setPageInfo());
+
+    require('./dispatch')(app);
+
+    app.all('*', errorHanlder.notFound()); // 404
+
+    // YOHO 后置中间件
+    app.use(errorHanlder.serverError());
+} catch (err) {
+    logger.error(err);
+}
 
 // listener
 app.listen(config.port, function() {
-    console.log('yohobuy start');
+    logger.info('yohobuy start');
 });
diff --git a/apps/activity/index.js b/apps/activity/index.js
index 6318db0..f6d8ceb 100644
--- a/apps/activity/index.js
+++ b/apps/activity/index.js
@@ -23,7 +23,7 @@ app.engine('.hbs', hbs({
     defaultLayout: 'layout',
     layoutsDir: doraemon,
     partialsDir: [path.join(__dirname, 'views/partial'), `${doraemon}/partial`],
-    helpers: require('../../library/helpers')
+    helpers: global.yoho.helpers
 }));
 
 // router
diff --git a/apps/activity/models/special.js b/apps/activity/models/special.js
index a9d79c5..6beedb0 100644
--- a/apps/activity/models/special.js
+++ b/apps/activity/models/special.js
@@ -5,17 +5,17 @@
  */
 'use strict';
 
-const ServiceAPI = require(`${global.library}/api`).ServiceAPI;
-const sign = require(`${global.library}/sign`);
-const logger = require(`${global.library}/logger`);
+const logger = global.yoho.logger;
 const headerModel = require('../../../doraemon/models/header');
 
-var api = new ServiceAPI();
+var api = global.yoho.ServiceAPI;
 
-const getstaticFile = (id) => {
-    return api.get('staticFileManage/queryById', sign.apiSign({
+const _getstaticFile = (id) => {
+    return api.get('activity/staticFileManage/queryById', {
         id: id
-    }), true).then(result => {
+    }, {
+        cache: true
+    }).then(result => {
         if (result && result.code === 200) {
             result.data.title = result.data.pageTitle;
             result.data.keywords = result.data.keyWord;
@@ -29,5 +29,5 @@ const getstaticFile = (id) => {
 };
 
 exports.getSpecialData = (id, type) => {
-    return Promise.all([headerModel.requestHeaderData(type), getstaticFile(id)]);
+    return Promise.all([headerModel.requestHeaderData(type), _getstaticFile(id)]);
 };
diff --git a/apps/channel/controllers/index.js b/apps/channel/controllers/index.js
index c736554..682f9df 100644
--- a/apps/channel/controllers/index.js
+++ b/apps/channel/controllers/index.js
@@ -21,15 +21,15 @@ exports.index = (req, res, next) => {
     }).catch(next);
 };
 
-exports.getbrandFloorDataAjax = (req, res) => {
+exports.getbrandFloorDataAjax = (req, res, next) => {
     const channelType = req.query.channelType || 'boys';
 
     channelModel.getbrandFloorDataAjax(channelType).then(data => {
         res.json(data);
-    });
+    }).catch(next);
 };
 
-exports.getNewArrival = (req, res) => {
+exports.getNewArrival = (req, res, next) => {
     let reqBody = req.body,
         pageIndex = reqBody.pageIndex,
         pageCount = reqBody.pageCount,
@@ -54,5 +54,5 @@ exports.getNewArrival = (req, res) => {
             };
         }
         res.send(result);
-    });
+    }).catch(next);
 };
diff --git a/apps/channel/index.js b/apps/channel/index.js
index 72117c0..d1d6cb8 100644
--- a/apps/channel/index.js
+++ b/apps/channel/index.js
@@ -26,7 +26,7 @@ app.engine('.hbs', hbs({
     defaultLayout: 'layout',
     layoutsDir: doraemon,
     partialsDir: [`${partials}/partials`, `${doraemon}/partial`],
-    helpers: require('../../library/helpers')
+    helpers: global.yoho.helpers
 }));
 
 
diff --git a/apps/channel/models/index.js b/apps/channel/models/index.js
index f841230..11a7c2d 100644
--- a/apps/channel/models/index.js
+++ b/apps/channel/models/index.js
@@ -1,5 +1,5 @@
 /**
- * girls model
+ * 频道页 model
  * @author: 赵彪<bill.zhao@yoho.cn>
  * @date: 2016/05/17
  */
@@ -7,31 +7,30 @@
 
 const _ = require('lodash');
 
-const ServiceAPI = require(`${global.library}/api`).ServiceAPI;
-const SearchAPI = require(`${global.library}/api`).SearchAPI;
-const sign = require(`${global.library}/sign`);
-const helpers = require(`${global.library}/helpers`);
-const images = require(`${global.utils}/images`);
-const log = require(`${global.library}/logger`);
+const dataMap = require('../../../config/data-map');
 
+const helpers = global.yoho.helpers;
+const log = global.yoho.logger;
 
-const serviceApi = new ServiceAPI();
-const searchApi = new SearchAPI();
+const processProduct = require(`${global.utils}/product-process`).processProduct;
+
+
+const serviceApi = global.yoho.ServiceAPI;
+const searchApi = global.yoho.SearchAPI;
 
 const headerModel = require('../../../doraemon/models/header');
 
-const getShelveTime = duration => {
+// 获取上线时间
+const _getShelveTime = duration => {
     let today = new Date(),
         todayMil = today.getTime().toString().substr(0, 10),
         startDayMil = (today.setMonth(today.getMonth() - duration)).toString().substr(0, 10);
 
-    return `${startDayMil},${todayMil}`;
-
-        // `
+    return `${startDayMil},${todayMil}`; // `返回时间
 };
 
 // 获取可用的标题
-const getText = data => {
+const _getText = data => {
     let text = data.split(' ')[0];
     const regResult = /\w+/.exec(text);
 
@@ -46,257 +45,21 @@ const getText = data => {
     return text;
 };
 
-const channelMap = {
-    boys: {
-        code: '79372627eee75d73afe7f9bac91e5ce6',
-        gender: '1,3'
-    },
-    girls: {
-        code: '75215008957605c05e8cd375eac4f817',
-        gender: '2,3'
-    },
-    kids: {
-        code: 'd71f4b27f2a7229fbb31a4bc490a6f36',
-        gender: '2,3'
-    },
-    lifestyle: {
-        code: '8a341ca7eacc069ba80f02dec80eaf34',
-
-        // code: '380c38155fd8beee10913a3f5b462da6',
-        // code: '665f7c2fb9d037ee820766953ee34bf7',
-        gender: '2,3'
-    }
-};
-
-const sortMap = {
-    boys: [
-        {sort: 147, viewNum: 5}, // 休闲运动鞋
-        {sort: 129, viewNum: 5}, // 休闲裤
-        {sort: 152, viewNum: 5}, // 双肩包
-        {misort: 11, viewNum: 5}, // T恤
-        {sort: 115, viewNum: 5}, // 衬衫
-        {sort: 130, viewNum: 5}, // 牛仔裤
-        {misort: 60, viewNum: 5}, // 帽子
-        {sort: 124, viewNum: 5}, // 夹克
-        {sort: 119, viewNum: 5}, // 卫衣
-        {sort: 162, viewNum: 5}, // 手表
-        {sort: 148, viewNum: 5}, // 靴子
-        {misort: 65, viewNum: 5}, // 首饰
-        {sort: 151, viewNum: 5}, // 时装鞋
-        {misort: 61, viewNum: 5}, // 太阳镜
-        {misort: 39, viewNum: 5}, // 袜子
-        {sort: 346, viewNum: 5}, // 运动裤
-        {sort: 131, viewNum: 5}, // 短裤
-        {misort: 66, viewNum: 5}, // 配饰
-        {misort: 309, viewNum: 5}, // 内裤
-        {misort: 30, viewNum: 5}, // 打底裤/紧身裤
-        {sort: 342, viewNum: 5} // 邮差包
-    ],
-    girls: [
-        {misort: 16, viewNum: 4}, // 卫衣
-        {misort: 12, viewNum: 4}, // 衬衫
-        {misort: 44, viewNum: 4}, // 休闲/运动鞋
-        {misort: 11, viewNum: 4}, // T恤
-        {misort: 21, viewNum: 4}, // 夹克
-        {misort: 257, viewNum: 4}, // 毛衣/针织
-        {misort: 22, viewNum: 4}, // 大衣/风衣
-        {misort: 26, viewNum: 4}, // 休闲裤
-        {misort: 27, viewNum: 4}, // 牛仔裤
-        {misort: 31, viewNum: 4}, // 连衣裙
-        {misort: 32, viewNum: 4}, // 半身裙
-        {misort: 48, viewNum: 4}, // 时装鞋
-        {misort: 49, viewNum: 4}, // 双肩包
-        {misort: 50, viewNum: 4}, // 手拎包/单肩包
-        {misort: 60, viewNum: 4}, // 帽子
-        {misort: 65, viewNum: 4}, // 首饰
-        {misort: 59, viewNum: 4}, // 手表
-        {misort: 61, viewNum: 4}, // 太阳镜
-        {misort: 66, viewNum: 4} // 配饰
-    ],
-    kids: [
-        {misort: 366, viewNum: 4}, // T恤
-        {misort: 367, viewNum: 4}, // 衬衫
-        {misort: 396, viewNum: 4}, // 卫衣
-        {misort: 400, viewNum: 4}, // // 毛衣/针织
-        {misort: 404, viewNum: 4}, // 夹克
-        {misort: 369, viewNum: 4}, // 休闲裤
-        {misort: 388, viewNum: 4}, // 牛仔裤
-        {misort: 371, viewNum: 4}, // 连衣裙
-        {misort: 370, viewNum: 4}, // 半身裙
-        {misort: 368, viewNum: 4}, // 休闲/运动鞋
-        {misort: 392, viewNum: 4}, // 双肩包
-        {misort: 414, viewNum: 4}, // 帽子
-        {misort: 372, viewNum: 4}, // 短裤
-        {misort: 384, viewNum: 4}, // 打底裤/紧身裤
-        {misort: 382, viewNum: 4}, // 凉鞋/拖鞋
-        {misort: 402, viewNum: 4}, // 马甲
-        {misort: 386, viewNum: 4}, // 背心
-        {misort: 406, viewNum: 4}, // 大衣/风衣
-        {misort: 430, viewNum: 4}, // 羽绒服
-        {misort: 423, viewNum: 4}, // 棉衣
-        {misort: 417, viewNum: 4} // 套装
-    ],
-    lifestyle: [
-        {sort: 171, viewNum: 5}, // 耳机
-        {sort: 398, viewNum: 5}, // 只能装备
-        {sort: 185, viewNum: 5}, // 相机
-        {misort: 259, viewNum: 5}, // 美妆
-        {sort: 267, viewNum: 5}, // 杯子/水壶
-        {sort: 313, viewNum: 5}, // 手机/ipad壳套
-        {sort: 211, viewNum: 5}, // 数码配件
-        {sort: 292, viewNum: 5}, // 玩偶
-        {sort: 272, viewNum: 5}, // 储物收纳
-        {sort: 183, viewNum: 5}, // 启用家居
-        {sort: 273, viewNum: 5}, // 厨具/餐具
-        {sort: 271, viewNum: 5} // 靠枕/靠垫/抱枕
-    ]
-};
-
-const getNavs = rawNavs => {
-    const navs = rawNavs;
-    let list = [];
-
-    _.forEach(navs, it => {
-        let obj = {};
-
-        obj.name = it.name;
-        obj.href = it.url;
-
-        list.push(obj);
-    });
+const channelMap = dataMap.channel;
 
-    return list;
-};
+const sortMap = dataMap.sort;
 
 // 构建url
-const httpBuildQuery = data => {
+const _httpBuildQuery = data => {
     return searchApi.get('/search.json', data);
 };
 
 /**
- * 格式化商品信息
- *
- * @param array $productData 需要格式化的商品数据
- * @param bool $showTags 控制是否显示标签
- * @param bool $showNew 控制是否显示NEW图标
- * @param bool $showSale 控制是否显示SALE图标
- * @param int $width 图片的宽度
- * @param int $height 图片的高度
- * @param bool $isApp 判断是不是APP访问
- * @param bool $showPoint 商品价格是否显示小数位,默认显示
- * @return array | false
+ * 获取带小图的banner
+ * @param {[Object]} data 原始数据
+ * @return {[Object]} 转换后的数据
  */
-const formatProduct = (productData, showTags, showNew, showSale, width, height, isApp, showPoint) => {
-    let result = {};
-
-    // 默认值
-    if (!showTags) {
-        showTags = true;
-    }
-    if (!showNew) {
-        showNew = true;
-    }
-    if (!showSale) {
-        showSale = true;
-    }
-    if (!width) {
-        width = 290;
-    }
-    if (!height) {
-        height = 388;
-    }
-    if (!isApp) {
-        isApp = false;
-    }
-    if (!showPoint) {
-        showPoint = true;
-    }
-
-    // 商品信息有问题,则不显示
-    if (!productData.product_skn || !productData.goods_list[0]) {
-        return false;
-    }
-
-    // 市场价和售价一样,则不显示市场价
-    if (parseInt(productData.market_price, 0) === parseInt(productData.sales_price, 0)) {
-        productData.market_price = false;
-    }
-
-    // 设置默认图片
-    _.forEach(productData.goods_list, item => {
-        if (item.is_default === 'Y') {
-            productData.default_images = item.images_url;
-        }
-    });
-
-    if (!productData.default_images) {
-        productData.default_images = productData.goods_list[0].images_url;
-    }
-
-    result.id = productData.product_skn;
-    result.product_id = productData.product_id;
-    result.thumb = images.getImageUrl(productData.default_images, width, height);
-    result.name = productData.product_name;
-    result.price = !productData.market_price ? false : productData.market_price;
-    result.salePrice = productData.sales_price;
-    if (showPoint) {
-        result.price += '.00';
-        result.salePrice += '.00';
-    }
-
-    result.is_soon_sold_out = (productData.is_soon_sold_out === 'Y');
-    result.url = 'http://item.yohobuy.com/product/pro_' +
-        productData.product_id + '_' +
-        productData.goods_list[0].goods_id + '/' +
-        productData.cn_alphabet + '.html';
-
-    // APP访问需要加附加的参数
-    // 备注:如果以后APP的接口太多,可以把这边参数提取出来,变成一个公共的方法来生成,便于以后管理维护
-    if (isApp) {
-        result.url += '?openby:yohobuy={"action":"go.productDetail","params":{"product_skn":' +
-            productData.product_skn + '}}';
-    }
-
-    if (showTags) {
-        result.tags = {};
-        result.tags.is_new = showNew && productData.is_new && productData.is_new === 'Y'; // 新品
-        result.tags.is_discount = showSale && productData.is_discount && productData.is_discount === 'Y'; // 在售
-        result.tags.is_limited = productData.is_limited && productData.is_limited === 'Y'; // 限量
-        result.tags.is_yohood = productData.is_yohood && productData.is_yohood === 'Y'; // YOHOOD
-        result.tags.midYear = productData['mid-year'] && productData['mid-year'] === 'Y'; // 年中
-        result.tags.yearEnd = productData['year-end'] && productData['year-end'] === 'Y'; // 年末
-        result.tags.is_advance = productData.is_advance && productData.is_advance === 'Y'; // 再到着
-
-        if (result.is_soon_sold_out && result.tags.is_discount) {
-            result.tags.is_new = false;// 打折与即将售完组合显示打折
-        } else if (result.tags.is_discount &&
-            (result.tags.is_new || result.tags.is_limited || result.tags.is_yohood || result.tags.is_advance)) {
-            result.tags.is_discount = false;// 打折与其它组合则隐藏打折
-        } else if (result.tags.is_yohood && result.tags.is_new) {
-            result.tags.is_new = false;// YOHOOD和新品组合显示YOHOOD
-        }
-    }
-    return result;
-};
-
-const getBannerList = data => {
-    let list = [];
-
-    _.forEach(data, (bannerData) => {
-        let obj = {};
-
-        obj.href = bannerData.url;
-        obj.img = bannerData.src;
-        obj.name = bannerData.title;
-
-        list.push(obj);
-    });
-
-    return list;
-};
-
-
-const getDebrisSlide = data => {
+const _getDebrisSlide = data => {
     let floorData = {
         debrisSlider: {
             left: [],
@@ -307,35 +70,32 @@ const getDebrisSlide = data => {
 
     _.mapKeys(data, (value, key) => {
         _.forEach(value, slideData => {
-            let obj = {};
-
-            obj.href = slideData.url;
-            obj.img = slideData.img;
-
-            floorData.debrisSlider[key].push(obj);
+            floorData.debrisSlider[key].push(slideData);
         });
     });
 
     return floorData;
 };
 
-const getadbannerData = data => {
-    const obj = {
-        adbanner: {
-            href: '',
-            img: '',
-            name: ''
-        }
-    };
 
-    obj.adbanner.href = data.url;
-    obj.adbanner.img = data.src;
-    obj.adbanner.name = data.title;
+/**
+ * 获取广告位
+ * @param {Object} data 原始数据
+ * @return {Object} 转换后的数据
+ */
+const _getadbannerData = data => {
 
-    return obj;
+    return {
+        adbanner: data
+    };
 };
 
-const getSlideData = srcData => {
+/**
+ * 生成banner模板数据
+ * @param {Object} srcData 原始数据
+ * @return {Object} 转换后的数据
+ */
+const _getSlideData = srcData => {
     const slideData = {
         slide: {
             list: [],
@@ -344,22 +104,27 @@ const getSlideData = srcData => {
     };
 
     if (srcData.big_image) {
-        slideData.slide.list = getBannerList(srcData.big_image);
+        slideData.slide.list = srcData.big_image;
     }
 
     if (srcData.list) {
-        slideData.slide.pagination = getBannerList(srcData.list);
+        slideData.slide.pagination = srcData.list;
     }
 
     if (_.isArray(srcData)) {
-        slideData.slide.list = getBannerList(srcData);
+        slideData.slide.list = srcData;
     }
 
     return slideData;
 };
 
 
-const getNewReportFloorData = args => {
+/**
+ * 获取最新速报模板数据
+ * @param {Object} srcData 原始数据
+ * @return {Object} 转换后的数据
+ */
+const _getNewReportFloorData = args => {
     const title = args[0].data.text;
     let item = args[1].data;
     let secondItem = args[2].data;
@@ -367,7 +132,6 @@ const getNewReportFloorData = args => {
     let forthItem = args[4];
 
     let list = [];
-    let obj = {};
 
     const data = {
         newReport: {
@@ -381,43 +145,44 @@ const getNewReportFloorData = args => {
     let floorDatas = [];
 
 
-    obj.href = item[0].url;
-    obj.img = item[0].src;
-
-    list.push(obj);
+    list.push(item[0]);
 
     _.forEach(secondItem, (floorData) => {
-        let o = {};
-
-        o.href = floorData.url;
-        o.img = floorData.src;
-
-        list.push(o);
+        list.push(floorData);
     });
 
-    obj.href = thirdItem[0].url;
-    obj.img = thirdItem[0].src;
-
-    list.push(obj);
+    list.push(thirdItem[0]);
 
     data.newReport.list = list;
 
     floorDatas.push(data);
 
     if (forthItem.template_name === 'single_image') {
-        adData = getadbannerData(forthItem.data[0]);
+        adData = _getadbannerData(forthItem.data[0]);
         floorDatas.push(adData);
     }
 
     return floorDatas;
 };
 
-const setChannelType = (obj, type) => {
+
+/**
+ * 给目标对象绑定频道属性
+ * @param {Object} obj 需要绑定频道属性的对象
+ * @param {String} type 需要设置的频道类型
+ * @return undefined
+ */
+const _setChannelType = (obj, type) => {
     obj[type + 'Channel'] = true;
 };
 
-// 优选品牌
-const getPreBrandTopData = (args, type) => {
+/**
+ * 获取优选品牌模板数据
+ * @param {[Object]} args 参数列表
+ * @param {String} type 频道类型
+ * @return {Object}
+ */
+const _getPreBrandTopData = (args, type) => {
     const title = args[0].data.text;
     let item = args[1].data;
 
@@ -429,22 +194,20 @@ const getPreBrandTopData = (args, type) => {
         }
     };
 
-    _.forEach(item, (topData) => {
-        let o = {};
+    data.preferenceBrands.imgBrand = item;
 
-        o.href = topData.url;
-        o.img = topData.src;
-
-        data.preferenceBrands.imgBrand.push(o);
-    });
-
-    setChannelType(data.preferenceBrands, type);
+    _setChannelType(data.preferenceBrands, type);
 
     return data;
 };
 
-// 热门品类
-const getHotGoodsFloorData = (args, type) => {
+/**
+ * 获取热门分类模板数据
+ * @param {[Object]} args 参数列表
+ * @param {String} type 频道类型
+ * @return {Object}
+ */
+const _getHotGoodsFloorData = (args, type) => {
     let item = args[0];
     let nextItem = args[1];
 
@@ -463,67 +226,46 @@ const getHotGoodsFloorData = (args, type) => {
         }
     };
 
-    _.forEach(item.data.menuNav.list, it => {
-        let obj = {};
-
-
-        obj.name = it.name;
-        obj.href = it.url;
-        category.push(obj);
-    });
-
-    _.forEach(item.data.menuNav.blocks, it => {
-        let obj = {};
+    category = item.data.menuNav.list;
 
-        obj.name = it.title;
-        obj.href = it.url;
-        obj.img = it.img;
-        keyword.push(obj);
-    });
+    keyword = item.data.menuNav.blocks;
 
     _.forEach(item.data.imgs, (it, idx) => {
-        let obj = {};
-
-        obj.name = it.title;
-        obj.href = it.url;
-        obj.img = it.img;
 
         if (idx === 0 || (idx === 4 && type === 'boys')) {
-            brands.push(obj);
+            brands.push(it);
         } else {
-            types.push(obj);
+            types.push(it);
         }
     });
 
-    _.forEach(nextItem.data, (it) => {
-        let obj = {};
-
-        obj.name = it.title;
-        obj.href = it.url;
-        obj.img = it.src;
-
-        products.push(obj);
-    });
+    products = nextItem.data;
 
     object.name = item.data.name;
     object.keyword = keyword;
     object.category = category;
     object.brands = brands;
     object.types = types;
-    object.navs = getNavs(item.data.navs.list);
+    object.navs = item.data.navs.list;
     object.products = products;
     list.push(object);
 
     data.recommend.tplrecommend = list;
 
-    setChannelType(data.recommend, type);
+    _setChannelType(data.recommend, type);
 
 
     return data;
 };
 
 
-const getBoysSingleHot = (args, type) => {
+/**
+ * 获取boys人气单品模版数据
+ * @param {[Object]} args 参数列表
+ * @param {String} type 频道类型
+ * @return {Object}
+ */
+const _getBoysSingleHot = (args, type) => {
     const len = 10;
     const data = {
         singlehot: {
@@ -539,7 +281,6 @@ const getBoysSingleHot = (args, type) => {
     for (let i = 0; i < len; i++) {
         let pos = i;
         let val = {};
-        let obj = {};
 
         if (i === 1) {
             val = args[1].data[0]; // 第二个是大图
@@ -551,24 +292,28 @@ const getBoysSingleHot = (args, type) => {
             }
             val = args[2].data[pos];
         }
-        obj.href = val.url;
-        obj.img = val.src;
-        list.push(obj);
+        list.push(val);
     }
 
     data.singlehot.imgHot = list;
-    setChannelType(data.singlehot, type);
+    _setChannelType(data.singlehot, type);
     floorDatas.push(data);
 
     if (args[3].template_name === 'single_image') {
-        adData = getadbannerData(args[3].data[0]);
+        adData = _getadbannerData(args[3].data[0]);
         floorDatas.push(adData);
     }
 
     return floorDatas;
 };
 
-const getGirlsSingleHot = args => {
+/**
+ * 获取girls人气单品模版数据
+ * @param {[Object]} args 参数列表
+ * @param {String} type 频道类型
+ * @return {Object}
+ */
+const _getGirlsSingleHot = args => {
     let goods = args[2].data;
     let skns = '';
 
@@ -591,16 +336,28 @@ const getGirlsSingleHot = args => {
 };
 
 
-// 人气单品
-const getSingleHotFloorData = (args, type) => {
+/**
+ * 人气单品入口
+ * @param {[Object]} args 参数列表
+ * @param {String} type 频道类型
+ * @return {Object}
+ */
+const _getSingleHotFloorData = (args, type) => {
     if (type === 'boys') {
-        return getBoysSingleHot(args, type);
+        return _getBoysSingleHot(args, type);
     } else {
-        return getGirlsSingleHot(args, type);
+        return _getGirlsSingleHot(args, type);
     }
 };
 
-const getAsyncSingleHot = (args, queryResult, type) => {
+/**
+ * 处理异步获取的人气单品数据
+ * @param {[Object]} args 参数列表
+ * @param {Object} queryResult 异步获取的数据
+ * @param {String} type 频道类型
+ * @return {Object}
+ */
+const _getSingehotViaResult = (args, queryResult, type) => {
     const data = {
         singlehot: {
             name: args[0].data.text,
@@ -611,51 +368,49 @@ const getAsyncSingleHot = (args, queryResult, type) => {
     };
 
     if (args[3].template_name === 'app_icon_list') {
-        _.forEach(args[3].data, it => {
-            let obj = {};
-
-            obj.href = it.url;
-            obj.name = it.title;
-            obj.img = it.src;
-
-            data.singlehot.brands.push(obj);
-        });
+        data.singlehot.brands = args[3].data;
     }
 
-    _.forEach(queryResult.data.product_list, (it, index) => {
-        let obj = {};
-        const formatData = formatProduct(it, true, true, true, 280, 373);
-
-        if (index > 12) {
-            return;
-        }
-
-
-        obj.price = formatData.salePrice;
-        obj.href = formatData.url;
-        obj.img = formatData.thumb;
-        obj.name = formatData.name;
+    if (queryResult.data) {
+        _.forEach(queryResult.data.product_list || [], (it, index) => {
+            const formatData = processProduct(it, {
+                width: 280,
+                height: 373
+            });
 
-        if (index < 3) {
-            obj.tip = 'TOP' + (index + 1);
-        }
+            if (index > 12) {
+                return;
+            }
 
-        data.singlehot.imgHot.push(obj);
-    });
+            if (index < 3) {
+                formatData.tip = 'TOP' + (index + 1);
+            }
 
-    data.singlehot.navs = getNavs(args[1].data);
-    setChannelType(data.singlehot, type);
+            data.singlehot.imgHot.push(formatData);
+        });
+    }
+    data.singlehot.navs = args[1].data;
+    _setChannelType(data.singlehot, type);
     return data;
 };
 
-const processFloorDataWithQueryReusult = (rawData, floorData, queryResult, title, type) => {
+/**
+ * 异步获取人气单品
+ * @param {[Object]} rawData 接口返回的原始数据
+ * @param {[Object]} floorData 已经经过处理的楼层数据
+ * @param {Object} queryResult 接口中用于请求人气单品的数据
+ * @param {String} title 人气单品楼层的标题
+ * @param {Type} type 人气单品楼层的类型
+ * @return {Object}
+ */
+const _processFloorDataWithQueryReusult = (rawData, queryResult, title, type) => {
     let data = {};
 
     _.forEach(rawData, (subData, index) => {
-        const text = subData.data.text && getText(subData.data.text);
+        const text = subData.data.text && _getText(subData.data.text);
 
         if (text === title) {
-            data = getAsyncSingleHot(rawData.slice(index, index + 4), queryResult, type);
+            data = _getSingehotViaResult(rawData.slice(index, index + 4), queryResult, type);
         }
     });
 
@@ -668,7 +423,7 @@ const processFloorDataWithQueryReusult = (rawData, floorData, queryResult, title
  * @param string data
  * return obj
  */
-const getNewGoodsFloorData = args => {
+const _getNewGoodsFloorData = args => {
     const data = {
         newArrivls: {
             name: args[0].data.text,
@@ -676,157 +431,98 @@ const getNewGoodsFloorData = args => {
         }
     };
 
-    data.newArrivls.navs = getNavs(args[1].data);
+    data.newArrivls.navs = args[1].data;
 
     return data;
 };
 
-
-
-
-/**
- * 获取最新上架商品数据
- *
- * @param string $channel
- * @return array
- */
-exports.getNewArrival = channel => {
-    let rel = [],
-        sortList = sortMap[channel],
-        params = {
-            order: 'shelve_time:desc',
-            status: 1,
-            sales: 'Y',
-            attribute_not: 2,
-            stocknumber: 3,
-            shelve_time: getShelveTime(20)
-        };
-
-    params.gender = channelMap[channel].gender;
-
-
-    _.forEach(sortList, (item) => {
-        let data = Object.assign(item, params);
-
-        rel.push(httpBuildQuery(data));
-    });
-
-    return Promise.all(rel).then(res => {
-        let data = [],
-            result = [];
-
-        _.forEach(sortList, (it, index) => {
-            if (res[index].data.product_list.length === sortList[index].viewNum) {
-                data = data.concat(res[index].data.product_list);
-            }
-        });
-
-        _.forEach(data, (item) => {
-            result.push(formatProduct(item, true, true, true, 280, 373));
-        });
-
-        return result;
-    });
-};
-
-
-const getCategoryFloorData = args => {
+const _getCategoryFloorData = args => {
     const data = {
         category: {
             name: args[0].data.text,
-            navs: getNavs(args[1].data),
+            navs: args[1].data,
             list: []
         }
     };
 
     _.forEach(args[2].data, (it, index) => {
-        let obj = {};
-
-        obj.href = it.url;
-        obj.img = it.src;
 
         // 设置图片大小
         if (index === 1) {
-            obj.w = '377;';
-            obj.h = '504;';
+            it.w = '377;';
+            it.h = '504;';
         } else {
-            obj.w = '185';
-            obj.h = '510';
+            it.w = '185';
+            it.h = '510';
         }
 
-        data.category.list.push(obj);
+        data.category.list.push(it);
     });
 
     return data;
 };
 
-const getAccordionFloorData = args => {
+const _getAccordionFloorData = args => {
     let data = {
         accordion: {
             name: args[0].data.text,
-            navs: getNavs(args[1].data),
+            navs: args[1].data,
             slide: []
         }
     };
 
-    _.forEach(args[2].data, it => {
-        let obj = {};
-
-        obj.name = it.title;
-        obj.img = it.src;
-        obj.href = it.url;
-
-        data.accordion.slide.push(obj);
-    });
+    data.accordion.slide = args[2].data;
 
     return data;
 };
 
-const requestContent = type => {
 
-    let data = sign.apiSign({
-            /* eslint-disable */
-            client_type: 'web',
-            /* eslint-enable */
+
+
+
+const _requestContent = type => {
+    let data = {
+        client_type: 'web',
         content_code: channelMap[type || 'boys'].code,
         gender: channelMap[type || 'boys'].gender,
         page: 1,
         limit: 1000
-    });
+    };
 
     return serviceApi.get('operations/api/v5/resource/home', data).then(res => {
         if (res.code === 200) {
             return res;
         } else {
-            log.error('获取资源位接口返回状态码 不是 200');
+            log.error('response code of "operations/api/v5/resource/home"  200');
             return {};
         }
     });
 };
 
 const floorMap = {
-    slide: getSlideData,
-    hot: getHotGoodsFloorData,
-    最新速报: getNewReportFloorData,
-    人气单品: getSingleHotFloorData,
-    'GIRL KIDS': getSingleHotFloorData,
-    'BOY KIDS': getSingleHotFloorData,
-    优选品牌: getPreBrandTopData,
-    最新上架: getNewGoodsFloorData,
-    ad: getadbannerData,
-    category: getCategoryFloorData,
-    accordion: getAccordionFloorData,
-    debrisSlide: getDebrisSlide
+    slide: _getSlideData,
+    hot: _getHotGoodsFloorData,
+    最新速报: _getNewReportFloorData,
+    人气单品: _getSingleHotFloorData,
+    'GIRL KIDS': _getSingleHotFloorData,
+    'BOY KIDS': _getSingleHotFloorData,
+    优选品牌: _getPreBrandTopData,
+    最新上架: _getNewGoodsFloorData,
+    ad: _getadbannerData,
+    category: _getCategoryFloorData,
+    accordion: _getAccordionFloorData,
+    debrisSlide: _getDebrisSlide
 };
 
 
 
-const processFloorData = (rawData, type) => {
+const _processFloorData = (rawData, type) => {
     let floorList = [];
     let searchPromise = [];
     let singlehotFloorIndex = [];
-    let singlehotFloorTitile = [];
+    let singlehotFloorTitle = [];
 
+    // 定义各种楼层需要用到的接口返回的数组中元素的个数
     const bigFloorLength = 5;
     const normalFloorLength = 3;
     const hotCategoryLength = 2;
@@ -841,7 +537,7 @@ const processFloorData = (rawData, type) => {
         } else if (data.template_intro === '热门品类') { // 处理热门品类
             floorData = floorMap.hot.call(null, rawData.slice(index, index + hotCategoryLength), type);
         } else if (data.data.text) { // 处理一般楼层
-            let text = getText(data.data.text);
+            let text = _getText(data.data.text);
             let lastIndex = index + bigFloorLength < rawData.length ?
                             index + bigFloorLength : index + (rawData.length - index - 1);
 
@@ -876,7 +572,7 @@ const processFloorData = (rawData, type) => {
             singlehotFloorIndex.push(floorList.length);
 
             // 记住楼层标题, 以便后面promise获取数据后插入楼层数据
-            singlehotFloorTitile.push(getText(data.data.text));
+            singlehotFloorTitle.push(_getText(data.data.text));
         } else if (!_.isNil(floorData)) {
             _.isArray(floorData) ?
                 floorList = floorList.concat(floorData) :
@@ -887,26 +583,76 @@ const processFloorData = (rawData, type) => {
     return {
         floors: floorList,
         promise: _.reverse(searchPromise),
-        singlehotFloorTitile: _.reverse(singlehotFloorTitile),
+        singlehotFloorTitle: _.reverse(singlehotFloorTitle),
         singlehotFloorIndex: _.reverse(singlehotFloorIndex)
     };
 };
 
+/**
+ * 获取最新上架商品数据
+ *
+ * @param string $channel
+ * @return array
+ */
+const getNewArrival = channel => {
+    let rel = [],
+        sortList = sortMap[channel],
+        params = {
+            order: 'shelve_time:desc',
+            status: 1,
+            sales: 'Y',
+            attribute_not: 2,
+            stocknumber: 3,
+            shelve_time: _getShelveTime(20)
+        };
+
+    params.gender = channelMap[channel].gender;
+
+
+    _.forEach(sortList, (item) => {
+        let data = Object.assign(item, params);
+
+        rel.push(_httpBuildQuery(data));
+    });
+
+    return Promise.all(rel).then(res => {
+        let data = [],
+            result = [];
+
+        _.forEach(sortList, (it, index) => {
+            if (res[index].data.product_list && res[index].data.product_list.length === sortList[index].viewNum) {
+                data = data.concat(res[index].data.product_list);
+            }
+        });
+
+        _.forEach(data, (item) => {
+            result.push(processProduct(item, {
+                width: 280,
+                height: 373
+            }));
+        });
+
+        return result;
+    });
+};
+
+
+
 
 /**
  * 获取频道页数据
- * @param  {string} type 传入频道页类型,值可以是: boys, girls, kids, lifestyle
- * @return {object}
+ * @param  {String} type 传入频道页类型,值可以是: boys, girls, kids, lifestyle
+ * @return {Object}
  */
-exports.getContent = type => {
-    return Promise.all([headerModel.requestHeaderData(type), requestContent(type)]).then(res => {
+const getContent = type => {
+    return Promise.all([headerModel.requestHeaderData(type), _requestContent(type)]).then(res => {
 
         let headerData = res[0].data || res[0],
             contentData = res[1].data ? res[1].data.list : res[1];
 
         let data = {};
 
-        const processResult = processFloorData(contentData, type);
+        const processResult = _processFloorData(contentData, type);
 
         data = headerData;
         data.module = 'channel';
@@ -921,7 +667,7 @@ exports.getContent = type => {
             floorData: data,
             searchPromise: processResult.promise,
             singlehotFloorIndex: processResult.singlehotFloorIndex,
-            singlehotFloorTitile: processResult.singlehotFloorTitile,
+            singlehotFloorTitle: processResult.singlehotFloorTitle,
             channelType: type
         };
 
@@ -933,8 +679,12 @@ exports.getContent = type => {
                 _.forEach(res, (data, index) => {
                     result.floorData.channel
                         .splice(result.singlehotFloorIndex[index], 0,
-                            processFloorDataWithQueryReusult(result.rawData,
-                                result.floorData, data, result.singlehotFloorTitile[index], result.channelType));
+                            _processFloorDataWithQueryReusult(
+                                result.rawData,
+                                data,
+                                result.singlehotFloorTitle[index],
+                                result.channelType
+                            ));
                 });
 
                 return result.floorData;
@@ -947,8 +697,8 @@ exports.getContent = type => {
 
 
 // 优选品牌楼层floorData-ajax
-exports.getbrandFloorDataAjax = type => {
-    return requestContent(type).then(res => {
+const getbrandFloorDataAjax = type => {
+    return _requestContent(type).then(res => {
         let contentData = res.data ? res.data.list : [];
 
         let data = {
@@ -974,3 +724,9 @@ exports.getbrandFloorDataAjax = type => {
         return data;
     });
 };
+
+module.exports = {
+    getNewArrival: getNewArrival,
+    getContent: getContent,
+    getbrandFloorDataAjax: getbrandFloorDataAjax
+};
diff --git a/apps/channel/views/partials/ad-floor.hbs b/apps/channel/views/partials/ad-floor.hbs
index 4ee43d9..29d2214 100644
--- a/apps/channel/views/partials/ad-floor.hbs
+++ b/apps/channel/views/partials/ad-floor.hbs
@@ -1,3 +1,3 @@
 <div class="floor-ad">
-    <a href="{{href}}" target= "_blank"><img class="lazy" data-original="{{image img 1150 129}}"/></a>
+    <a href="{{url}}" target= "_blank"><img class="lazy" data-original="{{image src 1150 129}}"/></a>
 </div>
diff --git a/apps/channel/views/partials/big-slider.hbs b/apps/channel/views/partials/big-slider.hbs
index 4447517..e84fc06 100644
--- a/apps/channel/views/partials/big-slider.hbs
+++ b/apps/channel/views/partials/big-slider.hbs
@@ -1,7 +1,7 @@
 <div class="debris-slider clearfix">
     <div class="left-col col">
         {{# left}}
-        <a href="{{href}}" target="_blank">
+        <a href="{{url}}" target="_blank">
             <img class="lazy" data-original="{{image img 200 265}}">
         </a>
         {{/ left}}
@@ -10,7 +10,7 @@
         <ul class="slide-wrapper">
             {{# center}}
             <li>
-                <a href="{{href}}" target="_blank">
+                <a href="{{url}}" target="_blank">
                     <img class="lazy" data-original="{{image img 570 633}}">
                 </a>
             </li>
@@ -18,16 +18,16 @@
         </ul>
         <div class="slide-switch">
             <a class="prev" href="javascript:;">
-                <span class="iconfont">&#xe60c;</span>
+                <span class="iconfont">&#xe609;</span>
             </a>
             <a class="next" href="javascript:;">
-                <span class="iconfont">&#xe60b;</span>
+                <span class="iconfont">&#xe608;</span>
             </a>
         </div>
     </div>
     <div class="right-col col">
         {{# right}}
-        <a href="{{href}}" target="_blank">
+        <a href="{{url}}" target="_blank">
             <img class="lazy" data-original="{{image img 200 265}}">
         </a>
         {{/ right}}
diff --git a/apps/channel/views/partials/boy-brands.hbs b/apps/channel/views/partials/boy-brands.hbs
index 639be5e..a5d30b0 100644
--- a/apps/channel/views/partials/boy-brands.hbs
+++ b/apps/channel/views/partials/boy-brands.hbs
@@ -3,18 +3,18 @@
         <ul class="img-list imgopacity clearfix">
             {{# imgBrand}}
             <li class="img-item">
-                <a href="{{href}}" target= "_blank">
-                    <img src="{{image img 378 175}}" alt="">
+                <a href="{{url}}" target= "_blank">
+                    <img src="{{image src 378 175}}" alt="">
                 </a>
             </li>
             {{/ imgBrand}}
         </ul>
         <div class="img-brand-switch">
             <a class="prev" href="javascript:;">
-                <span class="iconfont">&#xe60c;</span>
+                <span class="iconfont">&#xe609;</span>
             </a>
             <a class="next" href="javascript:;">
-                <span class="iconfont">&#xe60b;</span>
+                <span class="iconfont">&#xe608;</span>
             </a>
         </div>
     </div>
diff --git a/apps/channel/views/partials/boy-recommend.hbs b/apps/channel/views/partials/boy-recommend.hbs
index bae7339..4bb530a 100644
--- a/apps/channel/views/partials/boy-recommend.hbs
+++ b/apps/channel/views/partials/boy-recommend.hbs
@@ -5,26 +5,26 @@
             <div class="tpl-nav">
                 <div class="tpl-keywords">
                     {{#each keyword}}
-                        <a class="keywords{{@index}}" title="{{name}}" href="{{href}}" target= "_blank"><img class="lazy" src="{{image img 185 152}}"/></a>
+                        <a class="keywords{{@index}}" title="{{title}}" href="{{url}}" target= "_blank"><img class="lazy" src="{{image img 185 152}}"/></a>
                     {{/each}}
                 </div>
                 <div class="tpl-category clearfix">
                     {{#each category}}
-                        <a href="{{href}}" target= "_blank">{{name}}</a>
+                        <a href="{{url}}" target= "_blank">{{title}}</a>
                     {{/each}}
                 </div>
             </div>
             <div class="tpl-brands imgopacity clearfix">
                 <ul>
                     {{#each brands}}
-                        <li><a title="{{name}}" href="{{href}}" target= "_blank"><img class="lazy" src="{{image img 378 248}}"/></a></li>
+                        <li><a title="{{title}}" href="{{url}}" target= "_blank"><img class="lazy" src="{{image img 378 248}}"/></a></li>
                     {{/each}}
                 </ul>
             </div>
             <div class="tpl-types imgopacity clearfix">
                 <ul>
                     {{#each types}}
-                        <li><a title="{{name}}" href="{{href}}"  target= "_blank"><img class="lazy" src="{{image img 185 248}}"/></a></li>
+                        <li><a title="{{title}}" href="{{url}}"  target= "_blank"><img class="lazy" src="{{image img 185 248}}"/></a></li>
                     {{/each}}
                 </ul>
             </div>
@@ -32,7 +32,7 @@
         <div class="tpl-products imgopacity clearfix">
             <ul>
                 {{#each products}}
-                    <li><a href="{{href}}" title="{{name}}" target= "_blank"><img class="lazy" src="{{image img 222 298}}"/></a></li>
+                    <li><a href="{{url}}" title="{{title}}" target= "_blank"><img class="lazy" src="{{image src 222 298}}"/></a></li>
                 {{/each}}
             </ul>
         </div>
diff --git a/apps/channel/views/partials/boy-singlehot.hbs b/apps/channel/views/partials/boy-singlehot.hbs
index 612f190..4c83184 100644
--- a/apps/channel/views/partials/boy-singlehot.hbs
+++ b/apps/channel/views/partials/boy-singlehot.hbs
@@ -3,9 +3,9 @@
     <ul class="g-list imgopacity">
         {{#each imgHot}}
             {{#if @last}}
-                <li><a class="impo{{@index}}" href="{{href}}" target= "_blank"><img class="lazy" src="{{image img 378 248}}"/></a></li>
+                <li><a class="impo{{@index}}" href="{{url}}" target= "_blank"><img class="lazy" src="{{image src 378 248}}"/></a></li>
             {{^}}
-                <li><a class="impo{{@index}}" href="{{href}}" target= "_blank"><img class="lazy" src="{{image img 185 248}}"/></a></li>
+                <li><a class="impo{{@index}}" href="{{url}}" target= "_blank"><img class="lazy" src="{{image src 185 248}}"/></a></li>
             {{/if}}
         {{/each}}
     </ul>
diff --git a/apps/channel/views/partials/category-floor.hbs b/apps/channel/views/partials/category-floor.hbs
index 302b155..46447d6 100644
--- a/apps/channel/views/partials/category-floor.hbs
+++ b/apps/channel/views/partials/category-floor.hbs
@@ -3,8 +3,8 @@
     <ul class="clearfix">
         {{# list}}
         <li class="cate-item{{@index}}">
-            <a href="{{href}}" target= "_blank">
-                <img class="lazy" data-original="{{image img w h}}" alt="">
+            <a href="{{url}}" target= "_blank">
+                <img class="lazy" data-original="{{image src w h}}" alt="">
             </a>
         </li>
         {{/ list}}
diff --git a/apps/channel/views/partials/commodity.hbs b/apps/channel/views/partials/commodity.hbs
index ed729ef..5fc3a14 100644
--- a/apps/channel/views/partials/commodity.hbs
+++ b/apps/channel/views/partials/commodity.hbs
@@ -4,6 +4,6 @@
     <div class="goods-container clearfix">
     </div>
     <div class="loading">
-        <a href="{{href}}" target= "_blank">Loading...</a>
+        <a href="{{url}}" target= "_blank">Loading...</a>
     </div>
 </div>
diff --git a/apps/channel/views/partials/girl-brands.hbs b/apps/channel/views/partials/girl-brands.hbs
index c2eae78..c6555c7 100644
--- a/apps/channel/views/partials/girl-brands.hbs
+++ b/apps/channel/views/partials/girl-brands.hbs
@@ -1,14 +1,14 @@
 <div class="preference-brand imgopacity">
     <div class="img-slider-wrapper clearfix" style="background-color:{{sliderColor}};">
         <div class="img-brand-switch">
-            <a class="prev iconfont" href="javascript:;">&#xe60f;</a>
-            <a class="next iconfont" href="javascript:;">&#xe60e;</a>
+            <a class="prev iconfont" href="javascript:;">&#xe609;</a>
+            <a class="next iconfont" href="javascript:;">&#xe608;</a>
         </div>
         <div class="img-container-landscape">
             <ul class="img-list">
                 {{# imgBrand}}
                 <li  class="img-item">
-                    <a href="{{href}}" target= "_blank"> <img src="{{image img 320 430}}" alt="{{alt}}"></a>
+                    <a href="{{url}}" target= "_blank"> <img src="{{image src 320 430}}" alt="{{alt}}"></a>
                 </li>
                 {{/ imgBrand}}
              </ul>
diff --git a/apps/channel/views/partials/girl-recommend.hbs b/apps/channel/views/partials/girl-recommend.hbs
index 7fadc9e..9601b8d 100644
--- a/apps/channel/views/partials/girl-recommend.hbs
+++ b/apps/channel/views/partials/girl-recommend.hbs
@@ -5,24 +5,24 @@
         <div class="tpl-nav">
             <div class="tpl-keywords">
                 {{#each keyword}}
-                <a class="keywords{{@index}}" title="{{name}}" href="{{href}}" target= "_blank"><img class="lazy" data-original="{{image img 185 76}}"/></a>
+                    <a class="keywords{{@index}}" title="{{title}}" href="{{url}}" target= "_blank"><img class="lazy" data-original="{{image img 185 76}}"/></a>
                 {{/each}}
             </div>
             <div class="tpl-category clearfix">
                 {{#each category}}
-                <a href="{{href}}" target= "_blank">{{name}}</a>
+                <a href="{{url}}" target= "_blank">{{title}}</a>
                 {{/each}}
             </div>
         </div>
         <div class="tpl-brands imgopacity clearfix">
             {{#each brands}}
-            <a title="{{name}}" href="{{href}}" target= "_blank"><img class="lazy" data-original="{{image img 377 504}}"/></a>
+            <a title="{{title}}" href="{{url}}" target= "_blank"><img class="lazy" data-original="{{image img 377 504}}"/></a>
             {{/each}}
         </div>
         <div class="tpl-types imgopacity clearfix">
             <ul>
                 {{#each types}}
-                <li><a title="{{name}}" href="{{href}}" target= "_blank"><img class="lazy" data-original="{{image img 185 504}}"/></a></li>
+                <li><a title="{{title}}" href="{{url}}" target= "_blank"><img class="lazy" data-original="{{image img 185 504}}"/></a></li>
                 {{/each}}
             </ul>
         </div>
diff --git a/apps/channel/views/partials/girl-singlehot.hbs b/apps/channel/views/partials/girl-singlehot.hbs
index 96caabe..891b511 100644
--- a/apps/channel/views/partials/girl-singlehot.hbs
+++ b/apps/channel/views/partials/girl-singlehot.hbs
@@ -4,13 +4,13 @@
       <ul class="g-list imgopacity clearfix">
           {{#each imgHot}}
           <li>
-             <a href="{{href}}" target= "_blank"><div class="commodity-img">
+             <a href="{{url}}" target= "_blank"><div class="commodity-img">
                  {{# tip}}
                  <i class="top">{{.}}</i>
                  {{/ tip}}
-                 <img class="lazy" data-original="{{image img 280 373}}"/></div>
+                 <img class="lazy" data-original="{{image thumb 280 373}}"/></div>
                  <p class="commodity-name">{{name}}</p>
-                 <p class="commodity-price"><span>¥{{price}}</span></p>
+                 <p class="commodity-price"><span>¥{{salePrice}}</span></p>
              </a>
           </li>
           {{/each}}
@@ -18,7 +18,7 @@
     </div>
     <div class="commodity-brands imgopacity clearfix">
         {{#each brands}}
-        <a href="{{href}}" title="{{name}}" target= "_blank"><img class="lazy" data-original="{{image img 185 86}}"/></a>
+        <a href="{{url}}" title="{{title}}" target= "_blank"><img class="lazy" data-original="{{image src 185 86}}"/></a>
         {{/each}}
     </div>
 </div>
diff --git a/apps/channel/views/partials/newreport-floor.hbs b/apps/channel/views/partials/newreport-floor.hbs
index 4f19259..131f4ab 100644
--- a/apps/channel/views/partials/newreport-floor.hbs
+++ b/apps/channel/views/partials/newreport-floor.hbs
@@ -6,11 +6,11 @@
 
         {{#unless @last}}
         <li>
-            <a href="{{href}}" target= "_blank">
+            <a href="{{url}}" target= "_blank">
                 {{#if @first}}
-                <img class="lazy" data-original="{{image img 377 504}}" alt="" >
+                <img class="lazy" data-original="{{image src 377 504}}" alt="" >
                 {{^}}
-                <img class="lazy" data-original="{{image img 185 248}}" alt="" >
+                <img class="lazy" data-original="{{image src 185 248}}" alt="" >
                 {{/if}}
             </a>
         </li>
@@ -21,8 +21,8 @@
     {{# list}}
     {{#if @last}}
     <div class="last-item">
-        <a href="{{href}}" target= "_blank">
-            <img class="lazy" data-original="{{image img 377 504}}" alt="">
+        <a href="{{url}}" target= "_blank">
+            <img class="lazy" data-original="{{image src 377 504}}" alt="">
         </a>
     </div>
     {{/if}}
diff --git a/apps/channel/views/partials/slide-accordion.hbs b/apps/channel/views/partials/slide-accordion.hbs
index f0c6818..ee36675 100644
--- a/apps/channel/views/partials/slide-accordion.hbs
+++ b/apps/channel/views/partials/slide-accordion.hbs
@@ -2,7 +2,7 @@
 <div class="slide-accordion clearfix">
     <ul>
         {{#each slide}}
-            <li><a title="{{name}}" href="{{href}}" target= "_blank"><div class="g-mask"></div><img class="lazy" data-original="{{image img 650 400}}"/></a></li>
+            <li><a title="{{title}}" href="{{url}}" target= "_blank"><div class="g-mask"></div><img class="lazy" data-original="{{image src 650 400}}"/></a></li>
         {{/each}}
     </ul>
 </div>
diff --git a/apps/passport/auth.js b/apps/passport/auth.js
new file mode 100644
index 0000000..adf208a
--- /dev/null
+++ b/apps/passport/auth.js
@@ -0,0 +1,27 @@
+/**
+ * passport 验证策略注册
+ * @author: jiangfeng<jeff.jiang@yoho.cn>
+ * @date: 2016/5/31
+ */
+
+'use strict';
+const passport = require('passport');
+const WeixinStrategy = require('passport-weixin');
+
+const config = require('../../config/common');
+
+let siteUrl = config.siteUrl.indexOf('//') === 0 ? 'http:' + config.siteUrl : config.siteUrl;
+
+/**
+ * wechat登录
+ */
+
+passport.use('wechat', new WeixinStrategy({
+    clientID: config.thirdLogin.wechat.appID,
+    clientSecret: config.thirdLogin.wechat.appSecret,
+    callbackURL: `${siteUrl}/passport/login/wechat/callback`,
+    requireState: true,
+    scope: 'snsapi_login'
+}, function(accessToken, refreshToken, profile, done) {
+    done(null, profile);
+}));
diff --git a/apps/passport/controllers/back.js b/apps/passport/controllers/back.js
new file mode 100644
index 0000000..374bd0d
--- /dev/null
+++ b/apps/passport/controllers/back.js
@@ -0,0 +1,402 @@
+/**
+ * 找回密码
+ * Created by Tao.Huang on 2016/6/12.
+ */
+
+'use strict';
+
+const helpers = global.yoho.helpers;
+const service = require('../models/back-service');
+const passportHelper = require('../models/passport-helper');
+const _ = require('lodash');
+
+helpers.urlFormat = (url, qs) => {
+    let localhost = 'http://localhost:6002';
+
+    if (_.isEmpty(qs)) {
+        return localhost + url;
+    }
+
+    const queryString = require('queryString');
+
+    let str = queryString.stringify(qs);
+
+    return localhost + url + '?' + str;
+
+};
+
+/**
+ * 找回密码主页面
+ */
+const index = (req, res, next) => {
+    service.indexPageDataAsync()
+        .then(result => {
+            res.render('back/index', Object.assign({
+                module: 'passport',
+                page: 'back-index',
+                title: '找回密码'
+            }, result));
+        })
+        .catch(next);
+};
+
+/**
+ * 校验用户输入信息,是否是已经注册的用户
+ */
+const validateInputAPI = (req, res, next) => {
+    let userInput = req.body.phoneNum || '';
+    let areaCode = (req.body.area || '86').replace('+', '');
+
+    service.validateEmailOrMobileAsync(userInput, areaCode)
+        .then(result => {
+            req.inputInfo = result;
+            next();
+        })
+        .catch(err => {
+            res.json({
+                code: 400,
+                message: err
+            });
+        });
+};
+
+/**
+ * 校验用户输入信息,是否是已经注册的用户
+ */
+const validateUserPage = (req, res, next) => {
+    let userInput = req.body.phoneNum || '';
+    let areaCode = (req.body.area || '86').replace('+', '');
+
+    service.validateEmailOrMobileAsync(userInput, areaCode)
+        .then(result => {
+            req.inputInfo = result;
+            next();
+        })
+        .catch(()=> {
+            res.redirect(helpers.urlFormat('/passport/back/index'));
+        });
+};
+
+const getUserInfoAPI = (req, res, next) => {
+    let inputInfo = req.inputInfo;
+
+    service.findUserAsync(inputInfo.type, inputInfo.phone, inputInfo.area)
+        .then(result => {
+            res.json(result);
+        })
+        .catch(next);
+};
+
+const sendCodePage = (req, res, next) => {
+    let inputInfo = req.inputInfo;
+
+    service.sendCodeToUserAsync(inputInfo.type, inputInfo.phone, inputInfo.area)
+        .then(result => {
+
+            if (!(result.code && result.code === 200)) {
+                return res.redirect(helpers.urlFormat('/passport/back/index'));
+            }
+
+            return next();
+        })
+        .catch(next);
+};
+
+const saveInSession = (req, res) => {
+    switch (req.inputInfo.type) {
+        case 'email':
+            {
+                req.session.email = req.inputInfo.phone;
+                res.redirect(helpers.urlFormat('/passport/back/sendEmail'));
+                break;
+            }
+        case 'mobile':
+            {
+                req.session.mobile = req.inputInfo.phone;
+                req.session.area = req.inputInfo.area;
+                res.redirect(helpers.urlFormat('/passport/back/verification'));
+                break;
+            }
+        default:
+            {
+                res.redirect(helpers.urlFormat('/passport/back/index'));
+            }
+    }
+};
+
+const sendBackMobileAPI = (req, res, next) => {
+    let mobile = req.body.mobile || '';
+    let area = req.body.area || '86';
+
+    service.sendCodeToMobileAsync(area, mobile)
+        .then(result => {
+            res.json(result);
+        })
+        .catch(next);
+};
+
+const validateMobileAPI = (req, res, next) => {
+    let mobile = req.body.mobile || '';
+    let area = req.body.area || '86';
+    const ERR = {code: 400, message: '验证失败'};
+
+    if (!passportHelper.validator.isAreaMobile(passportHelper.makeAreaMobile(area, mobile))) {
+        return res.json(ERR);
+    }
+
+    next();
+};
+
+const validateEmailInSession = (req, res, next) => {
+    let email = req.session.email || '';
+
+    if (!email) {
+        return res.redirect(helpers.urlFormat('/passport/back/index'));
+    }
+
+    let isp = email.split('@')[1];
+    const mapperEmailISP = {
+        'yoho.cn': 'http://smail.yoho.cn'
+    };
+
+    req.body.emailUrl = mapperEmailISP[isp] || `http://mail.${isp}`;
+    next();
+};
+
+const sendEmailPage = (req, res, next) => {
+    passportHelper.getLeftBannerAsync()
+        .then(result => {
+            res.render('back/send-email', Object.assign({
+                module: 'passport',
+                page: 'back-send-email-ok',
+                title: '邮件发送成功'
+            }, {
+                sendEmail: {
+                    coverHref: result.url,
+                    coverImg: result.img,
+                    email: req.body.emailUrl
+                }
+            }));
+        })
+        .catch(next);
+
+};
+
+const validateCodeByEmailPage = (req, res, next) => {
+    let code = req.query.code || '';
+
+    if (!_.isEmpty(req.mobileAuth)) {
+        return next();
+    }
+
+    service.checkEmailCodeAsync(code)
+        .then(result => {
+            if (!result) {
+                return res.redirect(helpers.urlFormat('/passport/back/index'));
+            }
+
+            return next();
+        })
+        .catch(next);
+};
+
+const resetPasswordPage = (req, res, next) => {
+    let code = req.query.code || '';
+
+    passportHelper.getLeftBannerAsync()
+        .then(result => {
+            res.render('back/reset-pwd', Object.assign({
+                module: 'passport',
+                page: 'back-reset-pwd',
+                title: '重置密码'
+            }, {
+                resetPwd: Object.assign({
+                    coverHref: result.url,
+                    coverImg: result.img,
+                    code: code
+                }, req.mobileAuth)
+            }));
+        })
+        .catch(next);
+};
+
+/**
+ * 手机验证页面
+ */
+const verifyCodeByMobilePage = (req, res, next) => {
+
+    req.body.mobile = '15062219934';
+    req.body.area = '86';
+    req.body.verifyCode = '8933';
+
+    passportHelper.getLeftBannerAsync()
+        .then(result => {
+            res.render('back/verification', Object.assign({
+                module: 'passport',
+                page: 'back-verify-mobile-code',
+                title: '手机验证'
+            }, {
+                verification: {
+                    coverHref: result.url,
+                    coverImg: result.img,
+                    mobile: req.body.mobile,
+                    area: req.body.area,
+                    verifyCode: req.body.verifyCode
+                }
+            }));
+        })
+        .catch(next);
+};
+
+const checkSuccessStatusPage = (req, res, next) => {
+    let successType = req.session.successType || '';
+
+    if (!successType) {
+        return res.redirect(helpers.urlFormat('/passport/back/index'));
+    }
+
+    delete req.session.successType;
+    next();
+};
+
+const resetPwdSuccessPage = (req, res, next) => {
+    passportHelper.getLeftBannerAsync()
+        .then(result => {
+            res.render('back/reset-success', Object.assign({
+                module: 'passport',
+                page: 'back-index',
+                title: '重置密码成功'
+            }, {
+                resetSuccess: {
+                    coverHref: result.url,
+                    coverImg: result.img
+                }
+            }));
+        })
+        .catch(next);
+};
+
+const verifyCodeByMobileAPI = (req, res) => {
+    let mobile = req.param('mobile', '');
+    let area = req.param('area', '86');
+    let mobileCode = req.param('code', '');
+
+    // const session = req.session;
+
+    const ERR = {
+        code: 400,
+        message: '验证码错误!',
+        data: helpers.urlFormat('/passport/back/index')
+    };
+
+    // if (!code || mobile !== session.mobile || area !== session.area) {
+    //    return res.json(ERR);
+    // }
+
+    service.verifyCodyByMobileAsync(area, mobile, mobileCode)
+        .then(result => {
+            res.json(result);
+        })
+        .catch(()=> {
+            res.json(ERR);
+        });
+};
+
+const validateExistCodePage = (req, res, next) => {
+    let code = req.query.code || req.body.code;
+
+    if (!code) {
+        return res.redirect(helpers.urlFormat('/passport/back/index'));
+    }
+
+    next();
+};
+
+const validateCodeByMobilePage = (req, res, next) => {
+    let code = req.query.code || req.body.code;
+    let mobile = req.query.mobile || req.body.mobile;
+    let area = req.query.area || req.body.area;
+    let token = req.query.token || req.body.token;
+    let createdAt = req.query.createdAt || req.body.createdAt;
+
+    if (!mobile) {
+        req.mobileAuth = {};
+        return next();
+    }
+
+    let data = {
+        mobile: mobile,
+        area: area,
+        token: token,
+        createdAt: createdAt
+    };
+
+    code = new Buffer(code, 'base64').toString();
+    req.mobileAuth = service.authRequest(data, code);
+
+    next();
+};
+
+const validatePwdPage = (req, res, next) => {
+    let pwd = req.body.pwd || '';
+
+    if (!passportHelper.validator.isPassword(pwd)) {
+        return res.redirect(helpers.urlFormat('/passport/back/index'));
+    }
+
+    next();
+};
+
+const updatePwdAPI = (req, res, next) => {
+    let code = req.body.code || '';
+    let mobileAuth = req.mobileAuth || {};
+    let newPassword = req.body.pwd || '';
+
+    service.updatePwdAsync(code, mobileAuth, newPassword)
+        .then(result => {
+            if (result.status) {
+                req.session.successType = result.type;
+                res.redirect(helpers.urlFormat('/passport/back/resetSuccess'));
+            } else {
+                res.redirect(helpers.urlFormat('/passport/back/index'));
+            }
+        })
+        .catch(next);
+};
+
+const validateMobileInSession = (req, res, next) => {
+    req.body.mobile = req.session.mobile || '';
+    req.body.verifyCode = req.session.verifyCode || '';
+    req.body.area = req.session.area || '';
+
+    if (!(req.body.mobile && req.body.verifyCode)) {
+        return res.redirect(helpers.urlFormat('/passport/back/index'));
+    }
+
+    next();
+};
+
+module.exports = {
+    index,
+    validateInputAPI,
+    validateUserPage,
+    getUserInfoAPI,
+    sendCodePage,
+    saveInSession,
+    sendBackMobileAPI,
+    validateMobileAPI,
+    validateEmailInSession,
+    sendEmailPage,
+    validateCodeByEmailPage,
+    resetPasswordPage,
+    verifyCodeByMobilePage,
+    checkSuccessStatusPage,
+    resetPwdSuccessPage,
+    verifyCodeByMobileAPI,
+    validateExistCodePage,
+    validateCodeByMobilePage,
+    validatePwdPage,
+    updatePwdAPI,
+    validateMobileInSession
+};
+
diff --git a/apps/passport/controllers/captcha.js b/apps/passport/controllers/captcha.js
new file mode 100644
index 0000000..2c60ec2
--- /dev/null
+++ b/apps/passport/controllers/captcha.js
@@ -0,0 +1,35 @@
+/**
+ * Created by TaoHuang on 2016/6/18.
+ */
+
+'use strict';
+
+const helpers = global.yoho.helpers;
+
+const requiredAPI = (req, res, next) => {
+    let captchaToken = (req.body.verifyCode || '').toLowerCase();
+
+    if (captchaToken === req.session.captcha) {
+        return next();
+    } else {
+        return res.json({
+            code: 400,
+            message: '您输入的验证码不正确!'
+        });
+    }
+};
+
+const requiredPage = (req, res, next) => {
+    let captchaToken = (req.body.verifyCode || '').toLowerCase();
+
+    if (captchaToken === req.session.captcha) {
+        return next();
+    } else {
+        return res.redirect(helpers.urlFormat('/passport/back/index.html'));
+    }
+};
+
+module.exports = {
+    requiredAPI,
+    requiredPage
+};
diff --git a/apps/passport/controllers/login.js b/apps/passport/controllers/login.js
new file mode 100644
index 0000000..5dd3761
--- /dev/null
+++ b/apps/passport/controllers/login.js
@@ -0,0 +1,105 @@
+/**
+ * 登录
+ * @author: Bi Kai<kai.bi@yoho.cn>
+ * @date: 2016/05/09
+ */
+'use strict';
+
+const passport = require('passport');
+const uuid = require('uuid');
+const cookie = global.yoho.cookie;
+const helpers = global.yoho.helpers;
+const log = global.yoho.logger;
+const config = global.yoho.config;
+const AuthHelper = require('../models/auth-helper');
+
+const loginPage = `${config.siteUrl}/passport/login/index`;
+
+// 第三方登录回调
+function doPassportCallback(req, res, next, user) {
+    let shoppingKey = cookie.getShoppingKey(req);
+    let refer = req.cookies.refer;
+
+    if (refer) {
+        refer = decodeURI(req.cookies.refer);
+    } else {
+        refer = config.siteUrl;
+    }
+
+    if (/sign|login/.test(refer)) {
+        refer = config.siteUrl;
+    }
+    if (user.openId && user.nickname) {
+        let signinByOpenID;
+
+        if (user.sourceType === 'wechat') {
+
+            // PC 的微信登录之前使用了 open_id, 所以需要特别的接口处理
+            signinByOpenID = AuthHelper.signinByWechat(
+                user.nickname, user.openId, user.unionId, user.sourceType, shoppingKey);
+        } else {
+            signinByOpenID = AuthHelper.signinByOpenID(
+                user.nickname, user.openId, user.sourceType, shoppingKey);
+        }
+
+        signinByOpenID.then((result) => {
+            if (result.code !== 200) {
+                return Promise.reject(result);
+            }
+            if (result.data['is_bind'] && result.data['is_bind'] === 'N') { //eslint-disable-line
+                return helpers.urlFormat('/passport/thirdlogin/index', {
+                    openId: user.unionId || user.openId,
+                    sourceType: user.sourceType,
+                    refer: refer
+                });
+            } else if (result.code === 200 && result.data.uid) {
+                return AuthHelper.syncUserSession(result.data.uid, req, res).then(() => {
+                    return refer;
+                }).catch(next);
+            }
+        }).then((redirectTo) => {
+            res.redirect(redirectTo);
+        }).catch(() => {
+            res.redirect(loginPage);
+        });
+    } else {
+        res.redirect(loginPage);
+    }
+}
+
+const wechat = {
+    beforeLogin: (req, res, next) => {
+        let refer = req.query.refer;
+
+        if (!refer) {
+            refer = req.get('Referer');
+        }
+        refer && res.cookie('refer', encodeURI(refer), {
+            domain: 'yohobuy.com'
+        });
+        next();
+    },
+    login: (req, res, next) => {
+        return passport.authenticate('wechat', {
+            state: uuid.v4()
+        })(req, res, next);
+    },
+    callback: (req, res, next) => {
+        passport.authenticate('wechat', (err, user) => {
+            if (err) {
+                log.error(`wechat authenticate error : ${JSON.stringify(err)}`);
+                return res.redirect(loginPage);
+            }
+
+            doPassportCallback(req, res, next, {
+                openId: user._json.openid,
+                unionId: user._json.unionid || user.id,
+                nickname: user._json.nickname || user.displayName,
+                sourceType: 'wechat',
+                rawUser: user
+            });
+        })(req, res, next);
+    }
+};
+
+exports.wechat = wechat;
diff --git a/apps/passport/index.js b/apps/passport/index.js
new file mode 100644
index 0000000..3d6258a
--- /dev/null
+++ b/apps/passport/index.js
@@ -0,0 +1,40 @@
+/**
+ * sub app channel
+ * @author: Bi Kai<kai.bi@yoho.cn>
+ * @date: 2016/05/09
+ */
+'use strict';
+var express = require('express'),
+    path = require('path'),
+    hbs = require('express-handlebars');
+
+var passport = require('passport');
+
+var app = express();
+
+// set view engin
+var doraemon = path.join(__dirname, '../../doraemon/views'); // parent view root
+
+app.on('mount', function(parent) {
+    delete parent.locals.settings; // 不继承父 App 的设置
+    Object.assign(app.locals, parent.locals);
+});
+
+app.set('views', path.join(__dirname, 'views/action'));
+app.engine('.hbs', hbs({
+    extname: '.hbs',
+    defaultLayout: 'layout',
+    layoutsDir: doraemon,
+    partialsDir: [path.join(__dirname, 'views/partial'), `${doraemon}/partial`],
+    helpers: global.yoho.helpers
+}));
+
+
+require('./auth');
+app.use(passport.initialize());
+app.use(passport.session());
+
+// router
+app.use(require('./router'));
+
+module.exports = app;
diff --git a/apps/passport/models/auth-helper.js b/apps/passport/models/auth-helper.js
new file mode 100644
index 0000000..5dbe52e
--- /dev/null
+++ b/apps/passport/models/auth-helper.js
@@ -0,0 +1,72 @@
+'use strict';
+
+const sign = global.yoho.sign;
+const api = global.yoho.API;
+
+class Auth {
+
+    static signinByOpenID(nickname, openId, sourceType, shoppingKey) {
+        let param = {
+            nickname: nickname,
+            openId: openId,
+            source_type: sourceType,
+            method: 'app.passport.signinByOpenID'
+        };
+
+        if (shoppingKey) {
+            param.shopping_key = shoppingKey;
+        }
+
+        return api.get('', param);
+    }
+
+    static signinByWechat(nickname, openId, unionId, sourceType, shoppingKey) {
+        let param = {
+            nickname: nickname,
+            openId: openId,
+            unionId: unionId,
+            source_type: sourceType,
+            method: 'app.passport.signinByWechat'
+        };
+
+        if (shoppingKey) {
+            param.shopping_key = shoppingKey;
+        }
+
+        return api.get('', param);
+    }
+
+    static profile(uid) {
+        let param = {
+            uid: uid,
+            method: 'app.passport.profile'
+        };
+
+        return api.get('', param);
+    }
+
+    static syncUserSession(uid, req, res) {
+        return Auth.profile(uid).then((userInfo) => {
+            let token = sign.makeToken(uid);
+            let data = userInfo.data;
+
+            if (data) {
+                let uidCookie = `${data.profile_name}::${data.uid}::${data.vip_info.title}::${token}`;
+
+                req.session._TOKEN = token;
+                req.session._LOGIN_UID = uid;
+
+                res.cookie('_UID', uidCookie, {
+                    domain: 'yohobuy.com'
+                });
+            }
+            req.session._TOKEN = token; // esline-disable-line
+            req.session._LOGIN_UID = uid; // esline-disable-line
+            res.cookie('_TOKEN', token, {
+                domain: 'yohobuy.com'
+            }); // esline-disable-line
+        }).catch(console.log);
+    }
+}
+
+module.exports = Auth;
diff --git a/apps/passport/models/back-api.js b/apps/passport/models/back-api.js
new file mode 100644
index 0000000..ea791cf
--- /dev/null
+++ b/apps/passport/models/back-api.js
@@ -0,0 +1,147 @@
+/**
+ * Created by TaoHuang on 2016/6/15.
+ */
+
+'use strict';
+
+const api = global.yoho.API;
+const YOHOBUY_URL = 'http://www.yohobuy.com/';
+
+/**
+ * 获取地区数据
+ */
+const getAreaDataAsync = () => {
+    return api.get('', {
+        method: 'app.passport.getArea'
+    }).then(result => {
+        result.data = result.data.map(value => {
+            value.areaCode = `+${value.area}`;
+
+            if (value.areaCode === '+86') {
+                value.selected = true;
+            } else {
+                value.selected = false;
+            }
+
+            delete value.area;
+            return value;
+        });
+
+        return result;
+    });
+};
+
+/**
+ * 通过邮箱找回密码
+ *
+ * @param  string  mail  邮箱地址
+ */
+const sendCodeToEmailAsync = (email) => {
+    return api.get('', {
+        method: 'app.register.backpwdByEmail',
+        email: email
+    });
+};
+
+/**
+ * 根据邮箱验证码修改密码(调用www.yohobuy.com接口)
+ *
+ * @param  string  pwd       新密码
+ * @param  string  code    邮箱验证码
+ */
+const modifyPasswordByEmailAsync = (pwd, code) => {
+    const options = {
+        url: `${YOHOBUY_URL}passport/back/update`,
+        form: {
+            pwd: pwd,
+            're-input': pwd,
+            code: code
+        },
+        timeout: 3000
+    };
+
+    return api._requestFromAPI(options);
+};
+
+/**
+ * 通过手机找回密码
+ *
+ * @param  string  mobile 手机号
+ * @param  integer area   地区码ID
+ */
+const sendCodeToMobileAsync = (mobile, area) => {
+    area = area || 86;
+
+    return api.get('', {
+        mobile: mobile,
+        area: area,
+        method: 'app.register.sendBackpwdCodeToMobile'
+    });
+};
+
+/**
+ * 校验密码修改手机验证码
+ *
+ * @param  string  mobile 手机号
+ * @param  string  code   验证码
+ * @param  integer area   地区码ID
+ */
+const validateMobileCodeAsync = (mobile, code, area) => {
+    area = area || 86;
+    return api.get('', {
+        mobile: mobile,
+        code: code,
+        area: area,
+        method: 'app.register.validBackpwdCode'
+    });
+};
+
+/**
+ * 根据手机验证码修改密码
+ *
+ * @param  string  mobile 手机号
+ * @param  string  token   验证手机验证码返回的token
+ * @param  integer area   地区码ID
+ */
+const modifyPasswordByMobileAsync = (mobile, token, newpwd, area)=> {
+    area = area || 86;
+    return api.get('', {
+        mobile: mobile,
+        token: token,
+        newpwd: newpwd,
+        area: area,
+        method: 'app.register.changepwdByMobileCode'
+    });
+};
+
+/**
+ * 验证找回邮件code
+ */
+const checkEmailCodeAsync = (code) => {
+    return api.get('', {
+        code: code,
+        method: 'web.passport.checkCodeValid'
+    });
+};
+
+/**
+ * 根据邮箱code修改密码
+ */
+const modifyPasswordByEmailCodeAsync = (code, password) => {
+    return api.get('', {
+        code: code,
+        newPwd: password,
+        method: 'app.register.resetPwdByCode'
+    });
+};
+
+module.exports = {
+    getAreaDataAsync,
+    sendCodeToEmailAsync,
+    modifyPasswordByEmailAsync,
+    sendCodeToMobileAsync,
+    validateMobileCodeAsync,
+    modifyPasswordByMobileAsync,
+    checkEmailCodeAsync,
+    modifyPasswordByEmailCodeAsync
+};
diff --git a/apps/passport/models/back-helper.js b/apps/passport/models/back-helper.js
new file mode 100644
index 0000000..60bef86
--- /dev/null
+++ b/apps/passport/models/back-helper.js
@@ -0,0 +1,52 @@
+/**
+ * Created by TaoHuang on 2016/6/27.
+ */
+
+'use strict';
+
+
+/**
+ * 签名算法参考微信支付加密算法
+ * 参考链接:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3
+ *
+ */
+
+const _ = require('lodash');
+const SALT = '_+@#$%^';
+
+/**
+ * 生成加密token
+ * @param data json
+ * @returns string
+ */
+
+const _packageObject = (data) => {
+    return _.keys(data).sort().map(key => `${key}=${data[key]}`).join('&').toUpperCase();
+};
+
+const _encodeMD5 = (str) => {
+    const md5 = require('md5');
+
+    return md5(str).toUpperCase();
+};
+
+const makeToken = (data) => {
+    let saltData = Object.assign(data, {key: SALT});
+    let str = _packageObject(saltData);
+
+    return _encodeMD5(str);
+};
+
+const validateToken = (data, token) => {
+    let saltData = Object.assign(data, {key: SALT});
+    let str = _packageObject(saltData);
+
+    return _encodeMD5(str) === token;
+};
+
+module.exports = {
+    makeToken,
+    validateToken
+};
+
+
diff --git a/apps/passport/models/back-service.js b/apps/passport/models/back-service.js
new file mode 100644
index 0000000..1e69f8a
--- /dev/null
+++ b/apps/passport/models/back-service.js
@@ -0,0 +1,203 @@
+/**
+ * Created by TaoHuang on 2016/6/14.
+ */
+
+'use strict';
+
+const helpers = global.yoho.helpers;
+const api = require('./back-api');
+const Promise = require('bluebird');
+const co = Promise.coroutine;
+const _ = require('lodash');
+const moment = require('moment');
+
+const userService = require('./user-service');
+const passportHelper = require('./passport-helper');
+const backHelper = require('./back-helper');
+
+const BACK_LEFT_BANNER_CODE = '3bbaf502c447a2ddad60879042e286d8'; // 找回密码左边的banner
+
+const validateEmailOrMobileAsync = (userInput, areaCode) => {
+    return new Promise(function(resolve, rejected) {
+        let result = {type: 'email', area: '', phone: ''};
+
+        if (passportHelper.validator.verifyEmail(userInput)) {
+            result.type = 'email';
+            result.area = '';
+            result.phone = userInput;
+
+            resolve(result);
+        } else if (passportHelper.validator.isAreaMobile(passportHelper.makeAreaMobile(areaCode, userInput))) {
+            result.type = 'mobile';
+            result.area = areaCode;
+            result.phone = userInput;
+
+            resolve(result);
+        } else {
+            rejected('输入信息出错!');
+        }
+
+    });
+
+};
+
+const findUserAsync = (type, phone, area) => {
+    return co(function * () {
+        const MESSAGE = {
+            mobile: '您输入的手机号码尚未注册!',
+            email: '您输入的邮件账户尚未注册!',
+            ok: '验证成功'
+        };
+
+        const findBy = {
+            email: userService.findByEmailAsync,
+            mobile: (phone1, area1) => userService.findByMobileAsync(area1, phone1) // 交换参数
+        };
+
+        const OK = {code: 200, message: MESSAGE.ok};
+
+        const user = yield findBy[type](phone, area);
+
+        if (_.isEmpty(user)) {
+            return {
+                code: 402,
+                message: MESSAGE[type]
+            };
+        }
+
+        return OK;
+    })();
+};
+
+const sendCodeToUserAsync = (type, mobile, areaCode) => {
+    let sendTo = {
+        email: api.sendCodeToEmailAsync,
+        mobile: api.sendCodeToMobileAsync
+    };
+
+    return sendTo[type](mobile, areaCode);
+};
+
+/**
+ * 发送找回手机号短信
+ */
+const sendCodeToMobileAsync = (areaCode, mobile) => {
+    return api.sendCodeToMobileAsync(mobile, areaCode);
+};
+
+/**
+ * 获得首页的数据
+ */
+const indexPageDataAsync = () => {
+    return co(function *() {
+        let banner = yield passportHelper.getLeftBannerAsync(BACK_LEFT_BANNER_CODE);
+        let countryList = passportHelper.getCountry();
+
+        return {
+            back: {
+                coverHref: banner.url,
+                coverImg: banner.img,
+                countryCode: 86,
+                countryName: '中国',
+                captchaUrl: helpers.urlFormat('/passport/images', {t: moment().unix()}),
+                countryList: countryList
+            }
+        };
+    })();
+};
+
+const verifyCodyByMobileAsync = (area, mobile, mobileCode) => {
+    const ERR = {
+        code: 400,
+        message: '验证码错误!',
+        data: helpers.urlFormat('/passport/back/index')
+    };
+
+    return api.validateMobileCodeAsync(mobile, mobileCode, area)
+        .then(result => {
+            if (!(result.code && result.code === 200)) {
+                return ERR;
+            }
+
+            let data = {
+                mobile: mobile,
+                area: area,
+                token: result.data.token,
+                createdAt: moment().unix()
+            };
+
+            data.code = new Buffer(backHelper.makeToken(data)).toString('base64');
+
+            return {
+                code: 200,
+                message: '验证成功',
+                data: helpers.urlFormat('/passport/back/backcode', data)
+            };
+        });
+
+};
+
+const authRequest = (data, token) => {
+    if (!backHelper.validateToken(data, token)) {
+        return {};
+    }
+
+    let existTime = moment.duration(1, 'hours').seconds();
+    let isExpired = (moment().unix() - data.createdAt) > existTime;
+
+    if (isExpired) {
+        return {};
+    } else {
+        return data;
+    }
+};
+
+const updatePwdAsync = (emailToken, mobileToken, newPassword) => {
+    return co(function * () {
+        let result = {type: 'mobile', status: false};
+        const ERR = {type: 'unknown', status: false};
+
+        if (!_.isEmpty(mobileToken)) {
+            if (!mobileToken.mobile || mobileToken.uid) {
+                return ERR;
+            }
+
+            let mobile = mobileToken.mobile;
+            let area = mobileToken.area;
+            let token = mobileToken.token;
+            let modifyStatus = yield api.modifyPasswordByMobileAsync(mobile, token, newPassword, area);
+
+            if (!modifyStatus.code || modifyStatus.code !== 200) {
+                return ERR;
+            }
+
+            result.type = 'mobile';
+            result.status = true;
+        } else {
+            let modifyStatus = yield api.modifyPasswordByEmailCodeAsync(emailToken, newPassword);
+
+            if (!modifyStatus.code || modifyStatus.code !== 200) {
+                return ERR;
+            }
+
+            result.type = 'email';
+            result.status = true;
+        }
+
+        return result;
+    })();
+};
+
+const checkEmailCodeAsync = api.checkEmailCodeAsync;
+
+module.exports = {
+    validateEmailOrMobileAsync,
+    findUserAsync,
+    sendCodeToUserAsync,
+    sendCodeToMobileAsync,
+    indexPageDataAsync,
+    verifyCodyByMobileAsync,
+    authRequest,
+    updatePwdAsync,
+    checkEmailCodeAsync
+};
diff --git a/apps/passport/models/index-api.js b/apps/passport/models/index-api.js
new file mode 100644
index 0000000..e265d94
--- /dev/null
+++ b/apps/passport/models/index-api.js
@@ -0,0 +1,12 @@
+/**
+ * Created by TaoHuang on 2016/6/21.
+ */
+'use strict';
+
+const serviceAPI = global.yoho.ServiceAPI;
+
+module.exports.getResourceAsync = (resourceCode) => {
+    return serviceAPI.get('/operations/api/v5/resource/get', {
+        content_code: resourceCode
+    });
+};
diff --git a/apps/passport/models/index-service.js b/apps/passport/models/index-service.js
new file mode 100644
index 0000000..577dfa8
--- /dev/null
+++ b/apps/passport/models/index-service.js
@@ -0,0 +1,19 @@
+/**
+ * Created by TaoHuang on 2016/6/21.
+ */
+
+const api = require('./index-api');
+
+module.exports.getResourceAsync = (resourceCode) => {
+    return api.getResourceAsync(resourceCode)
+        .then(result => {
+            if (result.code === 200) {
+                return result.data;
+            } else {
+                return {};
+            }
+        })
+        .catch(() => {
+            return {};
+        });
+};
diff --git a/apps/passport/models/passport-helper.js b/apps/passport/models/passport-helper.js
new file mode 100644
index 0000000..dd850ee
--- /dev/null
+++ b/apps/passport/models/passport-helper.js
@@ -0,0 +1,254 @@
+/**
+ * Created by TaoHuang on 2016/6/20.
+ */
+
+
+'use strict';
+
+const helpers = global.yoho.helpers;
+const Promise = require('bluebird');
+const co = Promise.coroutine;
+const _ = require('lodash');
+
+const indexService = require('./index-service');
+
+const getLeftBannerAsync = (resourceCode) => {
+    const DEFAULT_VALUE = {
+        img: 'http://img12.static.yhbimg.com/' +
+        'yhb-img01/2015/12/01/07/020a0b6e7ff908d0c2bc4045b4fef42b9f.png?imageView/2/w/252/h/190',
+        url: ''
+    };
+
+    return co(function * () {
+        let resource = yield indexService.getResourceAsync(resourceCode);
+
+        if (_.isEmpty(resource)) {
+            return DEFAULT_VALUE;
+        }
+
+        let value = {};
+
+        // 有点问题 // passport model 58
+        value.img = helpers.image(resource[0].data[0].src, 252, 190);
+        value.url = resource[0].data[0].url;
+
+        return value;
+    })();
+};
+
+const getCountry = () => {
+    return [
+        {
+            areaCode: '+61',
+            selected: false,
+            name: '澳大利亚'
+        },
+        {
+            areaCode: '+82',
+            selected: false,
+            name: '韩国'
+        },
+        {
+            areaCode: '+1',
+            selected: false,
+            name: '加拿大'
+        },
+        {
+            areaCode: '+60',
+            selected: false,
+            name: '马来西亚'
+        },
+        {
+            areaCode: '+1',
+            selected: false,
+            name: '美国'
+        },
+        {
+            areaCode: '+81',
+            selected: false,
+            name: '日本'
+        },
+        {
+            areaCode: '+65',
+            selected: false,
+            name: '新加坡'
+        },
+        {
+            areaCode: '+44',
+            selected: false,
+            name: '英国'
+        },
+        {
+            areaCode: '+86',
+            selected: true,
+            name: '中国'
+        },
+        {
+            areaCode: '+853',
+            selected: false,
+            name: '中国澳门'
+        },
+        {
+            areaCode: '+886',
+            selected: false,
+            name: '中国台湾'
+        },
+        {
+            areaCode: '+852',
+            selected: false,
+            name: '中国香港'
+        }
+    ];
+};
+
+/**
+ * 验证邮箱是否合法
+ *
+ * @param string email
+ * @return boolean
+ */
+const verifyEmail = email => {
+    if (!email) {
+        return false;
+    }
+
+    const emailRegExp = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
+
+    return emailRegExp.test(email);
+};
+
+/**
+ * 各国手机号规则
+ */
+function _areaMobileVerify(phone, area) {
+    area = area || '86';
+    phone = phone.trim();
+
+    let verify = {
+        86: {
+            name: '中国',
+            match: /^1[3|4|5|8|7][0-9]{9}$/.test(phone)
+        },
+        852: {
+            name: '中国香港',
+            match: /^[9|6|5][0-9]{7}$/.test(phone)
+        },
+        853: {
+            name: '中国澳门',
+            match: /^[0-9]{8}$/.test(phone)
+        },
+        886: {
+            name: '中国台湾',
+            match: /^[0-9]{10}$/.test(phone)
+        },
+        65: {
+            name: '新加坡',
+            match: /^[9|8][0-9]{7}$/.test(phone)
+        },
+        60: {
+            name: '马来西亚',
+            match: /^1[1|2|3|4|6|7|9][0-9]{8}$/.test(phone)
+        },
+        1: {
+            name: '加拿大&美国',
+            match: /^[0-9]{10}$/.test(phone)
+        },
+        82: {
+            name: '韩国',
+            match: /^01[0-9]{9}$/.test(phone)
+        },
+        44: {
+            name: '英国',
+            match: /^7[7|8|9][0-9]{8}$/.test(phone)
+        },
+        81: {
+            name: '日本',
+            match: /^0[9|8|7][0-9]{9}$/.test(phone)
+        },
+        61: {
+            name: '澳大利亚',
+            match: /^[0-9]{11}$/.test(phone)
+        }
+    };
+
+    if (verify[area]) {
+        return verify[area].match;
+    } else {
+        return false;
+    }
+}
+
+/**
+ * 验证国际手机号是否合法
+ */
+const isAreaMobile = areaMobile => {
+    if (!areaMobile) {
+        return false;
+    }
+
+    let mobile = {
+        area: '86',
+        phone: ''
+    };
+
+    let splitMobile = areaMobile.split('-');
+
+    if (splitMobile.length === 2) {
+        mobile.area = splitMobile[0];
+        mobile.phone = splitMobile[1];
+    } else {
+        mobile.phone = splitMobile[0];
+    }
+
+    return _areaMobileVerify(mobile.phone, mobile.area);
+};
+
+/**
+ *  验证手机是否合法
+ */
+const verifyMobile = phone => {
+    if (!phone) {
+        return false;
+    }
+
+    return /^1[3|4|5|8|7][0-9]{9}$/.test(phone);
+};
+
+const verifyPassword = password => {
+    if (!password) {
+        return false;
+    }
+
+    return /^([a-zA-Z0-9\-\+_!@\#$%\^&\*\(\)\:\;\.=\[\]\\\',\?]){6,20}$/.test(password);
+};
+
+const makeAreaMobile = (area, mobile) => {
+    if (!area || area === '86') {
+        return mobile;
+    }
+
+    return `${area}-${mobile}`;
+};
+
+const isPassword = pwd => {
+    if (!pwd) {
+        return false;
+    }
+
+    let pwdRegexp = /^([a-zA-Z0-9\-\+_!@\#$%\^&\*\(\)\:\;\.=\[\]\\\',\?]){6,20}$/;
+
+    return pwdRegexp.test(_.trim(pwd));
+};
+
+module.exports = {
+    validator: {
+        verifyPassword,
+        verifyMobile,
+        isAreaMobile,
+        verifyEmail,
+        isPassword
+    },
+    makeAreaMobile,
+    getCountry,
+    getLeftBannerAsync
+};
diff --git a/apps/passport/models/user-api.js b/apps/passport/models/user-api.js
new file mode 100644
index 0000000..fdd703d
--- /dev/null
+++ b/apps/passport/models/user-api.js
@@ -0,0 +1,57 @@
+/**
+ * Created by TaoHuang on 2016/6/17.
+ */
+'use strict';
+
+const _ = require('lodash');
+const api = global.yoho.API;
+const EMPTY = {};
+
+/**
+ * 根据手机号获取用户信息
+ */
+const findByMobileAsync = (area, mobile) => {
+
+    return api.get('', {
+        mobile: mobile,
+        area: area,
+        method: 'app.passport.getProfileByMobile'
+    })
+        .then(result => {
+            if (!result.code || result.code !== 200 || !result.data || _.isEmpty(result.data)) {
+                return EMPTY;
+            }
+
+            return result.data;
+
+        })
+        .catch(() => {
+            return EMPTY;
+        });
+};
+
+/**
+ * 根据邮箱获取用户信息
+ */
+const findByEmailAsync = (email) => {
+    return api.get('', {
+        email: email,
+        method: 'app.passport.getProfileByEmail'
+    })
+        .then(result => {
+            if (!result.code || result.code !== 200 || !result.data || _.isEmpty(result.data)) {
+                return EMPTY;
+            }
+
+            return result.data;
+
+        })
+        .catch(() => {
+            return EMPTY;
+        });
+};
+
+module.exports = {
+    findByMobileAsync,
+    findByEmailAsync
+};
diff --git a/apps/passport/models/user-service.js b/apps/passport/models/user-service.js
new file mode 100644
index 0000000..f6ec65f
--- /dev/null
+++ b/apps/passport/models/user-service.js
@@ -0,0 +1,8 @@
+/**
+ * Created by TaoHuang on 2016/6/17.
+ */
+'use strict';
+
+const api = require('./user-api');
+
+module.exports = api;
diff --git a/apps/passport/router.js b/apps/passport/router.js
new file mode 100644
index 0000000..bfab5fd
--- /dev/null
+++ b/apps/passport/router.js
@@ -0,0 +1,105 @@
+/**
+ * router of sub app channel
+ * @author: Bi Kai<kai.bi@yoho.cn>
+ * @date: 2016/05/09
+ */
+
+'use strict';
+
+const express = require('express');
+const cRoot = './controllers';
+const login = require(cRoot + '/login');
+
+const captcha = require(cRoot + '/captcha');
+const back = require(cRoot + '/back');
+
+const router = express.Router(); // eslint-disable-line
+
+router.get('/autosign/wechat', login.wechat.beforeLogin, login.wechat.login); // 微信登录, 兼容 PHP 的路径
+router.get('/login/wechat/callback', login.wechat.callback);
+
+/**
+ * 找回密码首页信息
+ */
+// 找回密码首页
+router.get('/back/index', back.index);
+
+// 实时验证输入是否正确
+router.post('/back/authcode',
+
+    // captcha.requiredAPI,
+    back.validateInputAPI,
+    back.getUserInfoAPI);
+
+// 提交按钮邮件API
+router.post('/back/email',
+
+    // Captcha.requiredPage,
+    back.validateUserPage,
+    back.sendCodePage,
+    back.saveInSession);
+
+// 提交按钮手机API
+router.post('/back/mobile',
+
+    captcha.requiredPage,
+    back.validateUserPage,
+    back.sendCodePage,
+    back.saveInSession);
+
+/**
+ * 邮件找回密码
+ */
+// 发送邮件成功页面
+router.get('/back/sendEmail',
+    back.validateEmailInSession,
+    back.sendEmailPage);
+
+/**
+ * 短信找回密码
+ */
+// 验证手机短信页面
+router.get('/back/verification',
+
+    // Back.validateMobileInSession,
+    // Captcha.requiredPage,
+    back.verifyCodeByMobilePage);
+
+// 重新发送短信接口
+router.post('/back/sendBackMobile',
+
+    // Captcha.requiredAPI,
+    back.validateMobileAPI,
+    back.sendBackMobileAPI);
+
+// 验证手机验证码接口
+router.post('/back/backMobile',
+
+    // Captcha.requiredAPI,
+    back.verifyCodeByMobileAPI);
+
+/**
+ * 重置密码
+ */
+// 重置密码页面
+router.get('/back/backcode',
+    back.validateExistCodePage,
+    back.validateCodeByMobilePage,
+    back.validateCodeByEmailPage,
+    back.resetPasswordPage);
+
+// 重置密码接口
+router.post('/back/update',
+    back.validateExistCodePage,
+    back.validateCodeByMobilePage,
+
+    // Back.validatePwdPage,
+    back.updatePwdAPI);
+
+// 重置密码成功页面
+router.get('/back/resetSuccess',
+
+    // Back.checkSuccessStatusPage,
+    back.resetPwdSuccessPage);
+
+module.exports = router;
diff --git a/apps/passport/views/action/back/index.hbs b/apps/passport/views/action/back/index.hbs
new file mode 100644
index 0000000..7e4646c
--- /dev/null
+++ b/apps/passport/views/action/back/index.hbs
@@ -0,0 +1,44 @@
+<div class="back-page passport-page yoho-page clearfix">
+    {{# back}}
+        {{> back/cover}}
+        <div class="content">
+            <div class="back-header clearfix">
+                <h2 class="title">找回密码</h2>
+                <span id="country-code" class="country-code">
+                    <em>{{countryName}} +{{countryCode}}</em>
+                    <i class="iconfont">&#xe61d;</i>
+                </span>
+                <ul id="country-code-list" class="country-code-list">
+                    {{# countryList}}
+                        <li data-cc="{{areaCode}}">{{name}} {{areaCode}}</li>
+                    {{/ countryList}}
+                </ul>
+            </div>
+            <form id="back-form" class="back-form" action="/passport/back/email" method="post">
+                <input id="country-code-hide" type="hidden" name="area" value="+86">
+                <ul>
+                    <li class="input-container-li clearfix">
+                        <input id="phone-num" class="input va phone-num" type="text" name="phoneNum" placeholder="邮箱/手机号码" autocomplete="off">
+                        <span id="account-err" class="err-tip hide">
+                            <i></i>
+                            <em>账户名不能为空</em>
+                        </span>
+                    </li>
+                    <li class="input-container-li clearfix">
+                        <input id="captcha" class="input va captcha" type="text" name="verifyCode" placeholder="验证码" autocomplete="off" maxlength="4">
+                        <img id="captcha-img" class="captcha-img" src="{{captchaUrl}}" alt="">
+                        <a id="change-captcha" class="link change-captcha">换一张</a>
+                        <span id="captcha-err" class="err-tip captcha-err hide">
+                            <i></i>
+                            <em>验证码不能为空</em>
+                        </span>
+                    </li>
+                    <li class="input-container-li clearfix">
+                        <input name="refer" id="refer" type="hidden" value="http%3A%2F%2Fwww.yohobuy.com%2F">
+                        <input id="find-btn" class="btn find-btn disable" type="submit" value="下一步" disabled="">
+                    </li>
+                </ul>
+            </form>
+        </div>
+    {{/ back}}
+</div>
diff --git a/apps/passport/views/action/back/reset-pwd.hbs b/apps/passport/views/action/back/reset-pwd.hbs
new file mode 100644
index 0000000..85397ac
--- /dev/null
+++ b/apps/passport/views/action/back/reset-pwd.hbs
@@ -0,0 +1,51 @@
+<div class="reset-pwd-page back-page passport-page yoho-page clearfix">
+    {{# resetPwd}}
+        {{> back/cover}}
+        <div class="content">
+            <h2 class="title2">重置密码</h2>
+            <form id="reset-pwd-form" class="reset-pwd-form" method="POST" action="/passport/back/update">
+                <ul>
+                    <li class="input-container-li po-re">
+                        <input id="pwd" class="input va pwd" type="password" name="pwd" placeholder="新密码"
+                               maxlength="20">
+                        <div class="pwd-intensity-container">
+                            <span class="pwd-intensity low">低</span>
+                            <span class="pwd-intensity mid">中</span>
+                            <span class="pwd-intensity high">高</span>
+                        </div>
+                        <div id="pwd-tips" class="pwd-tips hide">
+                            <div class="default" id="pwd-tip1">
+                                <i></i>
+                                密码只支持6-20位字符
+                            </div>
+                            <div class="default" id="pwd-tip2">
+                                <i></i>
+                                由字母、 数字组合,不能包含特殊符号
+                            </div>
+                        </div>
+                    <span id="pwd-err" class="err-tip hide">
+                        <i></i>
+                        <em>请输入密码</em>
+                    </span>
+                    </li>
+                    <li class="input-container-li clearfix po-re">
+                        <input id="re-input" class="input va re-input repwd" type="password" name="re-input"
+                               placeholder="再次输入" maxlength="20">
+                    <span id="repwd-err" class="err-tip hide">
+                        <i></i>
+                        <em>请输入密码确认</em>
+                    </span>
+                    </li>
+                    <li class="input-container-li clearfix">
+                        <input type="hidden" name="code" value="{{code}}">
+                        <input type="hidden" name="mobile" value="{{mobile}}">
+                        <input type="hidden" name="area" value="{{area}}">
+                        <input type="hidden" name="token" value="{{token}}">
+                        <input type="hidden" name="create_time" value="{{create_time}}">
+                        <input id="reset-pwd-btn" class="btn reset-pwd-btn" type="submit" value="提交" disabled="">
+                    </li>
+                </ul>
+            </form>
+        </div>
+    {{/ resetPwd}}
+</div>
diff --git a/apps/passport/views/action/back/reset-success.hbs b/apps/passport/views/action/back/reset-success.hbs
new file mode 100644
index 0000000..ca0d71e
--- /dev/null
+++ b/apps/passport/views/action/back/reset-success.hbs
@@ -0,0 +1,27 @@
+<div class="reset-success-page back-page passport-page yoho-page clearfix">
+    {{# resetSuccess}}
+        {{> back/cover}}
+        <div class="content">
+            <div class="success-text">
+                <i class="iconfont">&#xe620;</i><span>恭喜!</span>密码修改成功,&nbsp;<span id="count-down">5</span>&nbsp;&nbsp;秒后将跳转至首页
+            </div>
+            <a class="success-btn" href="/">随便逛逛</a>
+        </div>
+    {{/ resetSuccess}}
+</div>
+<script type="text/javascript">
+    (function() {
+        var count = 5,
+                countDown = document.getElementById('count-down');
+
+
+        var timer = setInterval(function(){
+            if (count > 1) {
+                count--;
+                countDown.innerHTML = count;
+            } else {
+                location.href = '/';
+            }
+        }, 1000);
+    })();
+</script>
diff --git a/apps/passport/views/action/back/send-email.hbs b/apps/passport/views/action/back/send-email.hbs
new file mode 100644
index 0000000..aa85741
--- /dev/null
+++ b/apps/passport/views/action/back/send-email.hbs
@@ -0,0 +1,13 @@
+<div class="send-email-page passport-page yoho-page clearfix">
+    {{# sendEmail}}
+        {{> back/cover}}
+        <div class="content">
+            <div class="send-tips"><i class="iconfont">&#xe61e;</i>我们已经把验证邮件发送至您的邮箱,请在24小时内通过邮件内的<br>链接继续设置新的密码。</div>
+            <div class="no-find">没有收到?到您邮箱的垃圾邮件里找找。</div>
+            <div class="to-my-email">
+                <a href="{{email}}" target="_blank" class="btn_b_ar_r">去我的邮箱&gt;</a>
+            </div>
+
+        </div>
+    {{/ sendEmail}}
+</div>
diff --git a/apps/passport/views/action/back/verification.hbs b/apps/passport/views/action/back/verification.hbs
new file mode 100644
index 0000000..9933306
--- /dev/null
+++ b/apps/passport/views/action/back/verification.hbs
@@ -0,0 +1,34 @@
+<div class="verification-page back-page passport-page yoho-page clearfix">
+    {{# verification}}
+        {{> back/cover}}
+        <div class="content">
+            <form id="verification-form" class="verification-form" method="POST" action="/passport/back/backmobile">
+                <ul>
+                    <li class="head-title">验证身份</li>
+                    <li class="po-re">
+                        <label class="pn-label">手机号码</label>
+                        <span class="country-code">+{{area}}</span>
+                        <span class="phone-num">{{mobile}}</span>
+                    </li>
+                    <li class="po-re">
+                        <input id="captcha" class="input va captcha" type="text" name="code" maxlength="4">
+                        <input id="send-captcha" class="btn send-captcha" type="button" value="发送验证码" disabled="">
+                        <div id="captcha-tip" class="captcha-tips"><i class="iconfont">&#xe61f;</i>验证码已发送至您的手机,请查收</div>
+                    <span id="err-tip" class="err-tip hide">
+                        <i></i>
+                        <em>请输入验证码</em>
+                    </span>
+                    </li>
+                    <li>
+                        <input name="area" id="area" type="hidden" value="{{area}}">
+                        <input name="mobile" id="mobile" type="hidden" value="{{mobile}}">
+                        <input name="verifyCode" id="captchaPic" type="hidden" value="{{verifyCode}}">
+                        <input name="refer" id="refer" type="hidden" value="">
+                        <a id="next-step" class="btn next-step disable" href="javascript:;">下一步</a>
+                        <!-- <input id="next-step" class="btn next-step disable" type="submit" value="下一步" disabled=""> -->
+                    </li>
+                </ul>
+            </form>
+        </div>
+    {{/ verification}}
+</div>
diff --git a/apps/passport/views/partial/back/cover.hbs b/apps/passport/views/partial/back/cover.hbs
new file mode 100644
index 0000000..4da629b
--- /dev/null
+++ b/apps/passport/views/partial/back/cover.hbs
@@ -0,0 +1,11 @@
+<div class="passport-cover">
+    <div class="cover-content">
+        {{#if coverHref}}
+            <a href="{{coverHref}}" target="_bank">
+                <img class="cover-img" src="{{coverImg}}">
+            </a>
+        {{^}}
+            <img class="cover-img" src="{{coverImg}}">
+        {{/if}}
+    </div>
+</div>
diff --git a/apps/product/controllers/detail.js b/apps/product/controllers/detail.js
index fbae45d..96d9d50 100644
--- a/apps/product/controllers/detail.js
+++ b/apps/product/controllers/detail.js
@@ -6,10 +6,7 @@
 
 'use strict';
 
-
-const library = '../../../library';
-const helpers = require(`${library}/helpers`);
-
+const helpers = global.yoho.helpers;
 const mRoot = '../models';
 const service = require(`${mRoot}/detail-service`);
 const detailHelper = require('../models/detail-helper');
@@ -17,13 +14,11 @@ const detailHelper = require('../models/detail-helper');
 /**
  * 单个商品详情
  */
-module.exports.showMain = (req, res, next) => {
+const showMain = (req, res, next) => {
     // TODO: vipLevel = 0; // 用户等级
 
     let pid = 204503;
-
     let uid = req.user.uid || '';
-
     let channel = detailHelper.COOKIE_NAME_BOYS;
 
     if (req.cookies._Channel) {
@@ -41,67 +36,70 @@ module.exports.showMain = (req, res, next) => {
         gender: gender,
         uid: uid,
         vipLevel: 0
-    }).then((result) => {
-        res.render('product/detail', Object.assign({
-            module: 'product',
-            page: 'detail'
-        }, result));
-    }).catch(next);
+    })
+        .then(result => {
+            res.render('product/detail', Object.assign({
+                module: 'product',
+                page: 'detail'
+            }, result));
+        })
+        .catch(next);
 };
 
 /**
  * 获取热区图
  */
-module.exports.indexHotArea = (req, res, next) => {
+const indexHotArea = (req, res, next) => {
     let pid = req.query.productId || 0;
 
-    service.indexHotAreaAsync(pid).then(result => {
-        res.render('product/hotarea', {
-            hotArea: result,
-            layout: false
-        });
-    }).catch(next);
+    service.indexHotAreaAsync(pid)
+        .then(result => {
+            res.render('product/hotarea', {
+                hotArea: result,
+                layout: false
+            });
+        })
+        .catch(next);
 };
 
 /**
  * 获得评论列表
  * json
  */
-module.exports.indexComment = (req, res, next) => {
+const indexComment = (req, res, next) => {
     let pid = req.query.productId || 0;
-
     let page = req.query.page || 1;
-
     let size = req.query.size || 10;
 
-    service.indexCommentAsync(pid, page, size).then(result => {
-        res.json(result);
-    }).catch(next);
+    service.indexCommentAsync(pid, page, size)
+        .then(result => {
+            res.json(result);
+        })
+        .catch(next);
 };
 
 /**
  * 获得咨询列表
  * json
  */
-module.exports.indexConsult = (req, res, next) => {
+const indexConsult = (req, res, next) => {
     let uid = req.user.uid || '';
-
     let pid = req.query.productId || 0;
-
     let page = req.query.page || 1;
-
     let size = req.query.size || 10;
 
-    service.indexConsultAsync(uid, pid, page, size).then(result => {
-        res.json(result);
-    }).catch(next);
+    service.indexConsultAsync(uid, pid, page, size)
+        .then(result => {
+            res.json(result);
+        })
+        .catch(next);
 };
 
 /**
  * 新建咨询
  * json
  */
-module.exports.createConsult = (req, res, next) => {
+const createConsult = (req, res, next) => {
     let uid = req.user.uid || '';
 
     let pid = req.body.productId || 0;
@@ -109,9 +107,11 @@ module.exports.createConsult = (req, res, next) => {
     let content = req.body.content;
 
     if (content && uid) {
-        service.createConsultAsync(uid, pid, content).then(result => {
-            res.json(result);
-        }).catch(next);
+        service.createConsultAsync(uid, pid, content)
+            .then(result => {
+                res.json(result);
+            })
+            .catch(next);
 
     } else if (!content) {
         res.json({
@@ -124,7 +124,7 @@ module.exports.createConsult = (req, res, next) => {
             code: 403,
             message: '用户没有登录',
             data: {
-                url: helpers.urlFormat('/signin.html')
+                url: helpers.urlFormat('/signin')
             }
         });
 
@@ -138,4 +138,11 @@ module.exports.createConsult = (req, res, next) => {
 
 };
 
+module.exports = {
+    showMain,
+    indexHotArea,
+    indexComment,
+    indexConsult,
+    createConsult
+};
 
diff --git a/apps/product/controllers/favorite.js b/apps/product/controllers/favorite.js
index 3723f99..2390290 100644
--- a/apps/product/controllers/favorite.js
+++ b/apps/product/controllers/favorite.js
@@ -3,30 +3,29 @@
  */
 'use strict';
 
-const library = '../../../library';
-const helpers = require(`${library}/helpers`);
-
+const helpers = global.yoho.helpers;
 const brandService = require('../models/favorite-brand-service');
 const productService = require('../models/favorite-product-service');
 
 /**
  * 收藏品牌ajax请求
  */
-module.exports.changeFavoriteBrand = (req, res, next) => {
+const changeFavoriteBrand = (req, res, next) => {
     let uid = req.user.uid || '';
-
     let brandId = req.body.brandId;
 
     if (uid && brandId) {
-        brandService.changeAsync(uid, brandId).then(result => {
-            res.json(result);
-        }).catch(next);
+        brandService.changeAsync(uid, brandId)
+            .then(result => {
+                res.json(result);
+            })
+            .catch(next);
     } else if (!uid) {
         res.json({
             code: 403,
             message: '用户ID不存在',
             data: {
-                url: helpers.urlFormat('signin.html')
+                url: helpers.urlFormat('/signin')
             }
         });
     } else {
@@ -37,24 +36,24 @@ module.exports.changeFavoriteBrand = (req, res, next) => {
     }
 };
 
-module.exports.collectProduct = (req, res, next) => {
+const collectProduct = (req, res, next) => {
     let uid = req.user.uid || '';
-
     let pid = req.body.productId;
-
     let type = req.body.type || 'add';
 
     if (uid && pid) {
         switch (type) {
             case 'add':
                 {
-                    productService.createAsync(uid, pid).then(result => {
+                    productService.createAsync(uid, pid)
+                    .then(result => {
                         if (result.code === 413) {
                             result.message = '该商品已经收藏';
                         }
 
                         res.json(result);
-                    }).catch(next);
+                    })
+                    .catch(next);
                     break;
                 }
             case 'cancel':
@@ -77,7 +76,7 @@ module.exports.collectProduct = (req, res, next) => {
             code: 403,
             message: '用户没有登录',
             data: {
-                url: helpers.urlFormat('signin.html')
+                url: helpers.urlFormat('/signin')
             }
         });
     } else {
@@ -87,3 +86,8 @@ module.exports.collectProduct = (req, res, next) => {
         });
     }
 };
+
+module.exports = {
+    changeFavoriteBrand,
+    collectProduct
+};
diff --git a/apps/product/controllers/list.js b/apps/product/controllers/list.js
index 9daa350..b4c3d38 100644
--- a/apps/product/controllers/list.js
+++ b/apps/product/controllers/list.js
@@ -23,7 +23,7 @@ exports.getProductPic = (req, res) => {
  * @param  {[type]} res [description]
  * @return {[type]}     [description]
  */
-exports.index = (req, res) => {
+exports.index = (req, res, next) => {
     let params = Object.assign({
         order: 's_t_asc,s_s_asc'
     }, req.query);
@@ -49,9 +49,6 @@ exports.index = (req, res) => {
         responseData.resultShow = JSON.stringify(result, null, 4);
         responseData.headerData = headerData;
         res.render('sale/other', responseData);
-    }).catch(() => {
-        responseData.pageErr = true;
-        res.render('error', responseData);
-    });
+    }).catch(next);
 
 };
diff --git a/apps/product/controllers/outlets.js b/apps/product/controllers/outlets.js
index 9c2616d..70c57d3 100644
--- a/apps/product/controllers/outlets.js
+++ b/apps/product/controllers/outlets.js
@@ -14,23 +14,18 @@ const outlets = require(`${mRoot}/outlets`);
  * @param  {[type]} res [description]
  * @return {[type]}     [description]
  */
-exports.index = (req, res) => {
+exports.index = (req, res, next) => {
     let resData = {
         module: 'product',
         page: 'outlets'
     };
 
-    let channel = req.query.channel || req.cookies._Channel || 'boys';
+    let channel = req.query.channel || req.cookies._Channel || 'otltIdxDflt';
 
     outlets.getOutletsIndexData(req.query, channel).then(result => {
-        resData.result = result;
-        resData.headerData = result.headerData;
-        resData.resultShow = JSON.stringify(result, null, 4);
+        Object.assign(resData, result);
         res.render('outlets/index', resData);
-    }).catch(() => {
-        resData.pageErr = true;
-        res.render('error', resData);
-    });
+    }).catch(next);
 
 };
 
@@ -40,18 +35,16 @@ exports.index = (req, res) => {
  * @param  {[type]} res [description]
  * @return {[type]}     [description]
  */
-exports.channel = (req, res) => {
+exports.channel = (req, res, next) => {
     let resData = {
         module: 'product',
         page: 'outlets'
     };
+    let channel = req.params.channel || req.query.channel || req.cookies._Channel || 'boys';
 
-    outlets.getOutletsChannelData(req.query, req.params.channel).then(result => {
+    outlets.getOutletsChannelData(req.query, channel).then(result => {
         res.render('outlets/channel', Object.assign(resData, result));
-    }).catch(() => {
-        resData.pageErr = true;
-        res.render('error', resData);
-    });
+    }).catch(next);
 };
 
 /**
@@ -60,7 +53,7 @@ exports.channel = (req, res) => {
  * @param  {[type]} res [description]
  * @return {[type]}     [description]
  */
-exports.special = (req, res) => {
+exports.special = (req, res, next) => {
     let params = req.query;
     let channel = req.query.channel || req.cookies._Channel || 'boys';
     let resData = {
@@ -72,15 +65,9 @@ exports.special = (req, res) => {
         resData.pageErr = true;
     }
 
-    // 模拟数据
-    // resData = outletsSimulation.special();
-
     outlets.getOutletsSpecialData(params, channel).then(result => {
         res.render('outlets/special', Object.assign(resData, result));
-    }).catch(() => {
-        resData.pageErr = true;
-        res.render('error', resData);
-    });
+    }).catch(next);
 };
 
 /**
@@ -89,7 +76,7 @@ exports.special = (req, res) => {
  * @param  {[type]} res [description]
  * @return {[type]}     [description]
  */
-exports.list = (req, res) => {
+exports.list = (req, res, next) => {
     let params = req.query;
 
     let channel = req.query.channel || req.cookies._Channel || 'boys';
@@ -102,11 +89,7 @@ exports.list = (req, res) => {
     };
 
     outlets.getOutletsCategoryData(params, channel).then((result) => {
-        responseData.resultShow = JSON.stringify(result, null, 4);
         res.render('sale/other', Object.assign(responseData, result));
-    }).catch(() => {
-        responseData.pageErr = true;
-        res.render('error', responseData);
-    });
+    }).catch(next);
 
 };
diff --git a/apps/product/controllers/sale.js b/apps/product/controllers/sale.js
index e5740da..ce8b865 100644
--- a/apps/product/controllers/sale.js
+++ b/apps/product/controllers/sale.js
@@ -20,8 +20,7 @@ exports.index = (req, res) => {
 
     let responseData = {
         module: 'product',
-        page: 'sale',
-        footerTop: true
+        page: 'sale'
     };
 
     // 真实数据输出
@@ -52,8 +51,7 @@ exports.discount = (req, res) => {
 
     let responseData = {
         module: 'product',
-        page: 'sale',
-        footerTop: true
+        page: 'sale'
     };
 
     sale.getSaleDiscountData(params, channel).then((result) => {
@@ -86,8 +84,7 @@ exports.vip = (req, res) => {
 
     let responseData = {
         module: 'product',
-        page: 'sale',
-        footerTop: true
+        page: 'sale'
     };
 
     sale.getSaleOthersData(params, channel).then((result) => {
@@ -110,7 +107,6 @@ exports.vip = (req, res) => {
  */
 exports.newSale = (req, res) => {
     let params = Object.assign({
-        saleType: '3',
         order: 's_t_desc'
     }, req.query);
 
@@ -118,8 +114,7 @@ exports.newSale = (req, res) => {
 
     let responseData = {
         module: 'product',
-        page: 'sale',
-        footerTop: true
+        page: 'sale'
     };
 
     sale.getSaleOthersData(params, channel).then((result) => {
@@ -148,8 +143,7 @@ exports.breakingYards = (req, res) => {
 
     let responseData = {
         module: 'product',
-        page: 'sale',
-        footerTop: true
+        page: 'sale'
     };
 
     sale.getSalebreakingYardsData(params, channel).then((result) => {
diff --git a/apps/product/index.js b/apps/product/index.js
index 53e26b1..2f3d33f 100644
--- a/apps/product/index.js
+++ b/apps/product/index.js
@@ -10,22 +10,21 @@ var express = require('express'),
 
 var app = express();
 
+// set view engin
 var doraemon = path.join(__dirname, '../../doraemon/views'); // parent view root
-var partials = path.join(__dirname, './views');
 
-app.on('mount', function (parent) {
+app.on('mount', function(parent) {
     delete parent.locals.settings; // 不继承父 App 的设置
     Object.assign(app.locals, parent.locals);
 });
 
-// set view engin
 app.set('views', path.join(__dirname, 'views/action'));
 app.engine('.hbs', hbs({
     extname: '.hbs',
     defaultLayout: 'layout',
     layoutsDir: doraemon,
-    partialsDir: [`${partials}/partial`, `${doraemon}/partial`],
-    helpers: require('../../library/helpers')
+    partialsDir: [path.join(__dirname, 'views/partial'), `${doraemon}/partial`],
+    helpers: global.yoho.helpers
 }));
 
 // router
diff --git a/apps/product/models/brand-api.js b/apps/product/models/brand-api.js
index 33ad04c..2c3152e 100644
--- a/apps/product/models/brand-api.js
+++ b/apps/product/models/brand-api.js
@@ -1,25 +1,29 @@
-'use strict';
+/**
+ * Created by TaoHuang on 2016/6/14.
+ */
 
-const library = '../../../library';
-const API = require(`${library}/api`).API;
-const sign = require(`${library}/sign`);
+'use strict';
 
-const api = new API();
+const api = global.yoho.API;
 
-module.exports.getBannerInfoAsync = (bid) => {
-    return api.get('', sign.apiSign({
+const getBannerInfoAsync = bid => {
+    return api.get('', {
         method: 'web.brand.banner',
         brand_id: bid
-    }));
+    });
 
 };
 
-module.exports.getBrandLogoByDomainAsync = (domain) => {
-    return api.get('', sign.apiSign({
+const getBrandLogoByDomainAsync = domain => {
+    return api.get('', {
         domain: domain,
         method: 'web.brand.byDomain'
-    }));
+    });
 };
 
+module.exports = {
+    getBannerInfoAsync,
+    getBrandLogoByDomainAsync
+};
 
 
diff --git a/apps/product/models/brand-service.js b/apps/product/models/brand-service.js
index d97e877..ac2e2fb 100644
--- a/apps/product/models/brand-service.js
+++ b/apps/product/models/brand-service.js
@@ -5,10 +5,9 @@
 
 const Promise = require('bluebird');
 const co = Promise.coroutine;
-
 const api = require('./brand-api');
 
-module.exports.getBrandByDomainAsync = (domain) => {
+const getBrandByDomainAsync = domain => {
     return co(function*() {
         let brandInfo = yield api.getBrandLogoByDomainAsync(domain);
 
@@ -33,4 +32,7 @@ module.exports.getBrandByDomainAsync = (domain) => {
     })();
 };
 
-module.exports.getBannerInfoAsync = api.getBannerInfoAsync;
+module.exports = {
+    getBrandByDomainAsync,
+    getBannerInfoAsync: api.getBannerInfoAsync
+};
diff --git a/apps/product/models/detail-comment-api.js b/apps/product/models/detail-comment-api.js
index d85ee66..16d6b4b 100644
--- a/apps/product/models/detail-comment-api.js
+++ b/apps/product/models/detail-comment-api.js
@@ -4,25 +4,21 @@
 
 'use strict';
 
-const library = '../../../library';
-const API = require(`${library}/api`).API;
-const sign = require(`${library}/sign`);
-const log = require(`${library}/logger`);
-
-const api = new API();
-
+const api = global.yoho.API;
 
 /**
  * 获取评论
  */
-module.exports.indexAsync = function(pid, page, size) {
-    return api.get('', sign.apiSign({
+const indexAsync = (pid, page, size) => {
+    return api.get('', {
         method: 'app.comment.li',
         product_id: pid,
         page: page,
         limit: size
-    })).catch(log.error);
+    });
 };
 
-
+module.exports = {
+    indexAsync
+};
 
diff --git a/apps/product/models/detail-comment-service.js b/apps/product/models/detail-comment-service.js
index 10495aa..24e3143 100644
--- a/apps/product/models/detail-comment-service.js
+++ b/apps/product/models/detail-comment-service.js
@@ -8,23 +8,19 @@ const Promise = require('bluebird');
 const co = Promise.coroutine;
 const _ = require('lodash');
 
-const library = '../../../library';
-const helpers = require(`${library}/helpers`);
-
+const helpers = global.yoho.helpers;
 const api = require('./detail-comment-api');
-
 const detailHelper = require('./detail-helper');
 
 
-module.exports.indexAsync = (pid, page, size) => {
+const indexAsync = (pid, page, size) => {
     return co(function *() {
         let commentList = yield api.indexAsync(pid, page, size);
 
-        if (!commentList.code || !commentList.code !== 200) {
+        if (!commentList.code && commentList.code === 200) {
             return [];
         }
 
-
         return commentList.data.map(value => {
             let item = {};
 
@@ -48,3 +44,7 @@ module.exports.indexAsync = (pid, page, size) => {
 
     })();
 };
+
+module.exports = {
+    indexAsync
+};
diff --git a/apps/product/models/detail-consult-api.js b/apps/product/models/detail-consult-api.js
index a37af46..c4221a5 100644
--- a/apps/product/models/detail-consult-api.js
+++ b/apps/product/models/detail-consult-api.js
@@ -4,18 +4,12 @@
 
 'use strict';
 
-
-const library = '../../../library';
-const API = require(`${library}/api`).API;
-const sign = require(`${library}/sign`);
-const log = require(`${library}/logger`);
-
-const api = new API();
+const api = global.yoho.API;
 
 /**
  * 咨询内容列表
  */
-module.exports.indexAsync = function (uid, pid, page, size) {
+const indexAsync = function(uid, pid, page, size) {
     let param = {};
 
     param.method = 'app.consult.li';
@@ -28,17 +22,22 @@ module.exports.indexAsync = function (uid, pid, page, size) {
     param.page = page;
     param.limit = size;
 
-    return api.get('', sign.apiSign(param)).catch(log.error);
+    return api.get('', param);
 };
 
 /**
  * 添加咨询操作
  */
-module.exports.createAsync = function (uid, pid, content) {
-    return api.post('', sign.apiSign({
+const createAsync = function(uid, pid, content) {
+    return api.post('', {
         method: 'h5.consult.add',
         product_id: pid,
         content: content,
         uid: uid
-    })).catch(log.error);
+    });
+};
+
+module.exports = {
+    indexAsync,
+    createAsync
 };
diff --git a/apps/product/models/detail-consult-service.js b/apps/product/models/detail-consult-service.js
index daa5256..c9e259f 100644
--- a/apps/product/models/detail-consult-service.js
+++ b/apps/product/models/detail-consult-service.js
@@ -10,8 +10,7 @@ const co = Promise.coroutine;
 const api = require('./detail-consult-api');
 const detailHelper = require('./detail-helper');
 
-
-module.exports.indexAsync = (uid, pid, page, size) => {
+const indexAsync = (uid, pid, page, size) => {
     return co(function *() {
         let consultList = yield api.indexAsync(uid, pid, page, size);
 
@@ -37,4 +36,7 @@ module.exports.indexAsync = (uid, pid, page, size) => {
     })();
 };
 
-module.exports.createAsync = api.createAsync;
+module.exports = {
+    indexAsync,
+    createAsync: api.createAsync
+};
diff --git a/apps/product/models/detail-helper.js b/apps/product/models/detail-helper.js
index dc14b8e..f7df998 100644
--- a/apps/product/models/detail-helper.js
+++ b/apps/product/models/detail-helper.js
@@ -7,22 +7,21 @@
 const moment = require('moment');
 
 /* COOKIE标识访问的是男生频道 */
-const COOKIE_NAME_BOYS = module.exports.COOKIE_NAME_BOYS = 'boys';
-const COOKIE_DOMAIN = module.exports.COOKIE_DOMAIN = '.yohobuy.com';
+const COOKIE_NAME_BOYS = 'boys';
+const COOKIE_DOMAIN = '.yohobuy.com';
 
 // 商品详情页的默认头像
-module.exports.DEFAULT_AVATAR_ICO = 'http://static.yohobuy.com/images/v3/boy.jpg';
+const DEFAULT_AVATAR_ICO = 'http://static.yohobuy.com/images/v3/boy.jpg';
+const IMAGE_SERVICE_URL = 'http://head.static.yhbimg.com/yhb-head/';
 
-module.exports.IMAGE_SERVICE_URL = 'http://head.static.yhbimg.com/yhb-head/';
-
-module.exports.setSwitchToCookie = (res) => {
+const setSwitchToCookie = (res) => {
     res.cookie('_Channel', COOKIE_NAME_BOYS, {
         domain: COOKIE_DOMAIN,
         maxAge: moment.duration(300, 'days').seconds()
     });
 };
 
-module.exports.getGenderByCookie = (req) => {
+const getGenderByCookie = (req) => {
     let gender = null;
 
     let channel = req.cookies._Channel || 'boys';
@@ -46,3 +45,13 @@ module.exports.getGenderByCookie = (req) => {
 
     return gender;
 };
+
+module.exports = {
+    COOKIE_NAME_BOYS,
+    COOKIE_DOMAIN,
+    DEFAULT_AVATAR_ICO,
+    IMAGE_SERVICE_URL,
+    setSwitchToCookie,
+    getGenderByCookie
+};
+
diff --git a/apps/product/models/detail-hotarea-api.js b/apps/product/models/detail-hotarea-api.js
index 928bbd1..d4b36b4 100644
--- a/apps/product/models/detail-hotarea-api.js
+++ b/apps/product/models/detail-hotarea-api.js
@@ -2,19 +2,20 @@
  * Created by TaoHuang on 2016/6/13.
  */
 
-const library = '../../../library';
-const API = require(`${library}/api`).API;
-const sign = require(`${library}/sign`);
-const log = require(`${library}/logger`);
+'use strict';
 
-const api = new API();
+const api = global.yoho.API;
 
 /**
  * 获取商品的热区
  */
-module.exports.indexAsync = (pid) => {
-    return api.get('', sign.apiSign({
+const indexAsync = pid => {
+    return api.get('', {
         method: 'web.productCollocation.list',
         product_id: pid
-    })).catch(log.error);
+    });
+};
+
+module.exports = {
+    indexAsync
 };
diff --git a/apps/product/models/detail-hotarea-service.js b/apps/product/models/detail-hotarea-service.js
index cf6587c..af7ee52 100644
--- a/apps/product/models/detail-hotarea-service.js
+++ b/apps/product/models/detail-hotarea-service.js
@@ -7,16 +7,13 @@
 const Promise = require('bluebird');
 const co = Promise.coroutine;
 const _ = require('lodash');
-
-const library = '../../../library';
-const helpers = require(`${library}/helpers`);
-
+const helpers = global.yoho.helpers;
 const api = require('./detail-hotarea-api');
 
 /**
  * 获取某一个商品的热区数据
  */
-module.exports.indexAsync = (pid) => {
+const indexAsync = pid => {
     return co(function *() {
         let data = yield api.indexAsync(pid);
 
@@ -80,3 +77,7 @@ module.exports.indexAsync = (pid) => {
 
     })();
 };
+
+module.exports = {
+    indexAsync
+};
diff --git a/apps/product/models/detail-product-api.js b/apps/product/models/detail-product-api.js
index 3ec6ad2..d2c4aee 100644
--- a/apps/product/models/detail-product-api.js
+++ b/apps/product/models/detail-product-api.js
@@ -1,52 +1,49 @@
-'use strict';
-
-
-const library = '../../../library';
-const API = require(`${library}/api`).API;
-const sign = require(`${library}/sign`);
-const log = require(`${library}/logger`);
+/**
+ * Created by TaoHuang on 2016/6/14.
+ */
 
-const api = new API();
+'use strict';
 
+const api = global.yoho.API;
 
-module.exports.getProductBannerAsync = function(pid, clientType) {
+const getProductBannerAsync = (pid, clientType) => {
     clientType = clientType || 'web';
-    return api.get('', sign.apiSign({
+    return api.get('', {
         method: 'web.productBanner.data',
         product_id: pid,
         client_type: clientType
-    })).catch(log.error);
+    });
 
 };
 
-module.exports.sizeInfoAsync = function(skn) {
-    return api.get('', sign.apiSign({
+const sizeInfoAsync = skn => {
+    return api.get('', {
         method: 'h5.product.intro',
         productskn: skn
-    })).catch(log.error);
+    });
 
 };
 
-module.exports.getProductComfortAsync = function(pid) {
-    return api.get('', sign.apiSign({
+const getProductComfortAsync = pid => {
+    return api.get('', {
         method: 'web.productComfort.data',
         product_id: pid
-    })).catch(log.error);
+    });
 
 };
 
-module.exports.getProductModelCardAsync = function(pid) {
-    return api.get('', sign.apiSign({
+const getProductModelCardAsync = pid => {
+    return api.get('', {
         method: 'web.productModelcard.list',
         product_id: pid
-    })).catch(log.error);
+    });
 };
 
-module.exports.getProductModelTryAsync = function(skn) {
-    return api.get('', sign.apiSign({
+const getProductModelTryAsync = skn => {
+    return api.get('', {
         method: 'web.productModelTry.data',
         product_skn: skn
-    })).catch(log.error);
+    });
 };
 
 /**
@@ -54,14 +51,21 @@ module.exports.getProductModelTryAsync = function(skn) {
  * @param pid
  * @returns {Promise.<type>}
  */
-module.exports.getProductInfo = function(pid) {
-    return api.get('', sign.apiSign({
+const getProductInfo = pid => {
+    return api.get('', {
         method: 'h5.product.data',
         productId: pid
-    })).catch(console.log);
+    });
 };
 
-
+module.exports = {
+    getProductBannerAsync,
+    sizeInfoAsync,
+    getProductComfortAsync,
+    getProductModelCardAsync,
+    getProductModelTryAsync,
+    getProductInfo
+};
 
 
 
diff --git a/apps/product/models/favorite-brand-api.js b/apps/product/models/favorite-brand-api.js
index 1044e35..edca2f6 100644
--- a/apps/product/models/favorite-brand-api.js
+++ b/apps/product/models/favorite-brand-api.js
@@ -1,22 +1,26 @@
-'use strict';
+/**
+ * Created by TaoHuang on 2016/6/14.
+ */
 
-const library = '../../../library';
-const ServiceAPI = require(`${library}/api`).ServiceAPI;
-const sign = require(`${library}/sign`);
-const log = require(`${library}/logger`);
+'use strict';
 
-const serviceAPI = new ServiceAPI();
+const serviceAPI = global.yoho.ServiceAPI;
 
-module.exports.isFavoriteAsync = function(uid, bid) {
-    return serviceAPI.get('shops/service/v1/favorite/getUidBrandFav', sign.apiSign({
+const isFavoriteAsync = (uid, bid) => {
+    return serviceAPI.get('shops/service/v1/favorite/getUidBrandFav', {
         uid: uid,
         brandId: bid
-    })).catch(log.error);
+    });
 };
 
-module.exports.changeAsync = function(uid, brandId) {
-    return serviceAPI.get('guang/service/v2/favorite/toggleBrand', sign.apiSign({
+const changeAsync = (uid, brandId) => {
+    return serviceAPI.get('guang/service/v2/favorite/toggleBrand', {
         uid: uid,
         brand_id: brandId
-    })).catch(log.error);
+    });
+};
+
+module.exports = {
+    isFavoriteAsync,
+    changeAsync
 };
diff --git a/apps/product/models/favorite-brand-service.js b/apps/product/models/favorite-brand-service.js
index 94b2d83..10fd121 100644
--- a/apps/product/models/favorite-brand-service.js
+++ b/apps/product/models/favorite-brand-service.js
@@ -4,9 +4,7 @@
 
 'use strict';
 
-const favoriteBrandAPI = require('./favorite-brand-api');
+const api = require('./favorite-brand-api');
 
-module.exports.changeAsync = favoriteBrandAPI.changeAsync;
-
-module.exports.isFavoriteAsync = favoriteBrandAPI.isFavoriteAsync;
+module.exports = api;
 
diff --git a/apps/product/models/favorite-product-api.js b/apps/product/models/favorite-product-api.js
index 59d3ac0..19b977b 100644
--- a/apps/product/models/favorite-product-api.js
+++ b/apps/product/models/favorite-product-api.js
@@ -2,36 +2,39 @@
  * Created by TaoHuang on 2016/6/13.
  */
 
-const library = '../../../library';
-const API = require(`${library}/api`).API;
-const sign = require(`${library}/sign`);
-const log = require(`${library}/logger`);
+'use strict';
 
-const api = new API();
+const api = global.yoho.API;
 
-module.exports.isFavoriteAsync = function(uid, pid) {
-    return api.get('', sign.apiSign({
+const isFavoriteAsync = (uid, pid) => {
+    return api.get('', {
         method: 'app.favorite.isFavorite',
         id: pid,
         uid: uid,
         type: 'product'
-    })).catch(log.error);
+    });
 };
 
-module.exports.createAsync = function(uid, pid) {
-    return api.get('', sign.apiSign({
+const createAsync = (uid, pid) => {
+    return api.get('', {
         method: 'app.favorite.add',
         id: pid,
         uid: uid,
         type: 'product'
-    })).catch(log.error);
+    });
 };
 
-module.exports.deleteAsync = function(uid, pid) {
-    return api.get('', sign.apiSign({
+const deleteAsync = (uid, pid) => {
+    return api.get('', {
         method: 'app.favorite.cancel',
         fav_id: pid,
         uid: uid,
         type: 'product'
-    })).catch(log.error);
+    });
+};
+
+module.exports = {
+    isFavoriteAsync,
+    createAsync,
+    deleteAsync
 };
diff --git a/apps/product/models/home-service.js b/apps/product/models/home-service.js
index fe27299..1ee69fd 100644
--- a/apps/product/models/home-service.js
+++ b/apps/product/models/home-service.js
@@ -1,13 +1,16 @@
+/**
+ * Created by TaoHuang on 2016/6/14.
+ */
+
 'use strict';
 
-const library = '../../../library';
-const helpers = require(`${library}/helpers`);
+const helpers = global.yoho.helpers;
 
 /**
  * 获取首页频道nav
  */
-// index home
-module.exports.getHomeChannelNav = function(channel) {
+
+const getHomeChannelNav = (channel) => {
     let home = null;
 
     switch (channel) {
@@ -44,3 +47,7 @@ module.exports.getHomeChannelNav = function(channel) {
         pathTitle: 'YOHO!有货'
     };
 };
+
+module.exports = {
+    getHomeChannelNav
+};
diff --git a/apps/product/models/list.js b/apps/product/models/list.js
index 90f4792..3ae7a23 100644
--- a/apps/product/models/list.js
+++ b/apps/product/models/list.js
@@ -6,46 +6,54 @@
  */
 
 'use strict';
-const library = '../../../library';
 const utils = '../../../utils';
-const API = require(`${library}/api`).API;
-const api = new API();
+const api = global.yoho.API;
+const saleApi = require('./sale-api');
 const outletsApi = require('./outlets-api');
 const productProcess = require(`${utils}/product-process`);
 const publicHandler = require('./public-handler');
 
-// const headerModel = require('../../../doraemon/models/header');
-
 /**
  * 获取商品列表商品数据 Controller 调用
  * @param  {[type]} params [常规参数]
  * @param  {[type]} extra  [左侧列表额外要拼接的参数]
  * @return {[type]}        [description]
  */
-exports.getSaleOthersData = (params, channel) => {
-
-    return api.all([
-        // headerModel.requestHeaderData(channel),
-        outletsApi.getOutletsGoodsList(Object.assign(params, { channel: channel })),
-        outletsApi.getOutletsGoodsList({limit: '1', channel: channel })
-    ]).then(result => {
+exports.getListData = (params, channel) => {
+    let apiArr = [];
+
+    if (params.productPool) {
+        // 奥莱活动页调用app.search.sales
+        apiArr = [
+            saleApi.getSaleGoodsList({limit: '1', channel: channel }),
+            saleApi.getSaleGoodsList(Object.assign(params, { channel: channel }))
+        ];
+    } else {
+        // 奥莱品类页调用app.search.li
+        apiArr = [
+            outletsApi.getOutletsGoodsList({limit: '1', channel: channel }),
+            outletsApi.getOutletsGoodsList(Object.assign(params, { channel: channel }))
+        ];
+    }
+    return api.all(apiArr).then(result => {
         let finalResult = {};
 
         // 获取商品数据和顶部筛选条件
         if (result[0].code === 200) {
-            finalResult.goods = productProcess.processProductList(result[0].data.product_list);
+            finalResult.leftContent = publicHandler.handleSaleSortData(result[0].data.filter.group_sort, params);
+            finalResult.pathNav = publicHandler.handlePathNavData(result[0].data.filter.group_sort, params);
+
         }
 
         // 获取左侧类目数据
         if (result[1].code === 200) {
-            finalResult.leftContent = publicHandler.handleSaleSortData(result[1].data.filter.group_sort, params);
-            finalResult.filters = publicHandler.handleSaleFilterData(result[1].data.filter, params);
-            finalResult.pathNav = publicHandler.handlePathNavData(result[1].data.filter.group_sort, params);
-
-            // 处理排序数据
-            finalResult.opts = publicHandler.handleSaleOptsData(params, result[1].data.total);
-            finalResult.totalCount = result[1].data.total;
-            finalResult.pager = publicHandler.handleSalePagerData(result[1].data.total, params);
+            Object.assign(finalResult, {
+                filters: publicHandler.handleSaleFilterData(result[1].data.filter, params),
+                opts: publicHandler.handleSaleOptsData(params, result[1].data.total),
+                totalCount: result[1].data.total,
+                footPager: publicHandler.handlePagerData(result[1].data.total, params),
+                goods: productProcess.processProductList(result[1].data.product_list)
+            });
         }
 
         return finalResult;
diff --git a/apps/product/models/outlets-api.js b/apps/product/models/outlets-api.js
index 713bf7a..c7d7378 100644
--- a/apps/product/models/outlets-api.js
+++ b/apps/product/models/outlets-api.js
@@ -6,12 +6,9 @@
  */
 
 'use strict';
-const library = '../../../library';
-const API = require(`${library}/api`).API;
-const ServiceAPI = require(`${global.library}/api`).ServiceAPI;
-const serviceApi = new ServiceAPI();
-const api = new API();
-const sign = require(`${library}/sign`);
+
+const serviceApi = global.yoho.ServiceAPI;
+const api = global.yoho.API;
 const _ = require('lodash');
 
 const yhChannel = {
@@ -26,6 +23,9 @@ const yhChannel = {
     },
     lifestyle: {
         channel: '4'
+    },
+    otltIdxDflt: {
+        channel: null
     }
 };
 
@@ -40,17 +40,16 @@ const yhChannel = {
  */
 exports.getOutletsActivityOrigin = (params) => {
 
-    let tempChannel = _.isEmpty(params.channel) ? 'boys' : params.channel;
+    let tempChannel = params.channel || 'boys';
 
-    return api.get('', sign.apiSign({
+    return api.get('', {
         method: 'app.outlets.activityGet',
-
         id: params.id || null,
         platform: params.platform || 1,
         size: params.size || 0,
         yh_channel: yhChannel[tempChannel].channel,
         type: params.type || 0
-    }));
+    });
 };
 
 /**
@@ -59,7 +58,7 @@ exports.getOutletsActivityOrigin = (params) => {
  * @return {[type]}
  */
 exports.getChannelResouceData = (params) => {
-    return serviceApi.get('operations/api/v5/resource/home', sign.apiSign(params));
+    return serviceApi.get('operations/api/v5/resource/home', params);
 };
 
 /**
@@ -68,15 +67,17 @@ exports.getChannelResouceData = (params) => {
  * @return {[type]}        [description]
  */
 exports.getOutletsTrendData = (params) => {
-    return api.get('', sign.apiSign({
+    let tempChannel = params.channel || 'boys';
+
+    return api.get('', {
         method: 'app.search.trend',
-        yh_channel: params.yh_channel || '1',
+        yh_channel: yhChannel[tempChannel].channel,
         order: params.order || 's_s_desc,s_n_desc',
         gender: params.gender || '1,3',
         stocknumber: 1, // 过滤出库存 > 1的商品
         limit: params.limit || 5,
         outlets: params.outlets || 1 // 默认取奥莱商品
-    }));
+    });
 };
 
 
@@ -85,39 +86,29 @@ exports.getOutletsTrendData = (params) => {
  * @return {[type]} [description]
  */
 exports.getOutletsGoodsList = (params) => {
+    // 频道
+    let tempChannel = params.channel || 'boys';
 
-    let tempChannel = _.isEmpty(params.channel) ? 'boys' : params.channel;
+    // 接口可接收的参数
+    let apiParams = ['outlets', 'page', 'limit', 'order', 'productSize', 'yh_channel', 'query',
+        'p_d', 'gender', 'msort', 'misort', 'sort', 'brand', 'color', 'size', 'saleType',
+        'breakSize', 'breakSort', 'productPool', 'price', 'method'];
 
+    // 初始化必填的接口参数
     let tempParams = {
         method: 'app.search.li',
-        query: _.isEmpty(params.query) ? null : params.query,
-        p_d: _.isEmpty(params.p_d) ? null : params.p_d,
-        limit: _.isEmpty(params.limit) ? '60' : params.limit,
-        order: _.isEmpty(params.order) ? 's_t_desc' : params.order,
-        page: _.isEmpty(params.page) ? 1 : params.page,
-        gender: _.isEmpty(params.gender) ? null : params.gender,
-        sort: _.isEmpty(params.sort) ? null : params.sort,
-        msort: _.isEmpty(params.msort) ? null : params.msort,
-        misort: _.isEmpty(params.misort) ? null : params.misort,
-        brand: _.isEmpty(params.brand) ? null : params.brand,
-        color: _.isEmpty(params.color) ? null : params.color,
-        size: _.isEmpty(params.size) ? null : params.size,
-        saleType: _.isEmpty(params.saleType) ? null : params.saleType,
-        breakSize: _.isEmpty(params.breakSize) ? null : params.breakSize,
-        breakSort: _.isEmpty(params.breakSort) ? null : params.breakSort,
-        productPool: _.isEmpty(params.productPool) ? null : params.productPool,
-        price: _.isEmpty(params.price) ? null : params.price,
-        outlets: _.isEmpty(params.outlets) ? 1 : params.outlets,
+        outlets: 1,
+        page: params.page || 1,
+        limit: params.limit || 60,
+        order: params.order || 's_t_desc',
+        productSize: '384x511',
         yh_channel: yhChannel[tempChannel].channel
     };
 
-    let finalParams = {};
-
-    _.forEach(tempParams, function(value, key) {
-        if (!_.isEmpty(value)) {
-            finalParams[key] = value;
+    _.forEach(apiParams, (paramsName) => {
+        if (params[paramsName]) {
+            tempParams[paramsName] = params[paramsName];
         }
     });
-
-    return api.get('', sign.apiSign(finalParams));
+    return api.get('', tempParams);
 };
diff --git a/apps/product/models/outlets-handler.js b/apps/product/models/outlets-handler.js
index 54fa7c7..c6df88c 100644
--- a/apps/product/models/outlets-handler.js
+++ b/apps/product/models/outlets-handler.js
@@ -1,7 +1,12 @@
+/**
+ *
+ * @Author: zhoushaofeng
+ * @Date:   2016-06-02 15:50:47
+ * @Last Modified time: 2016-06-08 19:31:52
+ */
 'use strict';
-const library = '../../../library';
 const utils = '../../../utils';
-const helpers = require(`${library}/helpers`);
+const helpers = global.yoho.helpers;
 const _ = require('lodash');
 const camelCase = require('../../../library/camel-case');
 const productProcess = require(`${utils}/product-process`);
@@ -9,33 +14,6 @@ const url = require('url');
 const queryString = require('querystring');
 
 /**
- * NL2R图片轮播
- */
-const nl2r = (data) => {
-    const result = {
-        left: [],
-        right: []
-    };
-
-    // 左侧
-    _.forEach(data.left, (value) => {
-        result.left.push({
-            img: value.src,
-            url: value.url
-        });
-    });
-
-    // 右侧
-    _.forEach(data.right, (value) => {
-        result.right.push({
-            img: value.src,
-            url: value.url
-        });
-    });
-    return result;
-};
-
-/**
  * 热门分类
  */
 const hotCategory = (data) => {
@@ -76,17 +54,17 @@ const discountSplit = (text) => {
  * @return {[type]}        [description]
  */
 const handleOutletsGoodsMenuData = (origin, params) => {
-    let dest = {};
-
-    var oldParam = _.cloneDeep(params);
-
-    dest.title = '最新折扣';
-    dest.more = '/product/outlets/list';
-    dest.menuList = [];
+    let dest = {
+        title: '最新折扣',
+        more: '/product/outlets/list',
+        menuList: [],
+        msort: [],
+        misort: []
+    };
 
     _.forEach(origin, subValue => {
+        let oldParam = _.cloneDeep(params);
         let goodsmenu = {};
-
         let urlSuffix = {};
 
         goodsmenu.name = subValue.categoryName;
@@ -96,22 +74,24 @@ const handleOutletsGoodsMenuData = (origin, params) => {
         if (!_.isEmpty(urlSuffix.msort) && urlSuffix.msort === oldParam.msort && urlSuffix.misort === oldParam.misort) {
             goodsmenu.cur = true;
         }
-
+        delete oldParam.msort;
+        delete oldParam.misort;
         if (urlSuffix.msort) {
-            Object.assign(params, {msort: urlSuffix.msort});
+            Object.assign(oldParam, {msort: urlSuffix.msort});
+            dest.msort.push(urlSuffix.msort);
         }
         if (urlSuffix.misort) {
-            Object.assign(params, {misort: urlSuffix.misort});
+            Object.assign(oldParam, {misort: urlSuffix.misort});
+            dest.misort.push(urlSuffix.misort);
         }
 
-        goodsmenu.href = '?' + queryString.stringify(params);
+        goodsmenu.href = '?' + queryString.stringify(oldParam) + '#otspool';
 
         dest.menuList.push(goodsmenu);
     });
     return dest;
 };
 
-
 /**
  * 分类导航
  */
@@ -138,7 +118,7 @@ exports.processFloor = (list, params) => {
     _.forEach(list, (floor) => {
         switch (floor.templateName) {
             case 'NL2R':
-                floorData = nl2r(floor.data);
+                floorData = {topBanner: floor.data};
                 break;
             case 'hotCategory':
                 floorData = hotCategory(floor.data);
@@ -171,8 +151,9 @@ exports.handleOutletsBannersData = (origin, params) => {
 
         // 处理焦点图数据
         if (value.template_name === 'focus') {
-            dest.mainBanner = {};
-            dest.mainBanner.list = value.data;
+            dest.mainBanner = {
+                list: value.data
+            };
         }
 
         // 处理三张小图数据
@@ -182,17 +163,18 @@ exports.handleOutletsBannersData = (origin, params) => {
 
         // 处理右侧一张图片
         if (value.template_name === 'single_image') {
-            dest.limitedBuy.extra.sourceImg = {};
-            dest.limitedBuy.extra.sourceImg.href = value.data[0].url;
-            dest.limitedBuy.extra.sourceImg.img = value.data[0].src;
-            console.log(value.data[0].src);
+            dest.limitedBuy.extra.sourceImg = {
+                href: value.data[0].url,
+                img: value.data[0].src
+            };
         }
 
         // 处理热销推荐数据
         if (value.template_name === 'recommendCategory') {
-            dest.limitedBuy.extra.hotType = {};
-            dest.limitedBuy.extra.hotType.title = _.isEmpty(value.data.title) ? '热销推荐' : value.data.title;
-            dest.limitedBuy.extra.hotType.classify = [];
+            dest.limitedBuy.extra.hotType = {
+                title: _.isEmpty(value.data.title) ? '热销推荐' : value.data.title,
+                classify: []
+            };
             _.forEach(value.data.categoryList, subValue => {
                 let category = {};
 
@@ -208,9 +190,9 @@ exports.handleOutletsBannersData = (origin, params) => {
         // 处理品类导航数据
 
         if (value.template_name === 'categoryNavigation') {
-            dest.goodsBoard = {};
-
-            dest.goodsBoard.goodsMenu = handleOutletsGoodsMenuData(value.data, params);
+            dest.goodsBoard = {
+                goodsMenu: handleOutletsGoodsMenuData(value.data, params)
+            };
         }
     });
 
@@ -224,23 +206,20 @@ exports.handleOutletsBannersData = (origin, params) => {
  * @return {[type]}        [description]
  */
 exports.handleOutletsActivityData = (origin, name) => {
-
-    let dest = {};
-
-    let nowTime = Math.round(new Date().getTime() / 1000);
-
-    dest.name = name || '限时嗨购'; // 需要根据 name 传值修改
-    dest.topic = [];
+    let dest = {
+        name: name || '限时嗨购',
+        topic: []
+    };
 
     // 处理奥莱活动列表数据
     _.forEach(origin, value => {
-        let activity = {};
-
-        activity.href = helpers.urlFormat('/product/outlets/special/detail', { id: value.id });
-        activity.img = value.webCoverUrl;
-        activity.logo = value.logoUrl;
-        activity.title = value.title;
-        activity.limit = (value.endTime - nowTime) * 1000;
+        let activity = {
+            href: helpers.urlFormat('/product/outlets/special/detail', {id: value.id}),
+            img: value.webCoverUrl,
+            logo: value.logoUrl,
+            title: value.title,
+            limit: parseInt(value.endLeftTime, 10) * 1000
+        };
 
         if (value.promotionName) {
             Object.assign(activity, discountSplit(value.promotionName));
@@ -261,7 +240,7 @@ exports.handleOutletsSpecilData = (origin) => {
     let dest = {};
 
     dest.mainBanner = {
-        src: origin.webUrl
+        src: helpers.image(origin.webUrl, 1920, 360)
     };
 
     dest.specialHead = {
@@ -289,7 +268,27 @@ exports.handleOutletstrendGoodData = (origin) => {
     dest.title = '潮品推荐';
     dest.goods = productProcess.processProductList(origin.product_list);
     _.forEach(dest.goods, (value, key) => {
-        dest.goods[key].discount = (value.salesPrice / value.marketPrice).toFixed(2) * 10;
+        dest.goods[key].discount = (value.salesPrice / value.marketPrice * 10).toFixed(1) * 1;
+    });
+
+    return dest;
+};
+
+/**
+ * 处理即将上线品牌数据
+ * @param origin
+ * @returns {{}}
+ */
+exports.handleComeSoonData = (origin) => {
+    let dest = {
+        title: '上线预告'
+    };
+
+    dest.brands = [];
+    _.forEach(origin, value => {
+        dest.brands.push({
+            logo: value.logoUrl
+        });
     });
 
     return dest;
diff --git a/apps/product/models/outlets.js b/apps/product/models/outlets.js
index 9d887de..a8ebdd9 100644
--- a/apps/product/models/outlets.js
+++ b/apps/product/models/outlets.js
@@ -6,10 +6,8 @@
  */
 
 'use strict';
-const library = '../../../library';
 const utils = '../../../utils';
-const API = require(`${library}/api`).API;
-const api = new API();
+const api = global.yoho.API;
 const list = require('./list');
 const outletsProcess = require('./outlets-handler');
 const outletsApi = require('./outlets-api');
@@ -18,6 +16,7 @@ const headerModel = require('../../../doraemon/models/header');
 const _ = require('lodash');
 
 const publicHandler = require('./public-handler');
+const log = global.yoho.logger;
 
 // 奥莱频道资源码
 const channelCode = {
@@ -37,54 +36,91 @@ exports.getOutletsIndexData = (params, channel) => {
 
     return api.all([
         headerModel.requestHeaderData('outlets'),
-        outletsApi.getChannelResouceData({ content_code: channelCode.index }),
-        outletsApi.getOutletsActivityOrigin({ type: '1', channel: channel }), // 获取限时活动列表
-        outletsApi.getOutletsActivityOrigin({ type: '2', channel: channel }), // 获取即将结束列表
-        outletsApi.getOutletsTrendData({ limit: '30' }), // 获取潮流速递商品数据
-        outletsApi.getOutletsGoodsList({ limit: params.limit || '100' }) // 获取底部商品数据
-
+        outletsApi.getChannelResouceData({content_code: channelCode.index}),
+        outletsApi.getOutletsActivityOrigin({type: '1', channel: channel}), // 获取限时活动列表
+        outletsApi.getOutletsActivityOrigin({type: '2', channel: channel}), // 获取即将结束列表
+        outletsApi.getOutletsTrendData({limit: '30', channel: channel}), // 获取潮流速递商品数据
+        outletsApi.getOutletsActivityOrigin({type: '3', channel: channel}) // tar add 16171552 即将上线数据
     ]).then(result => {
-        let finalResult = {};
-
-        finalResult.headerData = {};
-        finalResult.headerData.header = true;
-        finalResult.headerData.headType = 'outlets';
-        finalResult.headerData.yohoGroup = [];
-        finalResult.headerData.navbars = [];
-        finalResult.headerData.subNav = result[0];
 
+        let finalResult = {
+            headerData: Object.assign(result[0].headerData, {
+                header: true,
+                headType: 'outlets'
+            })
+        };
 
         // 处理资源位数据
-        if (result[1].code === 200) {
+        if (result[1].code === 200 && !_.isEmpty(result[1].data)) {
             finalResult = Object.assign(finalResult,
                 outletsProcess.handleOutletsBannersData(result[1].data, params));
         }
 
         // 处理限时嗨购列表数据
-        if (result[2].code === 200) {
+        if (result[2].code === 200 && !_.isEmpty(result[2].data)) {
             finalResult.limitedBuy = Object.assign(finalResult.limitedBuy,
                 outletsProcess.handleOutletsActivityData(result[2].data, '限时嗨购'));
         }
 
         // 处理即将结束列表数据
-        if (result[3].code === 200) {
+        if (result[3].code === 200 && !_.isEmpty(result[3].data)) {
             finalResult.nearOver = outletsProcess.handleOutletsActivityData(result[3].data, '即将结束');
         }
 
         // 处理潮品推荐数据
-        if (result[4].code === 200) {
+        if (result[4].code === 200 && !_.isEmpty(result[4].data)) {
             finalResult.limitedBuy.extra.trendGood = outletsProcess.handleOutletstrendGoodData(result[4].data);
         }
 
-        // 处理底部商品数据
-        if (result[5].code === 200) {
-            finalResult.goodsBoard.list = productProcess.processProductList(result[5].data.product_list);
-            finalResult.goodsBoard.sort = publicHandler.handleSaleOptsData(params, result[5].data.total);
-            finalResult.goodsBoard.sort.newPage = true;
-            finalResult.pager = publicHandler.handleSalePagerData(result[5].data.total, params);
+        // 处理即将上架品牌数据
+        if (result[5].code === 200 && !_.isEmpty(result[5].data)) {
+            finalResult.limitedBuy.extra.comeSoon = outletsProcess.handleComeSoonData(result[5].data);
+        }
+
+        // 如果后台没配分类,不显示商品列表
+        if (!finalResult.goodsBoard.goodsMenu.msort && !finalResult.goodsBoard.goodsMenu.msort) {
+            log.info('no config index sort');
+            return finalResult;
         }
 
-        return finalResult;
+        // 获取底部商品数据
+
+        if (!params.msort && !params.misort) {
+            Object.assign(
+                params,
+                {msort: _.uniq(finalResult.goodsBoard.goodsMenu.msort).join()}
+            );
+        }
+        return api.all([
+            outletsApi.getOutletsGoodsList(Object.assign(
+                params,
+                {limit: params.limit || '100', channel: channel, method: 'app.search.category'}
+            ))
+        ]).then(data => {
+            // 处理底部商品数据
+            if (data[0].code === 200 && !_.isEmpty(data[0].data)) {
+                Object.assign(finalResult.goodsBoard, {
+                    sort: Object.assign(publicHandler.handleSaleOptsData(params, data[0].data.total), {newPage: true}),
+                    list: productProcess.processProductList(data[0].data.product_list)
+                });
+
+                // 添加锚点
+                if (finalResult.goodsBoard.sort.sortType) {
+                    _.forEach(finalResult.goodsBoard.sort.sortType, (value, key) => {
+                        finalResult.goodsBoard.sort.sortType[key].href += '#otspool';
+                    });
+                    if (finalResult.goodsBoard.sort.preHref) {
+                        finalResult.goodsBoard.sort.preHref += '#otspool';
+                    }
+                    if (finalResult.goodsBoard.sort.nextHref) {
+                        finalResult.goodsBoard.sort.nextHref += '#otspool';
+                    }
+                }
+
+                finalResult.goodsBoard.footPager = publicHandler.handlePagerData(data[0].data.total, params);
+            }
+            return finalResult;
+        });
     });
 };
 
@@ -94,59 +130,94 @@ exports.getOutletsIndexData = (params, channel) => {
  * @return {[type]}
  */
 exports.getOutletsChannelData = (params, channel) => {
+    // 频道资源位不存在
+    if (!channelCode[channel]) {
+        throw new Error('outlets channel resource not found');
+    }
+
     let channelData = {};
 
     let apiArr = [
-        headerModel.requestHeaderData('outlets')
-    ];
+        // 获取头部数据
+        headerModel.requestHeaderData('outlets'),
+
+        // 获取频道资源位
+        outletsApi.getChannelResouceData({content_code: channelCode[channel]}),
 
-    if (channelCode[channel]) {
-        apiArr.push(outletsApi.getChannelResouceData({
-            content_code: channelCode[channel]
-        }));
-        apiArr.push(outletsApi.getOutletsActivityOrigin({
+        // 获取奥莱活动
+        outletsApi.getOutletsActivityOrigin({
             platform: 1,
             size: 0,
             channel: channel,
             type: 1
-        }));
-        apiArr.push(outletsApi.getOutletsGoodsList(Object.assign(params, {channel: channel})));
-    } else {
-        // 错误页面
-        channelData.pageErr = true;
-    }
+        })
+    ];
 
     return api.all(apiArr).then(result => {
-        let finalResult = {};
-
-        finalResult.headerData = {};
-        finalResult.headerData = result[0].headerData;
-        finalResult.headerData.header = true;
-        finalResult.headerData.headType = 'outlets';
+        // 返回页面的数据
+        let finalResult = {
+            headerData: Object.assign(result[0].headerData, {
+                header: true,
+                headType: 'outlets'
+            })
+        };
 
         Object.assign(channelData, finalResult);
 
-        if (!channelData.pageErr) {
-            // 资源楼层
-            if (result[1].code === 200) {
-                Object.assign(channelData, outletsProcess.processFloor(result[1].data.list, params));
-            }
+        // 资源楼层
+        if (result[1].code === 200) {
+            Object.assign(channelData, outletsProcess.processFloor(result[1].data.list, params));
+        }
 
-            // 限时嗨购
-            if (result[2].code === 200) {
-                channelData.nearOver = outletsProcess.handleOutletsActivityData(result[2].data, '限时嗨购');
-            }
+        // 限时嗨购
+        if (result[2].code === 200 && !_.isEmpty(result[2].data)) {
+            channelData.nearOver = outletsProcess.handleOutletsActivityData(result[2].data, '限时嗨购');
+        }
 
-            // 商品列表
-            if (result[3].code === 200) {
-                channelData.goodsBoard.sort = publicHandler.handleSaleOptsData(params, result[3].data.total);
-                channelData.goodsBoard.sort.newPage = true;
-                channelData.goodsBoard.list = productProcess.processProductList(result[3].data.product_list);
-                channelData.pager = publicHandler.handleSalePagerData(result[3].data.total, params);
-            }
+        // 如果后台没配分类,不显示商品列表
+        if (!channelData.goodsBoard || !channelData.goodsBoard.goodsMenu ||
+            (!channelData.goodsBoard.goodsMenu.msort && !channelData.goodsBoard.goodsMenu.msort)) {
+            log.info('no config ' + channel + 'channel sort');
+            return channelData;
         }
 
-        return channelData;
+        // 获取底部商品数据
+        if (!params.msort || !params.misort) {
+            Object.assign(
+                params,
+                {msort: _.uniq(channelData.goodsBoard.goodsMenu.msort).join()}
+            );
+        }
+        return api.all([
+            outletsApi.getOutletsGoodsList(Object.assign(
+                params,
+                {limit: params.limit || '100', channel: channel, method: 'app.search.category'}
+            ))
+        ]).then(data => {
+            if (data[0].code === 200) {
+                if (!channelData.goodsBoard) {
+                    channelData.goodsBoard = {};
+                }
+                channelData.goodsBoard.sort = publicHandler.handleSaleOptsData(params, data[0].data.total);
+                channelData.goodsBoard.sort.newPage = true;
+                channelData.goodsBoard.list = productProcess.processProductList(data[0].data.product_list);
+                channelData.goodsBoard.pager = publicHandler.handlePagerData(data[0].data.total, params);
+
+                // 添加锚点
+                if (channelData.goodsBoard.sort.sortType) {
+                    _.forEach(channelData.goodsBoard.sort.sortType, (value, key) => {
+                        channelData.goodsBoard.sort.sortType[key].href += '#otspool';
+                    });
+                    if (channelData.goodsBoard.sort.preHref) {
+                        channelData.goodsBoard.sort.preHref += '#otspool';
+                    }
+                    if (channelData.goodsBoard.sort.nextHref) {
+                        channelData.goodsBoard.sort.nextHref += '#otspool';
+                    }
+                }
+            }
+            return channelData;
+        });
     });
 };
 
@@ -158,36 +229,33 @@ exports.getOutletsChannelData = (params, channel) => {
 exports.getOutletsSpecialData = (params, channel) => {
     return api.all([
         headerModel.requestHeaderData('outlets'),
-        outletsApi.getOutletsActivityOrigin({
+        outletsApi.getOutletsActivityOrigin({ // 获取活动信息
             id: params.id
         })
     ]).then(result => {
         let specialData = {};
 
-        specialData.headerData = {};
-        specialData.headerData = result[0].headerData;
-        specialData.headerData.header = true;
+        Object.assign(specialData, result[0]);
         specialData.headerData.headType = 'outlets';
 
-        specialData.pageErr = true;
-        if (result[1].code === 200) {
-            delete specialData.pageErr;
-            Object.assign(specialData,
-                outletsProcess.handleOutletsSpecilData(result[1].data[0]));
-
-            return api.all([
-                list.getSaleOthersData(Object.assign({
-                    productPool: result[1].data[0].productPoolId,
-                    saleType: 4
-                }, params), channel)
-            ]).then(data => {
-                specialData.specialHead.count = data[0].totalCount;
-                Object.assign(specialData, data[0]);
-                return specialData;
-            });
+        // 活动信息获取异常
+        if (result[1].code !== 200) {
+            throw new Error('outlets special info not found-(ID:' + params.id + ')');
         }
 
-        return specialData;
+        Object.assign(specialData,
+            outletsProcess.handleOutletsSpecilData(result[1].data[0]));
+
+        return api.all([
+            list.getListData(Object.assign({
+                productPool: result[1].data[0].productPoolId,
+                saleType: 4
+            }, params), channel)
+        ]).then(data => {
+            specialData.specialHead.count = data[0].totalCount;
+            Object.assign(specialData, data[0]);
+            return specialData;
+        });
     });
 };
 
@@ -201,23 +269,26 @@ exports.getOutletsCategoryData = (params, channel) => {
     return api.all([
         headerModel.requestHeaderData('outlets')
     ]).then(result => {
-        let finalResult = {};
-
-        finalResult.headerData = {};
-        finalResult.headerData = result[0].headerData;
-        finalResult.headerData.header = true;
-        finalResult.headerData.headType = 'outlets';
+        let finalResult = {
+            headerData: Object.assign(result[0].headerData, {
+                header: true,
+                headType: 'outlets'
+            })
+        };
 
         return api.all([
-            list.getSaleOthersData(params, channel)
+            list.getListData(params, channel)
         ]).then(listResult => {
             finalResult.saleList = listResult[0];
 
             if (!_.isEmpty(params.bannerImage)) {
-                finalResult.saleList.topBanner = {};
-                finalResult.saleList.topBanner.list = [];
-                finalResult.saleList.topBanner.list[0] = {};
-                finalResult.saleList.topBanner.list[0].img = params.bannerImage;
+                finalResult.saleList.topBanner = {
+                    list: [
+                        {
+                            img: params.bannerImage
+                        }
+                    ]
+                };
             }
             return finalResult;
         });
diff --git a/apps/product/models/public-handler.js b/apps/product/models/public-handler.js
index 1637b71..acb74c8 100644
--- a/apps/product/models/public-handler.js
+++ b/apps/product/models/public-handler.js
@@ -2,42 +2,26 @@
  * @Author: Targaryen
  * @Date:   2016-06-02 15:50:47
  * @Last Modified by:   Targaryen
- * @Last Modified time: 2016-06-08 19:31:52
+ * @Last Modified time: 2016-06-22 18:36:26
  */
 
 'use strict';
 const _ = require('lodash');
-const library = '../../../library';
-const helpers = require(`${library}/helpers`);
+const helpers = global.yoho.helpers;
+const queryString = require('querystring');
 
 /**
- * 处理用于筛选的 URL
- * @param  {[type]} originParam [description]
- * @param  {[type]} newParam    [description]
- * @return {[type]}             [description]
+ * 处理用于筛选的 URL , 拼接 URL 参数
+ * @param originParam 当前 URL 中的参数
+ * @param newParam 要拼接的 参数
+ * @returns {string}
  */
 const handleFilterUrl = (originParam, newParam) => {
     let dest = '?';
     let tempOriginParam = {};
 
-    // 创建 originParam、newParam 键的数组
-    let originParamArray = _.keys(originParam);
-    let newParamArray = _.keys(newParam);
-
-    // 判断参数是否已经存在
-    let isExist = !_.isEmpty(_.find(originParamArray, function(o) {
-        return o === newParamArray[0];
-    }));
-
-    if (isExist) {
-        tempOriginParam = Object.assign(tempOriginParam, originParam);
-
-        _.forEach(newParam, function(value, key) {
-            tempOriginParam[key] = value;
-        });
-    } else {
-        tempOriginParam = Object.assign(tempOriginParam, originParam, newParam);
-    }
+    tempOriginParam = Object.assign(tempOriginParam, originParam, newParam);
+    delete tempOriginParam.uid;
 
     _.forEach(tempOriginParam, function(value, key) {
         dest = dest + key + '=' + value + '&';
@@ -48,26 +32,23 @@ const handleFilterUrl = (originParam, newParam) => {
 
 /**
  * 处理最新降价折扣信息
- * @return {[type]} [description]
+ * @param params 当前 URL 的参数
+ * @returns {Array|*[]}
  */
 const handleSaleNewSaleSortData = (params) => {
-    var dest;
-
-    dest = [{
+    return [{
         name: '1~3折',
-        href: handleFilterUrl(params, {p_d: '0.1,0.3'}),
-        checked: (params.p_d === '0.1,0.3') ? true : false
+        href: handleFilterUrl(params, { p_d: '0.1,0.3' }),
+        checked: params.p_d === '0.1,0.3'
     }, {
         name: '4~6折',
-        href: handleFilterUrl(params, {p_d: '0.4,0.6'}),
-        checked: (params.p_d === '0.4,0.6') ? true : false
+        href: handleFilterUrl(params, { p_d: '0.4,0.6' }),
+        checked: params.p_d === '0.4,0.6'
     }, {
         name: '7折以上',
-        href: handleFilterUrl(params, {p_d: '0.7,1'}),
-        checked: (params.p_d === '0.7,1') ? true : false
+        href: handleFilterUrl(params, { p_d: '0.7,1' }),
+        checked: params.p_d === '0.7,1'
     }];
-
-    return dest;
 };
 
 /**
@@ -75,13 +56,13 @@ const handleSaleNewSaleSortData = (params) => {
  * @return {[type]} [description]
  */
 const handleSalebreakingYardsSortData = (origin, params) => {
-    var dest = [];
+    let dest = [];
 
     if (!_.isEmpty(params.sort)) {
 
         // 是否有分类筛选参数,如果有
-        _.forEach(params.sort.split(','), function(sortParam) {
-            _.forEach(origin, function(value) {
+        _.forEach(params.sort.split(','), sortParam => {
+            _.forEach(origin, value => {
 
                 // 判断是否在这组数据里面
                 if (!_.isEmpty(_.find(value.sort_id.split(','), o => {
@@ -89,30 +70,29 @@ const handleSalebreakingYardsSortData = (origin, params) => {
                 }))) {
 
                     // 如果在某组数据里面,组合数据退出循环
-                    _.forEach(value.sub, function(subValue) {
-                        let size = {};
-
-                        size.checked =
-                            (parseInt(params.size, 10) === parseInt(subValue.size_id, 10)) ? true : false;
-                        size.href = handleFilterUrl(params, {size: subValue.size_id});
-                        size.name = subValue.size_name;
-
-                        dest.push(size);
+                    _.forEach(value.sub, subValue => {
+                        dest.push({
+                            checked: +params.size === +subValue.size_id,
+                            href: handleFilterUrl(params, {
+                                size: subValue.size_id
+                            }),
+                            name: subValue.size_name
+                        });
                     });
                     return false;
                 }
             });
         });
     } else { // 如果没有筛选参数,返回所有分类
-        _.forEach(origin, function(value) {
-            _.forEach(value.sub, function(subValue) {
-                let size = {};
-
-                size.checked = (parseInt(params.size, 10) === parseInt(subValue.size_id, 10)) ? true : false;
-                size.href = handleFilterUrl(params, {size: subValue.size_id});
-                size.name = subValue.size_name;
-
-                dest.push(size);
+        _.forEach(origin, value => {
+            _.forEach(value.sub, subValue => {
+                dest.push({
+                    checked: +params.size === +subValue.size_id,
+                    href: handleFilterUrl(params, {
+                        size: subValue.size_id
+                    }),
+                    name: subValue.size_name
+                });
             });
         });
     }
@@ -128,23 +108,20 @@ const handleSalebreakingYardsSortData = (origin, params) => {
  * @return {[type]}        [description]
  */
 const handleCheckedData = (params, origin, param) => {
-    var dest = [];
+    let dest = [];
 
     // 品牌选中数据
     if (!_.isEmpty(origin)) {
-        _.forEach(origin, (value) => {
+        _.forEach(origin, value => {
             if (value.checked) {
-                let checked = {};
+                let tempPatam = {};
 
-                checked.name = value.name;
+                tempPatam[param] = '';
 
-                let tempParam = {};
-
-                tempParam[param] = '';
-
-                checked.href = handleFilterUrl(params, tempParam);
-
-                dest.push(checked);
+                dest.push({
+                    name: value.name,
+                    href: handleFilterUrl(params, tempPatam)
+                });
             }
         });
     }
@@ -153,119 +130,123 @@ const handleCheckedData = (params, origin, param) => {
 };
 
 /**
- * 处理分页数据
- * @param  {[type]} total  [description]
- * @param  {[type]} params [description]
- * @return {[type]}        [description]
+ * 处理品牌筛选数据
+ * @param params
+ * @param origin
+ * @returns {{}}
  */
-exports.handleSalePagerData = (total, params) => {
-
-
-    // 当前页
-    let currentPage = parseInt((_.isEmpty(params.page) ? 1 : params.page), 10);
-    let perPageCount = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10);
-    let totalPage = parseInt(total / perPageCount, 10) + 1;
+const handleBrandCheckedData = (params, origin) => {
+    let dest = [];
 
-    let dest = '<a href ="' + handleFilterUrl(params, {page: (currentPage)}) +
-        '" class="cur">' + currentPage + '</a>';
+    // 分拆品牌参数
+    let brands = _.split(params.brand, ',');
+    let intBrands = [];
 
-    // 先处理大多数情况
-    if ((currentPage > 2) && (currentPage < (parseInt(total, 10) / perPageCount) - 1)) {
+    _.forEach(brands, value => {
+        intBrands.push(parseInt(value, 10));
+    });
 
-        for (let i = 1; i < 3; i++) {
-            dest = '<a href ="' + handleFilterUrl(params, {page: (currentPage - i)}) + '">' +
-                (currentPage - i) + '</a> ' + dest + ' <a href ="' +
-                handleFilterUrl(params, {page: (currentPage + i)}) +
-                '">' + (currentPage + i) + '</a>';
-        }
+    let checkedCount = 0;
 
-        // 处理页码小于2的情况
-    } else if (currentPage <= 2) {
-        for (let i = currentPage - 1; i > 0; i--) {
-            dest = '<a href ="' + handleFilterUrl(params, {page: i}) +
-                '">' + i + '</a>' + dest;
-        }
+    // 遍历品牌数据,如果在参数中,那么加 checked,将此数据加入到 checked 数组中
+    if (!_.isEmpty(origin)) {
+        _.forEach(origin, (value) => {
+            if (typeof _.find(intBrands, o => {
+                return _.isEqual(o, value.id);
+            }) !== 'undefined') {
 
-        for (let i = currentPage + 1; i < (totalPage < 6 ? totalPage : 6); i++) {
-            dest += '<a href ="' + handleFilterUrl(params, {page: i}) +
-                '">' + i + '</a>';
-        }
+                let checked = {
+                    name: value.name
+                }; // push 到已选择数组
 
-        // 处理页码大于最大页-2的情况
-    } else if (currentPage > totalPage - 2) {
-        for (let i = currentPage + 1; i < totalPage + 1; i++) {
-            dest += '<a href ="' + handleFilterUrl(params, {page: i}) +
-                '">' + i + '</a>';
-        }
+                // 为了不污染原始数据
+                let tempIntBrands = _.cloneDeep(intBrands);
 
-        for (let i = currentPage - 1; i > (currentPage - 5 > 1 ? currentPage - 5 : 1); i--) {
-            dest = '<a href ="' + handleFilterUrl(params, {page: i}) +
-                '">' + i + '</a>' + dest;
-        }
-    }
+                // 去掉当前选项
+                _.remove(tempIntBrands, n => {
+                    return n === value.id;
+                });
 
-    // 处理后省略号的情况
-    if ((totalPage > 5) && (currentPage < (totalPage - 2))) {
+                // 拼接参数
+                let brand = '';
 
-        dest += ' ... <a href ="' + handleFilterUrl(params, {page: totalPage}) +
-            '">' + totalPage + '</a>';
+                // 建议保留,需要品牌可以单个删除时放开注释即可
+                // _.forEach(tempIntBrands, subValue => {
+                //     brand += subValue + ',';
+                // });
 
-    }
+                // 清除参数,保留没有去掉的参数
+                let tempParam = {
+                    brand: brand
+                };
 
-    // 处理前省略号的情况
-    if (currentPage > 3) {
-        dest = '<a href ="' + handleFilterUrl(params, {page: 1}) +
-            '">1</a> ... ' + dest;
-    }
-
-    // 处理上一页下一页
-    if (currentPage !== 1) {
-        dest = '<a href="' + handleFilterUrl(params, {page: currentPage - 1}) +
-            '"><span class="iconfont">&#xe60e;上一页</span></a>' + dest;
-    }
+                checked.href = handleFilterUrl(params, tempParam);
+                if (checkedCount === 0) {
+                    dest[0] = checked;
+                } else if (checkedCount === 1) {
+                    dest[0].name += '、' + checked.name.substring(0, 3) + '...';
+                }
+                checkedCount++;
 
-    if (currentPage !== totalPage) {
-        dest += '<a href="' + handleFilterUrl(params, {page: currentPage + 1}) +
-            '"><span class="iconfont">下一页&#xe60c;</span></a>';
+                // 建议保留,需要品牌可以单个删除时放开注释即可
+                // dest.push(checked);
+            }
+        });
     }
-
     return dest;
 };
 
-
 /**
  * 处理 opts 排序数据
- * @param  {[type]} origin [description]
- * @return {[type]}        [description]
+ * @param params
+ * @param total
+ * @param extra 什么都可以传进来,多个参数传Object
+ * @returns {{}}
  */
-exports.handleSaleOptsData = (params, total) => {
-    var dest = {};
+exports.handleSaleOptsData = (params, total, extra) => {
+    let dest = {
+        sortType: []
+    };
 
-    dest.sortType = [];
+    // 用来标记是否是折扣专场,折扣专场只需要前三个排序参数
+    let count = (extra === 'discont') ? 3 : 4;
 
-    for (let i = 0; i < 4; i++) {
+    for (let i = 0; i < count; i++) {
         let opt = {};
 
         switch (i) {
             case 0:
-                opt.href = handleFilterUrl(params, {order: 's_t_desc'});
-                opt.name = '最新';
-                opt.hasSortOrient = true;
-                opt.active = true;
-                opt.desc = true;
+                opt.href = handleFilterUrl(params, { order: 's_t_desc' });
+                if (extra === 'discont') { // 如果是折扣专场
+                    opt.name = '全部';
+                    if (_.isEmpty(params.order) || params.order === 's_t_desc') {
+                        opt.active = true;
+                    } else {
+                        opt.active = false;
+                    }
+                } else {
+                    opt.name = '最新';
+                    opt.hasSortOrient = true;
+                    if (_.isEmpty(params.order) || params.order === 's_t_desc') {
+                        opt.active = true;
+                    } else {
+                        opt.active = false;
+                    }
+                    opt.desc = true;
+                }
                 break;
             case 1:
                 if (params.order !== 's_p_desc' && params.order !== 's_p_asc') {
-                    opt.href = handleFilterUrl(params, {order: 's_p_desc'});
+                    opt.href = handleFilterUrl(params, { order: 's_p_desc' });
                     opt.hasSortOrient = true;
                 } else {
                     opt.hasSortOrient = true;
                     opt.active = true;
                     if (params.order === 's_p_desc') {
-                        opt.href = handleFilterUrl(params, {order: 's_p_asc'});
+                        opt.href = handleFilterUrl(params, { order: 's_p_asc' });
                         opt.desc = false;
                     } else {
-                        opt.href = handleFilterUrl(params, {order: 's_p_desc'});
+                        opt.href = handleFilterUrl(params, { order: 's_p_desc' });
                         opt.desc = true;
                     }
                 }
@@ -274,16 +255,16 @@ exports.handleSaleOptsData = (params, total) => {
                 break;
             case 2:
                 if (params.order !== 'p_d_desc' && params.order !== 'p_d_asc') {
-                    opt.href = handleFilterUrl(params, {order: 'p_d_desc'});
+                    opt.href = handleFilterUrl(params, { order: 'p_d_desc' });
                     opt.hasSortOrient = true;
                 } else {
                     opt.hasSortOrient = true;
                     opt.active = true;
                     if (params.order === 'p_d_desc') {
-                        opt.href = handleFilterUrl(params, {order: 'p_d_asc'});
+                        opt.href = handleFilterUrl(params, { order: 'p_d_asc' });
                         opt.desc = false;
                     } else {
-                        opt.href = handleFilterUrl(params, {order: 'p_d_desc'});
+                        opt.href = handleFilterUrl(params, { order: 'p_d_desc' });
                         opt.desc = true;
                     }
                 }
@@ -292,16 +273,16 @@ exports.handleSaleOptsData = (params, total) => {
                 break;
             case 3:
                 if (params.order !== 's_n_desc' && params.order !== 's_n_asc') {
-                    opt.href = handleFilterUrl(params, {order: 's_n_desc'});
+                    opt.href = handleFilterUrl(params, { order: 's_n_desc' });
                     opt.hasSortOrient = true;
                 } else {
                     opt.hasSortOrient = true;
                     opt.active = true;
                     if (params.order === 's_n_desc') {
-                        opt.href = handleFilterUrl(params, {order: 's_n_asc'});
+                        opt.href = handleFilterUrl(params, { order: 's_n_asc' });
                         opt.desc = false;
                     } else {
-                        opt.href = handleFilterUrl(params, {order: 's_n_desc'});
+                        opt.href = handleFilterUrl(params, { order: 's_n_desc' });
                         opt.desc = true;
                     }
                 }
@@ -317,25 +298,18 @@ exports.handleSaleOptsData = (params, total) => {
 
     // 上下翻页数据处理
     dest.pageCounts = [{
-        href: handleFilterUrl(params, {limit: 200}),
+        href: handleFilterUrl(params, { limit: 200 }),
         count: 200
     }, {
-        href: handleFilterUrl(params, {limit: 100}),
+        href: handleFilterUrl(params, { limit: 100 }),
         count: 100
     }, {
-        href: handleFilterUrl(params, {limit: 60}),
+        href: handleFilterUrl(params, { limit: 60 }),
         count: 60
     }];
 
     dest.curPage = _.isEmpty(params.page) ? 1 : params.page; // 当前页码数
 
-    // 上一页下一页
-    let preHref = (!_.isEmpty(params.page) && params.page > 1) ? params.page - 1 : 1;
-    let nextHref = (!_.isEmpty(params.page)) ? params.page + 1 : 2;
-
-    dest.preHref = handleFilterUrl(params, {page: preHref});
-    dest.nextHref = handleFilterUrl(params, {page: nextHref});
-
     // 每页商品数量
     dest.countPerPage = _.isEmpty(params.limit) ? 60 : params.limit;
 
@@ -345,48 +319,86 @@ exports.handleSaleOptsData = (params, total) => {
     // 每页多少商品
     let paramsLimit = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10);
 
+    // 上一页下一页
+    let preHref = (!_.isEmpty(params.page) && parseInt(params.page, 10) > 1) ?
+        parseInt(params.page, 10) - 1 : 1;
+    let nextHref = (!_.isEmpty(params.page)) ? parseInt(params.page, 10) + 1 : 2;
+
+    if (dest.pageCount > 1 && (parseInt(params.page, 10) !== 1) &&
+        (parseInt(params.page, 10) !== dest.pageCount)) {
+        dest.preHref = handleFilterUrl(params, { page: preHref });
+        dest.nextHref = handleFilterUrl(params, { page: nextHref });
+    } else if (dest.pageCount > 1 && (parseInt(params.page, 10) === 1)) {
+        dest.nextHref = handleFilterUrl(params, { page: nextHref });
+    } else if (dest.pageCount > 1 && (parseInt(params.page, 10) === dest.pageCount)) {
+        dest.preHref = handleFilterUrl(params, { page: preHref });
+    }
+
+    // 全部商品数
+    dest.totalCount = total;
+
     // 商品开始结束数
     dest.start = (!_.isEmpty(params.page) ? (params.page - 1) : 0) * paramsLimit + 1;
-    dest.end = parseInt(dest.start, 10) + paramsLimit - 1;
+    if (total < paramsLimit) {
+        dest.end = total;
+    } else {
+        dest.end = (dest.pageCount === parseInt(params.page, 10)) ?
+            total : parseInt(dest.start, 10) + paramsLimit - 1;
+    }
 
     return dest;
 };
 
 /**
  * 处理页面左侧分类筛选数据
- * @return {[type]} [description]
+ * @param origin 分类原始数据,一般是接口返回数据中的 group_sort 字段
+ * @param params 当前 URL 中已有的参数
+ * @param extra 可以任意传值用来处理特殊情况
+ * @returns {{}}
  */
 exports.handleSaleSortData = (origin, params, extra) => {
-    var leftContent = {};
+    let leftContent = {};
 
     leftContent.allSort = {};
     leftContent.allSort.list = [];
 
-    let perAllSort = {
-        name: '全部品类',
-        href: handleFilterUrl(params),
-        all: true,
-        num: extra
-    };
+    // 删除 msort misort
+    // delete params.msort;
+    // delete params.misort;
 
-    leftContent.allSort.list.push(perAllSort);
+    if (extra === 'discount') {
+        let tempParams = _.cloneDeep(params);
 
+        delete tempParams.sort;
 
-    _.forEach(origin, function(value) {
+        leftContent.allSort.all = {
+            name: '全部品类',
+            href: handleFilterUrl(tempParams),
+            active: _.isEmpty(params.sort)
+        };
+    } else {
+        leftContent.allSort.all = {
+            name: '全部品类',
+            href: handleFilterUrl(params)
+        };
+    }
+
+    _.forEach(origin, value => {
 
-        let category = {};
+        let category = {
+            name: value.category_name,
+            num: value.node_count,
+            childList: [],
+            href: handleFilterUrl(params, { sort: value.relation_parameter.sort }),
+            active: params.sort === value.relation_parameter.sort
+        };
 
-        category.name = value.category_name;
-        category.num = value.node_count;
-        category.childList = [];
-        category.href = handleFilterUrl(params, {sort: value.relation_parameter.sort});
-        category.active = false;
-        _.forEach(value.sub, function(subValue) {
+        _.forEach(value.sub, subValue => {
             category.childList.push({
                 name: subValue.category_name,
                 num: subValue.node_count,
-                href: handleFilterUrl(params, {sort: subValue.relation_parameter.sort}),
-                childActive: (params.sort === subValue.relation_parameter.sort) ? true : false
+                href: handleFilterUrl(params, { sort: subValue.relation_parameter.sort }),
+                childActive: params.sort === subValue.relation_parameter.sort
             });
             if (params.sort === subValue.relation_parameter.sort) {
                 category.active = true;
@@ -401,43 +413,34 @@ exports.handleSaleSortData = (origin, params, extra) => {
 };
 
 /**
- * 处理筛选数据
- * @param  {[type]} origin [description]
- * @return {[type]}        [description]
+ * 处理一般筛选数据
+ * @param origin 要处理的筛选数据 filter
+ * @param params 当前 URL 中已有的参数,处理选中状态使用
+ * @returns {{}}
  */
 exports.handleSaleFilterData = (origin, params) => {
-
-    var dest = {};
-
-    dest.brand = {};
-    dest.price = [];
-    dest.gender = [];
-
-    dest.brand.default = [];
-    dest.brand.brandsShow = [];
-
-    dest.brand.brandIndex = [];
-
-    dest.brand.showMore = true;
-    dest.brand.showMulti = true;
-
-    dest.checkedConditions = {};
-    dest.checkedConditions.conditions = [];
-
-
-    // 品牌索引数据处理
-    dest.brand.brandIndex = [];
-
-    dest.brand.brandIndex[0] = {
-        index: 'all',
-        name: '全部'
-    };
-
-    dest.brand.brandIndex[1] = {
-        index: '0-9',
-        name: '0~9'
+    let dest = {
+        brand: {
+            default: [],
+            brandsShow: [],
+            brandIndex: [{
+                index: 'all',
+                name: '全部'
+            }, {
+                index: '0-9',
+                name: '0~9'
+            }],
+            showMore: true,
+            showMulti: true
+        },
+        price: [],
+        gender: [],
+        checkedConditions: {
+            conditions: []
+        }
     };
 
+    // 品牌索引数据处理
     for (let i = 65; i < 91; i++) {
         dest.brand.brandIndex.push({
             index: String.fromCharCode(i).toLowerCase(),
@@ -446,16 +449,26 @@ exports.handleSaleFilterData = (origin, params) => {
     }
 
     // 品牌数据处理
+    // 分拆品牌参数
+    let brands = _.split(params.brand, ',');
+    let intBrands = [];
+
+    _.forEach(brands, value => {
+        intBrands.push(parseInt(value, 10));
+    });
     if (!_.isEmpty(origin.brand)) {
         let count = 0;
 
         _.forEach(origin.brand, function(value) {
-            let brand = {};
-
-            brand.checked = (parseInt(params.brand, 10) === parseInt(value.id, 10)) ? true : false;
-            brand.href = handleFilterUrl(params, {brand: value.id});
-            brand.name = value.brand_name;
-            brand.key = value.brand_domain;
+            let brand = {
+                checked: (typeof _.find(intBrands, o => {
+                    return _.isEqual(o, value.id);
+                }) !== 'undefined'),
+                href: handleFilterUrl(params, { brand: value.id }),
+                name: value.brand_name,
+                key: value.brand_domain,
+                id: value.id
+            };
 
             if (!_.isEmpty(value.brand_alif)) {
                 if (!_.isNaN(parseInt(value.brand_alif, 10))) {
@@ -475,16 +488,21 @@ exports.handleSaleFilterData = (origin, params) => {
     }
 
     // 来排排序
-    dest.brand.brandsShow = _.sortBy(dest.brand.brandsShow, function(o) {
+    dest.brand.brandsShow = _.sortBy(dest.brand.brandsShow, o => {
         return o.index;
     });
 
-    // 处理 价格 筛选数据
+    // 处理价格筛选数据
+    let priceRangechecked = false;
+
     if (!_.isEmpty(origin.priceRange)) {
-        _.forEach(origin.priceRange, function(value, key) {
+        _.forEach(origin.priceRange, (value, key) => {
+            if (params.price === key) {
+                priceRangechecked = true;
+            }
             let price = {
-                checked: (params.price === key) ? true : false,
-                href: handleFilterUrl(params, {price: key}),
+                checked: params.price === key,
+                href: handleFilterUrl(params, { price: key }),
                 name: value
             };
 
@@ -492,19 +510,32 @@ exports.handleSaleFilterData = (origin, params) => {
         });
     }
 
-    // 处理频道数据
-    for (let i = 0; i < 2; i++) {
-        dest.gender[i] = {};
+    // 处理用户自主填写的价格区间
+    if (!priceRangechecked && params.price) {
+        let customPrice = _.split(params.price, ',');
 
-        dest.gender[i].checked = false;
+        if (customPrice[1] !== '99999') {
+            dest.customPrice = {
+                min: customPrice[0],
+                max: customPrice[1]
+            };
+            dest.checkedConditions.conditions.push({
+                name: '¥ ' + customPrice[0] + '-' + customPrice[1],
+                href: handleFilterUrl(params, { price: '' })
+            });
+        }
     }
 
-    dest.gender[0].name = 'BOYS';
-    dest.gender[0].href = handleFilterUrl(params, {gender: '1,3'});
-    dest.gender[0].checked = (params.gender === '1,3') ? true : false;
-    dest.gender[1].name = 'GIRLS';
-    dest.gender[1].href = handleFilterUrl(params, {gender: '2,3'});
-    dest.gender[1].checked = (params.gender === '2,3') ? true : false;
+    // 处理性别数据
+    dest.gender = [{
+        name: 'BOYS',
+        href: handleFilterUrl(params, { gender: '1,3' }),
+        checked: params.gender === '1,3'
+    }, {
+        name: 'GIRLS',
+        href: handleFilterUrl(params, { gender: '2,3' }),
+        checked: params.gender === '2,3'
+    }];
 
     // 最新降价数据处理
     if (parseInt(params.saleType, 10) === 3) {
@@ -515,31 +546,47 @@ exports.handleSaleFilterData = (origin, params) => {
             handleCheckedData(params, dest.discount, 'p_d'));
     }
 
-    // 奥莱尺码处理
+    // 尺码处理
     if (!_.isEmpty(origin.size)) {
-        dest.size = [];
-        _.forEach(origin.size, (value) => {
-            let size = {
-                checked: (params.size === value.size_id) ? true : false,
-                href: handleFilterUrl(params, {size: value.size_id}),
-                name: value.size_name
-            };
-
-            dest.size.push(size);
-        });
-    }
 
-    // 断码区尺码数据处理
-    if (!_.isEmpty(origin.size) && params.saleType === '1') {
-        dest.size = handleSalebreakingYardsSortData(origin.size, params);
+        if (params.saleType === '1') {
+
+            // 断码区尺码处理
+            dest.size = handleSalebreakingYardsSortData(origin.size, params);
+        } else {
+            dest.size = [];
+            if (_.isArray(origin.size)) {
+                _.forEach(origin.size, value => {
+                    dest.size.push({
+                        checked: parseInt(params.size, 10) === parseInt(value.size_id, 10),
+                        href: handleFilterUrl(params, {
+                            size: value.size_id
+                        }),
+                        name: value.size_name
+                    });
+                });
+            } else {
+                dest.size.push({
+                    checked: parseInt(params.size, 10) === parseInt(origin.size.size_id, 10),
+                    href: handleFilterUrl(params, {
+                        size: origin.size.size_id
+                    }),
+                    name: origin.size.size_name
+                });
+            }
+        }
 
-        // 最新降价筛选数据处理
         dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
             handleCheckedData(params, dest.size, 'size'));
     }
 
     // 清除所有选中数据
-    dest.checkedConditions.clearUrl = '?';
+    let remainParams = {};
+
+    if (params.id) {
+        remainParams.id = params.id;
+    }
+    dest.checkedConditions.clearUrl = '?' + queryString.stringify(remainParams);
 
     // 处理频道筛选数据
     dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
@@ -547,7 +594,7 @@ exports.handleSaleFilterData = (origin, params) => {
 
     // 处理品牌筛选数据
     dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
-        handleCheckedData(params, dest.brand.brandsShow, 'brand'));
+        handleBrandCheckedData(params, dest.brand.brandsShow));
 
     // 处理价格筛选数据
     dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
@@ -562,19 +609,18 @@ exports.handleSaleFilterData = (origin, params) => {
  * @return {[type]}        [description]
  */
 exports.handleBannerData = (origin) => {
-    var dest = {};
+    let dest = {};
 
     dest.list = [];
     _.forEach(origin, function(value) {
         if (value.template_name === 'focus') {
-            _.forEach(value.data, function(subValue) {
-                let banner = {};
-
-                banner.bannerHeight = 450;
-                banner.href = subValue.url;
-                banner.img = subValue.src;
+            _.forEach(value.data, subValue => {
 
-                dest.list.push(banner);
+                dest.list.push({
+                    bannerHeight: 450,
+                    href: subValue.url,
+                    img: subValue.src
+                });
             });
         }
 
@@ -584,44 +630,26 @@ exports.handleBannerData = (origin) => {
 };
 
 /**
- * 筛选类链接处理的对外接口
- * @type {[type]}
- */
-exports.handleFilterUrl = handleFilterUrl;
-
-/**
- * 处理选中数据的对外接口
- * @type {[type]}
- */
-exports.handleCheckedData = handleCheckedData;
-
-/**
  * 面包屑导航 TODO
  * @type {[type]}
  */
 exports.handlePathNavData = (data, params) => {
-    let pathNav = [
-        {
-            href: '/', // TODO
-            name: 'OUTLETS',
-            pathTitle: 'OUTLETS'
-        }
-    ];
+    let pathNav = [{
+        href: '/product/outlets', // TODO
+        name: 'OUTLET',
+        pathTitle: 'OUTLET'
+    }];
 
     _.forEach(data, (sort) => {
-        if (sort.relation_parameter.sort === params.sort) {
-            pathNav.push({
-                href: helpers.urlFormat('outlets/list', {sort: params.sort}),
-                name: sort.category_name,
-                pathTitle: sort.category_name
-            });
-        }
-
         if (!_.isEmpty(sort.sub)) {
-            _.forEach(sort.sub, (misort) => {
-                if (misort.relation_parameter.sort === params.sort) {
+            _.forEach(sort.sub, misort => {
+                if (misort.relation_parameter.sort === params.sort || misort.category_id === params.misort) {
                     pathNav.push({
-                        href: helpers.urlFormat('outlets/list', {sort: params.sort}),
+                        href: helpers.urlFormat('/product/outlets/list', { sort: params.sort }),
+                        name: sort.category_name,
+                        pathTitle: sort.category_name
+                    }, {
+                        href: helpers.urlFormat('/product/outlets/list', { sort: params.sort }),
                         name: misort.category_name,
                         pathTitle: misort.category_name
                     });
@@ -631,5 +659,127 @@ exports.handlePathNavData = (data, params) => {
 
     });
 
-    return {pathNav: pathNav};
+    return {
+        pathNav: pathNav
+    };
+};
+
+/**
+ * 分页
+ * @param  {[type]} total 总页数
+ * @param  {[type]} params 筛选条件
+ * @return {[type]}        [description]
+ */
+exports.handlePagerData = (total, params) => {
+    let dest = {
+        prePage: {
+            url: ''
+        },
+        nextPage: {
+            url: ''
+        },
+        pages: []
+    };
+
+    let currentPage = parseInt((_.isEmpty(params.page) ? 1 : params.page), 10); // 当前页
+    let perPageCount = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10); // 每页商品数
+    let totalPage = parseInt(total / perPageCount, 10) + 1; // 总页数
+
+    if (currentPage === 1) {
+        // 当前页为 1,一定没有上一页
+        delete dest.prePage;
+    } else {
+        dest.prePage.url = handleFilterUrl(params, { page: currentPage - 1 });
+    }
+
+    if (currentPage === totalPage) {
+
+        // 当前页为最后一页,一定没有下一页
+        delete dest.nextPage;
+    } else {
+        dest.nextPage.url = handleFilterUrl(params, { page: currentPage + 1 });
+    }
+
+    // 页码临时数据
+    let pages = [];
+
+    if (currentPage > 2 && currentPage <= totalPage - 2) {
+        for (let i = currentPage - 2; i <= ((currentPage + 2) > totalPage ? totalPage : (currentPage + 2)); i++) {
+            pages.push({
+                url: handleFilterUrl(params, { page: i }),
+                num: i,
+                cur: currentPage === i
+            });
+        }
+
+        // 处理页码小于等于 2 的情况
+    } else if (currentPage <= 2) {
+        for (let i = 1; i <= (totalPage < 5 ? totalPage : 5); i++) {
+            pages.push({
+                url: handleFilterUrl(params, { page: i }),
+                num: i,
+                cur: currentPage === i
+            });
+        }
+    } else if (currentPage > totalPage - 2) {
+        for (let i = totalPage; i >= totalPage - 4; i--) {
+            pages.push({
+                url: handleFilterUrl(params, { page: i }),
+                num: i,
+                cur: currentPage === i
+            });
+        }
+        pages = _.sortBy(pages, ['num']);
+    }
+
+    let prevPages = [];
+    let nextPages = [];
+
+    if (_.size(pages) === 5) {
+        if (currentPage > 4) {
+            prevPages.push({
+                url: handleFilterUrl(params, { page: 1 }),
+                num: 1
+            });
+            prevPages.push({
+                num: '...'
+            });
+        }
+        if (currentPage < totalPage - 2) {
+            nextPages.push({
+                num: '...'
+            });
+            nextPages.push({
+                url: handleFilterUrl(params, { page: totalPage }),
+                num: totalPage
+            });
+        }
+    }
+
+    // 商品开始结束数
+    dest.tip = {
+        total: total,
+        start: (currentPage ? currentPage - 1 : 0) * perPageCount + 1
+    };
+
+    let endPageNum = (totalPage === currentPage) ?
+        total : parseInt(dest.tip.start, 10) + perPageCount - 1;
+
+    dest.tip.end = (total < perPageCount) ? total : endPageNum;
+    dest.pages = _.concat(prevPages, pages, nextPages);
+
+    return dest;
+
 };
+
+/**
+ * 筛选类链接处理的对外接口
+ * @type {[type]}
+ */
+exports.handleFilterUrl = handleFilterUrl;
+
+/**
+ * 处理选中数据的对外接口
+ * @type {[type]}
+ */
+exports.handleCheckedData = handleCheckedData;
diff --git a/apps/product/models/sale-api.js b/apps/product/models/sale-api.js
index da7bad3..1e0792d 100644
--- a/apps/product/models/sale-api.js
+++ b/apps/product/models/sale-api.js
@@ -6,12 +6,9 @@
  */
 
 'use strict';
-const library = '../../../library';
-const API = require(`${library}/api`).API;
-const ServiceAPI = require(`${library}/api`).ServiceAPI;
-const api = new API();
-const serviceAPI = new ServiceAPI();
-const sign = require(`${library}/sign`);
+
+const serviceAPI = global.yoho.ServiceAPI;
+const api = global.yoho.API;
 const _ = require('lodash');
 
 const yhChannel = {
@@ -37,35 +34,17 @@ exports.getSaleGoodsList = (params) => {
 
     let tempChannel = _.isEmpty(params.channel) ? 'boys' : params.channel;
 
-    let tempParams = {
+    let finalParams = {
         method: 'app.search.sales',
-        p_d: _.isEmpty(params.p_d) ? null : params.p_d,
-        limit: _.isEmpty(params.limit) ? '60' : params.limit,
-        order: _.isEmpty(params.order) ? 's_t_desc' : params.order,
-        page: _.isEmpty(params.page) ? 1 : params.page,
-        gender: _.isEmpty(params.gender) ? null : params.gender,
-        sort: _.isEmpty(params.sort) ? null : params.sort,
-        brand: _.isEmpty(params.brand) ? null : params.brand,
-        color: _.isEmpty(params.color) ? null : params.color,
-        size: _.isEmpty(params.size) ? null : params.size,
-        saleType: _.isEmpty(params.saleType) ? null : params.saleType,
-        breakSize: _.isEmpty(params.breakSize) ? null : params.breakSize,
-        breakSort: _.isEmpty(params.breakSort) ? null : params.breakSort,
-        productPool: _.isEmpty(params.productPool) ? null : params.productPool,
-        price: _.isEmpty(params.price) ? null : params.price,
+        limit: 60,
+        order: 's_t_desc',
         productSize: '384x511',
         yh_channel: yhChannel[tempChannel].channel
     };
 
-    let finalParams = {};
-
-    _.forEach(tempParams, function(value, key) {
-        if (!_.isEmpty(value)) {
-            finalParams[key] = value;
-        }
-    });
+    Object.assign(finalParams, params);
 
-    return api.get('', sign.apiSign(finalParams));
+    return api.get('', finalParams);
 };
 
 /**
@@ -75,10 +54,10 @@ exports.getSaleGoodsList = (params) => {
 exports.getSalebreakingYardsSortList = (params) => {
     let tempChannel = _.isEmpty(params.channel) ? 'boys' : params.channel;
 
-    return api.get('', sign.apiSign({
+    return api.get('', {
         method: 'app.sale.getBreakingSort',
         yh_channel: yhChannel[tempChannel].channel
-    }));
+    });
 };
 
 /**
@@ -88,13 +67,13 @@ exports.getSalebreakingYardsSortList = (params) => {
 exports.getSaleActivityList = (params, channel) => {
     let tempChannel = _.isEmpty(channel) ? 'boys' : channel;
 
-    return api.get('', sign.apiSign({
+    return api.get('', {
         id: params.id || null,
         method: 'app.activity.get',
         sort: '2',
         plateform: '1',
         yh_channel: yhChannel[tempChannel].channel
-    }));
+    });
 };
 
 /**
@@ -102,9 +81,9 @@ exports.getSaleActivityList = (params, channel) => {
  * @return {[type]} [description]
  */
 exports.getSaleBannerList = (cCode) => {
-    return serviceAPI.get('operations/api/v5/resource/get', sign.apiSign({
+    return serviceAPI.get('operations/api/v5/resource/get', {
         content_code: cCode
-    }));
+    });
 };
 
 /**
@@ -112,9 +91,9 @@ exports.getSaleBannerList = (cCode) => {
  * @return {[type]} [description]
  */
 exports.getLeftContentList = () => {
-    return api.get('', sign.apiSign({
+    return api.get('', {
         method: 'app.sort.get'
-    }));
+    });
 };
 
 /**
@@ -129,8 +108,8 @@ exports.getUserProfile = (uid) => {
             data: {}
         });
     }
-    return api.get('', sign.apiSign({
+    return api.get('', {
         method: 'app.passport.profile',
         uid: uid
-    }), true);
+    }, true);
 };
diff --git a/apps/product/models/sale-handler.js b/apps/product/models/sale-handler.js
index 750d4a4..4cf6c4b 100644
--- a/apps/product/models/sale-handler.js
+++ b/apps/product/models/sale-handler.js
@@ -2,15 +2,12 @@
  * @Author: Targaryen
  * @Date:   2016-05-25 18:16:59
  * @Last Modified by:   Targaryen
- * @Last Modified time: 2016-06-08 19:35:20
+ * @Last Modified time: 2016-06-20 21:31:11
  */
 
 'use strict';
-const library = '../../../library';
-const helpers = require(`${library}/helpers`);
+const helpers = global.yoho.helpers;
 const _ = require('lodash');
-
-// const aMinute = 60000;
 const anHour = 3600000;
 const aDay = anHour * 24;
 const timeFormat = {
@@ -50,34 +47,6 @@ const processTime = (time) => {
 };
 
 /**
- * 折扣专场专题详情过期时间处理
- * @param  {[string]} time
- * @return {[boject]}
- */
-// const processTimes = (time) => {
-//     let data = {};
-//     let type = '';
-//
-//     if (time > aDay) {
-//         type = 'dhms';
-//     } else {
-//         if (time > anHour) {
-//             type = 'hms';
-//         } else {
-//             if (time > aMinute) {
-//                 type = 'ms';
-//             } else {
-//                 type = 's';
-//             }
-//         }
-//     }
-//
-//     data.time = helpers.dateDiffFormat(timeFormat[type], time, 'ms');
-//
-//     return data.time;
-// };
-
-/**
  * 折扣文本切割
  * @param text 要切割的文本
  * @returns {{discount: *, discountText: *}}
@@ -99,501 +68,31 @@ const discountSplit = (text) => {
 };
 
 /**
- * 处理用于筛选的 URL , 拼接 URL 参数
- * @param originParam 当前 URL 中的参数
- * @param newParam 要拼接的 参数
- * @returns {string}
- */
-const handleFilterUrl = (originParam, newParam) => {
-    let dest = '?';
-    let tempOriginParam = {};
-
-    // 创建 originParam、newParam 键的数组
-    let originParamArray = _.keys(originParam);
-    let newParamArray = _.keys(newParam);
-
-    // 判断参数是否已经存在
-    let isExist = !_.isEmpty(_.find(originParamArray, function(o) {
-        return o === newParamArray[0];
-    }));
-
-    if (isExist) {
-        tempOriginParam = Object.assign(tempOriginParam, originParam);
-
-        _.forEach(newParam, function(value, key) {
-            tempOriginParam[key] = value;
-        });
-    } else {
-        tempOriginParam = Object.assign(tempOriginParam, originParam, newParam);
-    }
-
-    _.forEach(tempOriginParam, function(value, key) {
-        dest = dest + key + '=' + value + '&';
-    });
-
-    return _.trim(dest, '&');
-};
-
-/**
- * 处理最新降价折扣信息
- * @param params 当前 URL 的参数
- * @returns {Array|*[]}
- */
-const handleSaleNewSaleSortData = (params) => {
-    var dest;
-
-    dest = [{
-        name: '1~3折',
-        href: handleFilterUrl(params, {p_d: '0.1,0.3'}),
-        checked: (params.p_d === '0.1,0.3') ? true : false
-    }, {
-        name: '4~6折',
-        href: handleFilterUrl(params, {p_d: '0.4,0.6'}),
-        checked: (params.p_d === '0.4,0.6') ? true : false
-    }, {
-        name: '7折以上',
-        href: handleFilterUrl(params, {p_d: '0.7,1'}),
-        checked: (params.p_d === '0.7,1') ? true : false
-    }];
-
-    return dest;
-};
-
-/**
- * 处理选中数据
- * @param params 当前 URL 中已有的参数
- * @param origin 要处理的数据
- * @param param 此组数据的键名
- * @returns {Array}
- */
-const handleCheckedData = (params, origin, param) => {
-    var dest = [];
-
-    if (!_.isEmpty(origin)) {
-        _.forEach(origin, (value) => {
-            if (value.checked) {
-                let checked = {};
-
-                checked.name = value.name;
-
-                let tempParam = {};
-
-                tempParam[param] = '';
-                checked.href = handleFilterUrl(params, tempParam);
-
-                dest.push(checked);
-            }
-        });
-    }
-
-    return dest;
-};
-
-/**
- * 处理断码区尺码筛选数据
- * @param origin 尺码原始数据
- * @param params 当前 URL 中已有的参数
- * @returns {Array}
- */
-const handleSalebreakingYardsSortData = (origin, params) => {
-    var dest = [];
-
-    if (!_.isEmpty(params.sort)) {
-
-        // 是否有分类筛选参数,如果有
-        _.forEach(params.sort.split(','), function(sortParam) {
-            _.forEach(origin, function(value) {
-
-                // 判断是否在这组数据里面
-                if (!_.isEmpty(_.find(value.sort_id.split(','), o => {
-                    return o === sortParam;
-                }))) {
-
-                    // 如果在某组数据里面,组合数据退出循环
-                    _.forEach(value.sub, function(subValue) {
-                        let size = {};
-
-                        size.checked =
-                            (parseInt(params.size, 10) === parseInt(subValue.size_id, 10)) ? true : false;
-                        size.href = handleFilterUrl(params, {size: subValue.size_id});
-                        size.name = subValue.size_name;
-
-                        dest.push(size);
-                    });
-                    return false;
-                }
-            });
-        });
-    } else { // 如果没有筛选参数,返回所有分类
-        _.forEach(origin, function(value) {
-            _.forEach(value.sub, function(subValue) {
-                let size = {};
-
-                size.checked = (parseInt(params.size, 10) === parseInt(subValue.size_id, 10)) ? true : false;
-                size.href = handleFilterUrl(params, {size: subValue.size_id});
-                size.name = subValue.size_name;
-
-                dest.push(size);
-            });
-        });
-    }
-
-    return _.uniqWith(dest, _.isEqual);
-};
-
-/**
- * 处理一般筛选数据
- * @param origin 要处理的筛选数据 filter
- * @param params 当前 URL 中已有的参数,处理选中状态使用
- * @returns {{}}
- */
-exports.handleSaleFilterData = (origin, params) => {
-
-    var dest = {};
-
-    dest.brand = {};
-    dest.price = [];
-    dest.gender = [];
-
-    dest.brand.default = [];
-    dest.brand.brandsShow = [];
-
-    dest.brand.brandIndex = [];
-
-    dest.brand.showMore = true;
-    dest.brand.showMulti = true;
-
-    dest.checkedConditions = {};
-    dest.checkedConditions.conditions = [];
-
-
-    // 品牌索引数据处理
-    dest.brand.brandIndex = [];
-
-    dest.brand.brandIndex[0] = {
-        index: 'all',
-        name: '全部'
-    };
-
-    dest.brand.brandIndex[1] = {
-        index: '0-9',
-        name: '0~9'
-    };
-
-    for (let i = 65; i < 91; i++) {
-        dest.brand.brandIndex.push({
-            index: String.fromCharCode(i).toLowerCase(),
-            name: String.fromCharCode(i)
-        });
-    }
-
-    // 品牌数据处理
-    if (!_.isEmpty(origin.brand)) {
-        let count = 0;
-
-        _.forEach(origin.brand, function(value) {
-            let brand = {};
-
-            brand.checked = (parseInt(params.brand, 10) === parseInt(value.id, 10)) ? true : false;
-            brand.href = handleFilterUrl(params, {brand: value.id});
-            brand.name = value.brand_name;
-            brand.key = value.brand_domain;
-            brand.id = value.id;
-
-            if (!_.isEmpty(value.brand_alif)) {
-                if (!_.isNaN(parseInt(value.brand_alif, 10))) {
-                    brand.index = '0-9';
-                } else {
-                    brand.index = value.brand_alif.toLowerCase();
-                }
-            }
-
-            if (count < 10) {
-                dest.brand.default.push(brand);
-            }
-
-            dest.brand.brandsShow.push(brand);
-            count++;
-        });
-    }
-
-    // 来排排序
-    dest.brand.brandsShow = _.sortBy(dest.brand.brandsShow, function(o) {
-        return o.index;
-    });
-
-    // 处理 价格 筛选数据
-    if (!_.isEmpty(origin.priceRange)) {
-        _.forEach(origin.priceRange, function(value, key) {
-            let price = {
-                checked: (params.price === key) ? true : false,
-                href: handleFilterUrl(params, {price: key}),
-                name: value
-            };
-
-            dest.price.push(price);
-        });
-    }
-
-    // 处理频道数据
-    for (let i = 0; i < 2; i++) {
-        dest.gender[i] = {};
-
-        dest.gender[i].checked = false;
-    }
-
-    dest.gender[0].name = 'BOYS';
-    dest.gender[0].href = handleFilterUrl(params, {gender: '1,3'});
-    dest.gender[0].checked = (params.gender === '1,3') ? true : false;
-    dest.gender[1].name = 'GIRLS';
-    dest.gender[1].href = handleFilterUrl(params, {gender: '2,3'});
-    dest.gender[1].checked = (params.gender === '2,3') ? true : false;
-
-    // 最新降价数据处理
-    if (parseInt(params.saleType, 10) === 3) {
-        dest.discount = handleSaleNewSaleSortData(params);
-
-        // 最新降价筛选数据处理
-        dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
-            handleCheckedData(params, dest.discount, 'p_d'));
-    }
-
-    // 断码区尺码数据处理
-    if (!_.isEmpty(origin.size) && params.saleType === '1') {
-        dest.size = handleSalebreakingYardsSortData(origin.size, params);
-
-        // 最新降价筛选数据处理
-        dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
-            handleCheckedData(params, dest.size, 'size'));
-    }
-
-    // 清除所有选中数据
-    dest.checkedConditions.clearUrl = '?';
-
-    // 处理频道筛选数据
-    dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
-        handleCheckedData(params, dest.gender, 'gender'));
-
-    // 处理品牌筛选数据
-    dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
-        handleCheckedData(params, dest.brand.brandsShow, 'brand'));
-
-    // 处理价格筛选数据
-    dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
-        handleCheckedData(params, dest.price, 'price'));
-
-    return dest;
-};
-
-/**
- * 处理 opts 排序数据
- * @param params
- * @param total
- * @param extra 什么都可以传进来,多个参数传Object
- * @returns {{}}
- */
-exports.handleSaleOptsData = (params, total, extra) => {
-    var dest = {};
-
-    dest.sortType = [];
-
-    // 用来标记是否是折扣专场,折扣专场只需要前三个排序参数
-    let count = (extra === 'discont') ? 3 : 4;
-
-    for (let i = 0; i < count; i++) {
-        let opt = {};
-
-        switch (i) {
-            case 0:
-                opt.href = handleFilterUrl(params, {order: 's_t_desc'});
-                if (extra === 'discont') { // 如果是折扣专场
-                    opt.name = '全部';
-                    if (_.isEmpty(params.order) || params.order === 's_t_desc') {
-                        opt.active = true;
-                    } else {
-                        opt.active = false;
-                    }
-                } else {
-                    opt.name = '最新';
-                    opt.hasSortOrient = true;
-                    opt.active = true;
-                    opt.desc = true;
-                }
-                break;
-            case 1:
-                if (params.order !== 's_p_desc' && params.order !== 's_p_asc') {
-                    opt.href = handleFilterUrl(params, {order: 's_p_desc'});
-                    opt.hasSortOrient = true;
-                } else {
-                    opt.hasSortOrient = true;
-                    opt.active = true;
-                    if (params.order === 's_p_desc') {
-                        opt.href = handleFilterUrl(params, {order: 's_p_asc'});
-                        opt.desc = false;
-                    } else {
-                        opt.href = handleFilterUrl(params, {order: 's_p_desc'});
-                        opt.desc = true;
-                    }
-                }
-
-                opt.name = '价格';
-                break;
-            case 2:
-                if (params.order !== 'p_d_desc' && params.order !== 'p_d_asc') {
-                    opt.href = handleFilterUrl(params, {order: 'p_d_desc'});
-                    opt.hasSortOrient = true;
-                } else {
-                    opt.hasSortOrient = true;
-                    opt.active = true;
-                    if (params.order === 'p_d_desc') {
-                        opt.href = handleFilterUrl(params, {order: 'p_d_asc'});
-                        opt.desc = false;
-                    } else {
-                        opt.href = handleFilterUrl(params, {order: 'p_d_desc'});
-                        opt.desc = true;
-                    }
-                }
-
-                opt.name = '折扣';
-                break;
-            case 3:
-                if (params.order !== 's_n_desc' && params.order !== 's_n_asc') {
-                    opt.href = handleFilterUrl(params, {order: 's_n_desc'});
-                    opt.hasSortOrient = true;
-                } else {
-                    opt.hasSortOrient = true;
-                    opt.active = true;
-                    if (params.order === 's_n_desc') {
-                        opt.href = handleFilterUrl(params, {order: 's_n_asc'});
-                        opt.desc = false;
-                    } else {
-                        opt.href = handleFilterUrl(params, {order: 's_n_desc'});
-                        opt.desc = true;
-                    }
-                }
-
-                opt.name = '销量';
-                break;
-            default:
-                break;
-        }
-
-        dest.sortType.push(opt);
-    }
-
-    // 上下翻页数据处理
-    dest.pageCounts = [{
-        href: handleFilterUrl(params, {limit: 200}),
-        count: 200
-    }, {
-        href: handleFilterUrl(params, {limit: 100}),
-        count: 100
-    }, {
-        href: handleFilterUrl(params, {limit: 60}),
-        count: 60
-    }];
-
-    dest.curPage = _.isEmpty(params.page) ? 1 : params.page; // 当前页码数
-
-    // 上一页下一页
-    let preHref = (!_.isEmpty(params.page) && params.page > 1) ? params.page - 1 : 1;
-    let nextHref = (!_.isEmpty(params.page)) ? params.page + 1 : 2;
-
-    dest.preHref = handleFilterUrl(params, {page: preHref});
-    dest.nextHref = handleFilterUrl(params, {page: nextHref});
-
-    // 每页商品数量
-    dest.countPerPage = _.isEmpty(params.limit) ? 60 : params.limit;
-
-    // 全部页码数量
-    dest.pageCount = parseInt(total / (_.isEmpty(params.limit) ? 60 : params.limit), 10) + 1;
-
-    // 每页多少商品
-    let paramsLimit = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10);
-
-    // 商品开始结束数
-    dest.start = (!_.isEmpty(params.page) ? (params.page - 1) : 0) * paramsLimit + 1;
-    dest.end = parseInt(dest.start, 10) + paramsLimit - 1;
-
-    return dest;
-};
-
-/**
- * 处理页面左侧分类筛选数据
- * @param origin 分类原始数据,一般是接口返回数据中的 group_sort 字段
- * @param params 当前 URL 中已有的参数
- * @param extra 可以任意传值用来处理特殊情况
- * @returns {{}}
- */
-exports.handleSaleSortData = (origin, params, extra) => {
-    var leftContent = {};
-
-    leftContent.allSort = {};
-    leftContent.allSort.list = [];
-
-    let perAllSort = {
-        name: '全部品类',
-        href: handleFilterUrl(params),
-        all: true,
-        num: extra
-    };
-
-    leftContent.allSort.list.push(perAllSort);
-
-
-    _.forEach(origin, function(value) {
-
-        let category = {};
-
-        category.name = value.category_name;
-        category.num = value.node_count;
-        category.childList = [];
-        category.href = handleFilterUrl(params, {sort: value.relation_parameter.sort});
-        category.active = false;
-        _.forEach(value.sub, function(subValue) {
-            category.childList.push({
-                name: subValue.category_name,
-                num: subValue.node_count,
-                href: handleFilterUrl(params, {sort: subValue.relation_parameter.sort}),
-                childActive: (params.sort === subValue.relation_parameter.sort) ? true : false
-            });
-            if (params.sort === subValue.relation_parameter.sort) {
-                category.active = true;
-            }
-
-        });
-
-        leftContent.allSort.list.push(category);
-    });
-
-    return leftContent;
-};
-
-/**
  * 处理折扣专区活动数据
  * @param origin 原始数据
  * @param channel 频道 boys girls kids lifestyle
  * @returns {{}}
  */
 exports.handleSaleActivityData = (origin, channel) => {
-    var dest = {};
+    let dest = {
+        big: [],
+        normal: []
+    };
 
-    dest.big = [];
-    dest.normal = [];
     _.forEach(origin, function(value, key) {
-        let activity = {};
-
-        activity.link =
-            helpers.urlFormat('/sale/discount/detail', {id: value.id, channel: channel});
-        activity.img = value.cover_url;
-        activity.time = processTime(value.left_time);
-        activity.brand = value.logo_url;
-        activity.title = value.title;
+        let activity = {
+            link: helpers.urlFormat('/product/sale/discount/detail', {id: value.id, channel: channel}),
+            img: value.web_cover_url,
+            time: processTime(parseInt(value.left_time, 10) * 1000),
+            brand: value.logo_url,
+            title: value.title
+        };
+
         activity = Object.assign(activity, discountSplit(value.promotion_name));
 
         if (key < 3) {
             dest.big.push(activity);
-        } else if (key < 15) {
+        } else if (key < 27) {
             dest.normal.push(activity);
         }
     });
@@ -606,13 +105,12 @@ exports.handleSaleActivityData = (origin, channel) => {
  * @returns {{}}
  */
 exports.handleDiscountTitleData = (origin) => {
-    var dest = {};
-
-    dest.title = origin.title;
-    dest.up = true;
+    let dest = {
+        title: origin.title,
+        up: true,
+        time: parseInt(origin.left_time, 10) * 1000
+    };
 
-    // dest.time = processTimes(origin.left_time);
-    dest.time = origin.left_time;
     Object.assign(dest, discountSplit(origin.promotion_name));
 
     return dest;
@@ -624,22 +122,22 @@ exports.handleDiscountTitleData = (origin) => {
  * @returns {{}}
  */
 exports.handleSaleBannerData = (origin) => {
-    var dest = {};
+    let dest = {
+        list: []
+    };
 
-    dest.list = [];
     _.forEach(origin, function(value) {
         if (value.template_name === 'focus') {
             _.forEach(value.data, function(subValue) {
-                let banner = {};
-
-                banner.bannerHeight = 450;
-                banner.href = subValue.url;
-                banner.img = subValue.src;
+                let banner = {
+                    bannerHeight: 450,
+                    href: subValue.url,
+                    img: subValue.src
+                };
 
                 dest.list.push(banner);
             });
         }
-
     });
 
     return dest;
@@ -651,19 +149,19 @@ exports.handleSaleBannerData = (origin) => {
  * @returns {Array}
  */
 exports.handleSaleBannerSmallData = (origin) => {
-    var dest = [];
+    let dest = [];
     let count = 0;
 
     _.forEach(origin, function(value) {
-        if (value.template_name === 'small_pic') {
+        if (value.template_name === 'threePicture') {
             _.forEach(value.data, function(picList) {
                 if (count++ < 3) {
-                    let smallPic = {};
-
-                    smallPic.link = picList.url;
-                    smallPic.icon = picList.src;
-                    smallPic.title = picList.title;
-                    smallPic.desc = picList.alt;
+                    let smallPic = {
+                        link: picList.url,
+                        icon: picList.src,
+                        title: picList.title,
+                        desc: picList.alt
+                    };
 
                     dest.push(smallPic);
                 }
@@ -680,17 +178,19 @@ exports.handleSaleBannerSmallData = (origin) => {
  * @param origin 要处理的原始数据
  * @param saleType 获取数据分属哪个类目:断码区,会员专享,折扣专场等
  * @param channel 频道
+ * @param breakingSizeSort 为断码去额外拼接参数,接口比较垃圾嘛,没办法
  * @returns {{}}
  */
-exports.handleSaleCategoryData = (origin, saleType, channel) => {
+exports.handleSaleCategoryData = (origin, saleType, channel, breakingSizeSort) => {
 
-    let dest = {};
-
-    // navItem 处理
-    dest.navItem = [];
-    dest.navItem[0] = {};
-    dest.navItem[0].title = '今日推荐';
-    dest.navItem[0].vip = true;
+    let dest = {
+        navItem: [
+            {
+                title: '今日推荐',
+                vip: true
+            }
+        ]
+    };
 
     let urlLocation = {};
 
@@ -698,37 +198,42 @@ exports.handleSaleCategoryData = (origin, saleType, channel) => {
     switch (saleType) {
         case '1':
             dest.title = '断码区';
-            urlLocation.url = '?saleType=' + saleType + '&order=s_t_desc&channel=' + channel;
-            urlLocation.limit = 14;
-            dest.urlLocation = dest.navItem[0].urlLocation = urlLocation.url + `&limit=${urlLocation.limit}`;
+            urlLocation = {
+                url: '?saleType=' + saleType + '&order=s_t_desc&channel=' + channel +
+                '&breakSize=' + breakingSizeSort.breakSize + '&breakSort=' + breakingSizeSort.breakSort,
+                limit: 14
+            };
             break;
         case '2':
             dest.title = 'VIP会员专享';
-            urlLocation.url = '?saleType=' + saleType + '&order=s_t_desc&channel=' + channel;
-            urlLocation.limit = 11;
-            dest.urlLocation = dest.navItem[0].urlLocation = urlLocation.url + `&limit=${urlLocation.limit}`;
+            urlLocation = {
+                url: '?saleType=' + saleType + '&order=s_t_desc&channel=' + channel,
+                limit: 11
+            };
             break;
         case '3':
             dest.title = '最新降价';
-            urlLocation.url = '?saleType=' + saleType + '&order=s_t_desc&channel=' + channel;
-            urlLocation.limit = 14;
-            dest.urlLocation = dest.navItem[0].urlLocation = urlLocation.url + `&limit=${urlLocation.limit}`;
+            urlLocation = {
+                url: '?saleType=0&order=s_t_desc&channel=' + channel,
+                limit: 14
+            };
             break;
         default:
             break;
     }
+    dest.urlLocation = dest.navItem[0].urlLocation = urlLocation.url + `&limit=${urlLocation.limit}`;
 
     let count = 0;
 
     _.forEach(origin, (value) => {
 
         if (count++ < 4) {
-            let nav = {};
-
-            nav.urlLocation = urlLocation.url + '&sort=' + value.relation_parameter.sort +
-                `&limit=${(urlLocation.limit + 1)}`;
-            nav.title = value.category_name;
-            nav.newDiscount = true;
+            let nav = {
+                urlLocation: urlLocation.url + '&sort=' + value.relation_parameter.sort +
+                `&limit=${(urlLocation.limit + 1)}`,
+                title: value.category_name,
+                newDiscount: true
+            };
 
             dest.navItem.push(nav);
         }
@@ -738,81 +243,22 @@ exports.handleSaleCategoryData = (origin, saleType, channel) => {
 };
 
 /**
- * 处理分页数据
- * @param total 商品总数目
- * @param params 当前 URL 中已有的参数
- * @returns {string}
+ * 处理断码区尺码数据,输出整合后的筛选条件
+ * @param origin
  */
-exports.handleSalePagerData = (total, params) => {
-
-
-    // 当前页
-    let currentPage = parseInt((_.isEmpty(params.page) ? 1 : params.page), 10);
-    let perPageCount = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10);
-    let totalPage = parseInt(total / perPageCount, 10) + 1;
-
-    let dest = '<a href ="' + handleFilterUrl(params, {page: (currentPage)}) +
-        '" class="cur">' + currentPage + '</a>';
-
-    // 先处理大多数情况
-    if ((currentPage > 2) && (currentPage < (parseInt(total, 10) / perPageCount) - 1)) {
-
-        for (let i = 1; i < 3; i++) {
-            dest = '<a href ="' + handleFilterUrl(params, {page: (currentPage - i)}) + '">' +
-                (currentPage - i) + '</a> ' + dest + ' <a href ="' +
-                handleFilterUrl(params, {page: (currentPage + i)}) +
-                '">' + (currentPage + i) + '</a>';
-        }
-
-        // 处理页码小于2的情况
-    } else if (currentPage <= 2) {
-        for (let i = currentPage - 1; i > 0; i--) {
-            dest = '<a href ="' + handleFilterUrl(params, {page: i}) +
-                '">' + i + '</a>' + dest;
-        }
-
-        for (let i = currentPage + 1; i < (totalPage < 6 ? totalPage : 6); i++) {
-            dest += '<a href ="' + handleFilterUrl(params, {page: i}) +
-                '">' + i + '</a>';
-        }
-
-        // 处理页码大于最大页-2的情况
-    } else if (currentPage > totalPage - 2) {
-        for (let i = currentPage + 1; i < totalPage + 1; i++) {
-            dest += '<a href ="' + handleFilterUrl(params, {page: i}) +
-                '">' + i + '</a>';
-        }
-
-        for (let i = currentPage - 1; i > (currentPage - 5 > 1 ? currentPage - 5 : 1); i--) {
-            dest = '<a href ="' + handleFilterUrl(params, {page: i}) +
-                '">' + i + '</a>' + dest;
-        }
-    }
-
-    // 处理后省略号的情况
-    if ((totalPage > 5) && (currentPage < (totalPage - 2))) {
-
-        dest += ' ... <a href ="' + handleFilterUrl(params, {page: totalPage}) +
-            '">' + totalPage + '</a>';
-
-    }
-
-    // 处理前省略号的情况
-    if (currentPage > 3) {
-        dest = '<a href ="' + handleFilterUrl(params, {page: 1}) +
-            '">1</a> ... ' + dest;
-    }
+exports.handleSaleBreakingSizeData = (origin) => {
+    let dest = {
+        breakSize: '',
+        breakSort: ''
+    };
 
-    // 处理上一页下一页
-    if (currentPage !== 1) {
-        dest = '<a href="' + handleFilterUrl(params, {page: currentPage - 1}) +
-            '"><span class="iconfont">&#xe60e;上一页</span></a>' + dest;
-    }
+    _.forEach(origin, value => {
+        dest.breakSort += value.sort_id;
 
-    if (currentPage !== totalPage) {
-        dest += '<a href="' + handleFilterUrl(params, {page: currentPage + 1}) +
-            '"><span class="iconfont">下一页&#xe60c;</span></a>';
-    }
+        _.forEach(value.sub, subValue => {
+            dest.breakSize += subValue.size_id + ',';
+        });
+    });
 
     return dest;
 };
diff --git a/apps/product/models/sale.js b/apps/product/models/sale.js
index 60f0d93..fccd09a 100644
--- a/apps/product/models/sale.js
+++ b/apps/product/models/sale.js
@@ -2,15 +2,16 @@
  * @Author: Targaryen
  * @Date:   2016-05-19 10:20:08
  * @Last Modified by:   Targaryen
- * @Last Modified time: 2016-06-08 10:02:13
+ * @Last Modified time: 2016-06-20 21:13:00
  */
 
 'use strict';
-const library = '../../../library';
 const utils = '../../../utils';
-const API = require(`${library}/api`).API;
-const api = new API();
+const logger = global.yoho.logger;
+const camelCase = global.yoho.camelCase;
+const api = global.yoho.API;
 const saleApi = require('./sale-api');
+const publicHandler = require('./public-handler');
 const saleHandler = require('./sale-handler');
 const productProcess = require(`${utils}/product-process`);
 const _ = require('lodash');
@@ -61,38 +62,47 @@ exports.getSaleGoodsData = (params) => {
 
         if (result[0].code === 200) {
             finalResult.goods = productProcess.processProductList(result[0].data.product_list);
+            _.forEach(finalResult.goods, (value, key) => {
+                delete finalResult.goods[key].tags.isNew; // 屏蔽 new 标签
+                delete finalResult.goods[key].tags.isSale;// 屏蔽 sale 标签
+                delete finalResult.goods[key].discount; // 屏蔽折扣信息
+            });
+        } else {
+            logger.error('search sale api code no 200');
         }
 
         // 处理 VIP 商品数据
         if (result[1].code === 200) {
+            let userInfo = result[1].data.vip_info ? camelCase(result[1].data.vip_info) : {};
+
+            if (_.isEmpty(userInfo)) {
+                logger.info('no user info');
+            }
+
             if (params.saleType === '2') {
                 _.forEach(finalResult.goods, (value, key) => {
 
-                    switch (result[1].curLevel) {
+                    switch (userInfo.curLevel) {
                         case '1':
-                            finalResult.goods[key].vipPrice = value.vip1Price;
+                            finalResult.goods[key].salePrice = value.vip1_price;
                             finalResult.goods[key].vip1 = true;
                             break;
                         case '2':
-                            finalResult.goods[key].vipPrice = value.vip2Price;
+                            finalResult.goods[key].salePrice = value.vip2_price;
                             finalResult.goods[key].vip2 = true;
                             break;
                         case '3':
-                            finalResult.goods[key].vipPrice = value.vip3Price;
+                            finalResult.goods[key].salePrice = value.vip3_price;
                             finalResult.goods[key].vip3 = true;
                             break;
                         default:
                             finalResult.goods[key].vip = true;
+                            delete finalResult.goods[key].salesPrice;
                             break;
                     }
 
                 });
             }
-            if (params.saleType === '3') {
-                _.forEach(finalResult.goods, (value, key) => {
-                    finalResult.goods[key].tags.isNew = false; // 屏蔽 new 标签
-                });
-            }
         }
 
         // 需要判断是否为今日推荐,今日推荐需要添加最后的全部商品图片
@@ -104,20 +114,20 @@ exports.getSaleGoodsData = (params) => {
                 case '1':
                     finalResult.goods.push({
                         thumb: 'http://img02.yohoboys.com/staticimg/2016/06/06/15/027f2ebe0f35a0f6dc29ffb11d40d58c68.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/90',
-                        url: '/sale/breakingYards?channel=' + params.channel
+                        url: '/product/sale/breakingYards?channel=' + params.channel
                     });
                     break;
                 case '2':
                     finalResult.goods.push({
                         thumb: 'http://img02.yohoboys.com/staticimg/2016/06/06/15/02c513694df76e78449781997d1ae2a67e.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/90',
-                        url: '/sale/vip?channel=' + params.channel,
+                        url: '/product/sale/vip?channel=' + params.channel,
                         vipPicture: true // 为了处理首页最后一张图片
                     });
                     break;
-                case '3':
+                case '0':
                     finalResult.goods.push({
                         thumb: 'http://img02.yohoboys.com/staticimg/2016/06/06/15/02161115728d763520bd4695d2530b2132.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/90',
-                        url: '/sale/newSale?channel=' + params.channel
+                        url: '/product/sale/newSale?channel=' + params.channel
                     });
                     break;
                 default:
@@ -140,18 +150,26 @@ exports.getSaleIndexData = (channel) => {
         saleApi.getSaleActivityList('', channel),
         saleApi.getSaleBannerList(contentCode[channel].sale),
         saleApi.getSaleGoodsList({channel: channel, saleType: '2', limit: '1'}), // 会员专享分类
-        saleApi.getSaleGoodsList({channel: channel, saleType: '1', limit: '1'}), // 断码区分类
-        saleApi.getSaleGoodsList({channel: channel, saleType: '3', limit: '1'}) // 最新降价分类
+        saleApi.getSalebreakingYardsSortList({channel: channel}), // 断码区尺码数据
+        saleApi.getSaleGoodsList({channel: channel, limit: '1'}) // 最新降价分类
     ]).then(result => {
         var finalResult = result[0];
 
+        // 折扣专场活动处理
         if (result[1].code === 200) {
-            finalResult.brandSale = saleHandler.handleSaleActivityData(result[1].data, channel);
+            if (result[1].data.length > 0) {
+                finalResult.brandSale = saleHandler.handleSaleActivityData(result[1].data, channel);
+            }
+        } else {
+            logger.error('discount activities api code no 200');
         }
 
-        if (result[2].code === 200) {
+        // 资源位数据处理
+        if (result[2].code === 200 && !_.isEmpty(result[2].data)) {
             finalResult.topBanner = saleHandler.handleSaleBannerData(result[2].data);
             finalResult.activityEnter = saleHandler.handleSaleBannerSmallData(result[2].data);
+        } else {
+            logger.error('content code api code no 200 or no data');
         }
 
         // 分类处理
@@ -161,24 +179,49 @@ exports.getSaleIndexData = (channel) => {
         if (result[3].code === 200) {
 
             finalResult.saleCategory.push(
-                saleHandler.handleSaleCategoryData(result[3].data.filter.group_sort, '2', channel)
+                Object.assign(
+                    saleHandler.handleSaleCategoryData(result[3].data.filter.group_sort, '2', channel),
+                    {forVip: true}
+                )
             );
+        } else {
+            logger.error('index vip category api code no 200');
         }
 
         // 断码区分类处理
         if (result[4].code === 200) {
+            let breakingSizeSort = saleHandler.handleSaleBreakingSizeData(result[4].data);
+
+            return api.all([saleApi.getSaleGoodsList({
+                channel: channel,
+                saleType: '1',
+                limit: '1'
+            })]).then(subResult => {
+                if (subResult[0].code === 200) {
+                    finalResult.saleCategory.push(
+                        saleHandler.handleSaleCategoryData(
+                            subResult[0].data.filter.group_sort,
+                            '1',
+                            channel,
+                            breakingSizeSort
+                        )
+                    );
+                }
+
+                // 最新降价分类处理
+                if (result[5].code === 200) {
+
+                    finalResult.saleCategory.push(
+                        saleHandler.handleSaleCategoryData(result[5].data.filter.group_sort, '3', channel)
+                    );
+                } else {
+                    logger.error('newSale category api code no 200');
+                }
+                return finalResult;
+            });
 
-            finalResult.saleCategory.push(
-                saleHandler.handleSaleCategoryData(result[4].data.filter.group_sort, '1', channel)
-            );
-        }
-
-        // 最新降价分类处理
-        if (result[5].code === 200) {
-
-            finalResult.saleCategory.push(
-                saleHandler.handleSaleCategoryData(result[5].data.filter.group_sort, '3', channel)
-            );
+        } else {
+            logger.error('breakYards category api code no 200');
         }
         return finalResult;
     });
@@ -192,85 +235,118 @@ exports.getSaleOthersData = (params, channel) => {
 
     let promiseObject;
 
-    // saleType: 1表示断码区,2表示会员专区,3 折扣专区,4表示奥莱
-    if (!_.isEmpty(params) && params.saleType === '2') {
-        promiseObject = [
-            headerModel.requestHeaderData(channel),
-            saleApi.getSaleGoodsList(params),
-            saleApi.getSaleBannerList(contentCode[channel].vip),
-            saleApi.getSaleGoodsList({saleType: '2', limit: '1', channel: channel}),
-            saleApi.getUserProfile(params.uid)
-        ];
-    } else {
-        promiseObject = [
-            headerModel.requestHeaderData(channel),
-            saleApi.getSaleGoodsList(params),
-            saleApi.getSaleBannerList(contentCode[channel].vip),
-            saleApi.getSaleGoodsList({saleType: '3', limit: '1', channel: channel})
-        ];
+    // saleType: 1表示断码区,2表示会员专区,3 折扣专区,4表示奥莱,0最新降价
+    if (!_.isEmpty(params)) {
+        if (params.saleType === '2') {
+            promiseObject = [
+                headerModel.requestHeaderData(channel),
+                saleApi.getSaleGoodsList(params),
+                saleApi.getSaleBannerList(contentCode[channel].vip),
+                saleApi.getSaleGoodsList({saleType: '2', limit: '1', channel: channel}),
+                saleApi.getUserProfile(params.uid)
+            ];
+        } else {
+            promiseObject = [
+                headerModel.requestHeaderData(channel),
+                saleApi.getSaleGoodsList(params),
+                saleApi.getSaleBannerList(contentCode[channel].vip),
+                saleApi.getSaleGoodsList({limit: '1', channel: channel})
+            ];
+        }
     }
 
-
     return api.all(promiseObject).then(result => {
         let finalResult = result[0];
 
         // 获取商品数据
         if (result[1].code === 200) {
             finalResult.goods = productProcess.processProductList(result[1].data.product_list);
+
+            if (!_.isEmpty(result[1].data.filter)) {
+                // 顶部筛选条件
+                finalResult.filters = publicHandler.handleSaleFilterData(result[1].data.filter, params);
+            } else {
+                logger.error('data filter is empty');
+            }
+
+            // 处理排序数据
+            finalResult.opts = publicHandler.handleSaleOptsData(params, result[1].data.total);
+            finalResult.totalCount = result[1].data.total;
+            finalResult.footPager = publicHandler.handlePagerData(result[1].data.total, params);
+
+            // 处理所有商品标题数据
+            finalResult.saleTitle = {
+                name: '所有商品',
+                count: result[1].data.total
+            };
+
+            _.forEach(finalResult.goods, (value, key) => {
+                delete finalResult.goods[key].tags.isNew; // 屏蔽 new 标签
+                delete finalResult.goods[key].tags.isSale;// 屏蔽 sale 标签
+                delete finalResult.goods[key].discount; // 屏蔽折扣信息
+            });
+        } else {
+            logger.error('goods list api code no 200');
         }
 
         // 获取焦点图数据
         if (result[2].code === 200) {
             finalResult.topBanner = saleHandler.handleSaleBannerData(result[2].data);
+            if (params.saleType !== '2') {
+                _.forEach(finalResult.topBanner.list, (value, key) => {
+                    delete finalResult.topBanner.list[key].href;
+                });
+            }
+        } else {
+            logger.error('content code api code no 200');
         }
 
         // 获取分类筛选数据
         if (result[3].code === 200) {
 
             // 获取左侧类目数据
-            finalResult.leftContent = saleHandler.handleSaleSortData(result[3].data.filter.group_sort, params);
-
-            // 顶部筛选条件
-            finalResult.filters = saleHandler.handleSaleFilterData(result[3].data.filter, params);
-
-            // 处理排序数据
-            finalResult.opts = saleHandler.handleSaleOptsData(params, result[3].data.total);
-            finalResult.totalCount = result[3].data.total;
-            finalResult.pager = saleHandler.handleSalePagerData(result[3].data.total, params);
-
-            // 处理所有商品标题数据
-            finalResult.saleTitle = {};
+            finalResult.leftContent = publicHandler.handleSaleSortData(result[3].data.filter.group_sort, params);
 
-            finalResult.saleTitle.name = '所有商品';
-            finalResult.saleTitle.count = finalResult.totalCount;
+        } else {
+            logger.error('left content category api code no 200');
         }
 
         if (!_.isEmpty(result[4])) {
             // 处理 VIP 商品数据
             if (result[4].code === 200 && parseInt(params.saleType, 10) === 2) {
+                let userInfo = result[4].data.vip_info ? camelCase(result[4].data.vip_info) : {};
+
+                if (_.isEmpty(userInfo)) {
+                    logger.info('no user info');
+                }
+
                 _.forEach(finalResult.goods, (value, key) => {
 
-                    switch (result[4].curLevel) {
+                    switch (userInfo.curLevel) {
                         case '1':
-                            finalResult.goods[key].vipPrice = value.vip1_price;
+                            finalResult.goods[key].salePrice = value.vip1_price;
                             finalResult.goods[key].vip1 = true;
                             break;
                         case '2':
-                            finalResult.goods[key].vipPrice = value.vip2_price;
+                            finalResult.goods[key].salePrice = value.vip2_price;
                             finalResult.goods[key].vip2 = true;
                             break;
                         case '3':
-                            finalResult.goods[key].vipPrice = value.vip3_price;
+                            finalResult.goods[key].salePrice = value.vip3_price;
                             finalResult.goods[key].vip3 = true;
                             break;
                         default:
-                            finalResult.goods[key].vipPrice = value.vip_price;
                             finalResult.goods[key].vip = true;
+                            delete finalResult.goods[key].salesPrice;
                             break;
                     }
 
                 });
+            } else {
+                logger.error('user api code no 200 or no vip category');
             }
+        } else {
+            logger.info('no user info get from api');
         }
 
         return finalResult;
@@ -284,96 +360,151 @@ exports.getSaleOthersData = (params, channel) => {
 exports.getSaleDiscountData = (params, channel) => {
     return api.all([
         headerModel.requestHeaderData(channel),
-        saleApi.getSaleGoodsList(params),
-        saleApi.getSaleActivityList(params, channel),
-        saleApi.getSaleGoodsList({channel: channel, saleType: '3', limit: '1'})
+        saleApi.getSaleGoodsList({channel: channel, saleType: '3', limit: '1'}),
+        saleApi.getSaleActivityList(params, channel)
     ]).then(result => {
         let finalResult = result[0];
 
-        // 处理商品数据,顶部分类
+        // 处理分页等筛选信息
         if (result[1].code === 200) {
-            finalResult.saleList = {};
-            finalResult.saleList.goods = productProcess.processProductList(result[1].data.product_list);
-
+            Object.assign(finalResult, {
+                leftContent: publicHandler.handleSaleSortData(result[1].data.filter.group_sort, params, 'discount'),
+                saleList: {
+                    footPager: publicHandler.handlePagerData(result[1].data.total, params),
+                    opts: publicHandler.handleSaleOptsData(params, result[1].data.total)
+                }
+            });
+        } else {
+            logger.error('category api no 200');
         }
 
         // 处理折扣专场标题 banner 数据
         if (result[2].code === 200) {
+
             if (_.size(result[2].data) === 1) {
                 finalResult.saleTitle = saleHandler.handleDiscountTitleData(result[2].data[0]);
-                finalResult.topBanner = {};
-                finalResult.topBanner.list = [];
-                finalResult.topBanner.list[0] = {};
-                finalResult.topBanner.list[0].img = result[2].data[0].web_url;
+                if (result[2].data[0].web_url) {
+                    finalResult.topBanner = {
+                        list: [
+                            {
+                                img: result[2].data[0].web_url
+                            }
+                        ]
+                    };
+                } else {
+                    logger.error('discount activity data[0] web_url empty');
+                }
             }
-        }
-
-        // 处理分页等筛选信息
-        if (result[3].code === 200) {
-            finalResult.leftContent = saleHandler.handleSaleSortData(result[3].data.filter.group_sort, params);
-            finalResult.saleList.totalCount = result[3].data.total;
-            finalResult.saleList.pager = saleHandler.handleSalePagerData(result[3].data.total, params);
-            finalResult.saleList.opts = saleHandler.handleSaleOptsData(params, result[3].data.total);
-        }
 
+            return api.all([
+                saleApi.getSaleGoodsList(Object.assign(params, {productPool: result[2].data[0].product_pool}))
+            ]).then(subResult => {
+                // 处理商品数据,顶部分类
+                if (subResult[0].code === 200) {
+                    finalResult.saleList.goods = productProcess.processProductList(subResult[0].data.product_list);
+                    finalResult.saleList.totalCount = subResult[0].data.total;
+
+                    _.forEach(finalResult.saleList.goods, (value, key) => {
+                        delete finalResult.saleList.goods[key].tags.isNew; // 屏蔽 new 标签
+                        delete finalResult.saleList.goods[key].tags.isSale;// 屏蔽 sale 标签
+                        delete finalResult.saleList.goods[key].discount; // 屏蔽折扣信息
+                    });
+                } else {
+                    logger.error('discount goods list api code no 200');
+                }
 
+                return finalResult;
+            });
+        } else {
+            logger.error('discount activity api code no 200');
+        }
         return finalResult;
     });
 };
 
 /**
  * 获取断码区数据 Controller 调用
- * @param  {[type]} params [description]
- * @return {[type]}        [description]
+ * @param params
+ * @param channel
+ * @returns {*|Promise.<TResult>}
  */
 exports.getSalebreakingYardsData = (params, channel) => {
     return api.all([
         headerModel.requestHeaderData(channel),
         saleApi.getSaleBannerList(contentCode[channel].breakCode),
-        saleApi.getSalebreakingYardsSortList(params),
-        saleApi.getSaleGoodsList({channel: channel, saleType: '1', limit: '1'}),
-        saleApi.getSaleGoodsList(params)
+        saleApi.getSalebreakingYardsSortList(params)
     ]).then(result => {
         let finalResult = result[0];
 
         // 处理 banner 数据
         if (result[1].code === 200) {
             finalResult.topBanner = saleHandler.handleSaleBannerData(result[1].data);
+            _.forEach(finalResult.topBanner.list, (value, key) => {
+                delete finalResult.topBanner.list[key].href;
+            });
+        } else {
+            logger.error('content code api code no 200');
         }
 
-        // 处理筛选条件数据
-        if (result[3].code === 200) {
-            finalResult.leftContent = saleHandler.handleSaleSortData(result[3].data.filter.group_sort, params);
-
-            // 这边整合了尺码数据处理
-            if (result[2].code === 200) {
-                finalResult.filters = saleHandler.handleSaleFilterData(
-                    Object.assign(result[3].data.filter, { size: result[2].data }),
-                    params);
-            }
-
-            finalResult.opts = saleHandler.handleSaleOptsData(params, result[3].data.total);
-            finalResult.totalCount = result[3].data.total;
-            finalResult.pager = saleHandler.handleSalePagerData(result[3].data.total, params);
-
-            // 处理所有商品标题数据
-            finalResult.saleTitle = {};
-
-            finalResult.saleTitle.name = '所有商品';
-            finalResult.saleTitle.count = finalResult.totalCount;
-        }
+        // 断码区产品筛选需要断码区尺码数据,改为串行处理
+        if (result[2].code === 200) {
+            let breakingSizeSort = saleHandler.handleSaleBreakingSizeData(result[2].data);
+            let breakParam = {}; // 为断码区筛选参数存储,为了不影响 params ,否则会导致链接过长
+
+            return api.all([
+                saleApi.getSaleGoodsList({
+                    channel: channel,
+                    saleType: '1',
+                    limit: '1',
+                    breakSize: breakingSizeSort.breakSize,
+                    breakSort: breakingSizeSort.breakSort
+                }),
+                saleApi.getSaleGoodsList(Object.assign(breakParam, params, {
+                    breakSize: breakingSizeSort.breakSize,
+                    breakSort: breakingSizeSort.breakSort
+                }))
+            ]).then(subResult => {
+                // 处理筛选条件数据
+                if (subResult[0].code === 200) {
+                    finalResult.leftContent =
+                        publicHandler.handleSaleSortData(subResult[0].data.filter.group_sort, params);
+                } else {
+                    logger.error('breakYards left content api code no 200');
+                }
+
+                // 处理商品数据
+                if (subResult[1].code === 200) {
+
+                    if (!_.isEmpty(subResult[1].data.filter)) {
+                        finalResult.filters = publicHandler.handleSaleFilterData(
+                            Object.assign(subResult[1].data.filter, {size: result[2].data}),
+                            params);
+                    }
+                    Object.assign(finalResult, {
+                        goods: productProcess.processProductList(subResult[1].data.product_list),
+                        opts: publicHandler.handleSaleOptsData(params, subResult[1].data.total),
+                        totalCount: subResult[1].data.total,
+                        footPager: publicHandler.handlePagerData(subResult[1].data.total, params)
+                    });
 
-        // 处理商品数据
-        if (result[4].code === 200) {
-            finalResult.goods = productProcess.processProductList(result[4].data.product_list);
+                    // 处理所有商品标题数据
+                    finalResult.saleTitle = {
+                        name: '所有商品',
+                        count: subResult[1].data.total
+                    };
 
-            _.forEach(finalResult.goods, (value, key) => {
-                finalResult.goods[key].tags.isNew = false; // 屏蔽 new 标签
+                    _.forEach(finalResult.goods, (value, key) => {
+                        delete finalResult.goods[key].tags.isNew; // 屏蔽 new 标签
+                        delete finalResult.goods[key].tags.isSale;// 屏蔽 sale 标签
+                        delete finalResult.goods[key].discount; // 屏蔽折扣信息
+                    });
+                } else {
+                    logger.error('breakYards goods list code no 200');
+                }
+                return finalResult;
             });
-
-
+        } else {
+            logger.error('breakYards size api code no 200');
         }
-
-        return finalResult;
     });
 };
diff --git a/apps/product/models/search-api.js b/apps/product/models/search-api.js
index 8e0e1b1..ffcbf37 100644
--- a/apps/product/models/search-api.js
+++ b/apps/product/models/search-api.js
@@ -1,12 +1,16 @@
-'use strict';
+/**
+ * Created by TaoHuang on 2016/6/14.
+ */
+
 
-const library = '../../../library';
-const API = require(`${library}/api`).SearchAPI;
-const log = require(`${library}/logger`);
+'use strict';
 
-const api = new API();
+const api = global.yoho.SearchAPI;
 
-module.exports.getSortByConditionAsync = function(condition) {
-    return api.get('sortgroup.json', condition).catch(log.error);
+const getSortByConditionAsync = (condition) => {
+    return api.get('sortgroup.json', condition);
 };
 
+module.exports = {
+    getSortByConditionAsync
+};
diff --git a/apps/product/router.js b/apps/product/router.js
index 0b1fce4..19a0ced 100644
--- a/apps/product/router.js
+++ b/apps/product/router.js
@@ -33,29 +33,21 @@ router.get('/sale/newSale', sale.newSale); // 最新降价
 router.get('/sale/goods', sale.getGoodsList); // ajax 获取商品列表
 
 // 奥特莱斯routers
-router.get('/outlets/index', outlets.index);
-router.get('/outlets/special/detail', outlets.special);
+router.get('/outlets', outlets.index); // 奥莱首页
+router.get('/outlets/index', outlets.index); // 奥莱首页
+router.get('/outlets/special/detail', outlets.special); // 奥莱活动页
 router.get('/outlets/list', outlets.list); // 奥莱品类页
-router.get('/outlets/:channel', outlets.channel);
+router.get('/outlets/:channel', outlets.channel); // 奥莱频道页
 
 // 商品列表页
 router.get('/list', list.index); // 商品列表页
 
-// 商品详情routers
-router.get('/detail/:id/:gid', detail.showMain);
-
-// 商品评论
-router.get('/detail/comment', detail.indexComment);
-
-// 商品咨询
-router.get('/detail/consult', detail.indexConsult);
-router.post('/detail/consult', detail.createConsult);
-
-// 商品热图
-router.get('/detail/hotarea', detail.indexHotArea);
-
-// 收藏品牌
-router.post('/index/favoriteBrand', favorite.changeFavoriteBrand);
+router.get(/\/pro_([\d]+)_([\d]+)\/(.*)/, detail.showMain); // 商品详情routers
+router.get('/detail/comment', detail.indexComment);// 商品评论
+router.get('/detail/consult', detail.indexConsult);// 商品咨询
+router.post('/detail/consult', detail.createConsult);// 创建咨询
+router.get('/detail/hotarea', detail.indexHotArea);// 商品热区
+router.post('/index/favoriteBrand', favorite.changeFavoriteBrand);// 收藏品牌
 router.post('/item/togglecollect', favorite.collectProduct);
 
 
diff --git a/apps/product/views/action/error.hbs b/apps/product/views/action/error.hbs
deleted file mode 100644
index e69de29..0000000
--- a/apps/product/views/action/error.hbs
+++ /dev/null
diff --git a/apps/product/views/action/goods.hbs b/apps/product/views/action/goods.hbs
index 7fa1976..d66535d 100644
--- a/apps/product/views/action/goods.hbs
+++ b/apps/product/views/action/goods.hbs
@@ -1,64 +1,5 @@
 {{# result}}
 {{#each goods}}
-    <div class="good-info {{#if vip}} good-info-big{{/if}} {{#if vip1}} good-info-big{{/if}} {{#if vip2}} good-info-big{{/if}} {{#if vip3}} good-info-big{{/if}} {{#if vipPicture}} good-info-big{{/if}}" data-skn="{{skn}}" data-from="{{from}}">
-        <div class="tag-container clearfix">
-            {{# tags}}
-                {{# isNew}}
-                    <span class="good-tag new-tag">NEW</span>
-                {{/ isNew}}
-                {{# isReNew}}
-                    <span class="good-tag renew-tag">再到着</span>
-                {{/ isReNew}}
-                {{# isSale}}
-                    <span class="good-tag sale-tag">SALE</span>
-                {{/ isSale}}
-                {{# isNewFestival}}
-                    <span class="good-tag new-festival-tag">新品节</span>
-                {{/ isNewFestival}}
-                {{# isLimited}}
-                    <span class="good-tag limit-tag">限量商品</span>
-                {{/ isLimited}}
-                {{# isYearEndPromotion}}
-                    <span class="good-tag yep-tag">年终大促</span>
-                {{/ isYearEndPromotion}}
-                {{# isYearMidPromotion}}
-                    <span class="good-tag ymp-tag">年中热促</span>
-                {{/ isYearMidPromotion}}
-            {{/ tags}}
-        </div>
-        <div class="good-detail-img">
-            <a class="good-thumb" href="{{url}}" target="_blank">
-                <img class="lazy"  data-original="{{image thumb 280 380}}">
-            </a>
-            {{# tags}}
-                {{# isFew}}
-                    <p class="few-tag">即将售罄</p>
-                {{/ isFew}}
-            {{/ tags}}
-            {{#if showColBtn}}
-                <span class="col-btn iconfont{{#if coled}} coled{{/if}}">&#xe616;</span>
-            {{/if}}
-        </div>
-        <div class="good-detail-text">
-            <a href="{{url}}" target="_blank">{{{productName}}}</a>
-                <p class="brand">
-                    <a href="{{brandUrl}}">{{brandName}}</a>
-                </p>
-            <p class="price">
-                {{# marketPrice}}
-                    <span class="market-price">¥{{.}}</span>
-                {{/ marketPrice}}
-                {{# salesPrice}}
-                <span class="sale-price{{#unless marketPrice}}prime-cost{{/unless}}">
-                    ¥{{.}}
-                </span>
-                {{/ salesPrice}}
-                {{#vip}}<span class="vip-tag"> VIP   </span><strong>更优惠</strong>{{/vip}}
-                {{#vip1}}<span class="vip-1">     </span><strong>{{vipPrice}}</strong>{{/vip1}}
-                {{#vip2}}<span class="vip-2">     </span><strong>{{vipPrice}}</strong>{{/vip2}}
-                {{#vip3}}<span class="vip-3">     </span><strong>{{vipPrice}}</strong>{{/vip3}}
-            </p>
-        </div>
-    </div>
+    {{> product/good}}
 {{/each}}
-{{/ result}}
+{{/ result}}
\ No newline at end of file
diff --git a/apps/product/views/action/outlets/channel.hbs b/apps/product/views/action/outlets/channel.hbs
index afe8b0b..fe1c42b 100644
--- a/apps/product/views/action/outlets/channel.hbs
+++ b/apps/product/views/action/outlets/channel.hbs
@@ -1,26 +1,26 @@
-<div class="outlets-channel-page yoho-page" data-page="girls">
-    <div class="slide-container clearfix">
-        <div class="center-col col">
-            <ul class="slide-wrapper">
-                {{# left}}
-                <li>
-                    <a href="{{href}}" target="_blank">
-                        <img src="{{image img 865 450}}">
-                        <!-- <img class="lazy" data-original="{{img}}"> -->
-                    </a>
-                </li>
-                {{/ left}}
-            </ul>
+<div class="outlets-channel-page outlets-page center-content yoho-page" data-page="girls">
+    {{# topBanner}}
+        <div class="slide-container clearfix">
+            <div class="center-col col">
+                <ul class="slide-wrapper">
+                    {{# left}}
+                    <li>
+                        <a href="{{url}}" target="_blank">
+                            <img src="{{image src 865 450}}">
+                        </a>
+                    </li>
+                    {{/ left}}
+                </ul>
+            </div>
+            <div class="right-col col">
+                {{# right}}
+                <a href="{{url}}" target="_blank">
+                    <img src="{{image src 290 180}}">
+                </a>
+                {{/ right}}
+            </div>
         </div>
-        <div class="right-col col">
-            {{# right}}
-            <a href="{{href}}" target="_blank">
-                <img src="{{image img 290 180}}">
-                <!-- <img class="lazy" data-original="{{img}}"> -->
-            </a>
-            {{/ right}}
-        </div>
-    </div>
+    {{/ topBanner}}
 
     {{! 热门品类}}
     {{# hotCategory}}
diff --git a/apps/product/views/action/outlets/index.hbs b/apps/product/views/action/outlets/index.hbs
index 28d111a..005ca3b 100644
--- a/apps/product/views/action/outlets/index.hbs
+++ b/apps/product/views/action/outlets/index.hbs
@@ -1,15 +1,16 @@
-{{!-- <pre>{{resultShow}}</pre> --}}
-{{# result}}
 <div class="outlets-page product-page yoho-page">
     {{> common/main-banner}}
     <div class="center-content">
-        <ul class="column-img-tab">
-            {{# column}}
-            <li>
-                <a href="{{url}}"><img class="lazy" data-original="{{image src 378 175}}"></a>
-            </li>
-            {{/ column}}
-        </ul>
+        {{#if column}}
+            <ul class="column-img-tab clearfix">
+                {{# column}}
+                <li>
+                    <a href="{{url}}" target="_blank"><img class="lazy" data-original="{{image src 378 175}}"></a>
+                </li>
+                {{/ column}}
+            </ul>
+        {{/if}}
+
         {{> outlets/limited-buy}}
 
         {{> outlets/near-over}}
@@ -17,5 +18,4 @@
         {{> outlets/main-product}}
 
     </div>
-</div>
-{{/ result}}
\ No newline at end of file
+</div>
\ No newline at end of file
diff --git a/apps/product/views/action/outlets/special.hbs b/apps/product/views/action/outlets/special.hbs
index ffc5e31..4752acf 100644
--- a/apps/product/views/action/outlets/special.hbs
+++ b/apps/product/views/action/outlets/special.hbs
@@ -1,6 +1,6 @@
-{{!-- <pre>{{resultShow}}</pre> --}}
 <div class="outlets-special-page product-page yoho-page">
     {{> common/main-banner}}
+    
     <div class="center-content clearfix">
         {{> common/special-head}}
         <div class="list-left left">
diff --git a/apps/product/views/action/sale/discount.hbs b/apps/product/views/action/sale/discount.hbs
index 3c79ce6..7432be8 100644
--- a/apps/product/views/action/sale/discount.hbs
+++ b/apps/product/views/action/sale/discount.hbs
@@ -1,37 +1,9 @@
 {{# result}}
-<div class="sale-discount-page yoho-page center-content .new-sale-page">
+<div class="sale-discount-page yoho-page center-content product-page">
 
-    {{#topBanner}}
-        {{> sale/sale-banner}}
-    {{/topBanner}}
+    {{> sale/sale-banner}}
 
-    <div class="center-content clearfix">
-        {{#saleTitle}}
-            <div class="sale-title">
-                <span class="title">{{title}}</span>
-                {{#if discount}}
-                    <span class="discount">{{discount}}</span>
-                {{/if}}
-                {{#if up}}
-                    起
-                {{/if}}
-                <div class="time pull-right">
-                    <span class="iconfont">&#xe60a;</span>
-                    <label class="time-calculate hidden" data="{{time}}"></label>
-                </div>
-            </div>
-        {{/saleTitle}}
-        <ul class="sort">
-            <li class="title">分类:</li>
-            {{#leftContent}}
-                {{#allSort}}
-                    {{#list}}
-                        <li class="{{#if checked}}active{{/if}}"><a href="{{href}}">{{name}}({{num}})</a></li>
-                    {{/list}}
-                {{/allSort}}
-            {{/leftContent}}
-        </ul>
-    </div>
+    {{> sale/discount-center-content}}
 
     {{# saleList}}
 
diff --git a/apps/product/views/action/sale/index.hbs b/apps/product/views/action/sale/index.hbs
index 61d0b38..ac0f25a 100644
--- a/apps/product/views/action/sale/index.hbs
+++ b/apps/product/views/action/sale/index.hbs
@@ -1,18 +1,13 @@
 {{# result}}
 <div class="sale-page yoho-page center-content">
     {{! 头部banner}}
-
-    {{#topBanner}}
-        {{> common/slide-banner}}
-    {{/topBanner}}
-
+    {{> common/slide-banner}}
 
     {{> sale/activity-entry}}
     {{> sale/brand-sale}}
 
-    <div class="home-page">
-        {{> sale/sale-box}}
-    </div>
+    
+    {{> sale/sale-box}}
 
 </div>
 {{/ result}}
diff --git a/apps/product/views/action/sale/other.hbs b/apps/product/views/action/sale/other.hbs
index fd5c9b5..db8b421 100644
--- a/apps/product/views/action/sale/other.hbs
+++ b/apps/product/views/action/sale/other.hbs
@@ -1,8 +1,6 @@
 <div class="new-sale-page product-page yoho-page sale-discount-page">
     {{# saleList}}
-        {{#topBanner}}
-            {{> sale/sale-banner}}
-        {{/topBanner}}
+        {{> sale/sale-banner}}
 
         <div class="center-content clearfix">
             {{# pathNav}}    
diff --git a/apps/product/views/partial/common/goods-menu.hbs b/apps/product/views/partial/common/goods-menu.hbs
index 7dbbd37..7d0c120 100644
--- a/apps/product/views/partial/common/goods-menu.hbs
+++ b/apps/product/views/partial/common/goods-menu.hbs
@@ -7,7 +7,7 @@
             {{/each}}
         </ul>
         {{#if more}}
-            <a href="{{more}}" class="more">MORE</a>
+            <a href="{{more}}" class="more" target="_blank">MORE</a>
         {{/if}}
     </div>
 {{/ goodsMenu}}
\ No newline at end of file
diff --git a/apps/product/views/partial/common/special-head.hbs b/apps/product/views/partial/common/special-head.hbs
index 6ccdb09..15ab32f 100644
--- a/apps/product/views/partial/common/special-head.hbs
+++ b/apps/product/views/partial/common/special-head.hbs
@@ -5,7 +5,7 @@
         <label class="time" data-limit="{{limit}}"></label>
     </div>
     <div class="special-name">
-        <img src="{{image logo 100 40}}">
+        <img src="{{image logo 86 40}}">
         {{special}}
         <span><i>{{discount}}</i>{{discountText}}</span>
     </div>
diff --git a/apps/product/views/partial/index/flash-sale.hbs b/apps/product/views/partial/index/flash-sale.hbs
deleted file mode 100644
index 3f1a3e1..0000000
--- a/apps/product/views/partial/index/flash-sale.hbs
+++ /dev/null
@@ -1,22 +0,0 @@
-<div class="flash-sale clearfix">
-    {{> index/floor-header}}
-    <div class="flash-sale-list">
-        <ul class="g-list imgopacity clearfix">
-            {{#each imgHot}}
-                <li>
-                    <a href="{{href}}" target= "_blank"><div class="flash-sale-banner">
-                        <img src="{{image img 560 260}}"/></div>
-                        <div class="flash-sale-bottom">
-                            <p class="flash-sale-count">{{count}}折起</p>
-                            <p class="flash-sale-name">{{name}}</p>
-                            <p class="flash-sale-timer">timer</p>
-                            <div  class="flash-sale-logo">
-                                <img src="{{image logo 100 60}}"/>
-                            </div>
-                        </div>
-                    </a>
-                </li>
-            {{/each}}
-        </ul>
-    </div>
-</div>
\ No newline at end of file
diff --git a/apps/product/views/partial/index/newDiscount b/apps/product/views/partial/index/newDiscount
deleted file mode 100644
index 5d5c6dd..0000000
--- a/apps/product/views/partial/index/newDiscount
+++ /dev/null
@@ -1,9 +0,0 @@
-<div class="new-discount">
-    <p class="new-discount-label">最新折扣</p>
-    <ul class="discount-nav" urlLocation="{{urlLocation}}">
-        {{#discountNavItem}}
-            <li class="discount-nav-list" urlLocation='{{urlLocation}}'>{{title}}</li>
-        {{/discountNavItem}}
-    </ul>
-    <a url="{{discountMore}}">MORE</a>
-</div>
\ No newline at end of file
diff --git a/apps/product/views/partial/index/outlets-recommend.hbs b/apps/product/views/partial/index/outlets-recommend.hbs
index 6d9a888..2054e91 100644
--- a/apps/product/views/partial/index/outlets-recommend.hbs
+++ b/apps/product/views/partial/index/outlets-recommend.hbs
@@ -4,7 +4,7 @@
         <div class="tpl-nav">
             <div class="tpl-keywords">
                 {{#each blocks}}
-                <a class="keywords{{@index}}" title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 185 75}}"/></a>
+                <a class="keywords{{@index}}" title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 185 76}}"/></a>
                 {{/each}}
             </div>
             <div class="tpl-category clearfix">
@@ -15,13 +15,13 @@
         </div>
         <div class="tpl-brands imgopacity clearfix">
             {{#each brands}}
-            <a title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 375 505}}"/></a>
+            <a title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 377 504}}"/></a>
             {{/each}}
         </div>
         <div class="tpl-types imgopacity clearfix">
             <ul>
                 {{#each types}}
-                <li><a title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 185 245}}"/></a></li>
+                <li><a title="{{title}}" href="{{url}}" target= "_blank"><img src="{{image img 185 248}}"/></a></li>
                 {{/each}}
             </ul>
         </div>
diff --git a/apps/product/views/partial/outlets/extra-feature.hbs b/apps/product/views/partial/outlets/extra-feature.hbs
new file mode 100644
index 0000000..c813ccd
--- /dev/null
+++ b/apps/product/views/partial/outlets/extra-feature.hbs
@@ -0,0 +1,18 @@
+{{# comeSoon}}
+    <div class="extra-pack">
+        <div class="extra-title">{{title}}</div>
+        <div class="brand-list">
+            <div class="list-page">
+                {{# brands}}
+                    <div class="brand-item">
+                        <img class="lazy" data-original="{{image logo 140 65}}">
+                    </div>
+                {{/ brands}}
+            </div>
+        </div>
+        <div class="brand-page-btns page-btns" onselectstart="return false">
+            <label class="iconfont pre-page-btn">&#xe609;</label>
+            <label class="iconfont next-page-btn">&#xe608;</label>
+        </div>
+    </div>
+{{/ comeSoon}}
\ No newline at end of file
diff --git a/apps/product/views/partial/outlets/extra-product.hbs b/apps/product/views/partial/outlets/extra-product.hbs
index 0caddb0..327af6a 100644
--- a/apps/product/views/partial/outlets/extra-product.hbs
+++ b/apps/product/views/partial/outlets/extra-product.hbs
@@ -9,12 +9,14 @@
                             <img class="lazy" data-original="{{image thumb 90 120}}">
                         </a>
                         <div class="item-text">
-                            <a href="{{url}}">
+                            <a href="{{url}}" target="_blank">
                                 {{productName}}
                                 <p class="price">
-                                    <span class="sale-price">{{salesPrice}}</span>
-                                    <span class="market-price">{{marketPrice}}</span>
-                                    <label class="discount">{{discount}}折</label>
+                                    <span class="sale-price">¥{{round salesPrice 2}}</span>
+                                    {{#if marketPrice}}
+                                        <span class="market-price">¥{{round marketPrice 2}}</span>
+                                        <label class="discount">{{discount}}折</label>
+                                    {{/if}}
                                 </p>
                             </a>
                         </div>
@@ -22,7 +24,7 @@
                 {{/ goods}}
             </div>
         </div>
-        <div class="good-page-btns" onselectstart="return false">
+        <div class="good-page-btns page-btns" onselectstart="return false">
             <label class="iconfont pre-page-btn">&#xe609;</label>
             <label class="iconfont next-page-btn">&#xe608;</label>
         </div>
diff --git a/apps/product/views/partial/outlets/limited-buy.hbs b/apps/product/views/partial/outlets/limited-buy.hbs
index 6f9fdf1..daf893b 100644
--- a/apps/product/views/partial/outlets/limited-buy.hbs
+++ b/apps/product/views/partial/outlets/limited-buy.hbs
@@ -5,11 +5,12 @@
             <div class="limit-extra right">
                 {{# extra}}
                     {{# sourceImg}}
-                        <a href="{{#if herf}}{{href}}{{^}}javascript:;{{/if}}" class="source-img" target="_blank">
+                        <a href="{{#if href}}{{href}}{{^}}javascript:;{{/if}}" class="source-img" target="_blank">
                             <img class="lazy" data-original="{{image img 380 506}}" width=100%>
                         </a>
                     {{/ sourceImg}}
                     {{> outlets/extra-recommend}}
+                    {{> outlets/extra-feature}}
                     {{> outlets/extra-product}}
                 {{/ extra}}
             </div>
@@ -21,10 +22,10 @@
                     </a>
                     <div class="item-info">
                         <a href="{{href}}" target="_blank">
-                            <img class="logo-img" src="{{image logo 155 65}}">
+                            <img class="logo-img" src="{{image logo 140 65}}">
                             <p class="discount"><i>{{discount}}</i>{{discountText}}</p>
                             <p class="title">{{title}}</p>
-                            <label class="time" data-limit="{{limit}}"></label>
+                            <label class="time" data-limit="{{limit}}" data-pre="仅剩"></label>
                         </a>
                     </div>
                 </div>
diff --git a/apps/product/views/partial/outlets/main-product.hbs b/apps/product/views/partial/outlets/main-product.hbs
index 5a29da3..197deb3 100644
--- a/apps/product/views/partial/outlets/main-product.hbs
+++ b/apps/product/views/partial/outlets/main-product.hbs
@@ -1,5 +1,5 @@
 {{# goodsBoard}}
-    <div class="main-product">
+    <div id="otspool" class="main-product">
         {{> common/goods-menu}}
 
         <div class="sort-layer">
@@ -17,16 +17,15 @@
                     <div class="detail-text">
                         <a class="name" href="{{url}}" target="_blank">{{productName}}</a>
                         <p>
-                            <span class="price">¥{{salesPrice}}</span>
-                            <label class="discount">{{discount}}折</label>
+                            <span class="price">¥{{round salesPrice 2}}</span>
+                            {{# discount}}
+                                <label class="discount">{{.}}折</label>
+                            {{/ discount}}
                         </p>
                     </div>
                 </div>
             {{/ list}}
         </div>
     </div>
-{{/ goodsBoard}}
-<div class="product-pager clearfix">
-    <span class="total">{{{total}}}</span>
-    <div class="pager">{{{pager}}}</div>
-</div>
\ No newline at end of file
+    {{> common/foot-pager}}
+{{/ goodsBoard}}
\ No newline at end of file
diff --git a/apps/product/views/partial/outlets/near-over.hbs b/apps/product/views/partial/outlets/near-over.hbs
index b6a5e9c..a31ab5c 100644
--- a/apps/product/views/partial/outlets/near-over.hbs
+++ b/apps/product/views/partial/outlets/near-over.hbs
@@ -10,7 +10,7 @@
                         </a>
                         <div class="item-info">
                             <a href="{{href}}" target="_blank">
-                                <img src="{{image logo 150 50}}" class="brand-logo">
+                                <img src="{{image logo 140 65}}" class="brand-logo">
                             </a>
                             <div class="activity-info">
                                 <p>
@@ -19,7 +19,7 @@
                                 </p>
                                 <p>
                                     <span class="iconfont">&#xe60a;</span>
-                                    <label class="time" data-limit="{{limit}}"></label>
+                                    <label class="time" data-limit="{{limit}}" data-pre="仅剩"></label>
                                 </p>
                             </div>
 
diff --git a/apps/product/views/partial/sale/brand-sale.hbs b/apps/product/views/partial/sale/brand-sale.hbs
index a240dea..0a4a6c6 100644
--- a/apps/product/views/partial/sale/brand-sale.hbs
+++ b/apps/product/views/partial/sale/brand-sale.hbs
@@ -1,42 +1,44 @@
 <div class="brand-sale">
-    <div class="floor-title">
-        折扣专场 SALE
-    </div>
-
-    {{#brandSale}}
-        <div class="sale-group-big clearfix">
-            {{#big}}
-                <a class="item pull-left" href="{{link}}">
-                    <div class="pic">
-                        <img src="{{image img 375 400}}">
-                        <div class="time"><span></span>&#xe60a;{{time}}</div>
-                    </div>
-                    <div class="detail">
-                        <img class="brand pull-left" src="{{image brand 150 100}}">
-                        <div class="text">
-                            <div class="discount">
-                                <span class="num">{{discount}}</span>
-                            </div>
-                            <div class="active-name">{{activityName}}</div>
-                            <div class="title">
-                                {{title}}
+    {{#if brandSale}}
+        {{#brandSale}}
+            <div class="floor-title">
+            折扣专场 SALE
+            </div>
+            <div class="sale-group-big clearfix">
+                {{#big}}
+                    <a class="item pull-left" href="{{link}}" target= "_blank">
+                        <div class="pic">
+                            <img src="{{image img 375 375}}">
+                            <div class="time"><span class="time-span"><span class="iconfont">&#xe60a;</span>{{time}}</span></div>
+                        </div>
+                        <div class="detail">
+                            <img class="brand pull-left" src="{{image brand 185 86}}">
+                            <div class="text">
+                                <div class="discount">
+                                    <span class="num">{{discount}}</span>
+                                    {{discountText}}
+                                </div>
+                                <div class="active-name">{{activityName}}</div>
+                                <div class="title">
+                                    {{title}}
+                                </div>
                             </div>
                         </div>
-                    </div>
-                </a>
-            {{/big}}
-        </div>
-        <div class="sale-group clearfix">
-            {{#normal}}
-                <a class="item pull-left" href="{{link}}">
-                    <img class="pic" src="{{image img 378 500}}">
-                    <div class="detail">
-                        <div class="title">{{title}}<span>{{discount}}</span>{{discountText}}</div>
-                        <div class="time">{{time}}</div>
-                    </div>
-                </a>
-            {{/normal}}
-        </div>
-    {{/brandSale}}
+                    </a>
+                {{/big}}
+            </div>
+            <div class="sale-group clearfix">
+                {{#normal}}
+                    <a class="item pull-left" href="{{link}}" target= "_blank">
+                        <img class="pic" src="{{image img 350 350}}">
+                        <div class="detail">
+                            <div class="title">{{title}}{{discount}}{{discountText}}</div>
+                            <div class="time">{{time}}</div>
+                        </div>
+                    </a>
+                {{/normal}}
+            </div>
+        {{/brandSale}}
+    {{/if}}
 
 </div>
diff --git a/apps/product/views/partial/sale/discount-center-content.hbs b/apps/product/views/partial/sale/discount-center-content.hbs
new file mode 100644
index 0000000..c8df2dd
--- /dev/null
+++ b/apps/product/views/partial/sale/discount-center-content.hbs
@@ -0,0 +1,30 @@
+<div class="center-content clearfix">
+    {{#saleTitle}}
+        <div class="sale-title">
+            <span class="title">{{title}}</span>
+            {{#if discount}}
+                <span class="discount">{{discount}}</span>
+            {{/if}}
+            {{#if discountText}}
+                {{discountText}}
+            {{/if}}
+            <div class="time pull-right">
+                <span class="iconfont">&#xe60a;</span>
+                <label class="time-calculate hidden" data="{{time}}"></label>
+            </div>
+        </div>
+    {{/saleTitle}}
+    <ul class="sort">
+        <li class="title">分类:</li>
+        {{#leftContent}}
+            {{#allSort}}
+                {{#all}}
+                    <li class="{{#if active}}active{{/if}}"><a href="{{href}}">{{name}} {{#if num}}({{num}}){{/if}}</a></li>
+                {{/all}}
+                {{#list}}
+                    <li class="{{#if active}}active{{/if}}"><a href="{{href}}">{{name}} {{#if num}}({{num}}){{/if}}</a></li>
+                {{/list}}
+            {{/allSort}}
+        {{/leftContent}}
+    </ul>
+</div>
\ No newline at end of file
diff --git a/apps/product/views/partial/sale/sale-banner.hbs b/apps/product/views/partial/sale/sale-banner.hbs
index 2a62cdb..81e5a74 100644
--- a/apps/product/views/partial/sale/sale-banner.hbs
+++ b/apps/product/views/partial/sale/sale-banner.hbs
@@ -1,7 +1,17 @@
-<div class="sale-list-banner" style="height: 360px;">
-    <ul>
-        {{# list}}
-            <li class="banner-img" style="background:url({{image img 1920 360}}) no-repeat top center;"></li>
-        {{/ list}}
-    </ul>
-</div>
+{{# topBanner}}
+	{{#if list}}
+		<div class="sale-list-banner" style="height: 360px;">
+		    <ul>
+		        {{# list}}
+		        	{{#if href}}
+		        	<a href="{{href}}" target= "_blank">
+		        	<li class="banner-img" style="background:url({{image img 1150 360}}) no-repeat top center;"></li>
+		        	</a>
+		        	{{^}}
+		            <li class="banner-img" style="background:url({{image img 1150 360}}) no-repeat top center;"></li>
+		            {{/if}}
+		        {{/ list}}
+		    </ul>
+		</div>
+    {{/if}}
+{{/topBanner}}
\ No newline at end of file
diff --git a/apps/product/views/partial/sale/sale-box.hbs b/apps/product/views/partial/sale/sale-box.hbs
index 3111957..d553bba 100644
--- a/apps/product/views/partial/sale/sale-box.hbs
+++ b/apps/product/views/partial/sale/sale-box.hbs
@@ -1,16 +1,18 @@
 {{#saleCategory}}
-    <div class="sale-box">
-        <div class="floor-header clearfix">
-            <h2 class="floor-title">{{title}}</h2>
-        </div>
-        <ul class="sale-nav" urlLocation="{{urlLocation}}">
-            {{#navItem}}
-                <li class="{{#vip}}green{{/vip}} {{#incompleteSize}}yellow{{/incompleteSize}} {{#newDiscount}}red{{/newDiscount}} {{#if @first}}active first{{/if}} {{#if @last}}last{{/if}}" urlLocation='{{urlLocation}}'>{{title}}</li>
-            {{/navItem}}
-        </ul>
-        <div class="commodity-list">
-            <ul class="clearfix goods">
+    {{#if navItem}}
+        <div class="sale-box {{#if forVip}}sale-vip-box{{/if}}">
+            <div class="floor-header clearfix">
+                <h2 class="floor-title">{{title}}</h2>
+            </div>
+            <ul class="sale-nav" urlLocation="{{urlLocation}}">
+                {{#navItem}}
+                    <li class="{{#vip}}green{{/vip}} {{#incompleteSize}}yellow{{/incompleteSize}} {{#newDiscount}}red{{/newDiscount}} {{#if @first}}active first{{/if}} {{#if @last}}last{{/if}}" urlLocation='{{urlLocation}}'>{{title}}</li>
+                {{/navItem}}
             </ul>
+            <div class="commodity-list">
+                <ul class="clearfix goods">
+                </ul>
+            </div>
         </div>
-    </div>
+    {{/if}}
 {{/saleCategory}}
diff --git a/config/common.js b/config/common.js
index 20bdf35..4d7dbc4 100644
--- a/config/common.js
+++ b/config/common.js
@@ -13,8 +13,8 @@ module.exports = {
     port: 6002,
     siteUrl: 'http://www.yohobuy.com',
     domains: {
-        api: 'http://testapi.yoho.cn:28078/', // devapi.yoho.cn:58078 testapi.yoho.cn:28078 devapi.yoho.cn:58078
-        service: 'http://testservice.yoho.cn:28077/', // testservice.yoho.cn:28077 devservice.yoho.cn:58077
+        api: 'http://devapi.yoho.cn:58078/', // devapi.yoho.cn:58078 testapi.yoho.cn:28078 devapi.yoho.cn:58078
+        service: 'http://devservice.yoho.cn:28077/', // testservice.yoho.cn:28077 devservice.yoho.cn:58077
         search: 'http://192.168.102.216:8080/yohosearch/'
     },
     useOneapm: false,
@@ -48,6 +48,12 @@ module.exports = {
             colorize: 'all',
             prettyPrint: true
         }
+    },
+    thirdLogin: {
+        wechat: {
+            appID: 'wx3ae21dcbb82ad672',
+            appSecret: 'e78afb2321e6a19085767e1a0f0d52c1'
+        }
     }
 };
 
@@ -70,6 +76,12 @@ if (isProduction) {
 } else if (isTest) {
     Object.assign(module.exports, {
         appName: 'www.yohobuy.com for test',
+
+        // domains: {
+        //     api: 'http://testapi.yoho.cn:28078/',
+        //     service: 'http://testservice.yoho.cn:28077/',
+        //     search: 'http://192.168.102.216:8080/yohosearch/'
+        // },
         useOneapm: true,
         useCache: true,
         memcache: {
diff --git a/config/data-map.js b/config/data-map.js
new file mode 100644
index 0000000..94238de
--- /dev/null
+++ b/config/data-map.js
@@ -0,0 +1,119 @@
+/**
+ * 共用的map数据常量定义
+ * @author: 赵彪<bill.zhao@yoho.cn>
+ * @date: 2016/06/23
+ */
+
+'use strict';
+
+const channelMap = {
+    boys: {
+        code: '79372627eee75d73afe7f9bac91e5ce6',
+        gender: '1,3'
+    },
+    girls: {
+        code: '75215008957605c05e8cd375eac4f817',
+        gender: '2,3'
+    },
+    kids: {
+        code: 'd71f4b27f2a7229fbb31a4bc490a6f36',
+        gender: '2,3'
+    },
+    lifestyle: {
+        code: '8a341ca7eacc069ba80f02dec80eaf34',
+
+        // code: '380c38155fd8beee10913a3f5b462da6',
+        // code: '665f7c2fb9d037ee820766953ee34bf7',
+        gender: '2,3'
+    }
+};
+
+const sortMap = {
+    boys: [
+        {sort: 147, viewNum: 5}, // 休闲运动鞋
+        {sort: 129, viewNum: 5}, // 休闲裤
+        {sort: 152, viewNum: 5}, // 双肩包
+        {misort: 11, viewNum: 5}, // T恤
+        {sort: 115, viewNum: 5}, // 衬衫
+        {sort: 130, viewNum: 5}, // 牛仔裤
+        {misort: 60, viewNum: 5}, // 帽子
+        {sort: 124, viewNum: 5}, // 夹克
+        {sort: 119, viewNum: 5}, // 卫衣
+        {sort: 162, viewNum: 5}, // 手表
+        {sort: 148, viewNum: 5}, // 靴子
+        {misort: 65, viewNum: 5}, // 首饰
+        {sort: 151, viewNum: 5}, // 时装鞋
+        {misort: 61, viewNum: 5}, // 太阳镜
+        {misort: 39, viewNum: 5}, // 袜子
+        {sort: 346, viewNum: 5}, // 运动裤
+        {sort: 131, viewNum: 5}, // 短裤
+        {misort: 66, viewNum: 5}, // 配饰
+        {misort: 309, viewNum: 5}, // 内裤
+        {misort: 30, viewNum: 5}, // 打底裤/紧身裤
+        {sort: 342, viewNum: 5} // 邮差包
+    ],
+    girls: [
+        {misort: 16, viewNum: 4}, // 卫衣
+        {misort: 12, viewNum: 4}, // 衬衫
+        {misort: 44, viewNum: 4}, // 休闲/运动鞋
+        {misort: 11, viewNum: 4}, // T恤
+        {misort: 21, viewNum: 4}, // 夹克
+        {misort: 257, viewNum: 4}, // 毛衣/针织
+        {misort: 22, viewNum: 4}, // 大衣/风衣
+        {misort: 26, viewNum: 4}, // 休闲裤
+        {misort: 27, viewNum: 4}, // 牛仔裤
+        {misort: 31, viewNum: 4}, // 连衣裙
+        {misort: 32, viewNum: 4}, // 半身裙
+        {misort: 48, viewNum: 4}, // 时装鞋
+        {misort: 49, viewNum: 4}, // 双肩包
+        {misort: 50, viewNum: 4}, // 手拎包/单肩包
+        {misort: 60, viewNum: 4}, // 帽子
+        {misort: 65, viewNum: 4}, // 首饰
+        {misort: 59, viewNum: 4}, // 手表
+        {misort: 61, viewNum: 4}, // 太阳镜
+        {misort: 66, viewNum: 4} // 配饰
+    ],
+    kids: [
+        {misort: 366, viewNum: 4}, // T恤
+        {misort: 367, viewNum: 4}, // 衬衫
+        {misort: 396, viewNum: 4}, // 卫衣
+        {misort: 400, viewNum: 4}, // // 毛衣/针织
+        {misort: 404, viewNum: 4}, // 夹克
+        {misort: 369, viewNum: 4}, // 休闲裤
+        {misort: 388, viewNum: 4}, // 牛仔裤
+        {misort: 371, viewNum: 4}, // 连衣裙
+        {misort: 370, viewNum: 4}, // 半身裙
+        {misort: 368, viewNum: 4}, // 休闲/运动鞋
+        {misort: 392, viewNum: 4}, // 双肩包
+        {misort: 414, viewNum: 4}, // 帽子
+        {misort: 372, viewNum: 4}, // 短裤
+        {misort: 384, viewNum: 4}, // 打底裤/紧身裤
+        {misort: 382, viewNum: 4}, // 凉鞋/拖鞋
+        {misort: 402, viewNum: 4}, // 马甲
+        {misort: 386, viewNum: 4}, // 背心
+        {misort: 406, viewNum: 4}, // 大衣/风衣
+        {misort: 430, viewNum: 4}, // 羽绒服
+        {misort: 423, viewNum: 4}, // 棉衣
+        {misort: 417, viewNum: 4} // 套装
+    ],
+    lifestyle: [
+        {sort: 171, viewNum: 5}, // 耳机
+        {sort: 398, viewNum: 5}, // 只能装备
+        {sort: 185, viewNum: 5}, // 相机
+        {misort: 259, viewNum: 5}, // 美妆
+        {sort: 267, viewNum: 5}, // 杯子/水壶
+        {sort: 313, viewNum: 5}, // 手机/ipad壳套
+        {sort: 211, viewNum: 5}, // 数码配件
+        {sort: 292, viewNum: 5}, // 玩偶
+        {sort: 272, viewNum: 5}, // 储物收纳
+        {sort: 183, viewNum: 5}, // 启用家居
+        {sort: 273, viewNum: 5}, // 厨具/餐具
+        {sort: 271, viewNum: 5} // 靠枕/靠垫/抱枕
+    ]
+};
+
+
+module.exports = {
+    channel: channelMap,
+    sort: sortMap
+};
diff --git a/dispatch.js b/dispatch.js
index c36e195..8f09084 100644
--- a/dispatch.js
+++ b/dispatch.js
@@ -12,4 +12,5 @@ module.exports = app => {
     app.use(require('./apps/channel')); // 频道页
     app.use(require('./apps/activity')); // 专题活动等活动页面
     app.use('/product', require('./apps/product')); // 商品相关页面
+    app.use('/passport', require('./apps/passport')); // 登录注册
 };
diff --git a/doraemon/middleware/error-handler.js b/doraemon/middleware/error-handler.js
new file mode 100644
index 0000000..a5daab4
--- /dev/null
+++ b/doraemon/middleware/error-handler.js
@@ -0,0 +1,61 @@
+/**
+ * 404 错误
+ * @return {[type]}
+ */
+const headerModel = require('../models/header');
+const logger = global.yoho.logger;
+
+exports.notFound = () => {
+    return (req, res, next) => {
+        if (req.xhr) {
+            return res.status(404).json({
+                code: 404,
+                message: '抱歉,页面不存在!'
+            });
+        }
+
+        headerModel.requestHeaderData().then((result) => {
+            return res.render('error/404', {
+                module: 'common',
+                page: 'error',
+                title: '页面不存在 | Yoho!Buy有货 | 潮流购物逛不停',
+                headerData: result.headerData
+            });
+        }).catch(next);
+
+    };
+};
+
+/**
+ * 服务器错误
+ * @return {[type]}
+ */
+exports.serverError = () => {
+    return (err, req, res, next) => {
+        logger.error(`error at path: ${req.url}`);
+        logger.error(err);
+        if (!res.headersSent) {
+            if (req.xhr) {
+                return res.status(500).json({
+                    code: 500,
+                    message: '服务器错误!'
+                });
+            }
+
+            const renderErrPage = (result) => {
+                res.render('error/500', {
+                    module: 'common',
+                    page: 'error',
+                    err: err,
+                    title: '服务器错误 | Yoho!Buy有货 | 潮流购物逛不停',
+                    headerData: result.headerData
+                });
+            };
+
+            return headerModel.requestHeaderData().then(renderErrPage).catch(() => {
+                renderErrPage();
+            });
+        }
+        next(err);
+    };
+};
diff --git a/doraemon/middleware/mobile-check.js b/doraemon/middleware/mobile-check.js
new file mode 100644
index 0000000..e59700c
--- /dev/null
+++ b/doraemon/middleware/mobile-check.js
@@ -0,0 +1,14 @@
+/**
+ * 手机访问检测
+ */
+'use strict';
+module.exports = () => {
+    return (req, res, next) => {
+        let isMobile = /(nokia|iphone|android|ipad|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220)/i.test(req.get('user-agent')); // eslint-disable-line
+
+        if (isMobile) {
+            return res.redirect(`//m.yohobuy.com${req.url}`);
+        }
+        next();
+    };
+};
diff --git a/doraemon/middleware/set-pageinfo.js b/doraemon/middleware/set-pageinfo.js
new file mode 100644
index 0000000..630ae21
--- /dev/null
+++ b/doraemon/middleware/set-pageinfo.js
@@ -0,0 +1,22 @@
+/**
+ * 设置页面的module,page默认值
+ * @author: 赵彪<bill.zhao@yoho.cn>
+ * @date: 2016/6/22
+ */
+
+'use strict';
+
+module.exports = () => {
+    return (req, res, next) => {
+        if (!req.xhr) {
+            const arr = req.path.substring(1).split('/');
+
+            Object.assign(res.locals, {
+                module: arr[0],
+                page: arr[1]
+            });
+        }
+
+        next();
+    };
+};
diff --git a/doraemon/middleware/set-yoho-data.js b/doraemon/middleware/set-yoho-data.js
new file mode 100644
index 0000000..6897eaa
--- /dev/null
+++ b/doraemon/middleware/set-yoho-data.js
@@ -0,0 +1,23 @@
+/**
+ * 设置 YOHO 数据
+ * @author: 赵彪<bill.zhao@yoho.cn>
+ * @date: 2016/6/16
+ */
+
+'use strict';
+
+module.exports = () => {
+    return (req, res, next) => {
+        let yoho = {
+            pageChannel: {}
+        };
+        const channel = req.query.channel || req.cookies._Channel || 'boys';
+
+        yoho.pageChannel[channel] = true;
+        yoho.isApp = req.query.app_version || req.query.appVersion;
+
+        Object.assign(res.locals, yoho);
+        Object.assign(req.yoho, yoho);
+        next();
+    };
+};
diff --git a/doraemon/middleware/user.js b/doraemon/middleware/user.js
new file mode 100644
index 0000000..d609ccd
--- /dev/null
+++ b/doraemon/middleware/user.js
@@ -0,0 +1,18 @@
+const _ = require('lodash');
+const cookie = global.yoho.cookie;
+
+module.exports = () => {
+    return (req, res, next) => {
+        // 从 SESSION 中获取到当前登录用户的 UID
+        if (req.session && _.isNumber(req.session._LOGIN_UID)) {
+            req.user.uid = req.session._LOGIN_UID;
+        }
+
+        // session 没有读取到的时候,从 cookie 读取 UID
+        if (!req.user.uid && req.cookies._UID) {
+            req.user.uid = cookie.getUid(req);
+        }
+
+        next();
+    };
+};
diff --git a/doraemon/models/header.js b/doraemon/models/header.js
index b749170..5d2645e 100644
--- a/doraemon/models/header.js
+++ b/doraemon/models/header.js
@@ -8,12 +8,7 @@
 
 const _ = require('lodash');
 
-const ServiceAPI = require(`${global.library}/api`).ServiceAPI;
-const sign = require(`${global.library}/sign`);
-
-const serviceApi = new ServiceAPI();
-
-const log = require(`${global.library}/logger`);
+const serviceApi = global.yoho.ServiceAPI;
 
 /**
  * 获取菜单
@@ -61,6 +56,7 @@ const getNavBar = (data, type) => {
         obj.link = item.sort_url;
         obj.cn = item.sort_name;
         obj.en = item.sort_name_en;
+        obj.isNewPage = item.is_new_page === 'Y' ? true : false;
 
         if (type === lowEn) {
             obj.active = true;
@@ -173,19 +169,15 @@ const getSubNav = (data, type) => {
  * @param {String} 指定页面类型为boys,girls,kids,lifestyle
  * @return {object} 头部数据
  */
-const setHeaderData = (resData, type) => {
-    let data = {
-        headerData: {
-            header: true,
-            headType: type,
-            yohoGroup: getMenuData(),
-            navbars: resData ? getNavBar(resData, type) : [],
-            subNav: resData ? getSubNav(resData, type) : []
-        }
-    };
-
-    return data;
-};
+const setHeaderData = (resData, type) => (
+    {
+        header: true,
+        headType: type,
+        yohoGroup: getMenuData(),
+        navbars: resData ? getNavBar(resData, type) : [],
+        subNav: resData ? getSubNav(resData, type) : []
+    }
+);
 
 
 /**
@@ -194,19 +186,19 @@ const setHeaderData = (resData, type) => {
  * @return {promise}
  */
 exports.requestHeaderData = (type, parentId) => {
-    let data = sign.apiSign({
+    let data = {
         client_type: 'web',
         parent_id: parentId || null
-    });
+    };
 
     type = type || 'boys';
 
-    return serviceApi.get('operations/api/v6/category/getCategory', data, true).then(res => {
-        if (res && res.code === 200) {
-            return setHeaderData(res.data, type);
-        } else {
-            log.error('获取头部信息的接口返回状态码 不是 200');
-            return {};
-        }
+    return serviceApi.get('operations/api/v6/category/getCategory', data, {
+        cache: true,
+        code: 200
+    }).then(res => {
+        return {
+            headerData: res ? setHeaderData(res.data, type) : {}
+        };
     });
 };
diff --git a/doraemon/views/error/404.hbs b/doraemon/views/error/404.hbs
new file mode 100644
index 0000000..91082ba
--- /dev/null
+++ b/doraemon/views/error/404.hbs
@@ -0,0 +1,11 @@
+<div class="wrapper screen">
+    <div class="clear wrapper-404">
+        <div class="left"><img src="http://static.yohobuy.com/images/v3/index/404.png"></div>
+        <div class="right right-tips">
+            <p class="text1">很抱歉,您访问的页面不存在!</p>
+            <p class="text2">
+            </p>
+            <p class="text3"><a href="http://www.yohobuy.com/product/new" class="button">浏览新品</a>&nbsp;&nbsp;<a href="http://www.yohobuy.com/" class="button">返回首页</a></p>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/doraemon/views/error/500.hbs b/doraemon/views/error/500.hbs
new file mode 100644
index 0000000..c1a055e
--- /dev/null
+++ b/doraemon/views/error/500.hbs
@@ -0,0 +1,11 @@
+<div class="wrapper screen">
+    <div class="clear wrapper-404">
+        <div class="left"><img src="http://static.yohobuy.com/images/v3/index/404.png"></div>
+        <div class="right right-tips">
+            <p class="text1">服务器错误!</p>
+            <p class="text2">
+            </p>
+            <p class="text3"><a href="http://www.yohobuy.com/product/new" class="button">浏览新品</a>&nbsp;&nbsp;<a href="http://www.yohobuy.com/" class="button">返回首页</a></p>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/doraemon/views/layout.hbs b/doraemon/views/layout.hbs
index 4f3768c..8bb631c 100644
--- a/doraemon/views/layout.hbs
+++ b/doraemon/views/layout.hbs
@@ -28,9 +28,11 @@
             {{{body}}}
         {{/if}}
         {{> footer}}
-        {{#if devEnv}}
+        {{#if devEnv}}
+            <script src="//localhost:5002/libs.js"></script>
             <script src="//localhost:5002/{{module}}.{{page}}.js"></script>
-        {{^}}
+        {{^}}
+            <script src="//cdn.yoho.cn/yohobuy-node/{{version}}/libs.js"></script>
             <script src="//cdn.yoho.cn/yohobuy-node/{{version}}/{{module}}.{{page}}.js"></script>
         {{/if}}
     </body>
diff --git a/doraemon/views/partial/404.hbs b/doraemon/views/partial/404.hbs
deleted file mode 100644
index c672479..0000000
--- a/doraemon/views/partial/404.hbs
+++ /dev/null
@@ -1,15 +0,0 @@
-<div class="wrapper-404">
-    <div class="main-error">
-        <div class="left">
-            <img src="http://static.yohobuy.com/images/v3/index/404.png">
-        </div>
-        <div class="right">
-            <p class="text1">很抱歉,您访问的页面不存在!</p>
-            <p class="text2"></p>
-            <p class="text3">
-                <a href="http://www.yohobuy.com/product/new">浏览新品</a>&nbsp;&nbsp;
-                <a href="http://www.yohobuy.com/">返回首页</a>
-            </p>
-        </div>
-    </div>
-</div>
diff --git a/doraemon/views/partial/banner.hbs b/doraemon/views/partial/banner.hbs
index e1c132b..7d99c19 100644
--- a/doraemon/views/partial/banner.hbs
+++ b/doraemon/views/partial/banner.hbs
@@ -3,11 +3,11 @@
         <ul>
             {{# list}}
             <li style="{{#if bgColor}}background:{{bgColor}}{{/if}}">
-                <a href="{{href}}" target= "_blank">
+                <a href="{{url}}" target= "_blank">
                     {{#if @first}}
-                    <img src="{{image img 1150 450}}">
+                    <img src="{{image src 1150 450}}">
                     {{^}}
-                    <img class="lazy" data-original="{{image img 1150 450}}" alt="">
+                    <img class="lazy" data-original="{{image src 1150 450}}" alt="">
                     {{/if}}
                 </a>
                 {{# tips}}
@@ -26,8 +26,8 @@
         <ul class="clearfix">
             {{# pagination}}
             <li>
-                <a href="{{href}}" target="_blank"></a>
-                <img src="{{image img 138 54}}" alt="">
+                <a href="{{url}}" target="_blank"></a>
+                <img src="{{image src 138 54}}" alt="">
             </li>
             {{/ pagination}}
         </ul>
diff --git a/doraemon/views/partial/common/floor-header.hbs b/doraemon/views/partial/common/floor-header.hbs
index a67f567..426538d 100644
--- a/doraemon/views/partial/common/floor-header.hbs
+++ b/doraemon/views/partial/common/floor-header.hbs
@@ -1,10 +1,12 @@
 <div class="floor-header clearfix">
-    <h2 class="floor-title">{{name}}</h2>
+    {{# name}}
+        <h2 class="floor-title">{{.}}</h2>
+    {{/ name}}
     {{#if navs}}
     <ul class="header-navs">
         {{# navs}}
         <li data-classify="{{id}}">
-            <a target="_blank" href="{{href}}">{{name}}</a>
+        <a target="_blank" href="{{url}}">{{name}}</a>
         </li>
         {{/ navs}}
     </ul>
diff --git a/doraemon/views/partial/common/foot-pager.hbs b/doraemon/views/partial/common/foot-pager.hbs
new file mode 100644
index 0000000..6e7e3ef
--- /dev/null
+++ b/doraemon/views/partial/common/foot-pager.hbs
@@ -0,0 +1,27 @@
+{{# footPager}}
+    <div class="foot-pager clearfix">
+        <span class="total">
+            {{# tip}}
+                {{#if totalText}}
+                    {{totalText}}
+                {{^}}
+                    {{start}} - {{end}} / 共{{total}}件商品
+                {{/if}}
+            {{/ tip}}
+        </span>
+
+        <div class="pager">
+            {{# prePage}}
+                <a href="{{url}}" title="上一页">上一页<span class="iconfont">&#xe60e;</span></a>
+            {{/ prePage}}
+
+            {{# pages}}
+                <a{{#if url}} href="{{url}}"{{/if}}{{#if cur}} class="cur"{{/if}}>{{num}}</a>
+            {{/ pages}}
+            
+            {{# nextPage}}
+                <a href="{{url}}" title="下一页">下一页<span class="iconfont">&#xe60c;</span></a>
+            {{/ nextPage}}
+        </div>
+    </div>
+{{/ footPager}}
\ No newline at end of file
diff --git a/doraemon/views/partial/common/slide-banner.hbs b/doraemon/views/partial/common/slide-banner.hbs
index a6dd004..0353522 100644
--- a/doraemon/views/partial/common/slide-banner.hbs
+++ b/doraemon/views/partial/common/slide-banner.hbs
@@ -1,37 +1,29 @@
-<div id="slider" class="slide-container {{#if pagination}}slide-thumb-container{{/if}}">
-    <div class="slide-wrapper">
-        <ul>
-            {{# list}}
-                <li style="{{#if bgColor}}background:{{bgColor}}{{/if}}">
-                    <a href="{{href}}" target= "_blank">
-                        {{#if @first}}
-                            <img src="{{image img 1150 450}}" style="height: 450px;width: 1150px">
-                        {{^}}
-                            <img class="lazy" data-original="{{image img 1150 450}}" style="height: 450px;width: 1150px" alt="">
+{{#topBanner}}
+    <div id="slider" class="slide-container {{#if pagination}}slide-thumb-container{{/if}}">
+        <div class="slide-wrapper">
+            <ul>
+                {{# list}}
+                    <li class="banner-img" style="background: {{bgColor}} url({{image img 1150 450}}) no-repeat top center;">
+                        {{#if href}}
+                            <a href="{{href}}" target= "_blank"></a>
                         {{/if}}
-                    </a>
-                    {{# tips}}
-                        <div class="slide-tips">
-                            <div class="g-mark"></div>
-                            <p>{{.}}</p>
-                        </div>
-                    {{/ tips}}
-                </li>
-            {{/ list}}
-        </ul>
-    </div>
-
-    {{#if pagination}}
-        <div class="thumb-pagination">
-            <ul class="clearfix">
-                {{# pagination}}
-                    <li>
-                        <a href="{{href}}" target="_blank"></a>
-                        <img src="{{img}}" alt="">
                     </li>
-                {{/ pagination}}
+                {{/ list}}
             </ul>
         </div>
-    {{/if}}
-</div>
-<div class="slide-container-placeholder {{#if pagination}}slide-thumb-container-placeholder{{/if}}"></div>
+
+        {{#if pagination}}
+            <div class="thumb-pagination">
+                <ul class="clearfix">
+                    {{# pagination}}
+                        <li>
+                            <a href="{{href}}" target="_blank"></a>
+                            <img src="{{img}}" alt="">
+                        </li>
+                    {{/ pagination}}
+                </ul>
+            </div>
+        {{/if}}
+    </div>
+    <div class="slide-container-placeholder {{#if pagination}}slide-thumb-container-placeholder{{/if}}"></div>
+{{/topBanner}}
diff --git a/doraemon/views/partial/header.hbs b/doraemon/views/partial/header.hbs
index 1fb561f..74737c3 100644
--- a/doraemon/views/partial/header.hbs
+++ b/doraemon/views/partial/header.hbs
@@ -1,5 +1,4 @@
 {{# headerData}}
-    {{log this}}
     <div class="yoho-header {{headType}}">
         <div class="tool-wrapper clearfix">
             <div class="center-content">
@@ -69,13 +68,13 @@
                     {{# navbars}}
                         <li {{#if active}} class="cure"{{/if}}{{#if ico}} style="background: url({{image ico 54 32}}) no-repeat center center"{{/if}}>
                             {{#if ico}}
-                                <a href="{{link}}" class="menu-ico"></a>
+                                <a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}} class="menu-ico"></a>
                             {{^}}
                                 <h3 class="name-cn">
-                                    <a href="{{link}}">{{cn}}</a>
+                                    <a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}}>{{cn}}</a>
                                 </h3>
                                 <h3 class="name-en">
-                                    <a href="{{link}}">{{en}}</a>
+                                    <a href="{{link}}"{{#if isNewPage}} target="_blank"{{/if}}>{{en}}</a>
                                 </h3>
                             {{/if}}
                         </li>
diff --git a/doraemon/views/partial/product/filter-box.hbs b/doraemon/views/partial/product/filter-box.hbs
index 844c6ca..dbd2948 100644
--- a/doraemon/views/partial/product/filter-box.hbs
+++ b/doraemon/views/partial/product/filter-box.hbs
@@ -1,23 +1,24 @@
 <div class="filter-box">
     {{# checkedConditions}}
-        <div class="checked-conditions section">
-            <span class="title">已选条件:</span>
-
-            <div class="attr-content clearfix">
-                {{#each conditions}}
-                    <a class="tag" href="{{href}}">
-                        {{#if name}}
-                            {{name}}
-                        {{^}}
-                            <i class="color-block" style="background: {{color}}"></i>
-                        {{/if}}
-                        <i class="close iconfont">&#xe60d;</i>
-                    </a>
-                {{/each}}
+        {{#if conditions}}
+            <div class="checked-conditions section">
+                <span class="title">已选条件:</span>
+                <div class="attr-content clearfix">
+                    {{#each conditions}}
+                        <a class="tag" href="{{href}}">
+                            {{#if name}}
+                                {{name}}
+                            {{^}}
+                                <i class="color-block" style="background: {{color}}"></i>
+                            {{/if}}
+                            <i class="close iconfont">&#xe60d;</i>
+                        </a>
+                    {{/each}}
 
-                <a class="clear-checked" href="{{clearUrl}}">清空筛选条件</a>
+                    <a class="clear-checked" href="{{clearUrl}}">清空筛选条件</a>
+                </div>
             </div>
-        </div>
+        {{/if}}
     {{/ checkedConditions}}
 
     {{#if channel}}
@@ -111,7 +112,7 @@
                     {{#if showMore}}
                         <span id="brand-more" class="brand-more">
                             <em>更多</em>
-                            <i class="iconfont">&#xe600;</i>
+                            <i class="iconfont">&#xe60b;</i>
                         </span>
                     {{/if}}
 
@@ -241,7 +242,7 @@
                         <li class="attr{{#unless sub}} no-sub{{/unless}}">
                             {{#if sub}}
                                 {{name}}
-                                <span class="iconfont">&#xe600;</span>
+                                <span class="iconfont">&#xe60b;</span>
 
                                 <div class="senior-up-icon"></div>
                             {{^}}
diff --git a/doraemon/views/partial/product/good.hbs b/doraemon/views/partial/product/good.hbs
index 0961cb9..4ebf479 100644
--- a/doraemon/views/partial/product/good.hbs
+++ b/doraemon/views/partial/product/good.hbs
@@ -32,32 +32,43 @@
             <p class="few-tag">即将售罄</p>
         {{/ isFew}}
 
+        {{#if isSaleOut}}
+            <a class="sale-out" href="{{url}}">
+                <span class="sale-out-tip">已抢光</span>
+            </a>
+        {{/if}}
+
         {{#if showColBtn}}
             <span class="col-btn iconfont{{#if coled}} coled{{/if}}">&#xe616;</span>
         {{/if}}
     </div>
     <div class="good-detail-text">
         <a href="{{url}}" target="_blank">{{{productName}}}</a>
-        {{!-- {{# brandName}} --}}
-            <p class="brand">
-                <a href="{{brandUrl}}">{{brandName}}</a>
-            </p>
-        {{!-- {{/ brandName}} --}}
-        <p class="price">
+        <p class="brand">
+            <a href="{{brandUrl}}">{{brandName}}</a>
+        </p>
+        <p class="price {{#if vip}}vip-center{{/if}}">
             {{# marketPrice}}
-                <span class="market-price">¥{{.}}</span>
+                <span class="market-price">¥{{round . 2}}</span>
             {{/ marketPrice}}
-            <span class="sale-price{{#unless marketPrice}}prime-cost{{/unless}}">
-                ¥{{salesPrice}}
+            {{# salesPrice}}
+            <span class="sale-price {{#unless marketPrice}}prime-cost{{/unless}}">
+                ¥{{round . 2}}
             </span>
-            {{#vip}}<span class="vip-tag"> VIP   </span><strong>更优惠</strong>{{/vip}}
-            {{#vip1}}<span class="vip-1">     </span><strong>{{vipPrice}}</strong>{{/vip1}}
-            {{#vip2}}<span class="vip-2">     </span><strong>{{vipPrice}}</strong>{{/vip2}}
-            {{#vip3}}<span class="vip-3">     </span><strong>{{vipPrice}}</strong>{{/vip3}}
+            {{/ salesPrice}}
+
+            {{# discount}}
+                <span class="discount">{{.}}折</span>
+            {{/ discount}}
+
+            {{#vip}}<span class="vip-tag vip-span"><span> VIP </span></span><strong>更优惠</strong>{{/vip}}
+            {{#vip1}}<span class="vip-1 vip-span"></span>{{/vip1}}
+            {{#vip2}}<span class="vip-2 vip-span"></span>{{/vip2}}
+            {{#vip3}}<span class="vip-3 vip-span"></span>{{/vip3}}
         </p>
-        <div class="goodsList hide">
+        <div class="hideList hide">
             {{#goodsList}}
-                <div class="list" imgUrl = "{{image imagesUrl 220 300}}" url = "{{goodsId}}" cover = "{{cover1}}"></div>
+                <li data-src="{{image imagesUrl 235 314}}" data-url="{{../url}}"></li>
             {{/goodsList}}
         </div>
     </div>
diff --git a/doraemon/views/partial/product/left-content.hbs b/doraemon/views/partial/product/left-content.hbs
index a79aebe..40c9c45 100644
--- a/doraemon/views/partial/product/left-content.hbs
+++ b/doraemon/views/partial/product/left-content.hbs
@@ -45,7 +45,6 @@
                         <h2>
                             <a href="{{href}}" title="{{name}}">
                                 {{name}}
-                                <span>{{updateNum}}</span>
                             </a>
                         </h2>
                     </li>
diff --git a/doraemon/views/partial/product/standard-content.hbs b/doraemon/views/partial/product/standard-content.hbs
index 5550f3c..60fecdf 100644
--- a/doraemon/views/partial/product/standard-content.hbs
+++ b/doraemon/views/partial/product/standard-content.hbs
@@ -98,13 +98,7 @@
         </div>
     </div>
 
-    <div class="product-pager clearfix">
-        <span class="total">{{opts.start}} - {{opts.end}} / 共{{totalCount}}件商品</span>
-
-        <div class="pager">
-            {{{pager}}}
-        </div>
-    </div>
+    {{> common/foot-pager}}
 {{^}}
     {{> product/no-result}}
 {{/if}}
diff --git a/library/api.js b/library/api.js
index 1879c2e..4fed6aa 100644
--- a/library/api.js
+++ b/library/api.js
@@ -12,11 +12,35 @@ const _ = require('lodash');
 const log = require('./logger');
 const cache = require('./cache');
 const Timer = require('./timer');
+const sign = require('./sign');
 const config = require('../config/common');
 const api = config.domains.api;
 const serviceApi = config.domains.service;
 const searchApi = config.domains.search;
 
+// 错误返回
+const API_BAD_RETSULT = {
+    code: 500,
+    message: 'API result is not JSON string or null.'
+};
+
+// 调用失败
+const API_CALL_FAIL = {
+    code: 500,
+    message: 'Call API failed.'
+};
+
+// all 方法错误的传参
+const API_ALL_METHOD_ERROR = 'the parameters of api all method should be Array!';
+
+// 获取缓存数据失败
+const SLAVE_CACHE_FAIL = 'get slave cache fail';
+const MASTER_CACHE_FAIL = 'get master cache fail';
+
+// 获取缓存数据成功
+const SLAVE_CACHE_SUCCESS = 'get slave cache success';
+const MASTER_CACHE_SUCCESS = 'get master cache success';
+
 class Http {
 
     constructor(baseUrl) {
@@ -31,29 +55,50 @@ class Http {
     }
 
     /**
+     * 处理接口返回状态码
+     */
+    _handleDataCode(data, code, url) {
+        let result = {};
+
+        code = code || 200;
+        if (_.toNumber(data.code) === _.toNumber(code)) {
+            _.unset(data, 'code');
+            _.forEach(data, (value, key) => {
+                _.set(result, key, value);
+            });
+        } else {
+            log.error(`API: ${url} return code not ${code}`);
+        }
+        return result;
+    }
+
+
+    /**
      * 调用接口
      */
-    _requestFromAPI(options, cacheOption, reqId) {
+    _requestFromAPI(options, param, reqId) {
         const timer = new Timer();
         const method = options.method || 'get';
 
-        log.info(`${method} api: ${options.url}?${qs.stringify(options.qs)}`);
         timer.put('getApi');// 统计时间开始
         return rp(options).then((result) => {
             const duration = timer.put('getApi');// 统计时间结束
 
-            // 数据校验,去掉了code验证有些接口没有提供这些
+            // 数据校验
             if (!result) {
-                log.error('error: 接口返回的数据结构错误,非 JSON');
-                return Promise.reject({
-                    statusCode: 500,
-                    message: '接口返回内容格式错误'
-                });
+                log.error(`error: ${API_BAD_RETSULT.message}`);
+                return Promise.reject(API_BAD_RETSULT);
+            }
+
+            // 处理返回数据状态码
+            if (param && param.code) {
+                result = this._handleDataCode(result, param.code, options.url);
             }
 
             // 写缓存, 否则返回 Slave 缓存服务器的数据
-            if (config.useCache && cacheOption) {
-                const cacheTime = _.isNumber(cacheOption) ? cacheOption : 60;
+            if (options.method === 'get' && config.useCache &&
+                param && param.cache) {
+                const cacheTime = _.isNumber(param.cache) ? param.cache : 60;
                 const catchErr = (err) => {
                     log.error(`cache: ${err.toString()}`);
                 };
@@ -63,7 +108,7 @@ class Http {
                 cache.setSlave(`apiCache:${reqId}`, result, 86400).catch(catchErr); // 二级缓存存储一天
             }
 
-            log.info(`get api success: use: ${duration}ms`);
+            log.info(`use: ${duration}ms for ${method} api: ${options.url}?${qs.stringify(options.qs)} `);
             return result;
         }).catch((err)=> {
             const duration = timer.put('getApi');// 统计时间结束
@@ -72,13 +117,10 @@ class Http {
             log.error(`API: ${options.url}?${qs.stringify(options.qs)}`);
 
             // 使用缓存的时候,读取二级缓存
-            if (config.useCache && cacheOption) {
+            if (config.useCache && param && param.cache) {
                 return this._requestFromCache(options, true);
             }
-            return Promise.resolve({
-                code: 500,
-                message: '接口调用失败'
-            });
+            return Promise.resolve(API_CALL_FAIL);
         });
     }
 
@@ -86,9 +128,10 @@ class Http {
      * 读取缓存
      * @param  {[object]} options
      * @param  {[boolean]} slave true: 读取二级缓存
+     * @param  {[object]} param 请求API处理参数
      * @return {[type]}
      */
-    _requestFromCache(options, slave) {
+    _requestFromCache(options, slave, param) {
         const reqId = this._getReqId(options);
         const getCache = slave ? cache.getFromSlave : cache.get;
 
@@ -98,27 +141,24 @@ class Http {
                 try {
                     result = JSON.parse(result);
                 } finally {
-                    log.info(slave ? 'get slave cache success' : 'get master cache success');
+                    log.info(slave ? SLAVE_CACHE_SUCCESS : MASTER_CACHE_SUCCESS);
                     return result;
                 }
             }
 
             // 读取缓存失败,并且不是二级缓存的时候,调用 API
             if (!slave) {
-                return this._requestFromAPI(options, true, reqId);
+                return this._requestFromAPI(options, param, reqId);
             }
         }).catch(() => {
-            log.error(slave ? 'get slave cache fail' : 'get master cache fail');
+            log.error(slave ? SLAVE_CACHE_FAIL : MASTER_CACHE_FAIL);
 
             // 读取缓存失败,并且不是二级缓存的时候,调用 API
             if (!slave) {
-                return this._requestFromAPI(options, true, reqId);
+                return this._requestFromAPI(options, param, reqId);
             }
 
-            return Promise.resolve({
-                code: 500,
-                message: '接口调用失败'
-            });
+            return Promise.resolve(API_CALL_FAIL);
         });
     }
 
@@ -126,47 +166,50 @@ class Http {
      * 使用 get 请求获取接口
      * @param  {[string]} url
      * @param  {[object]} data
-     * @param  {[bool or number]} cacheOption 使用数字时,数字表示缓存时间
+     * @param  {[object]} param 数据处理参数
      * @return {[type]}
      */
-    get(url, data, cacheOption) {
+    get(url, data, param) {
         const options = {
             url: `${this.ApiUrl}${url}`,
-            qs: data,
+            qs: data.client_secret ? data : sign.apiSign(data),
             json: true,
+            gzip: true,
             timeout: 3000
         };
 
         // 从缓存获取数据
-        if (config.useCache && cacheOption) {
-            return this._requestFromCache(options);
+        if (config.useCache && param && param.catch) {
+            return this._requestFromCache(options, false, param);
         }
 
-        return this._requestFromAPI(options, cacheOption);
+        return this._requestFromAPI(options, param);
     }
 
     /**
-     * post
-     * @param url String
-     * @param data Obejct
+     * 使用 post 请求获取接口
+     * @param  {[string]} url
+     * @param  {[object]} data
+     * @param  {[object]} param 数据处理参数
+     * @return {[type]}
      */
-    post(url, data) {
+    post(url, data, param) {
         const options = {
             url: `${this.ApiUrl}${url}`,
-            form: data,
+            form: data.client_secret ? data : sign.apiSign(data),
             method: 'post',
             json: true,
             timeout: 3000
         };
 
-        return this._requestFromAPI(options);
+        return this._requestFromAPI(options, param);
     }
 
     all(list) {
         if (_.isArray(list)) {
             return Promise.all(list);
         } else {
-            return Promise.reject(Error('the parameters of api all method should be Array!'));
+            return Promise.reject(Error(API_ALL_METHOD_ERROR));
         }
     }
 }
diff --git a/library/helpers.js b/library/helpers.js
index a866c1a..649b786 100644
--- a/library/helpers.js
+++ b/library/helpers.js
@@ -30,8 +30,8 @@ exports.image = (url, width, height, mode) => {
  * @param  {[object]} options 上下文环境,一般不手动传
  * @return {[boolen]}
  */
-exports.ifEqualTo = (v1, v2, _options) => {
-    if (v1 === v2) {
+exports.isEqual = (v1, v2, _options) => {
+    if (_.isEqual(v1, v2)) {
         return _options.fn(this); // eslint-disable-line
     }
 
@@ -73,6 +73,39 @@ exports.urlFormat = (uri, qs, module) => {
     return url;
 };
 
+/**
+ * 站内地址格式化
+ * @param  {[string]} uri 路径
+ * @param  {[object]} qs 查询字符串
+ * @param  {[string]} module 模块
+ * @return {[string]}
+ */
+exports.fakeUrlFormat = (uri, qs, module) => {
+    const subDomain = 'http://localhost:6001';
+    const subName = {
+        default: subDomain,
+        guang: `${subDomain}`,
+        list: `${subDomain}`,
+        search: `${subDomain}`,
+        huodong: `${subDomain}`,
+        index: subDomain
+    };
+    let url;
+
+    module = module || 'default';
+    if (subName[module]) {
+        url = subName[module];
+    } else {
+        url = `//${module}${subDomain}`; // 规则没匹配到就把模块当作子域名
+    }
+
+    url += uri;
+    if (qs) {
+        url += `?${querystring.stringify(qs)}`;
+    }
+
+    return url;
+};
 
 /**
  * 大写转小写处理
@@ -93,6 +126,18 @@ exports.upperCase = (str) => {
 };
 
 /**
+ * 四舍五入
+ * @param  {[type]} num 数字
+ * @param  {[type]} precision 精度
+ * @return {[type]}
+ */
+exports.round = (num, precision) => {
+    precision = _.isNumber(precision) ? precision : 2;
+    num = _.isInteger(num) ? (+num).toFixed(precision) : _.round(num, precision);
+    return num;
+};
+
+/**
  * 时间格式化
  * @param format 格式化token @see{http://momentjs.cn/docs/#/displaying/format/}
  * @param date 日期或者数字
@@ -152,24 +197,135 @@ exports.dateDiffFormat = (format, diff, type) => {
 };
 
 /**
- * 强行获取原图片
- * @param imageUrl
+ * 验证邮箱是否合法
+ *
+ * @param string email
+ * @return boolean
+ */
+exports.verifyEmail = (email) => {
+    if (!email) {
+        return false;
+    }
+
+    const emailRegExp = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
+
+    return emailRegExp.test(email);
+};
+
+/**
+ * 各国手机号规则
+ */
+function areaMobileVerify(phone, area) {
+    area = area || '86';
+    phone = phone.trim();
+
+    let verify = {
+        86: {
+            name: '中国',
+            match: /^1[3|4|5|8|7][0-9]{9}$/.test(phone)
+        },
+        852: {
+            name: '中国香港',
+            match: /^[9|6|5][0-9]{7}$/.test(phone)
+        },
+        853: {
+            name: '中国澳门',
+            match: /^[0-9]{8}$/.test(phone)
+        },
+        886: {
+            name: '中国台湾',
+            match: /^[0-9]{10}$/.test(phone)
+        },
+        65: {
+            name: '新加坡',
+            match: /^[9|8][0-9]{7}$/.test(phone)
+        },
+        60: {
+            name: '马来西亚',
+            match: /^1[1|2|3|4|6|7|9][0-9]{8}$/.test(phone)
+        },
+        1: {
+            name: '加拿大&美国',
+            match: /^[0-9]{10}$/.test(phone)
+        },
+        82: {
+            name: '韩国',
+            match: /^01[0-9]{9}$/.test(phone)
+        },
+        44: {
+            name: '英国',
+            match: /^7[7|8|9][0-9]{8}$/.test(phone)
+        },
+        81: {
+            name: '日本',
+            match: /^0[9|8|7][0-9]{9}$/.test(phone)
+        },
+        61: {
+            name: '澳大利亚',
+            match: /^[0-9]{11}$/.test(phone)
+        }
+    };
+
+    if (verify[area]) {
+        return verify[area].match;
+    } else {
+        return false;
+    }
+}
+
+/**
+ * 验证国际手机号是否合法
+ */
+exports.isAreaMobile = (areaMobile) => {
+    if (!areaMobile) {
+        return false;
+    }
+
+    let mobile = {
+        area: '86',
+        phone: ''
+    };
+
+    let splitMobile = areaMobile.split('-');
+
+    if (splitMobile.length === 2) {
+        mobile.area = splitMobile[0];
+        mobile.phone = splitMobile[1];
+    } else {
+        mobile.phone = splitMobile[0];
+    }
+
+    return areaMobileVerify(mobile.phone, mobile.area);
+};
+
+/**
+ *  验证手机是否合法
  */
-exports.getForceSourceUrl = (imageUrl) => {
-    return _.head(imageUrl.split('?'));
+exports.verifyMobile = (phone) => {
+    if (!phone) {
+        return false;
+    }
+
+    return /^1[3|4|5|8|7][0-9]{9}$/.test(phone);
 };
 
 /**
- * 根据skc获取商品链接
- * @param pid
- * @param goods_id
- * @param cn_alphabet
+ * 组合国际手机号
  */
-exports.getUrlBySkc = (pid, goods_id, cn_alphabet) => {
+exports.makeAreaMobile = (area, mobile) => {
+    if (!area || area === '86') {
+        return mobile;
+    }
+
+    return `${area}-${mobile}`;
+};
 
-    if (!cn_alphabet) {
-        cn_alphabet = 'goods';
+exports.isPassword = (pwd) => {
+    if (!pwd) {
+        return false;
     }
 
-    return 'http://item.yohobuy.com/product/pro_' + pid + '_' + goods_id + '/' + cn_alphabet + '.html';
+    let pwdRegexp = /^([a-zA-Z0-9\-\+_!@\#$%\^&\*\(\)\:\;\.=\[\]\\\',\?]){6,20}$/;
+
+    return pwdRegexp.test(_.trim(pwd));
 };
diff --git a/library/sign.js b/library/sign.js
index 6a03e1c..a226fd1 100644
--- a/library/sign.js
+++ b/library/sign.js
@@ -56,14 +56,14 @@ exports.apiSign = (params) => {
         client_type: clientType,
         private_key: privateKey[clientType],
         app_version: '3.8.2',
-        os_version: 'yohobuy:h5',
+        os_version: 'yohobuy:web',
         screen_size: '720x1280',
         v: '7'
     }, params));
     /* eslint-enable */
 
     sign = Object.assign(sign, {
-        client_secret: makeSign(sign) // eslint-disable-line camelcase
+        client_secret: makeSign(sign)
     });
     delete sign.private_key;
     return sign;
@@ -71,8 +71,7 @@ exports.apiSign = (params) => {
 
 // 检查签名,APP 访问 H5 页面的时候需要检查
 exports.checkSign = (params) => {
-    const // eslint-disable-line camelcase
-    clientSecret = params.client_secret;
+    const clientSecret = params.client_secret;
 
     let sortedParams;
 
@@ -82,7 +81,7 @@ exports.checkSign = (params) => {
     delete params.debug_data;
     delete params['/api'];
 
-    params.private_key = privateKey[params.client_type]; // eslint-disable-line camelcase
+    params.private_key = privateKey[params.client_type];
     sortedParams = packageSort(params);
 
     return clientSecret === makeSign(sortedParams);
@@ -94,3 +93,7 @@ exports.webSign = (params) => {
 
     return params.key === md5(md5(webPrivateKey) + params.uid);
 };
+
+exports.makeToken = (string) => {
+    return md5(md5(string + '#@!@#'));
+};
diff --git a/package.json b/package.json
index 76b357e..1e86567 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "yohobuy-node",
-  "version": "0.0.1",
+  "version": "0.1.0",
   "private": true,
   "description": "A New Yohobuy Project With Express",
   "repository": {
@@ -9,14 +9,14 @@
   },
   "scripts": {
     "start": "node app.js",
-    "dev": "node_modules/.bin/nodemon -e js,hbs -i public/ app.js",
+    "dev": "nodemon -e js,hbs -i public/ app.js",
     "online": "NODE_ENV=\"production\" node app.js",
-    "debug": "DEBUG=\"express:*\" node_modules/.bin/nodemon -e js,hbs -i public/ app.js",
-    "lint-js": "./node_modules/.bin/eslint -c .eslintrc --cache --fix .",
-    "lint-css": "./node_modules/.bin/stylelint --config .stylelintrc public/scss/**/*.css",
+    "debug": "DEBUG=\"express:*\" nodemon -e js,hbs -i public/ app.js",
+    "lint-js": "eslint -c .eslintrc --cache --fix .",
+    "lint-css": "stylelint --config .stylelintrc public/scss/**/*.css",
     "precommit": "node lint.js",
-    "test": "NODE_ENV=test ./node_modules/.bin/nyc ./node_modules/.bin/ava",
-    "posttest": "./node_modules/.bin/nyc report --reporter=html"
+    "test": "NODE_ENV=test nyc ./node_modules/.bin/ava",
+    "posttest": "nyc report --reporter=html"
   },
   "ava": {
     "tap": true,
@@ -33,30 +33,33 @@
   "dependencies": {
     "bluebird": "^3.4.0",
     "body-parser": "^1.15.0",
-    "cookie-parser": "^1.4.1",
+    "connect-memcached": "^0.2.0",
+    "cookie-parser": "^1.4.3",
     "express": "^4.13.1",
     "express-handlebars": "^3.0.0",
+    "express-session": "^1.13.0",
     "influxdb-winston": "^1.0.1",
-    "lodash": "^4.12.0",
+    "lodash": "^4.13.1",
     "md5": "^2.1.0",
     "memcached": "^2.2.2",
     "moment": "^2.13.0",
     "morgan": "^1.7.0",
     "oneapm": "^1.2.20",
+    "passport": "^0.3.2",
+    "passport-weixin": "^0.1.0",
     "request-promise": "^3.0.0",
     "serve-favicon": "^2.3.0",
     "uuid": "^2.0.2",
     "winston": "^2.2.0",
-    "winston-daily-rotate-file": "^1.0.1",
-    "yoho-connect-memcached": "^1.0.3",
-    "yoho-express-session": "^1.0.2"
+    "winston-daily-rotate-file": "^1.1.4",
+    "yoho-node-lib": "0.0.7"
   },
   "devDependencies": {
     "autoprefixer": "^6.3.6",
-    "ava": "^0.14.0",
+    "ava": "^0.15.2",
     "babel-preset-es2015": "^6.9.0",
     "babel-register": "^6.9.0",
-    "eslint": "^2.10.2",
+    "eslint": "^2.12.0",
     "eslint-config-yoho": "^1.0.1",
     "gulp": "^3.9.1",
     "gulp-cssnano": "^2.1.2",
@@ -65,17 +68,16 @@
     "gulp-sourcemaps": "^2.0.0-alpha",
     "gulp-util": "^3.0.7",
     "husky": "^0.11.4",
-    "mocha": "^2.4.5",
     "nodemon": "1.9.2",
-    "nyc": "^6.4.3",
+    "nyc": "^6.6.1",
     "postcss-assets": "^4.0.1",
-    "postcss-cachebuster": "^0.1.2",
+    "postcss-cachebuster": "^0.1.3",
     "postcss-calc": "^5.2.1",
     "postcss-center": "^1.0.0",
     "postcss-clearfix": "^1.0.0",
     "postcss-crip": "^2.0.0",
     "postcss-opacity": "^3.0.0",
-    "postcss-position": "^0.4.0",
+    "postcss-position": "^0.5.0",
     "postcss-pxtorem": "^3.3.1",
     "postcss-short": "^1.4.0",
     "postcss-sprites": "^3.1.2",
@@ -83,17 +85,14 @@
     "precss": "^1.4.0",
     "rewire": "^2.5.1",
     "shelljs": "^0.7.0",
-    "stylelint": "^6.4.1",
-    "stylelint-config-yoho": "^1.2.3",
-    "webpack": "^1.13.0",
+    "stylelint": "^6.6.0",
+    "stylelint-config-yoho": "^1.2.4",
+    "webpack": "^1.13.1",
     "webpack-dev-server": "^1.14.1",
     "webpack-stream": "^3.1.0",
-    "yoho-fastclick": "^1.0.6",
-    "yoho-hammer": "^2.0.7",
     "yoho-handlebars": "^4.0.5",
     "yoho-jquery": "^1.12.4",
     "yoho-jquery-lazyload": "^1.9.7",
-    "yoho-slider": "0.0.2",
-    "yoho-swiper": "^3.3.1"
+    "yoho-slider": "0.0.2"
   }
 }
diff --git a/public/dist/yohobuy-node/0.0.1/activity.special.js b/public/dist/yohobuy-node/0.0.1/activity.special.js
deleted file mode 100644
index c5845f5..0000000
--- a/public/dist/yohobuy-node/0.0.1/activity.special.js
+++ /dev/null
@@ -1,54 +0,0 @@
-!function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){n(1)},function(e,t,n){function r(e){var t=new RegExp(e+"=([^;$]*)","i"),n="$1";return t.test(decodeURIComponent(document.cookie))?RegExp[n]:""}function i(e,t,n){var r,i,o,a,s="";"undefined"!=typeof t&&(n=n||{},null===t&&(t="",n.expires=-1),n.expires&&("number"==typeof n.expires||n.expires.toUTCString)&&("number"==typeof n.expires?(a=new Date,a.setTime(a.getTime()+24*n.expires*60*60*1e3)):a=n.expires,s="; expires="+a.toUTCString()),r=n.path?"; path="+n.path:"",i=n.domain?"; domain="+n.domain:"",o=n.secure?"; secure":"",document.cookie=[e,"=",encodeURIComponent(t),s,r,i,o].join(""))}function o(){var e,t=r("_UID");return"undefined"==typeof t?0:(e=t.split("::"),"undefined"==typeof e||e.length<4?0:e)}function a(){var e=o();return 0===e?0:e[1]}function s(){var e=r("_g");return"undefined"==typeof e?"":JSON.parse(e).k}function l(){var e,t,n={},r=window.location.search,i=r?decodeURIComponent(r).slice(1).split("&"):[];for(t=0;t<i.length;t++)e=i[t].split("="),n[e[0]]=e[1];return n}var c=n(2),u=c("body");!function(e,t,n,r,i){var o=t.createElement(n),a=t.getElementsByTagName(n)[0];e.YohoAcquisitionObject=i,e[i]=function(){e[i].p=arguments},o.async=1,o.src=r,a.parentNode.insertBefore(o,a)}(window,document,"script","http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js","_yas"),function(){var e=a();e=0===e?"":e,window._ozuid=e,window._yas&&window._yas(1*new Date,"1.0.14","yohobuy_web",e,"","")}(),c(window).on("resize",function(){var e=c(this).width();1360>e?c(".return-top").addClass("min"):c(".return-top").removeClass("min"),1180>e?u.addClass("min-screen"):u.removeClass("min-screen")}).trigger("resize"),function(){c(window).load(function(){var e,t=document.getElementById("user-thumb");t&&(e=new Image,e.src=t.src,e.onerror=function(){c(t).parent().append('<div class="default-user-thumb"></div>').end().remove()})})}(),window.cookie=r,window.setCookie=i,window.getUser=o,window.getUid=a,window.getShoppingKey=s,window.queryString=l,n(3),n(5)},function(e,t,n){var r,i;/*!
-	 * jQuery JavaScript Library v1.12.4
-	 * http://jquery.com/
-	 *
-	 * Includes Sizzle.js
-	 * http://sizzlejs.com/
-	 *
-	 * Copyright jQuery Foundation and other contributors
-	 * Released under the MIT license
-	 * http://jquery.org/license
-	 *
-	 * Date: 2016-05-20T17:17Z
-	 */
-!function(t,n){"object"==typeof e&&"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,o){function a(e){var t=!!e&&"length"in e&&e.length,n=ve.type(e);return"function"===n||ve.isWindow(e)?!1:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function s(e,t,n){if(ve.isFunction(t))return ve.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return ve.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ee.test(t))return ve.filter(t,e,n);t=ve.filter(t,e)}return ve.grep(e,function(e){return ve.inArray(e,t)>-1!==n})}function l(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function c(e){var t={};return ve.each(e.match(He)||[],function(e,n){t[n]=!0}),t}function u(){se.addEventListener?(se.removeEventListener("DOMContentLoaded",p),n.removeEventListener("load",p)):(se.detachEvent("onreadystatechange",p),n.detachEvent("onload",p))}function p(){(se.addEventListener||"load"===n.event.type||"complete"===se.readyState)&&(u(),ve.ready())}function h(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(Me,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:Be.test(n)?ve.parseJSON(n):n}catch(i){}ve.data(e,t,n)}else n=void 0}return n}function d(e){var t;for(t in e)if(("data"!==t||!ve.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function f(e,t,n,r){if(je(e)){var i,o,a=ve.expando,s=e.nodeType,l=s?ve.cache:e,c=s?e[a]:e[a]&&a;if(c&&l[c]&&(r||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=s?e[a]=ae.pop()||ve.guid++:a),l[c]||(l[c]=s?{}:{toJSON:ve.noop}),"object"!=typeof t&&"function"!=typeof t||(r?l[c]=ve.extend(l[c],t):l[c].data=ve.extend(l[c].data,t)),o=l[c],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[ve.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[ve.camelCase(t)])):i=o,i}}function m(e,t,n){if(je(e)){var r,i,o=e.nodeType,a=o?ve.cache:e,s=o?e[ve.expando]:ve.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){ve.isArray(t)?t=t.concat(ve.map(t,ve.camelCase)):t in r?t=[t]:(t=ve.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!d(r):!ve.isEmptyObject(r))return}(n||(delete a[s].data,d(a[s])))&&(o?ve.cleanData([e],!0):me.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function g(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return ve.css(e,t,"")},l=s(),c=n&&n[3]||(ve.cssNumber[t]?"":"px"),u=(ve.cssNumber[t]||"px"!==c&&+l)&&$e.exec(ve.css(e,t));if(u&&u[3]!==c){c=c||u[3],n=n||[],u=+l||1;do o=o||".5",u/=o,ve.style(e,t,u+c);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(u=+u||+l||0,i=n[1]?u+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=u,r.end=i)),i}function v(e){var t=Ke.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function y(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||ve.nodeName(r,t)?o.push(r):ve.merge(o,y(r,t));return void 0===t||t&&ve.nodeName(e,t)?ve.merge([e],o):o}function b(e,t){for(var n,r=0;null!=(n=e[r]);r++)ve._data(n,"globalEval",!t||ve._data(t[r],"globalEval"))}function x(e){ze.test(e.type)&&(e.defaultChecked=e.checked)}function k(e,t,n,r,i){for(var o,a,s,l,c,u,p,h=e.length,d=v(t),f=[],m=0;h>m;m++)if(a=e[m],a||0===a)if("object"===ve.type(a))ve.merge(f,a.nodeType?[a]:a);else if(Ye.test(a)){for(l=l||d.appendChild(t.createElement("div")),c=(Ue.exec(a)||["",""])[1].toLowerCase(),p=Je[c]||Je._default,l.innerHTML=p[1]+ve.htmlPrefilter(a)+p[2],o=p[0];o--;)l=l.lastChild;if(!me.leadingWhitespace&&Xe.test(a)&&f.push(t.createTextNode(Xe.exec(a)[0])),!me.tbody)for(a="table"!==c||Qe.test(a)?"<table>"!==p[1]||Qe.test(a)?0:l:l.firstChild,o=a&&a.childNodes.length;o--;)ve.nodeName(u=a.childNodes[o],"tbody")&&!u.childNodes.length&&a.removeChild(u);for(ve.merge(f,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=d.lastChild}else f.push(t.createTextNode(a));for(l&&d.removeChild(l),me.appendChecked||ve.grep(y(f,"input"),x),m=0;a=f[m++];)if(r&&ve.inArray(a,r)>-1)i&&i.push(a);else if(s=ve.contains(a.ownerDocument,a),l=y(d.appendChild(a),"script"),s&&b(l),n)for(o=0;a=l[o++];)Ve.test(a.type||"")&&n.push(a);return l=null,d}function w(){return!0}function S(){return!1}function C(){try{return se.activeElement}catch(e){}}function _(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)_(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)),i===!1)i=S;else if(!i)return e;return 1===o&&(a=i,i=function(e){return ve().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=ve.guid++)),e.each(function(){ve.event.add(this,t,i,r,n)})}function A(e,t){return ve.nodeName(e,"table")&&ve.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function E(e){return e.type=(null!==ve.find.attr(e,"type"))+"/"+e.type,e}function T(e){var t=lt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&ve.hasData(e)){var n,r,i,o=ve._data(e),a=ve._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)ve.event.add(t,n,s[n][r])}a.data&&(a.data=ve.extend({},a.data))}}function P(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!me.noCloneEvent&&t[ve.expando]){i=ve._data(t);for(r in i.events)ve.removeEvent(t,r,i.handle);t.removeAttribute(ve.expando)}"script"===n&&t.text!==e.text?(E(t).text=e.text,T(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),me.html5Clone&&e.innerHTML&&!ve.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&ze.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}}function L(e,t,n,r){t=ce.apply([],t);var i,o,a,s,l,c,u=0,p=e.length,h=p-1,d=t[0],f=ve.isFunction(d);if(f||p>1&&"string"==typeof d&&!me.checkClone&&st.test(d))return e.each(function(i){var o=e.eq(i);f&&(t[0]=d.call(this,i,o.html())),L(o,t,n,r)});if(p&&(c=k(t,e[0].ownerDocument,!1,e,r),i=c.firstChild,1===c.childNodes.length&&(c=i),i||r)){for(s=ve.map(y(c,"script"),E),a=s.length;p>u;u++)o=c,u!==h&&(o=ve.clone(o,!0,!0),a&&ve.merge(s,y(o,"script"))),n.call(e[u],o,u);if(a)for(l=s[s.length-1].ownerDocument,ve.map(s,T),u=0;a>u;u++)o=s[u],Ve.test(o.type||"")&&!ve._data(o,"globalEval")&&ve.contains(l,o)&&(o.src?ve._evalUrl&&ve._evalUrl(o.src):ve.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ct,"")));c=i=null}return e}function D(e,t,n){for(var r,i=t?ve.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ve.cleanData(y(r)),r.parentNode&&(n&&ve.contains(r.ownerDocument,r)&&b(y(r,"script")),r.parentNode.removeChild(r));return e}function H(e,t){var n=ve(t.createElement(e)).appendTo(t.body),r=ve.css(n[0],"display");return n.detach(),r}function O(e){var t=se,n=dt[e];return n||(n=H(e,t),"none"!==n&&n||(ht=(ht||ve("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(ht[0].contentWindow||ht[0].contentDocument).document,t.write(),t.close(),n=H(e,t),ht.detach()),dt[e]=n),n}function I(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function j(e){if(e in Tt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Et.length;n--;)if(e=Et[n]+t,e in Tt)return e}function B(e,t){for(var n,r,i,o=[],a=0,s=e.length;s>a;a++)r=e[a],r.style&&(o[a]=ve._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&Fe(r)&&(o[a]=ve._data(r,"olddisplay",O(r.nodeName)))):(i=Fe(r),(n&&"none"!==n||!i)&&ve._data(r,"olddisplay",i?n:ve.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}function M(e,t,n){var r=Ct.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function R(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=ve.css(e,n+qe[o],!0,i)),r?("content"===n&&(a-=ve.css(e,"padding"+qe[o],!0,i)),"margin"!==n&&(a-=ve.css(e,"border"+qe[o]+"Width",!0,i))):(a+=ve.css(e,"padding"+qe[o],!0,i),"padding"!==n&&(a+=ve.css(e,"border"+qe[o]+"Width",!0,i)));return a}function $(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=yt(e),a=me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=bt(e,t,o),(0>i||null==i)&&(i=e.style[t]),mt.test(i))return i;r=a&&(me.boxSizingReliable()||i===e.style[t]),i=parseFloat(i)||0}return i+R(e,t,n||(a?"border":"content"),r,o)+"px"}function q(e,t,n,r,i){return new q.prototype.init(e,t,n,r,i)}function F(){return n.setTimeout(function(){Nt=void 0}),Nt=ve.now()}function W(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=qe[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function z(e,t,n){for(var r,i=(X.tweeners[t]||[]).concat(X.tweeners["*"]),o=0,a=i.length;a>o;o++)if(r=i[o].call(n,t,e))return r}function U(e,t,n){var r,i,o,a,s,l,c,u,p=this,h={},d=e.style,f=e.nodeType&&Fe(e),m=ve._data(e,"fxshow");n.queue||(s=ve._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,p.always(function(){p.always(function(){s.unqueued--,ve.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],c=ve.css(e,"display"),u="none"===c?ve._data(e,"olddisplay")||O(e.nodeName):c,"inline"===u&&"none"===ve.css(e,"float")&&(me.inlineBlockNeedsLayout&&"inline"!==O(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",me.shrinkWrapBlocks()||p.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Lt.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show")){if("show"!==i||!m||void 0===m[r])continue;f=!0}h[r]=m&&m[r]||ve.style(e,r)}else c=void 0;if(ve.isEmptyObject(h))"inline"===("none"===c?O(e.nodeName):c)&&(d.display=c);else{m?"hidden"in m&&(f=m.hidden):m=ve._data(e,"fxshow",{}),o&&(m.hidden=!f),f?ve(e).show():p.done(function(){ve(e).hide()}),p.done(function(){var t;ve._removeData(e,"fxshow");for(t in h)ve.style(e,t,h[t])});for(r in h)a=z(f?m[r]:0,r,p),r in m||(m[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function V(e,t){var n,r,i,o,a;for(n in e)if(r=ve.camelCase(n),i=t[r],o=e[n],ve.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=ve.cssHooks[r],a&&"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 X(e,t,n){var r,i,o=0,a=X.prefilters.length,s=ve.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;for(var t=Nt||F(),n=Math.max(0,c.startTime+c.duration-t),r=n/c.duration||0,o=1-r,a=0,l=c.tweens.length;l>a;a++)c.tweens[a].run(o);return s.notifyWith(e,[c,o,n]),1>o&&l?n:(s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:ve.extend({},t),opts:ve.extend(!0,{specialEasing:{},easing:ve.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||F(),duration:n.duration,tweens:[],createTween:function(t,n){var r=ve.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(r),r},stop:function(t){var n=0,r=t?c.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)c.tweens[n].run(1);return t?(s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c,t])):s.rejectWith(e,[c,t]),this}}),u=c.props;for(V(u,c.opts.specialEasing);a>o;o++)if(r=X.prefilters[o].call(c,e,u,c.opts))return ve.isFunction(r.stop)&&(ve._queueHooks(c.elem,c.opts.queue).stop=ve.proxy(r.stop,r)),r;return ve.map(u,z,c),ve.isFunction(c.opts.start)&&c.opts.start.call(e,c),ve.fx.timer(ve.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function K(e){return ve.attr(e,"class")||""}function J(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(He)||[];if(ve.isFunction(n))for(;r=o[i++];)"+"===r.charAt(0)?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Y(e,t,n,r){function i(s){var l;return o[s]=!0,ve.each(e[s]||[],function(e,s){var c=s(t,n,r);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(t.dataTypes.unshift(c),i(c),!1)}),l}var o={},a=e===nn;return i(t.dataTypes[0])||!o["*"]&&i("*")}function Q(e,t){var n,r,i=ve.ajaxSettings.flatOptions||{};for(r in t)void 0!==t[r]&&((i[r]?e:n||(n={}))[r]=t[r]);return n&&ve.extend(!0,e,n),e}function G(e,t,n){for(var r,i,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader("Content-Type"));if(i)for(a in s)if(s[a]&&s[a].test(i)){l.unshift(a);break}if(l[0]in n)o=l[0];else{for(a in n){if(!l[0]||e.converters[a+" "+l[0]]){o=a;break}r||(r=a)}o=o||r}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function Z(e,t,n,r){var i,o,a,s,l,c={},u=e.dataTypes.slice();if(u[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(o=u.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=c[l+" "+o]||c["* "+o],!a)for(i in c)if(s=i.split(" "),s[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[i]:c[i]!==!0&&(o=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}function ee(e){return e.style&&e.style.display||ve.css(e,"display")}function te(e){if(!ve.contains(e.ownerDocument||se,e))return!0;for(;e&&1===e.nodeType;){if("none"===ee(e)||"hidden"===e.type)return!0;e=e.parentNode}return!1}function ne(e,t,n,r){var i;if(ve.isArray(t))ve.each(t,function(t,i){n||ln.test(e)?r(e,i):ne(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==ve.type(t))r(e,t);else for(i in t)ne(e+"["+i+"]",t[i],n,r)}function re(){try{return new n.XMLHttpRequest}catch(e){}}function ie(){try{return new n.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}function oe(e){return ve.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var ae=[],se=n.document,le=ae.slice,ce=ae.concat,ue=ae.push,pe=ae.indexOf,he={},de=he.toString,fe=he.hasOwnProperty,me={},ge="1.12.4",ve=function(e,t){return new ve.fn.init(e,t)},ye=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,be=/^-ms-/,xe=/-([\da-z])/gi,ke=function(e,t){return t.toUpperCase()};ve.fn=ve.prototype={jquery:ge,constructor:ve,selector:"",length:0,toArray:function(){return le.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:le.call(this)},pushStack:function(e){var t=ve.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return ve.each(this,e)},map:function(e){return this.pushStack(ve.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(le.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:ae.sort,splice:ae.splice},ve.extend=ve.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||ve.isFunction(a)||(a={}),s===l&&(a=this,s--);l>s;s++)if(null!=(i=arguments[s]))for(r in i)e=a[r],n=i[r],a!==n&&(c&&n&&(ve.isPlainObject(n)||(t=ve.isArray(n)))?(t?(t=!1,o=e&&ve.isArray(e)?e:[]):o=e&&ve.isPlainObject(e)?e:{},a[r]=ve.extend(c,o,n)):void 0!==n&&(a[r]=n));return a},ve.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===ve.type(e)},isArray:Array.isArray||function(e){return"array"===ve.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!ve.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==ve.type(e)||e.nodeType||ve.isWindow(e))return!1;try{if(e.constructor&&!fe.call(e,"constructor")&&!fe.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!me.ownFirst)for(t in e)return fe.call(e,t);for(t in e);return void 0===t||fe.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?he[de.call(e)]||"object":typeof e},globalEval:function(e){e&&ve.trim(e)&&(n.execScript||function(e){n.eval.call(n,e)})(e)},camelCase:function(e){return e.replace(be,"ms-").replace(xe,ke)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,r=0;if(a(e))for(n=e.length;n>r&&t.call(e[r],r,e[r])!==!1;r++);else for(r in e)if(t.call(e[r],r,e[r])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ye,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(a(Object(e))?ve.merge(n,"string"==typeof e?[e]:e):ue.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(pe)return pe.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;n>r;)e[i++]=t[r++];if(n!==n)for(;void 0!==t[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;a>o;o++)r=!t(e[o],o),r!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(a(e))for(r=e.length;r>o;o++)i=t(e[o],o,n),null!=i&&s.push(i);else for(o in e)i=t(e[o],o,n),null!=i&&s.push(i);return ce.apply([],s)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(i=e[t],t=e,e=i),ve.isFunction(e)?(n=le.call(arguments,2),r=function(){return e.apply(t||this,n.concat(le.call(arguments)))},r.guid=e.guid=e.guid||ve.guid++,r):void 0},now:function(){return+new Date},support:me}),"function"==typeof Symbol&&(ve.fn[Symbol.iterator]=ae[Symbol.iterator]),ve.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){he["[object "+t+"]"]=t.toLowerCase()});var we=/*!
-	 * Sizzle CSS Selector Engine v2.2.1
-	 * http://sizzlejs.com/
-	 *
-	 * Copyright jQuery Foundation and other contributors
-	 * Released under the MIT license
-	 * http://jquery.org/license
-	 *
-	 * Date: 2015-10-17
-	 */
-function(e){function t(e,t,n,r){var i,o,a,s,l,c,p,d,f=t&&t.ownerDocument,m=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==m&&9!==m&&11!==m)return n;if(!r&&((t?t.ownerDocument||t:$)!==D&&L(t),t=t||D,O)){if(11!==m&&(c=ve.exec(e)))if(i=c[1]){if(9===m){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&M(t,a)&&a.id===i)return n.push(a),n}else{if(c[2])return G.apply(n,t.getElementsByTagName(e)),n;if((i=c[3])&&k.getElementsByClassName&&t.getElementsByClassName)return G.apply(n,t.getElementsByClassName(i)),n}if(k.qsa&&!U[e+" "]&&(!I||!I.test(e))){if(1!==m)f=t,d=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(be,"\\$&"):t.setAttribute("id",s=R),p=_(e),o=p.length,l=he.test(s)?"#"+s:"[id='"+s+"']";o--;)p[o]=l+" "+h(p[o]);d=p.join(","),f=ye.test(e)&&u(t.parentNode)||t}if(d)try{return G.apply(n,f.querySelectorAll(d)),n}catch(g){}finally{s===R&&t.removeAttribute("id")}}}return E(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[R]=!0,e}function i(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function u(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function d(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=F++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,l,c,u=[q,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(c=t[R]||(t[R]={}),l=c[t.uniqueID]||(c[t.uniqueID]={}),(s=l[r])&&s[0]===q&&s[1]===o)return u[2]=s[2];if(l[r]=u,u[2]=e(t,n,a))return!0}}}function f(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(e,n,r){for(var i=0,o=n.length;o>i;i++)t(e,n[i],r);return r}function g(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),c&&t.push(s)));return a}function v(e,t,n,i,o,a){return i&&!i[R]&&(i=v(i)),o&&!o[R]&&(o=v(o,a)),r(function(r,a,s,l){var c,u,p,h=[],d=[],f=a.length,v=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?v:g(v,h,e,s,l),b=n?o||(r?e:f||i)?[]:a:y;if(n&&n(y,b,s,l),i)for(c=g(b,d),i(c,[],s,l),u=c.length;u--;)(p=c[u])&&(b[d[u]]=!(y[d[u]]=p));if(r){if(o||e){if(o){for(c=[],u=b.length;u--;)(p=b[u])&&c.push(y[u]=p);o(null,b=[],c,l)}for(u=b.length;u--;)(p=b[u])&&(c=o?ee(r,p):h[u])>-1&&(r[c]=!(a[c]=p))}}else b=g(b===a?b.splice(f,b.length):b),o?o(null,a,b,l):G.apply(a,b)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,l=d(function(e){return e===t},a,!0),c=d(function(e){return ee(t,e)>-1},a,!0),u=[function(e,n,r){var i=!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):c(e,n,r));return t=null,i}];i>s;s++)if(n=w.relative[e[s].type])u=[d(f(u),n)];else{if(n=w.filter[e[s].type].apply(null,e[s].matches),n[R]){for(r=++s;i>r&&!w.relative[e[r].type];r++);return v(s>1&&f(u),s>1&&h(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&h(e))}u.push(n)}return f(u)}function b(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,l,c){var u,p,h,d=0,f="0",m=r&&[],v=[],y=T,b=r||o&&w.find.TAG("*",c),x=q+=null==y?1:Math.random()||.1,k=b.length;for(c&&(T=a===D||a||c);f!==k&&null!=(u=b[f]);f++){if(o&&u){for(p=0,a||u.ownerDocument===D||(L(u),s=!O);h=e[p++];)if(h(u,a||D,s)){l.push(u);break}c&&(q=x)}i&&((u=!h&&u)&&d--,r&&m.push(u))}if(d+=f,i&&f!==d){for(p=0;h=n[p++];)h(m,v,a,s);if(r){if(d>0)for(;f--;)m[f]||v[f]||(v[f]=Y.call(l));v=g(v)}G.apply(l,v),c&&!r&&v.length>0&&d+n.length>1&&t.uniqueSort(l)}return c&&(q=x,T=y),m};return i?r(a):a}var x,k,w,S,C,_,A,E,T,N,P,L,D,H,O,I,j,B,M,R="sizzle"+1*new Date,$=e.document,q=0,F=0,W=n(),z=n(),U=n(),V=function(e,t){return e===t&&(P=!0),0},X=1<<31,K={}.hasOwnProperty,J=[],Y=J.pop,Q=J.push,G=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",re="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ie="\\["+ne+"*("+re+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+re+"))|)"+ne+"*\\]",oe=":("+re+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ie+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),le=new RegExp("^"+ne+"*,"+ne+"*"),ce=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ue=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),pe=new RegExp(oe),he=new RegExp("^"+re+"$"),de={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},fe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),ke=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},we=function(){L()};try{G.apply(J=Z.call($.childNodes),$.childNodes),J[$.childNodes.length].nodeType}catch(Se){G={apply:J.length?function(e,t){Q.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}k=t.support={},C=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:$;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,H=D.documentElement,O=!C(D),(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",we,!1):n.attachEvent&&n.attachEvent("onunload",we)),k.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),k.getElementsByTagName=i(function(e){return e.appendChild(D.createComment("")),!e.getElementsByTagName("*").length}),k.getElementsByClassName=ge.test(D.getElementsByClassName),k.getById=i(function(e){return H.appendChild(e).id=R,!D.getElementsByName||!D.getElementsByName(R).length}),k.getById?(w.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&O){var n=t.getElementById(e);return n?[n]:[]}},w.filter.ID=function(e){var t=e.replace(xe,ke);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(xe,ke);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=k.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):k.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=k.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&O?t.getElementsByClassName(e):void 0},j=[],I=[],(k.qsa=ge.test(D.querySelectorAll))&&(i(function(e){H.appendChild(e).innerHTML="<a id='"+R+"'></a><select id='"+R+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&I.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||I.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+R+"-]").length||I.push("~="),e.querySelectorAll(":checked").length||I.push(":checked"),e.querySelectorAll("a#"+R+"+*").length||I.push(".#.+[+~]")}),i(function(e){var t=D.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&I.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||I.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),I.push(",.*:")})),(k.matchesSelector=ge.test(B=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&i(function(e){k.disconnectedMatch=B.call(e,"div"),B.call(e,"[s!='']:x"),j.push("!=",oe)}),I=I.length&&new RegExp(I.join("|")),j=j.length&&new RegExp(j.join("|")),t=ge.test(H.compareDocumentPosition),M=t||ge.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)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return P=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!k.sortDetached&&t.compareDocumentPosition(e)===n?e===D||e.ownerDocument===$&&M($,e)?-1:t===D||t.ownerDocument===$&&M($,t)?1:N?ee(N,e)-ee(N,t):0:4&n?-1:1)}:function(e,t){if(e===t)return P=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],l=[t];if(!i||!o)return e===D?-1:t===D?1:i?-1:o?1:N?ee(N,e)-ee(N,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[r]===l[r];)r++;return r?a(s[r],l[r]):s[r]===$?-1:l[r]===$?1:0},D):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&L(e),n=n.replace(ue,"='$1']"),k.matchesSelector&&O&&!U[n+" "]&&(!j||!j.test(n))&&(!I||!I.test(n)))try{var r=B.call(e,n);if(r||k.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&L(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&L(e);var n=w.attrHandle[t.toLowerCase()],r=n&&K.call(w.attrHandle,t.toLowerCase())?n(e,t,!O):void 0;return void 0!==r?r:k.attributes||!O?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(P=!k.detectDuplicates,N=!k.sortStable&&e.slice(0),e.sort(V),P){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return N=null,e},S=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=S(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=S(t);return n},w=t.selectors={cacheLength:50,createPseudo:r,match:de,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(xe,ke),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,ke),"~="===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]||t.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]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return de.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pe.test(n)&&(t=_(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(xe,ke).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:n?(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n?o===r||o.slice(0,r.length+1)===r+"-":!1):!0}},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,l){var c,u,p,h,d,f,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(o){for(;m;){for(h=t;h=h[m];)if(s?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&y){for(h=g,p=h[R]||(h[R]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d&&c[2],h=d&&g.childNodes[d];h=++d&&h&&h[m]||(b=d=0)||f.pop();)if(1===h.nodeType&&++b&&h===t){u[e]=[q,d,b];break}}else if(y&&(h=t,p=h[R]||(h[R]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d),b===!1)for(;(h=++d&&h&&h[m]||(b=d=0)||f.pop())&&((s?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(y&&(p=h[R]||(h[R]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),u[e]=[q,b]),h!==t)););return b-=i,b===r||b%r===0&&b/r>=0}}},PSEUDO:function(e,n){var i,o=w.pseudos[e]||w.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[R]?o(n):o.length>1?(i=[e,e,"",n],w.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=A(e.replace(se,"$1"));return i[R]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(xe,ke),function(t){return(t.textContent||t.innerText||S(t)).indexOf(e)>-1}}),lang:r(function(e){return he.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,ke).toLowerCase(),function(t){var n;do if(n=O?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===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:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!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,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return fe.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:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r<t;)e.push(r);return e})}},w.pseudos.nth=w.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[x]=s(x);for(x in{submit:!0,reset:!0})w.pseudos[x]=l(x);return p.prototype=w.filters=w.pseudos,w.setFilters=new p,_=t.tokenize=function(e,n){var r,i,o,a,s,l,c,u=z[e+" "];if(u)return n?0:u.slice(0);for(s=e,l=[],c=w.preFilter;s;){r&&!(i=le.exec(s))||(i&&(s=s.slice(i[0].length)||s),l.push(o=[])),r=!1,(i=ce.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se," ")}),s=s.slice(r.length));for(a in w.filter)!(i=de[a].exec(s))||c[a]&&!(i=c[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?t.error(e):z(e,l).slice(0)},A=t.compile=function(e,t){var n,r=[],i=[],o=U[e+" "];if(!o){for(t||(t=_(e)),n=t.length;n--;)o=y(t[n]),o[R]?r.push(o):i.push(o);o=U(e,b(i,r)),o.selector=e}return o},E=t.select=function(e,t,n,r){var i,o,a,s,l,c="function"==typeof e&&e,p=!r&&_(e=c.selector||e);if(n=n||[],1===p.length){if(o=p[0]=p[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&k.getById&&9===t.nodeType&&O&&w.relative[o[1].type]){if(t=(w.find.ID(a.matches[0].replace(xe,ke),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=de.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(xe,ke),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&h(o),!e)return G.apply(n,r),n;break}}return(c||A(e,p))(r,t,!O,n,!t||ye.test(e)&&u(t.parentNode)||t),n},k.sortStable=R.split("").sort(V).join("")===R,k.detectDuplicates=!!P,L(),k.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),k.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(n);ve.find=we,ve.expr=we.selectors,ve.expr[":"]=ve.expr.pseudos,ve.uniqueSort=ve.unique=we.uniqueSort,ve.text=we.getText,ve.isXMLDoc=we.isXML,ve.contains=we.contains;var Se=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&ve(e).is(n))break;r.push(e)}return r},Ce=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},_e=ve.expr.match.needsContext,Ae=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ee=/^.[^:#\[\.,]*$/;ve.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ve.find.matchesSelector(r,e)?[r]:[]:ve.find.matches(e,ve.grep(t,function(e){return 1===e.nodeType}))},ve.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(ve(e).filter(function(){for(t=0;i>t;t++)if(ve.contains(r[t],this))return!0}));for(t=0;i>t;t++)ve.find(e,r[t],n);return n=this.pushStack(i>1?ve.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(s(this,e||[],!1))},not:function(e){return this.pushStack(s(this,e||[],!0))},is:function(e){return!!s(this,"string"==typeof e&&_e.test(e)?ve(e):e||[],!1).length}});var Te,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,Pe=ve.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Te,"string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ve?t[0]:t,ve.merge(this,ve.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:se,!0)),Ae.test(r[1])&&ve.isPlainObject(t))for(r in t)ve.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=se.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Te.find(e);this.length=1,this[0]=i}return this.context=se,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):ve.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(ve):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),ve.makeArray(e,this))};Pe.prototype=ve.fn,Te=ve(se);var Le=/^(?:parents|prev(?:Until|All))/,De={children:!0,contents:!0,next:!0,prev:!0};ve.fn.extend({has:function(e){var t,n=ve(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(ve.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=_e.test(e)||"string"!=typeof e?ve(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&ve.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?ve.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?ve.inArray(this[0],ve(e)):ve.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ve.uniqueSort(ve.merge(this.get(),ve(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ve.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Se(e,"parentNode")},parentsUntil:function(e,t,n){return Se(e,"parentNode",n)},next:function(e){return l(e,"nextSibling")},prev:function(e){return l(e,"previousSibling")},nextAll:function(e){return Se(e,"nextSibling")},prevAll:function(e){return Se(e,"previousSibling")},nextUntil:function(e,t,n){return Se(e,"nextSibling",n)},prevUntil:function(e,t,n){return Se(e,"previousSibling",n)},siblings:function(e){return Ce((e.parentNode||{}).firstChild,e)},children:function(e){return Ce(e.firstChild)},contents:function(e){return ve.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:ve.merge([],e.childNodes)}},function(e,t){ve.fn[e]=function(n,r){var i=ve.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=ve.filter(r,i)),this.length>1&&(De[e]||(i=ve.uniqueSort(i)),Le.test(e)&&(i=i.reverse())),this.pushStack(i)}});var He=/\S+/g;ve.Callbacks=function(e){e="string"==typeof e?c(e):ve.extend({},e);var t,n,r,i,o=[],a=[],s=-1,l=function(){for(i=e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)o[s].apply(n[0],n[1])===!1&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},u={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function r(t){ve.each(t,function(t,n){ve.isFunction(n)?e.unique&&u.has(n)||o.push(n):n&&n.length&&"string"!==ve.type(n)&&r(n)})}(arguments),n&&!t&&l()),this},remove:function(){return ve.each(arguments,function(e,t){for(var n;(n=ve.inArray(t,o,n))>-1;)o.splice(n,1),s>=n&&s--}),this},has:function(e){return e?ve.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=!0,n||u.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!r}};return u},ve.extend({Deferred:function(e){var t=[["resolve","done",ve.Callbacks("once memory"),"resolved"],["reject","fail",ve.Callbacks("once memory"),"rejected"],["notify","progress",ve.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return ve.Deferred(function(n){ve.each(t,function(t,o){var a=ve.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&ve.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?ve.extend(e,r):r}},i={};return r.pipe=r.then,ve.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=le.call(arguments),a=o.length,s=1!==a||e&&ve.isFunction(e.promise)?a:0,l=1===s?e:ve.Deferred(),c=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?le.call(arguments):i,r===t?l.notifyWith(n,r):--s||l.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);a>i;i++)o[i]&&ve.isFunction(o[i].promise)?o[i].promise().progress(c(i,n,t)).done(c(i,r,o)).fail(l.reject):--s;return s||l.resolveWith(r,o),l.promise()}});var Oe;ve.fn.ready=function(e){return ve.ready.promise().done(e),this},ve.extend({isReady:!1,readyWait:1,holdReady:function(e){e?ve.readyWait++:ve.ready(!0)},ready:function(e){(e===!0?--ve.readyWait:ve.isReady)||(ve.isReady=!0,e!==!0&&--ve.readyWait>0||(Oe.resolveWith(se,[ve]),ve.fn.triggerHandler&&(ve(se).triggerHandler("ready"),ve(se).off("ready"))))}}),ve.ready.promise=function(e){if(!Oe)if(Oe=ve.Deferred(),"complete"===se.readyState||"loading"!==se.readyState&&!se.documentElement.doScroll)n.setTimeout(ve.ready);else if(se.addEventListener)se.addEventListener("DOMContentLoaded",p),n.addEventListener("load",p);else{se.attachEvent("onreadystatechange",p),n.attachEvent("onload",p);var t=!1;try{t=null==n.frameElement&&se.documentElement}catch(r){}t&&t.doScroll&&!function i(){if(!ve.isReady){try{t.doScroll("left")}catch(e){return n.setTimeout(i,50)}u(),ve.ready()}}()}return Oe.promise(e)},ve.ready.promise();var Ie;for(Ie in ve(me))break;me.ownFirst="0"===Ie,me.inlineBlockNeedsLayout=!1,ve(function(){var e,t,n,r;n=se.getElementsByTagName("body")[0],n&&n.style&&(t=se.createElement("div"),r=se.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",me.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=se.createElement("div");me.deleteExpando=!0;try{delete e.test}catch(t){me.deleteExpando=!1}e=null}();var je=function(e){var t=ve.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t},Be=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Me=/([A-Z])/g;ve.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?ve.cache[e[ve.expando]]:e[ve.expando],!!e&&!d(e)},data:function(e,t,n){return f(e,t,n)},removeData:function(e,t){return m(e,t)},_data:function(e,t,n){return f(e,t,n,!0)},_removeData:function(e,t){return m(e,t,!0)}}),ve.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=ve.data(o),1===o.nodeType&&!ve._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=ve.camelCase(r.slice(5)),h(o,r,i[r])));ve._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){ve.data(this,e)}):arguments.length>1?this.each(function(){ve.data(this,e,t)}):o?h(o,e,ve.data(o,e)):void 0},removeData:function(e){return this.each(function(){ve.removeData(this,e)})}}),ve.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=ve._data(e,t),n&&(!r||ve.isArray(n)?r=ve._data(e,t,ve.makeArray(n)):r.push(n)),r||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=ve.queue(e,t),r=n.length,i=n.shift(),o=ve._queueHooks(e,t),a=function(){ve.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 ve._data(e,n)||ve._data(e,n,{empty:ve.Callbacks("once memory").add(function(){ve._removeData(e,t+"queue"),ve._removeData(e,n)})})}}),ve.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?ve.queue(this[0],e):void 0===t?this:this.each(function(){var n=ve.queue(this,e,t);ve._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&ve.dequeue(this,e)})},dequeue:function(e){return this.each(function(){ve.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ve.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=ve._data(o[a],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}}),function(){var e;me.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,r;return n=se.getElementsByTagName("body")[0],n&&n.style?(t=se.createElement("div"),r=se.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.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",t.appendChild(se.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(r),e):void 0}}();var Re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,$e=new RegExp("^(?:([+-])=|)("+Re+")([a-z%]*)$","i"),qe=["Top","Right","Bottom","Left"],Fe=function(e,t){return e=t||e,"none"===ve.css(e,"display")||!ve.contains(e.ownerDocument,e)},We=function(e,t,n,r,i,o,a){var s=0,l=e.length,c=null==n;if("object"===ve.type(n)){i=!0;for(s in n)We(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,ve.isFunction(r)||(a=!0),c&&(a?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(ve(e),n)})),t))for(;l>s;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:c?t.call(e):l?t(e[0],n):o},ze=/^(?:checkbox|radio)$/i,Ue=/<([\w:-]+)/,Ve=/^$|\/(?:java|ecma)script/i,Xe=/^\s+/,Ke="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(){var e=se.createElement("div"),t=se.createDocumentFragment(),n=se.createElement("input");e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",me.leadingWhitespace=3===e.firstChild.nodeType,me.tbody=!e.getElementsByTagName("tbody").length,me.htmlSerialize=!!e.getElementsByTagName("link").length,me.html5Clone="<:nav></:nav>"!==se.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),me.appendChecked=n.checked,e.innerHTML="<textarea>x</textarea>",me.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=se.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),me.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,me.noCloneEvent=!!e.addEventListener,e[ve.expando]=1,me.attributes=!e.getAttribute(ve.expando)}();var Je={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:me.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};Je.optgroup=Je.option,Je.tbody=Je.tfoot=Je.colgroup=Je.caption=Je.thead,Je.th=Je.td;var Ye=/<|&#?\w+;/,Qe=/<tbody/i;!function(){var e,t,r=se.createElement("div");for(e in{submit:!0,change:!0,focusin:!0})t="on"+e,(me[e]=t in n)||(r.setAttribute(t,"t"),me[e]=r.attributes[t].expando===!1);r=null}();
-var Ge=/^(?:input|select|textarea)$/i,Ze=/^key/,et=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,tt=/^(?:focusinfocus|focusoutblur)$/,nt=/^([^.]*)(?:\.(.+)|)/;ve.event={global:{},add:function(e,t,n,r,i){var o,a,s,l,c,u,p,h,d,f,m,g=ve._data(e);if(g){for(n.handler&&(l=n,n=l.handler,i=l.selector),n.guid||(n.guid=ve.guid++),(a=g.events)||(a=g.events={}),(u=g.handle)||(u=g.handle=function(e){return"undefined"==typeof ve||e&&ve.event.triggered===e.type?void 0:ve.event.dispatch.apply(u.elem,arguments)},u.elem=e),t=(t||"").match(He)||[""],s=t.length;s--;)o=nt.exec(t[s])||[],d=m=o[1],f=(o[2]||"").split(".").sort(),d&&(c=ve.event.special[d]||{},d=(i?c.delegateType:c.bindType)||d,c=ve.event.special[d]||{},p=ve.extend({type:d,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ve.expr.match.needsContext.test(i),namespace:f.join(".")},l),(h=a[d])||(h=a[d]=[],h.delegateCount=0,c.setup&&c.setup.call(e,r,f,u)!==!1||(e.addEventListener?e.addEventListener(d,u,!1):e.attachEvent&&e.attachEvent("on"+d,u))),c.add&&(c.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),i?h.splice(h.delegateCount++,0,p):h.push(p),ve.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,c,u,p,h,d,f,m,g=ve.hasData(e)&&ve._data(e);if(g&&(u=g.events)){for(t=(t||"").match(He)||[""],c=t.length;c--;)if(s=nt.exec(t[c])||[],d=m=s[1],f=(s[2]||"").split(".").sort(),d){for(p=ve.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,h=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=h.length;o--;)a=h[o],!i&&m!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(h.splice(o,1),a.selector&&h.delegateCount--,p.remove&&p.remove.call(e,a));l&&!h.length&&(p.teardown&&p.teardown.call(e,f,g.handle)!==!1||ve.removeEvent(e,d,g.handle),delete u[d])}else for(d in u)ve.event.remove(e,d+t[c],n,r,!0);ve.isEmptyObject(u)&&(delete g.handle,ve._removeData(e,"events"))}},trigger:function(e,t,r,i){var o,a,s,l,c,u,p,h=[r||se],d=fe.call(e,"type")?e.type:e,f=fe.call(e,"namespace")?e.namespace.split("."):[];if(s=u=r=r||se,3!==r.nodeType&&8!==r.nodeType&&!tt.test(d+ve.event.triggered)&&(d.indexOf(".")>-1&&(f=d.split("."),d=f.shift(),f.sort()),a=d.indexOf(":")<0&&"on"+d,e=e[ve.expando]?e:new ve.Event(d,"object"==typeof e&&e),e.isTrigger=i?2:3,e.namespace=f.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:ve.makeArray(t,[e]),c=ve.event.special[d]||{},i||!c.trigger||c.trigger.apply(r,t)!==!1)){if(!i&&!c.noBubble&&!ve.isWindow(r)){for(l=c.delegateType||d,tt.test(l+d)||(s=s.parentNode);s;s=s.parentNode)h.push(s),u=s;u===(r.ownerDocument||se)&&h.push(u.defaultView||u.parentWindow||n)}for(p=0;(s=h[p++])&&!e.isPropagationStopped();)e.type=p>1?l:c.bindType||d,o=(ve._data(s,"events")||{})[e.type]&&ve._data(s,"handle"),o&&o.apply(s,t),o=a&&s[a],o&&o.apply&&je(s)&&(e.result=o.apply(s,t),e.result===!1&&e.preventDefault());if(e.type=d,!i&&!e.isDefaultPrevented()&&(!c._default||c._default.apply(h.pop(),t)===!1)&&je(r)&&a&&r[d]&&!ve.isWindow(r)){u=r[a],u&&(r[a]=null),ve.event.triggered=d;try{r[d]()}catch(m){}ve.event.triggered=void 0,u&&(r[a]=u)}return e.result}},dispatch:function(e){e=ve.event.fix(e);var t,n,r,i,o,a=[],s=le.call(arguments),l=(ve._data(this,"events")||{})[e.type]||[],c=ve.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(a=ve.event.handlers.call(this,e,l),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((ve.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,l=e.target;if(s&&l.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(r=[],n=0;s>n;n++)o=t[n],i=o.selector+" ",void 0===r[i]&&(r[i]=o.needsContext?ve(i,this).index(l)>-1:ve.find(i,this,null,[l]).length),r[i]&&r.push(o);r.length&&a.push({elem:l,handlers:r})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[ve.expando])return e;var t,n,r,i=e.type,o=e,a=this.fixHooks[i];for(a||(this.fixHooks[i]=a=et.test(i)?this.mouseHooks:Ze.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new ve.Event(o),t=r.length;t--;)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||se),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},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(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(r=e.target.ownerDocument||se,i=r.documentElement,n=r.body,e.pageX=t.clientX+(i&&i.scrollLeft||n&&n.scrollLeft||0)-(i&&i.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(i&&i.scrollTop||n&&n.scrollTop||0)-(i&&i.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==C()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===C()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return ve.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return ve.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var r=ve.extend(new ve.Event,n,{type:e,isSimulated:!0});ve.event.trigger(r,null,t),r.isDefaultPrevented()&&n.preventDefault()}},ve.removeEvent=se.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var r="on"+t;e.detachEvent&&("undefined"==typeof e[r]&&(e[r]=null),e.detachEvent(r,n))},ve.Event=function(e,t){return this instanceof ve.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?w:S):this.type=e,t&&ve.extend(this,t),this.timeStamp=e&&e.timeStamp||ve.now(),void(this[ve.expando]=!0)):new ve.Event(e,t)},ve.Event.prototype={constructor:ve.Event,isDefaultPrevented:S,isPropagationStopped:S,isImmediatePropagationStopped:S,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=w,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=w,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=w,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},ve.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){ve.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||ve.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),me.submit||(ve.event.special.submit={setup:function(){return ve.nodeName(this,"form")?!1:void ve.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=ve.nodeName(t,"input")||ve.nodeName(t,"button")?ve.prop(t,"form"):void 0;n&&!ve._data(n,"submit")&&(ve.event.add(n,"submit._submit",function(e){e._submitBubble=!0}),ve._data(n,"submit",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&ve.event.simulate("submit",this.parentNode,e))},teardown:function(){return ve.nodeName(this,"form")?!1:void ve.event.remove(this,"._submit")}}),me.change||(ve.event.special.change={setup:function(){return Ge.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(ve.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._justChanged=!0)}),ve.event.add(this,"click._change",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),ve.event.simulate("change",this,e)})),!1):void ve.event.add(this,"beforeactivate._change",function(e){var t=e.target;Ge.test(t.nodeName)&&!ve._data(t,"change")&&(ve.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||ve.event.simulate("change",this.parentNode,e)}),ve._data(t,"change",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ve.event.remove(this,"._change"),!Ge.test(this.nodeName)}}),me.focusin||ve.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){ve.event.simulate(t,e.target,ve.event.fix(e))};ve.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=ve._data(r,t);i||r.addEventListener(e,n,!0),ve._data(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=ve._data(r,t)-1;i?ve._data(r,t,i):(r.removeEventListener(e,n,!0),ve._removeData(r,t))}}}),ve.fn.extend({on:function(e,t,n,r){return _(this,e,t,n,r)},one:function(e,t,n,r){return _(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ve(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 t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=S),this.each(function(){ve.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){ve.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?ve.event.trigger(e,t,n,!0):void 0}});var rt=/ jQuery\d+="(?:null|\d+)"/g,it=new RegExp("<(?:"+Ke+")[\\s/>]","i"),ot=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,at=/<script|<style|<link/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,lt=/^true\/(.*)/,ct=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ut=v(se),pt=ut.appendChild(se.createElement("div"));ve.extend({htmlPrefilter:function(e){return e.replace(ot,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,l=ve.contains(e.ownerDocument,e);if(me.html5Clone||ve.isXMLDoc(e)||!it.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(pt.innerHTML=e.outerHTML,pt.removeChild(o=pt.firstChild)),!(me.noCloneEvent&&me.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ve.isXMLDoc(e)))for(r=y(o),s=y(e),a=0;null!=(i=s[a]);++a)r[a]&&P(i,r[a]);if(t)if(n)for(s=s||y(e),r=r||y(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=y(o,"script"),r.length>0&&b(r,!l&&y(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=ve.expando,l=ve.cache,c=me.attributes,u=ve.event.special;null!=(n=e[a]);a++)if((t||je(n))&&(i=n[s],o=i&&l[i])){if(o.events)for(r in o.events)u[r]?ve.event.remove(n,r):ve.removeEvent(n,r,o.handle);l[i]&&(delete l[i],c||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ae.push(i))}}}),ve.fn.extend({domManip:L,detach:function(e){return D(this,e,!0)},remove:function(e){return D(this,e)},text:function(e){return We(this,function(e){return void 0===e?ve.text(this):this.empty().append((this[0]&&this[0].ownerDocument||se).createTextNode(e))},null,e,arguments.length)},append:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=A(this,e);t.appendChild(e)}})},prepend:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=A(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&ve.cleanData(y(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&ve.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return ve.clone(this,e,t)})},html:function(e){return We(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(rt,""):void 0;if("string"==typeof e&&!at.test(e)&&(me.htmlSerialize||!it.test(e))&&(me.leadingWhitespace||!Xe.test(e))&&!Je[(Ue.exec(e)||["",""])[1].toLowerCase()]){e=ve.htmlPrefilter(e);try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(ve.cleanData(y(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return L(this,arguments,function(t){var n=this.parentNode;ve.inArray(this,e)<0&&(ve.cleanData(y(this)),n&&n.replaceChild(t,this))},e)}}),ve.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){ve.fn[e]=function(e){for(var n,r=0,i=[],o=ve(e),a=o.length-1;a>=r;r++)n=r===a?this:this.clone(!0),ve(o[r])[t](n),ue.apply(i,n.get());return this.pushStack(i)}});var ht,dt={HTML:"block",BODY:"block"},ft=/^margin/,mt=new RegExp("^("+Re+")(?!px)[a-z%]+$","i"),gt=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},vt=se.documentElement;!function(){function e(){var e,u,p=se.documentElement;p.appendChild(l),c.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%",t=i=s=!1,r=a=!0,n.getComputedStyle&&(u=n.getComputedStyle(c),t="1%"!==(u||{}).top,s="2px"===(u||{}).marginLeft,i="4px"===(u||{width:"4px"}).width,c.style.marginRight="50%",r="4px"===(u||{marginRight:"4px"}).marginRight,e=c.appendChild(se.createElement("div")),e.style.cssText=c.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",c.style.width="1px",a=!parseFloat((n.getComputedStyle(e)||{}).marginRight),c.removeChild(e)),c.style.display="none",o=0===c.getClientRects().length,o&&(c.style.display="",c.innerHTML="<table><tr><td></td><td>t</td></tr></table>",c.childNodes[0].style.borderCollapse="separate",e=c.getElementsByTagName("td"),e[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===e[0].offsetHeight,o&&(e[0].style.display="",e[1].style.display="none",o=0===e[0].offsetHeight)),p.removeChild(l)}var t,r,i,o,a,s,l=se.createElement("div"),c=se.createElement("div");c.style&&(c.style.cssText="float:left;opacity:.5",me.opacity="0.5"===c.style.opacity,me.cssFloat=!!c.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",me.clearCloneStyle="content-box"===c.style.backgroundClip,l=se.createElement("div"),l.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",c.innerHTML="",l.appendChild(c),me.boxSizing=""===c.style.boxSizing||""===c.style.MozBoxSizing||""===c.style.WebkitBoxSizing,ve.extend(me,{reliableHiddenOffsets:function(){return null==t&&e(),o},boxSizingReliable:function(){return null==t&&e(),i},pixelMarginRight:function(){return null==t&&e(),r},pixelPosition:function(){return null==t&&e(),t},reliableMarginRight:function(){return null==t&&e(),a},reliableMarginLeft:function(){return null==t&&e(),s}}))}();var yt,bt,xt=/^(top|right|bottom|left)$/;n.getComputedStyle?(yt=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},bt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||yt(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||ve.contains(e.ownerDocument,e)||(a=ve.style(e,t)),n&&!me.pixelMarginRight()&&mt.test(a)&&ft.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+""}):vt.currentStyle&&(yt=function(e){return e.currentStyle},bt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||yt(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),mt.test(a)&&!xt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=r,o&&(i.left=o)),void 0===a?a:a+""||"auto"});var kt=/alpha\([^)]*\)/i,wt=/opacity\s*=\s*([^)]*)/i,St=/^(none|table(?!-c[ea]).+)/,Ct=new RegExp("^("+Re+")(.*)$","i"),_t={position:"absolute",visibility:"hidden",display:"block"},At={letterSpacing:"0",fontWeight:"400"},Et=["Webkit","O","Moz","ms"],Tt=se.createElement("div").style;ve.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=bt(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:{"float":me.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=ve.camelCase(t),l=e.style;if(t=ve.cssProps[s]||(ve.cssProps[s]=j(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];if(o=typeof n,"string"===o&&(i=$e.exec(n))&&i[1]&&(n=g(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(ve.cssNumber[s]?"":"px")),me.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,r)))))try{l[t]=n}catch(c){}}},css:function(e,t,n,r){var i,o,a,s=ve.camelCase(t);return t=ve.cssProps[s]||(ve.cssProps[s]=j(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=bt(e,t,r)),"normal"===o&&t in At&&(o=At[t]),""===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),ve.each(["height","width"],function(e,t){ve.cssHooks[t]={get:function(e,n,r){return n?St.test(ve.css(e,"display"))&&0===e.offsetWidth?gt(e,_t,function(){return $(e,t,r)}):$(e,t,r):void 0},set:function(e,n,r){var i=r&&yt(e);return M(e,n,r?R(e,t,r,me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,i),i):0)}}}),me.opacity||(ve.cssHooks.opacity={get:function(e,t){return wt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=ve.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===ve.trim(o.replace(kt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=kt.test(o)?o.replace(kt,i):o+" "+i)}}),ve.cssHooks.marginRight=I(me.reliableMarginRight,function(e,t){return t?gt(e,{display:"inline-block"},bt,[e,"marginRight"]):void 0}),ve.cssHooks.marginLeft=I(me.reliableMarginLeft,function(e,t){return t?(parseFloat(bt(e,"marginLeft"))||(ve.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-gt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px":void 0}),ve.each({margin:"",padding:"",border:"Width"},function(e,t){ve.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+qe[r]+t]=o[r]||o[r-2]||o[0];return i}},ft.test(e)||(ve.cssHooks[e+t].set=M)}),ve.fn.extend({css:function(e,t){return We(this,function(e,t,n){var r,i,o={},a=0;if(ve.isArray(t)){for(r=yt(e),i=t.length;i>a;a++)o[t[a]]=ve.css(e,t[a],!1,r);return o}return void 0!==n?ve.style(e,t,n):ve.css(e,t)},e,t,arguments.length>1)},show:function(){return B(this,!0)},hide:function(){return B(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Fe(this)?ve(this).show():ve(this).hide()})}}),ve.Tween=q,q.prototype={constructor:q,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ve.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ve.cssNumber[n]?"":"px")},cur:function(){var e=q.propHooks[this.prop];return e&&e.get?e.get(this):q.propHooks._default.get(this)},run:function(e){var t,n=q.propHooks[this.prop];return this.options.duration?this.pos=t=ve.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):q.propHooks._default.set(this),this}},q.prototype.init.prototype=q.prototype,q.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=ve.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){ve.fx.step[e.prop]?ve.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[ve.cssProps[e.prop]]&&!ve.cssHooks[e.prop]?e.elem[e.prop]=e.now:ve.style(e.elem,e.prop,e.now+e.unit)}}},q.propHooks.scrollTop=q.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ve.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ve.fx=q.prototype.init,ve.fx.step={};var Nt,Pt,Lt=/^(?:toggle|show|hide)$/,Dt=/queueHooks$/;ve.Animation=ve.extend(X,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return g(n.elem,e,$e.exec(t),n),n}]},tweener:function(e,t){ve.isFunction(e)?(t=e,e=["*"]):e=e.match(He);for(var n,r=0,i=e.length;i>r;r++)n=e[r],X.tweeners[n]=X.tweeners[n]||[],X.tweeners[n].unshift(t)},prefilters:[U],prefilter:function(e,t){t?X.prefilters.unshift(e):X.prefilters.push(e)}}),ve.speed=function(e,t,n){var r=e&&"object"==typeof e?ve.extend({},e):{complete:n||!n&&t||ve.isFunction(e)&&e,duration:e,easing:n&&t||t&&!ve.isFunction(t)&&t};return r.duration=ve.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in ve.fx.speeds?ve.fx.speeds[r.duration]:ve.fx.speeds._default,null!=r.queue&&r.queue!==!0||(r.queue="fx"),r.old=r.complete,r.complete=function(){ve.isFunction(r.old)&&r.old.call(this),r.queue&&ve.dequeue(this,r.queue)},r},ve.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Fe).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=ve.isEmptyObject(e),o=ve.speed(t,n,r),a=function(){var t=X(this,ve.extend({},e),o);(i||ve._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?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&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=ve.timers,a=ve._data(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&Dt.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||ve.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=ve._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=ve.timers,a=r?r.length:0;for(n.finish=!0,ve.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;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),ve.each(["toggle","show","hide"],function(e,t){var n=ve.fn[t];ve.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(W(t,!0),e,r,i)}}),ve.each({slideDown:W("show"),slideUp:W("hide"),slideToggle:W("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){ve.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),ve.timers=[],ve.fx.tick=function(){var e,t=ve.timers,n=0;for(Nt=ve.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||ve.fx.stop(),Nt=void 0},ve.fx.timer=function(e){ve.timers.push(e),e()?ve.fx.start():ve.timers.pop()},ve.fx.interval=13,ve.fx.start=function(){Pt||(Pt=n.setInterval(ve.fx.tick,ve.fx.interval))},ve.fx.stop=function(){n.clearInterval(Pt),Pt=null},ve.fx.speeds={slow:600,fast:200,_default:400},ve.fn.delay=function(e,t){return e=ve.fx?ve.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,r){var i=n.setTimeout(t,e);r.stop=function(){n.clearTimeout(i)}})},function(){var e,t=se.createElement("input"),n=se.createElement("div"),r=se.createElement("select"),i=r.appendChild(se.createElement("option"));n=se.createElement("div"),n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",me.getSetAttribute="t"!==n.className,me.style=/top/.test(e.getAttribute("style")),me.hrefNormalized="/a"===e.getAttribute("href"),me.checkOn=!!t.value,me.optSelected=i.selected,me.enctype=!!se.createElement("form").enctype,r.disabled=!0,me.optDisabled=!i.disabled,t=se.createElement("input"),t.setAttribute("value",""),me.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),me.radioValue="t"===t.value}();var Ht=/\r/g,Ot=/[\x20\t\r\n\f]+/g;ve.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=ve.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,ve(this).val()):e,null==i?i="":"number"==typeof i?i+="":ve.isArray(i)&&(i=ve.map(i,function(e){return null==e?"":e+""})),t=ve.valHooks[this.type]||ve.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=ve.valHooks[i.type]||ve.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Ht,""):null==n?"":n)}}}),ve.extend({valHooks:{option:{get:function(e){var t=ve.find.attr(e,"value");return null!=t?t:ve.trim(ve.text(e)).replace(Ot," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;s>l;l++)if(n=r[l],(n.selected||l===i)&&(me.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!ve.nodeName(n.parentNode,"optgroup"))){if(t=ve(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,r,i=e.options,o=ve.makeArray(t),a=i.length;a--;)if(r=i[a],ve.inArray(ve.valHooks.option.get(r),o)>-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),ve.each(["radio","checkbox"],function(){ve.valHooks[this]={set:function(e,t){return ve.isArray(t)?e.checked=ve.inArray(ve(e).val(),t)>-1:void 0}},me.checkOn||(ve.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var It,jt,Bt=ve.expr.attrHandle,Mt=/^(?:checked|selected)$/i,Rt=me.getSetAttribute,$t=me.input;ve.fn.extend({attr:function(e,t){return We(this,ve.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){ve.removeAttr(this,e)})}}),ve.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ve.prop(e,t,n):(1===o&&ve.isXMLDoc(e)||(t=t.toLowerCase(),i=ve.attrHooks[t]||(ve.expr.match.bool.test(t)?jt:It)),void 0!==n?null===n?void ve.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:(r=ve.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!me.radioValue&&"radio"===t&&ve.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(He);if(o&&1===e.nodeType)for(;n=o[i++];)r=ve.propFix[n]||n,ve.expr.match.bool.test(n)?$t&&Rt||!Mt.test(n)?e[r]=!1:e[ve.camelCase("default-"+n)]=e[r]=!1:ve.attr(e,n,""),e.removeAttribute(Rt?n:r)}}),jt={set:function(e,t,n){return t===!1?ve.removeAttr(e,n):$t&&Rt||!Mt.test(n)?e.setAttribute(!Rt&&ve.propFix[n]||n,n):e[ve.camelCase("default-"+n)]=e[n]=!0,n}},ve.each(ve.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Bt[t]||ve.find.attr;$t&&Rt||!Mt.test(t)?Bt[t]=function(e,t,r){var i,o;return r||(o=Bt[t],Bt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,Bt[t]=o),i}:Bt[t]=function(e,t,n){return n?void 0:e[ve.camelCase("default-"+t)]?t.toLowerCase():null}}),$t&&Rt||(ve.attrHooks.value={set:function(e,t,n){return ve.nodeName(e,"input")?void(e.defaultValue=t):It&&It.set(e,t,n)}}),Rt||(It={set:function(e,t,n){var r=e.getAttributeNode(n);return r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Bt.id=Bt.name=Bt.coords=function(e,t,n){var r;return n?void 0:(r=e.getAttributeNode(t))&&""!==r.value?r.value:null},ve.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:It.set},ve.attrHooks.contenteditable={set:function(e,t,n){It.set(e,""===t?!1:t,n)}},ve.each(["width","height"],function(e,t){ve.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),me.style||(ve.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var qt=/^(?:input|select|textarea|button|object)$/i,Ft=/^(?:a|area)$/i;ve.fn.extend({prop:function(e,t){return We(this,ve.prop,e,t,arguments.length>1)},removeProp:function(e){return e=ve.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),ve.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ve.isXMLDoc(e)||(t=ve.propFix[t]||t,i=ve.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=ve.find.attr(e,"tabindex");return t?parseInt(t,10):qt.test(e.nodeName)||Ft.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),me.hrefNormalized||ve.each(["href","src"],function(e,t){ve.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),me.optSelected||(ve.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ve.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ve.propFix[this.toLowerCase()]=this}),me.enctype||(ve.propFix.enctype="encoding");var Wt=/[\t\r\n\f]/g;ve.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).addClass(e.call(this,t,K(this)))});if("string"==typeof e&&e)for(t=e.match(He)||[];n=this[l++];)if(i=K(n),r=1===n.nodeType&&(" "+i+" ").replace(Wt," ")){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=ve.trim(r),i!==s&&ve.attr(n,"class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).removeClass(e.call(this,t,K(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(He)||[];n=this[l++];)if(i=K(n),r=1===n.nodeType&&(" "+i+" ").replace(Wt," ")){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=ve.trim(r),i!==s&&ve.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):ve.isFunction(e)?this.each(function(n){ve(this).toggleClass(e.call(this,n,K(this),t),t)}):this.each(function(){
-var t,r,i,o;if("string"===n)for(r=0,i=ve(this),o=e.match(He)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=K(this),t&&ve._data(this,"__className__",t),ve.attr(this,"class",t||e===!1?"":ve._data(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+K(n)+" ").replace(Wt," ").indexOf(t)>-1)return!0;return!1}}),ve.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){ve.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),ve.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var zt=n.location,Ut=ve.now(),Vt=/\?/,Xt=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;ve.parseJSON=function(e){if(n.JSON&&n.JSON.parse)return n.JSON.parse(e+"");var t,r=null,i=ve.trim(e+"");return i&&!ve.trim(i.replace(Xt,function(e,n,i,o){return t&&n&&(r=0),0===r?e:(t=i||n,r+=!o-!i,"")}))?Function("return "+i)():ve.error("Invalid JSON: "+e)},ve.parseXML=function(e){var t,r;if(!e||"string"!=typeof e)return null;try{n.DOMParser?(r=new n.DOMParser,t=r.parseFromString(e,"text/xml")):(t=new n.ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e))}catch(i){t=void 0}return t&&t.documentElement&&!t.getElementsByTagName("parsererror").length||ve.error("Invalid XML: "+e),t};var Kt=/#.*$/,Jt=/([?&])_=[^&]*/,Yt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Qt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gt=/^(?:GET|HEAD)$/,Zt=/^\/\//,en=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,tn={},nn={},rn="*/".concat("*"),on=zt.href,an=en.exec(on.toLowerCase())||[];ve.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:on,type:"GET",isLocal:Qt.test(an[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":rn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":ve.parseJSON,"text xml":ve.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,ve.ajaxSettings),t):Q(ve.ajaxSettings,e)},ajaxPrefilter:J(tn),ajaxTransport:J(nn),ajax:function(e,t){function r(e,t,r,i){var o,p,y,b,k,S=t;2!==x&&(x=2,l&&n.clearTimeout(l),u=void 0,s=i||"",w.readyState=e>0?4:0,o=e>=200&&300>e||304===e,r&&(b=G(h,w,r)),b=Z(h,b,w,o),o?(h.ifModified&&(k=w.getResponseHeader("Last-Modified"),k&&(ve.lastModified[a]=k),k=w.getResponseHeader("etag"),k&&(ve.etag[a]=k)),204===e||"HEAD"===h.type?S="nocontent":304===e?S="notmodified":(S=b.state,p=b.data,y=b.error,o=!y)):(y=S,!e&&S||(S="error",0>e&&(e=0))),w.status=e,w.statusText=(t||S)+"",o?m.resolveWith(d,[p,S,w]):m.rejectWith(d,[w,S,y]),w.statusCode(v),v=void 0,c&&f.trigger(o?"ajaxSuccess":"ajaxError",[w,h,o?p:y]),g.fireWith(d,[w,S]),c&&(f.trigger("ajaxComplete",[w,h]),--ve.active||ve.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var i,o,a,s,l,c,u,p,h=ve.ajaxSetup({},t),d=h.context||h,f=h.context&&(d.nodeType||d.jquery)?ve(d):ve.event,m=ve.Deferred(),g=ve.Callbacks("once memory"),v=h.statusCode||{},y={},b={},x=0,k="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!p)for(p={};t=Yt.exec(s);)p[t[1].toLowerCase()]=t[2];t=p[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)v[t]=[v[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||k;return u&&u.abort(t),r(0,t),this}};if(m.promise(w).complete=g.add,w.success=w.done,w.error=w.fail,h.url=((e||h.url||on)+"").replace(Kt,"").replace(Zt,an[1]+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=ve.trim(h.dataType||"*").toLowerCase().match(He)||[""],null==h.crossDomain&&(i=en.exec(h.url.toLowerCase()),h.crossDomain=!(!i||i[1]===an[1]&&i[2]===an[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(an[3]||("http:"===an[1]?"80":"443")))),h.data&&h.processData&&"string"!=typeof h.data&&(h.data=ve.param(h.data,h.traditional)),Y(tn,h,t,w),2===x)return w;c=ve.event&&h.global,c&&0===ve.active++&&ve.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Gt.test(h.type),a=h.url,h.hasContent||(h.data&&(a=h.url+=(Vt.test(a)?"&":"?")+h.data,delete h.data),h.cache===!1&&(h.url=Jt.test(a)?a.replace(Jt,"$1_="+Ut++):a+(Vt.test(a)?"&":"?")+"_="+Ut++)),h.ifModified&&(ve.lastModified[a]&&w.setRequestHeader("If-Modified-Since",ve.lastModified[a]),ve.etag[a]&&w.setRequestHeader("If-None-Match",ve.etag[a])),(h.data&&h.hasContent&&h.contentType!==!1||t.contentType)&&w.setRequestHeader("Content-Type",h.contentType),w.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+rn+"; q=0.01":""):h.accepts["*"]);for(o in h.headers)w.setRequestHeader(o,h.headers[o]);if(h.beforeSend&&(h.beforeSend.call(d,w,h)===!1||2===x))return w.abort();k="abort";for(o in{success:1,error:1,complete:1})w[o](h[o]);if(u=Y(nn,h,t,w)){if(w.readyState=1,c&&f.trigger("ajaxSend",[w,h]),2===x)return w;h.async&&h.timeout>0&&(l=n.setTimeout(function(){w.abort("timeout")},h.timeout));try{x=1,u.send(y,r)}catch(S){if(!(2>x))throw S;r(-1,S)}}else r(-1,"No Transport");return w},getJSON:function(e,t,n){return ve.get(e,t,n,"json")},getScript:function(e,t){return ve.get(e,void 0,t,"script")}}),ve.each(["get","post"],function(e,t){ve[t]=function(e,n,r,i){return ve.isFunction(n)&&(i=i||r,r=n,n=void 0),ve.ajax(ve.extend({url:e,type:t,dataType:i,data:n,success:r},ve.isPlainObject(e)&&e))}}),ve._evalUrl=function(e){return ve.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},ve.fn.extend({wrapAll:function(e){if(ve.isFunction(e))return this.each(function(t){ve(this).wrapAll(e.call(this,t))});if(this[0]){var t=ve(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return ve.isFunction(e)?this.each(function(t){ve(this).wrapInner(e.call(this,t))}):this.each(function(){var t=ve(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=ve.isFunction(e);return this.each(function(n){ve(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){ve.nodeName(this,"body")||ve(this).replaceWith(this.childNodes)}).end()}}),ve.expr.filters.hidden=function(e){return me.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:te(e)},ve.expr.filters.visible=function(e){return!ve.expr.filters.hidden(e)};var sn=/%20/g,ln=/\[\]$/,cn=/\r?\n/g,un=/^(?:submit|button|image|reset|file)$/i,pn=/^(?:input|select|textarea|keygen)/i;ve.param=function(e,t){var n,r=[],i=function(e,t){t=ve.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=ve.ajaxSettings&&ve.ajaxSettings.traditional),ve.isArray(e)||e.jquery&&!ve.isPlainObject(e))ve.each(e,function(){i(this.name,this.value)});else for(n in e)ne(n,e[n],t,i);return r.join("&").replace(sn,"+")},ve.fn.extend({serialize:function(){return ve.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ve.prop(this,"elements");return e?ve.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ve(this).is(":disabled")&&pn.test(this.nodeName)&&!un.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=ve(this).val();return null==n?null:ve.isArray(n)?ve.map(n,function(e){return{name:t.name,value:e.replace(cn,"\r\n")}}):{name:t.name,value:n.replace(cn,"\r\n")}}).get()}}),ve.ajaxSettings.xhr=void 0!==n.ActiveXObject?function(){return this.isLocal?ie():se.documentMode>8?re():/^(get|post|head|put|delete|options)$/i.test(this.type)&&re()||ie()}:re;var hn=0,dn={},fn=ve.ajaxSettings.xhr();n.attachEvent&&n.attachEvent("onunload",function(){for(var e in dn)dn[e](void 0,!0)}),me.cors=!!fn&&"withCredentials"in fn,fn=me.ajax=!!fn,fn&&ve.ajaxTransport(function(e){if(!e.crossDomain||me.cors){var t;return{send:function(r,i){var o,a=e.xhr(),s=++hn;if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)a[o]=e.xhrFields[o];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+"");a.send(e.hasContent&&e.data||null),t=function(n,r){var o,l,c;if(t&&(r||4===a.readyState))if(delete dn[s],t=void 0,a.onreadystatechange=ve.noop,r)4!==a.readyState&&a.abort();else{c={},o=a.status,"string"==typeof a.responseText&&(c.text=a.responseText);try{l=a.statusText}catch(u){l=""}o||!e.isLocal||e.crossDomain?1223===o&&(o=204):o=c.text?200:404}c&&i(o,l,c,a.getAllResponseHeaders())},e.async?4===a.readyState?n.setTimeout(t):a.onreadystatechange=dn[s]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),ve.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 ve.globalEval(e),e}}}),ve.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),ve.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=se.head||ve("head")[0]||se.documentElement;return{send:function(r,i){t=se.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var mn=[],gn=/(=)\?(?=&|$)|\?\?/;ve.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=mn.pop()||ve.expando+"_"+Ut++;return this[e]=!0,e}}),ve.ajaxPrefilter("json jsonp",function(e,t,r){var i,o,a,s=e.jsonp!==!1&&(gn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&gn.test(e.data)&&"data");return s||"jsonp"===e.dataTypes[0]?(i=e.jsonpCallback=ve.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(gn,"$1"+i):e.jsonp!==!1&&(e.url+=(Vt.test(e.url)?"&":"?")+e.jsonp+"="+i),e.converters["script json"]=function(){return a||ve.error(i+" was not called"),a[0]},e.dataTypes[0]="json",o=n[i],n[i]=function(){a=arguments},r.always(function(){void 0===o?ve(n).removeProp(i):n[i]=o,e[i]&&(e.jsonpCallback=t.jsonpCallback,mn.push(i)),a&&ve.isFunction(o)&&o(a[0]),a=o=void 0}),"script"):void 0}),ve.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||se;var r=Ae.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=k([e],t,i),i&&i.length&&ve(i).remove(),ve.merge([],r.childNodes))};var vn=ve.fn.load;ve.fn.load=function(e,t,n){if("string"!=typeof e&&vn)return vn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=ve.trim(e.slice(s,e.length)),e=e.slice(0,s)),ve.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&ve.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?ve("<div>").append(ve.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ve.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ve.fn[t]=function(e){return this.on(t,e)}}),ve.expr.filters.animated=function(e){return ve.grep(ve.timers,function(t){return e===t.elem}).length},ve.offset={setOffset:function(e,t,n){var r,i,o,a,s,l,c,u=ve.css(e,"position"),p=ve(e),h={};"static"===u&&(e.style.position="relative"),s=p.offset(),o=ve.css(e,"top"),l=ve.css(e,"left"),c=("absolute"===u||"fixed"===u)&&ve.inArray("auto",[o,l])>-1,c?(r=p.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(l)||0),ve.isFunction(t)&&(t=t.call(e,n,ve.extend({},s))),null!=t.top&&(h.top=t.top-s.top+a),null!=t.left&&(h.left=t.left-s.left+i),"using"in t?t.using.call(e,h):p.css(h)}},ve.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){ve.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,ve.contains(t,i)?("undefined"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=oe(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===ve.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),ve.nodeName(e[0],"html")||(n=e.offset()),n.top+=ve.css(e[0],"borderTopWidth",!0),n.left+=ve.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-ve.css(r,"marginTop",!0),left:t.left-n.left-ve.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&!ve.nodeName(e,"html")&&"static"===ve.css(e,"position");)e=e.offsetParent;return e||vt})}}),ve.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);ve.fn[e]=function(r){return We(this,function(e,r,i){var o=oe(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?ve(o).scrollLeft():i,n?i:ve(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),ve.each(["top","left"],function(e,t){ve.cssHooks[t]=I(me.pixelPosition,function(e,n){return n?(n=bt(e,t),mt.test(n)?ve(e).position()[t]+"px":n):void 0})}),ve.each({Height:"height",Width:"width"},function(e,t){ve.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){ve.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),a=n||(r===!0||i===!0?"margin":"border");return We(this,function(t,n,r){var i;return ve.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?ve.css(t,n,a):ve.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),ve.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)}}),ve.fn.size=function(){return this.length},ve.fn.andSelf=ve.fn.addBack,r=[],i=function(){return ve}.apply(t,r),!(void 0!==i&&(e.exports=i));var yn=n.jQuery,bn=n.$;return ve.noConflict=function(e){return n.$===ve&&(n.$=bn),e&&n.jQuery===ve&&(n.jQuery=yn),ve},o||(n.jQuery=n.$=ve),ve})},function(e,t,n){function r(){L.each(function(){var e=b(this).find(".hide-list"),t=[],n=0;if(e.length){for(e.children().each(function(){n%D===0&&t.push(""),t[t.length-1]+=this.outerHTML+"",n++}),n=0;3>n;n++){if(!t[n])return;e.before('<dl class="category-list">'+t[n]+"</dl>")}e.remove()}})}function i(e){var t={usercenter:"http://www.yohobuy.com/home?t="+(new Date).getTime(),nickname:e.profile_name,signout:"http://www.yohobuy.com/logout_"+e.token};1*e.vip.curVipInfo.curLevel===3&&(e.vip3=!0),k.find(".simple-user-center").html(m(e)),S.html(g(t))}function o(){var e={return_type:"jsonp",method:"open.passport.get"};b.getJSON("http://www.yohobuy.com/common/passport/?callback=?",e,function(e){e&&e.data&&-1!==e.data.result?i(e.data.data):window.setCookie("_UID","",{domain:".yohobuy.com",expires:-1})})}function a(e){var t={return_type:"jsonp",query:e};b.getJSON("http://search.yohobuy.com/api/suggest?callback=?",t,function(e){200===e.code&&(e.data&&e.data.length?E.html(e.data).show():E.hide())})}function s(e){var t,n;e&&window.setCookie("_g",e,{path:"/",domain:".yohobuy.com"}),window.cookie("_g")&&(t=b.parseJSON(window.cookie("_g")),n=parseInt(t._nac,10)+parseInt(t._ac,10),n=n>0?n:0,T.data({key:t._k,num:n}),N.text(n))}function l(e){var t={return_type:"jsonp",method:"open.Shoppingcart.getCartData",shopping_key:e};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",t,function(e){var t,n;200===e.code&&(n=e.data,t=b.merge(n.main_goods,n.advance_goods),t=b.merge(t,n.outlet_goods),t=b.merge(t,n.gift_goods),t=b.merge(t,n.need_pay_gifts),t&&t.length?(n.totalGoods=t,P.html(v({carData:n}))):P.html('<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>'))})}function c(e,t){var n={return_type:"jsonp",method:"open.Shoppingcart.delone",shopping_key:e.key,id:e.id,isreduce:e.isreduce};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",n,function(n){var r="";return 200===n.code?(r='{"_k":"'+e.key+'","_nac":'+n.data.total_goods_num+',"_ac":0,"_r":0}',s(r),t()):void 0})}function u(){var e=["webkit","moz","ms"],t=e[0]+"RequestAnimationFrame",n=e[1]+"RequestAnimationFrame",r=e[2]+"RequestAnimationFrame";return window[t]?function(e){requestAnimationFrame(e)}:window[n]?function(e){window[n](e)}:window[r]?function(e){window[r](e)}:function(e){window.setTimeout(e,67)}}function p(){H+=10,A.css({transform:"rotateX("+H+"deg)","-webkit-transform":"rotateX("+H+"deg)","-moz-transform":"rotateX("+H+"deg)"}),H/90%2===1&&A.toggleClass("logo-cn"),H/90%2===0&&H%360!==0?window.setTimeout(p,3e3):H%360===0?window.setTimeout(p,6e4):y(function(){p()})}function h(){var e=3e3;A.hasClass("logo-cn")&&(e=6e4),A.fadeOut(O,function(){A.toggleClass("logo-cn"),A.fadeIn(O,function(){window.setTimeout(h,e)})})}function d(){var e,t,n=["webkit","moz","ms"];for(t=0;t<n.length;t++)return e=n[t]+"RequestAnimationFrame",!!window[e]}var f,m,g,v,y,b=n(2),x=n(4),k=b(".tool-wrapper"),w=k.find(".yoho-group"),S=b("#loginBox"),C=b(".head-wrapper"),_=b("#search-form"),A=C.find(".main-logo"),E=C.find(".search-suggest"),T=C.find(".go-cart"),N=T.find(".goods-num-tip"),P=C.find(".mini-cart-wrapper"),L=b(".sub-nav-list .contain-third"),D=9,H=0,O=500;m=x.compile(b("#simple-account-info-tpl").html()||""),g=x.compile(b("#header-login-info-tpl").html()||""),v=x.compile(b("#mini-cart-tpl").html()||""),x.registerHelper("notzero",function(e,t){return"0"!==e?t.fn(this):t.inverse(this)}),d()?(y=u(),window.setTimeout(p,3e3)):window.setTimeout(h,3e3),o(),r(),setInterval(s,2e3),w.hover(function(){var e=b(this).data();b(this).text(e.cn)},function(){var e=b(this).data();b(this).text(e.en)}),_.on("keyup",".search-key",function(e){var t,n=b.trim(b(this).val()),r=E.find("li"),i=E.find(".action");if(e.which>36&&e.which<41){if(38===e.which)t=i.prev(),i.length&&t.length||(t=r.eq(r.length-1));else{if(40!==e.which)return;t=i.next(),i.length&&t.length||(t=r.eq(0))}r.removeClass("action"),t.addClass("action"),b(this).val(t.find(".searchvalue").text())}else 13===e.which?""!==n&&_.submit():(n=n.replace(new RegExp("'","gm"),""),b(this).val(n),a(n))}).on("blur",".search-key",function(){setTimeout(function(){E.hide()},200)}),T.hover(function(){var e,t="";T.hasClass("on-hover")||(e=T.data(),e&&1*e.num?(t='<div class="loading-cart"><h3>加载中,请稍后</h3></div>',l(e.key)):t='<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>',P.html(t),T.addClass("on-hover"))},function(){T.removeClass("on-hover")}),T.on("click",".cart-goods-del",function(){var e,t=b(this),n=t.data();n&&(e=function(){t.closest(".goods-item").remove()},n.key=T.data().key,c(n,e))}),L.on({mouseenter:function(){var e=b(this).children(".third-nav-wrapper"),t=e.find(".show-detail"),n={};f=setTimeout(function(){e.show()},200),t.length&&!t.hasClass("show")&&(n.content_code=t.data().code,n.client_type="web",n.width=337,n.height=250,n._=new Date,b.getJSON("http://new.yohobuy.com/common/getbanner?callback=?",n,function(e){200===e.code&&(t.addClass("show"),t.find("img").attr("src",e.data.src),t.find("a").attr("href",e.data.url),t.find(".title").text(e.data.title))}))},mouseleave:function(){var e=b(this).children(".third-nav-wrapper");f&&clearTimeout(f),e.hide()}})},function(e,t,n){/*!
-	
-	 handlebars v4.0.5
-	
-	Copyright (C) 2011-2015 by Yehuda Katz
-	
-	Permission is hereby granted, free of charge, to any person obtaining a copy
-	of this software and associated documentation files (the "Software"), to deal
-	in the Software without restriction, including without limitation the rights
-	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-	copies of the Software, and to permit persons to whom the Software is
-	furnished to do so, subject to the following conditions:
-	
-	The above copyright notice and this permission notice shall be included in
-	all copies or substantial portions of the Software.
-	
-	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-	THE SOFTWARE.
-	
-	@license
-	*/
-!function(t,n){e.exports=n()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(){var e=v();return e.compile=function(t,n){return u.compile(t,n,e)},e.precompile=function(t,n){return u.precompile(t,n,e)},e.AST=l["default"],e.Compiler=u.Compiler,e.JavaScriptCompiler=h["default"],e.Parser=c.parser,e.parse=c.parse,e}var i=n(1)["default"];t.__esModule=!0;var o=n(2),a=i(o),s=n(21),l=i(s),c=n(22),u=n(27),p=n(28),h=i(p),d=n(25),f=i(d),m=n(20),g=i(m),v=a["default"].create,y=r();y.create=r,g["default"](y),y.Visitor=f["default"],y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){return e&&e.__esModule?e:{"default":e}},t.__esModule=!0},function(e,t,n){"use strict";function r(){var e=new s.HandlebarsEnvironment;return d.extend(e,s),e.SafeString=c["default"],e.Exception=p["default"],e.Utils=d,e.escapeExpression=d.escapeExpression,e.VM=m,e.template=function(t){return m.template(t,e)},e}var i=n(3)["default"],o=n(1)["default"];t.__esModule=!0;var a=n(4),s=i(a),l=n(18),c=o(l),u=n(6),p=o(u),h=n(5),d=i(h),f=n(19),m=i(f),g=n(20),v=o(g),y=r();y.create=r,v["default"](y),y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t},t.__esModule=!0},function(e,t,n){"use strict";function r(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},l.registerDefaultHelpers(this),c.registerDefaultDecorators(this)}var i=n(1)["default"];t.__esModule=!0,t.HandlebarsEnvironment=r;var o=n(5),a=n(6),s=i(a),l=n(7),c=n(15),u=n(17),p=i(u),h="4.0.5";t.VERSION=h;var d=7;t.COMPILER_REVISION=d;var f={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};t.REVISION_CHANGES=f;var m="[object Object]";r.prototype={constructor:r,logger:p["default"],log:p["default"].log,registerHelper:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(o.toString.call(e)===m)o.extend(this.partials,e);else{if("undefined"==typeof t)throw new s["default"]('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]}};var g=p["default"].log;t.log=g,t.createFrame=o.createFrame,t.logger=p["default"]},function(e,t){"use strict";function n(e){return u[e]}function r(e){for(var t=1;t<arguments.length;t++)for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e}function i(e,t){for(var n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1}function o(e){if("string"!=typeof e){if(e&&e.toHTML)return e.toHTML();if(null==e)return"";if(!e)return e+"";e=""+e}return h.test(e)?e.replace(p,n):e}function a(e){return e||0===e?!(!m(e)||0!==e.length):!0}function s(e){var t=r({},e);return t._parent=e,t}function l(e,t){return e.path=t,e}function c(e,t){return(e?e+".":"")+t}t.__esModule=!0,t.extend=r,t.indexOf=i,t.escapeExpression=o,t.isEmpty=a,t.createFrame=s,t.blockParams=l,t.appendContextPath=c;var u={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;","=":"&#x3D;"},p=/[&<>"'`=]/g,h=/[&<>"'`=]/,d=Object.prototype.toString;t.toString=d;var f=function(e){return"function"==typeof e};f(/x/)&&(t.isFunction=f=function(e){return"function"==typeof e&&"[object Function]"===d.call(e)}),t.isFunction=f;var m=Array.isArray||function(e){return e&&"object"==typeof e?"[object Array]"===d.call(e):!1};t.isArray=m},function(e,t){"use strict";function n(e,t){var i=t&&t.loc,o=void 0,a=void 0;i&&(o=i.start.line,a=i.start.column,e+=" - "+o+":"+a);for(var s=Error.prototype.constructor.call(this,e),l=0;l<r.length;l++)this[r[l]]=s[r[l]];Error.captureStackTrace&&Error.captureStackTrace(this,n),i&&(this.lineNumber=o,this.column=a)}t.__esModule=!0;var r=["description","fileName","lineNumber","message","name","number","stack"];n.prototype=new Error,t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function r(e){a["default"](e),l["default"](e),u["default"](e),h["default"](e),f["default"](e),g["default"](e),y["default"](e)}var i=n(1)["default"];t.__esModule=!0,t.registerDefaultHelpers=r;var o=n(8),a=i(o),s=n(9),l=i(s),c=n(10),u=i(c),p=n(11),h=i(p),d=n(12),f=i(d),m=n(13),g=i(m),v=n(14),y=i(v)},function(e,t,n){"use strict";t.__esModule=!0;var r=n(5);t["default"]=function(e){e.registerHelper("blockHelperMissing",function(t,n){var i=n.inverse,o=n.fn;if(t===!0)return o(this);if(t===!1||null==t)return i(this);if(r.isArray(t))return t.length>0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):i(this);if(n.data&&n.ids){var a=r.createFrame(n.data);a.contextPath=r.appendContextPath(n.data.contextPath,n.name),n={data:a}}return o(t,n)})},e.exports=t["default"]},function(e,t,n){"use strict";var r=n(1)["default"];t.__esModule=!0;var i=n(5),o=n(6),a=r(o);t["default"]=function(e){e.registerHelper("each",function(e,t){function n(t,n,o){c&&(c.key=t,c.index=n,c.first=0===n,c.last=!!o,u&&(c.contextPath=u+t)),l+=r(e[t],{data:c,blockParams:i.blockParams([e[t],t],[u+t,null])})}if(!t)throw new a["default"]("Must pass iterator to #each");var r=t.fn,o=t.inverse,s=0,l="",c=void 0,u=void 0;if(t.data&&t.ids&&(u=i.appendContextPath(t.data.contextPath,t.ids[0])+"."),i.isFunction(e)&&(e=e.call(this)),t.data&&(c=i.createFrame(t.data)),e&&"object"==typeof e)if(i.isArray(e))for(var p=e.length;p>s;s++)s in e&&n(s,s,s===e.length-1);else{var h=void 0;for(var d in e)e.hasOwnProperty(d)&&(void 0!==h&&n(h,s-1),h=d,s++);void 0!==h&&n(h,s-1,!0)}return 0===s&&(l=o(this)),l})},e.exports=t["default"]},function(e,t,n){"use strict";var r=n(1)["default"];t.__esModule=!0;var i=n(6),o=r(i);t["default"]=function(e){e.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new o["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var r=n(5);t["default"]=function(e){e.registerHelper("if",function(e,t){return r.isFunction(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||r.isEmpty(e)?t.inverse(this):t.fn(this)}),e.registerHelper("unless",function(t,n){return e.helpers["if"].call(this,t,{fn:n.inverse,inverse:n.fn,hash:n.hash})})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("log",function(){for(var t=[void 0],n=arguments[arguments.length-1],r=0;r<arguments.length-1;r++)t.push(arguments[r]);var i=1;null!=n.hash.level?i=n.hash.level:n.data&&null!=n.data.level&&(i=n.data.level),t[0]=i,e.log.apply(e,t)})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("lookup",function(e,t){return e&&e[t]})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var r=n(5);t["default"]=function(e){e.registerHelper("with",function(e,t){r.isFunction(e)&&(e=e.call(this));var n=t.fn;if(r.isEmpty(e))return t.inverse(this);var i=t.data;return t.data&&t.ids&&(i=r.createFrame(t.data),i.contextPath=r.appendContextPath(t.data.contextPath,t.ids[0])),n(e,{data:i,blockParams:r.blockParams([e],[i&&i.contextPath])})})},e.exports=t["default"]},function(e,t,n){"use strict";function r(e){a["default"](e)}var i=n(1)["default"];t.__esModule=!0,t.registerDefaultDecorators=r;var o=n(16),a=i(o)},function(e,t,n){"use strict";t.__esModule=!0;var r=n(5);t["default"]=function(e){e.registerDecorator("inline",function(e,t,n,i){var o=e;return t.partials||(t.partials={},o=function(i,o){var a=n.partials;n.partials=r.extend({},a,t.partials);var s=e(i,o);return n.partials=a,s}),t.partials[i.args[0]]=i.fn,o})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var r=n(5),i={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=r.indexOf(i.methodMap,e.toLowerCase());e=t>=0?t:parseInt(e,10)}return e},log:function(e){if(e=i.lookupLevel(e),"undefined"!=typeof console&&i.lookupLevel(i.level)<=e){var t=i.methodMap[e];console[t]||(t="log");for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;n>o;o++)r[o-1]=arguments[o];console[t].apply(console,r)}}};t["default"]=i,e.exports=t["default"]},function(e,t){"use strict";function n(e){this.string=e}t.__esModule=!0,n.prototype.toString=n.prototype.toHTML=function(){return""+this.string},t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function r(e){var t=e&&e[0]||1,n=v.COMPILER_REVISION;if(t!==n){if(n>t){var r=v.REVISION_CHANGES[n],i=v.REVISION_CHANGES[t];throw new g["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+r+") or downgrade your runtime to an older version ("+i+").")}throw new g["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")}}function i(e,t){function n(n,r,i){i.hash&&(r=f.extend({},r,i.hash),i.ids&&(i.ids[0]=!0)),n=t.VM.resolvePartial.call(this,n,r,i);var o=t.VM.invokePartial.call(this,n,r,i);if(null==o&&t.compile&&(i.partials[i.name]=t.compile(n,e.compilerOptions,t),o=i.partials[i.name](r,i)),null!=o){if(i.indent){for(var a=o.split("\n"),s=0,l=a.length;l>s&&(a[s]||s+1!==l);s++)a[s]=i.indent+a[s];o=a.join("\n")}return o}throw new g["default"]("The partial "+i.name+" could not be compiled when running in runtime-only mode")}function r(t){function n(t){return""+e.main(i,t,i.helpers,i.partials,a,l,s)}var o=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],a=o.data;r._setup(o),!o.partial&&e.useData&&(a=c(t,a));var s=void 0,l=e.useBlockParams?[]:void 0;return e.useDepths&&(s=o.depths?t!==o.depths[0]?[t].concat(o.depths):o.depths:[t]),(n=u(e.main,n,i,o.depths||[],a,l))(t,o)}if(!t)throw new g["default"]("No environment passed to template");if(!e||!e.main)throw new g["default"]("Unknown template object: "+typeof e);e.main.decorator=e.main_d,t.VM.checkRevision(e.compiler);var i={strict:function(e,t){if(!(t in e))throw new g["default"]('"'+t+'" not defined in '+e);return e[t]},lookup:function(e,t){for(var n=e.length,r=0;n>r;r++)if(e[r]&&null!=e[r][t])return e[r][t]},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:f.escapeExpression,invokePartial:n,fn:function(t){var n=e[t];return n.decorator=e[t+"_d"],n},programs:[],program:function(e,t,n,r,i){var a=this.programs[e],s=this.fn(e);return t||i||r||n?a=o(this,e,s,t,n,r,i):a||(a=this.programs[e]=o(this,e,s)),a},data:function(e,t){for(;e&&t--;)e=e._parent;return e},merge:function(e,t){var n=e||t;return e&&t&&e!==t&&(n=f.extend({},t,e)),n},noop:t.VM.noop,compilerInfo:e.compiler};return r.isTop=!0,r._setup=function(n){n.partial?(i.helpers=n.helpers,i.partials=n.partials,i.decorators=n.decorators):(i.helpers=i.merge(n.helpers,t.helpers),e.usePartial&&(i.partials=i.merge(n.partials,t.partials)),(e.usePartial||e.useDecorators)&&(i.decorators=i.merge(n.decorators,t.decorators)))},r._child=function(t,n,r,a){if(e.useBlockParams&&!r)throw new g["default"]("must pass block params");if(e.useDepths&&!a)throw new g["default"]("must pass parent depths");return o(i,t,e[t],n,0,r,a)},r}function o(e,t,n,r,i,o,a){function s(t){var i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],s=a;return a&&t!==a[0]&&(s=[t].concat(a)),n(e,t,e.helpers,e.partials,i.data||r,o&&[i.blockParams].concat(o),s)}return s=u(n,s,e,a,r,o),s.program=t,s.depth=a?a.length:0,s.blockParams=i||0,s}function a(e,t,n){return e?e.call||n.name||(n.name=e,e=n.partials[e]):e="@partial-block"===n.name?n.data["partial-block"]:n.partials[n.name],e}function s(e,t,n){n.partial=!0,n.ids&&(n.data.contextPath=n.ids[0]||n.data.contextPath);var r=void 0;if(n.fn&&n.fn!==l&&(n.data=v.createFrame(n.data),r=n.data["partial-block"]=n.fn,r.partials&&(n.partials=f.extend({},n.partials,r.partials))),void 0===e&&r&&(e=r),void 0===e)throw new g["default"]("The partial "+n.name+" could not be found");return e instanceof Function?e(t,n):void 0}function l(){return""}function c(e,t){return t&&"root"in t||(t=t?v.createFrame(t):{},t.root=e),t}function u(e,t,n,r,i,o){if(e.decorator){var a={};t=e.decorator(t,a,n,r&&r[0],i,o,r),f.extend(t,a)}return t}var p=n(3)["default"],h=n(1)["default"];t.__esModule=!0,t.checkRevision=r,t.template=i,t.wrapProgram=o,t.resolvePartial=a,t.invokePartial=s,t.noop=l;var d=n(5),f=p(d),m=n(6),g=h(m),v=n(4)},function(e,t){(function(n){"use strict";t.__esModule=!0,t["default"]=function(e){var t="undefined"!=typeof n?n:window,r=t.Handlebars;e.noConflict=function(){return t.Handlebars===e&&(t.Handlebars=r),e}},e.exports=t["default"]}).call(t,function(){return this}())},function(e,t){"use strict";t.__esModule=!0;var n={helpers:{helperExpression:function(e){return"SubExpression"===e.type||("MustacheStatement"===e.type||"BlockStatement"===e.type)&&!!(e.params&&e.params.length||e.hash)},scopedId:function(e){return/^\.|this\b/.test(e.original)},simpleId:function(e){return 1===e.parts.length&&!n.helpers.scopedId(e)&&!e.depth}}};t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function r(e,t){if("Program"===e.type)return e;s["default"].yy=d,d.locInfo=function(e){return new d.SourceLocation(t&&t.srcName,e)};var n=new c["default"](t);return n.accept(s["default"].parse(e))}var i=n(1)["default"],o=n(3)["default"];t.__esModule=!0,t.parse=r;var a=n(23),s=i(a),l=n(24),c=i(l),u=n(26),p=o(u),h=n(5);t.parser=s["default"];var d={};h.extend(d,p)},function(e,t){"use strict";var n=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(e,t,n,r,i,o,a){var s=o.length-1;switch(i){case 1:return o[s-1];case 2:this.$=r.prepareProgram(o[s]);break;case 3:this.$=o[s];break;case 4:this.$=o[s];break;case 5:this.$=o[s];break;case 6:this.$=o[s];break;case 7:this.$=o[s];break;case 8:this.$=o[s];break;case 9:this.$={type:"CommentStatement",value:r.stripComment(o[s]),strip:r.stripFlags(o[s],o[s]),loc:r.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:o[s],value:o[s],loc:r.locInfo(this._$)};break;case 11:this.$=r.prepareRawBlock(o[s-2],o[s-1],o[s],this._$);break;case 12:this.$={path:o[s-3],params:o[s-2],hash:o[s-1]};break;case 13:this.$=r.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!1,this._$);break;case 14:this.$=r.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!0,this._$);break;case 15:this.$={open:o[s-5],path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:r.stripFlags(o[s-5],o[s])};break;case 16:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:r.stripFlags(o[s-5],o[s])};break;case 17:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:r.stripFlags(o[s-5],o[s])};break;case 18:this.$={strip:r.stripFlags(o[s-1],o[s-1]),program:o[s]};break;case 19:var l=r.prepareBlock(o[s-2],o[s-1],o[s],o[s],!1,this._$),c=r.prepareProgram([l],o[s-1].loc);c.chained=!0,this.$={strip:o[s-2].strip,program:c,chain:!0};break;case 20:this.$=o[s];break;case 21:this.$={path:o[s-1],strip:r.stripFlags(o[s-2],o[s])};break;case 22:this.$=r.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],r.stripFlags(o[s-4],o[s]),this._$);break;case 23:this.$=r.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],r.stripFlags(o[s-4],o[s]),this._$);break;case 24:this.$={type:"PartialStatement",name:o[s-3],params:o[s-2],hash:o[s-1],indent:"",strip:r.stripFlags(o[s-4],o[s]),loc:r.locInfo(this._$)};break;case 25:this.$=r.preparePartialBlock(o[s-2],o[s-1],o[s],this._$);break;case 26:this.$={path:o[s-3],params:o[s-2],hash:o[s-1],strip:r.stripFlags(o[s-4],o[s])};break;case 27:this.$=o[s];break;case 28:this.$=o[s];break;case 29:this.$={type:"SubExpression",path:o[s-3],params:o[s-2],hash:o[s-1],loc:r.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:o[s],loc:r.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:r.id(o[s-2]),value:o[s],loc:r.locInfo(this._$)};break;case 32:this.$=r.id(o[s-1]);break;case 33:this.$=o[s];break;case 34:this.$=o[s];break;case 35:this.$={type:"StringLiteral",value:o[s],original:o[s],loc:r.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(o[s]),original:Number(o[s]),loc:r.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===o[s],original:"true"===o[s],loc:r.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:r.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:r.locInfo(this._$)};break;case 40:this.$=o[s];break;case 41:this.$=o[s];break;case 42:this.$=r.preparePath(!0,o[s],this._$);break;case 43:this.$=r.preparePath(!1,o[s],this._$);break;case 44:o[s-2].push({part:r.id(o[s]),original:o[s],separator:o[s-1]}),this.$=o[s-2];break;case 45:this.$=[{part:r.id(o[s]),original:o[s]}];break;case 46:this.$=[];break;case 47:o[s-1].push(o[s]);break;case 48:this.$=[o[s]];break;case 49:o[s-1].push(o[s]);break;case 50:this.$=[];break;case 51:o[s-1].push(o[s]);break;case 58:this.$=[];break;case 59:o[s-1].push(o[s]);break;case 64:this.$=[];break;case 65:o[s-1].push(o[s]);break;case 70:this.$=[];break;case 71:o[s-1].push(o[s]);break;case 78:this.$=[];break;case 79:o[s-1].push(o[s]);break;case 82:this.$=[];break;case 83:o[s-1].push(o[s]);break;case 86:this.$=[];break;case 87:o[s-1].push(o[s]);break;case 90:this.$=[];break;case 91:o[s-1].push(o[s]);break;case 94:this.$=[];break;case 95:o[s-1].push(o[s]);break;case 98:this.$=[o[s]];break;case 99:o[s-1].push(o[s]);break;case 100:this.$=[o[s]];break;case 101:o[s-1].push(o[s])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],
-47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,r=[0],i=[null],o=[],a=this.table,s="",l=0,c=0,u=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;o.push(p);var h=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var d,f,m,g,v,y,b,x,k,w={};;){if(m=r[r.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null!==d&&"undefined"!=typeof d||(d=t()),g=a[m]&&a[m][d]),"undefined"==typeof g||!g.length||!g[0]){var S="";if(!u){k=[];for(y in a[m])this.terminals_[y]&&y>2&&k.push("'"+this.terminals_[y]+"'");S=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[d]||d)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==d?"end of input":"'"+(this.terminals_[d]||d)+"'"),this.parseError(S,{text:this.lexer.match,token:this.terminals_[d]||d,line:this.lexer.yylineno,loc:p,expected:k})}}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+d);switch(g[0]){case 1:r.push(d),i.push(this.lexer.yytext),o.push(this.lexer.yylloc),r.push(g[1]),d=null,f?(d=f,f=null):(c=this.lexer.yyleng,s=this.lexer.yytext,l=this.lexer.yylineno,p=this.lexer.yylloc,u>0&&u--);break;case 2:if(b=this.productions_[g[1]][1],w.$=i[i.length-b],w._$={first_line:o[o.length-(b||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(b||1)].first_column,last_column:o[o.length-1].last_column},h&&(w._$.range=[o[o.length-(b||1)].range[0],o[o.length-1].range[1]]),v=this.performAction.call(w,s,c,l,this.yy,g[1],i,o),"undefined"!=typeof v)return v;b&&(r=r.slice(0,-1*b*2),i=i.slice(0,-1*b),o=o.slice(0,-1*b)),r.push(this.productions_[g[1]][0]),i.push(w.$),o.push(w._$),x=a[r[r.length-2]][r[r.length-1]],r.push(x);break;case 3:return!0}}return!0}},n=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this},more:function(){return this._more=!0,this},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r,i;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),a=0;a<o.length&&(n=this._input.match(this.rules[o[a]]),!n||t&&!(n[0].length>t[0].length)||(t=n,r=a,this.options.flex));a++);return t?(i=t[0].match(/(?:\r\n?|\n).*/g),i&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[r],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,r){function i(e,n){return t.yytext=t.yytext.substr(e,t.yyleng-n)}switch(n){case 0:if("\\\\"===t.yytext.slice(-2)?(i(0,1),this.begin("mu")):"\\"===t.yytext.slice(-1)?(i(0,1),this.begin("emu")):this.begin("mu"),t.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(t.yytext=t.yytext.substr(5,t.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(t.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return t.yytext=i(1,2).replace(/\\"/g,'"'),80;case 32:return t.yytext=i(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return t.yytext=t.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},e.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],e.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},e}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();t.__esModule=!0,t["default"]=n},function(e,t,n){"use strict";function r(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=e}function i(e,t,n){void 0===t&&(t=e.length);var r=e[t-1],i=e[t-2];return r?"ContentStatement"===r.type?(i||!n?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(r.original):void 0:n}function o(e,t,n){void 0===t&&(t=-1);var r=e[t+1],i=e[t+2];return r?"ContentStatement"===r.type?(i||!n?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(r.original):void 0:n}function a(e,t,n){var r=e[null==t?0:t+1];if(r&&"ContentStatement"===r.type&&(n||!r.rightStripped)){var i=r.value;r.value=r.value.replace(n?/^\s+/:/^[ \t]*\r?\n?/,""),r.rightStripped=r.value!==i}}function s(e,t,n){var r=e[null==t?e.length-1:t-1];if(r&&"ContentStatement"===r.type&&(n||!r.leftStripped)){var i=r.value;return r.value=r.value.replace(n?/\s+$/:/[ \t]+$/,""),r.leftStripped=r.value!==i,r.leftStripped}}var l=n(1)["default"];t.__esModule=!0;var c=n(25),u=l(c);r.prototype=new u["default"],r.prototype.Program=function(e){var t=!this.options.ignoreStandalone,n=!this.isRootSeen;this.isRootSeen=!0;for(var r=e.body,l=0,c=r.length;c>l;l++){var u=r[l],p=this.accept(u);if(p){var h=i(r,l,n),d=o(r,l,n),f=p.openStandalone&&h,m=p.closeStandalone&&d,g=p.inlineStandalone&&h&&d;p.close&&a(r,l,!0),p.open&&s(r,l,!0),t&&g&&(a(r,l),s(r,l)&&"PartialStatement"===u.type&&(u.indent=/([ \t]+$)/.exec(r[l-1].original)[1])),t&&f&&(a((u.program||u.inverse).body),s(r,l)),t&&m&&(a(r,l),s((u.inverse||u.program).body))}}return e},r.prototype.BlockStatement=r.prototype.DecoratorBlock=r.prototype.PartialBlockStatement=function(e){this.accept(e.program),this.accept(e.inverse);var t=e.program||e.inverse,n=e.program&&e.inverse,r=n,l=n;if(n&&n.chained)for(r=n.body[0].program;l.chained;)l=l.body[l.body.length-1].program;var c={open:e.openStrip.open,close:e.closeStrip.close,openStandalone:o(t.body),closeStandalone:i((r||t).body)};if(e.openStrip.close&&a(t.body,null,!0),n){var u=e.inverseStrip;u.open&&s(t.body,null,!0),u.close&&a(r.body,null,!0),e.closeStrip.open&&s(l.body,null,!0),!this.options.ignoreStandalone&&i(t.body)&&o(r.body)&&(s(t.body),a(r.body))}else e.closeStrip.open&&s(t.body,null,!0);return c},r.prototype.Decorator=r.prototype.MustacheStatement=function(e){return e.strip},r.prototype.PartialStatement=r.prototype.CommentStatement=function(e){var t=e.strip||{};return{inlineStandalone:!0,open:t.open,close:t.close}},t["default"]=r,e.exports=t["default"]},function(e,t,n){"use strict";function r(){this.parents=[]}function i(e){this.acceptRequired(e,"path"),this.acceptArray(e.params),this.acceptKey(e,"hash")}function o(e){i.call(this,e),this.acceptKey(e,"program"),this.acceptKey(e,"inverse")}function a(e){this.acceptRequired(e,"name"),this.acceptArray(e.params),this.acceptKey(e,"hash")}var s=n(1)["default"];t.__esModule=!0;var l=n(6),c=s(l);r.prototype={constructor:r,mutating:!1,acceptKey:function(e,t){var n=this.accept(e[t]);if(this.mutating){if(n&&!r.prototype[n.type])throw new c["default"]('Unexpected node type "'+n.type+'" found when accepting '+t+" on "+e.type);e[t]=n}},acceptRequired:function(e,t){if(this.acceptKey(e,t),!e[t])throw new c["default"](e.type+" requires "+t)},acceptArray:function(e){for(var t=0,n=e.length;n>t;t++)this.acceptKey(e,t),e[t]||(e.splice(t,1),t--,n--)},accept:function(e){if(e){if(!this[e.type])throw new c["default"]("Unknown type: "+e.type,e);this.current&&this.parents.unshift(this.current),this.current=e;var t=this[e.type](e);return this.current=this.parents.shift(),!this.mutating||t?t:t!==!1?e:void 0}},Program:function(e){this.acceptArray(e.body)},MustacheStatement:i,Decorator:i,BlockStatement:o,DecoratorBlock:o,PartialStatement:a,PartialBlockStatement:function(e){a.call(this,e),this.acceptKey(e,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:i,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(e){this.acceptArray(e.pairs)},HashPair:function(e){this.acceptRequired(e,"value")}},t["default"]=r,e.exports=t["default"]},function(e,t,n){"use strict";function r(e,t){if(t=t.path?t.path.original:t,e.path.original!==t){var n={loc:e.path.loc};throw new g["default"](e.path.original+" doesn't match "+t,n)}}function i(e,t){this.source=e,this.start={line:t.first_line,column:t.first_column},this.end={line:t.last_line,column:t.last_column}}function o(e){return/^\[.*\]$/.test(e)?e.substr(1,e.length-2):e}function a(e,t){return{open:"~"===e.charAt(2),close:"~"===t.charAt(t.length-3)}}function s(e){return e.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function l(e,t,n){n=this.locInfo(n);for(var r=e?"@":"",i=[],o=0,a="",s=0,l=t.length;l>s;s++){var c=t[s].part,u=t[s].original!==c;if(r+=(t[s].separator||"")+c,u||".."!==c&&"."!==c&&"this"!==c)i.push(c);else{if(i.length>0)throw new g["default"]("Invalid path: "+r,{loc:n});".."===c&&(o++,a+="../")}}return{type:"PathExpression",data:e,depth:o,parts:i,original:r,loc:n}}function c(e,t,n,r,i,o){var a=r.charAt(3)||r.charAt(2),s="{"!==a&&"&"!==a,l=/\*/.test(r);return{type:l?"Decorator":"MustacheStatement",path:e,params:t,hash:n,escaped:s,strip:i,loc:this.locInfo(o)}}function u(e,t,n,i){r(e,n),i=this.locInfo(i);var o={type:"Program",body:t,strip:{},loc:i};return{type:"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:o,openStrip:{},inverseStrip:{},closeStrip:{},loc:i}}function p(e,t,n,i,o,a){i&&i.path&&r(e,i);var s=/\*/.test(e.open);t.blockParams=e.blockParams;var l=void 0,c=void 0;if(n){if(s)throw new g["default"]("Unexpected inverse block on decorator",n);n.chain&&(n.program.body[0].closeStrip=i.strip),c=n.strip,l=n.program}return o&&(o=l,l=t,t=o),{type:s?"DecoratorBlock":"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:t,inverse:l,openStrip:e.strip,inverseStrip:c,closeStrip:i&&i.strip,loc:this.locInfo(a)}}function h(e,t){if(!t&&e.length){var n=e[0].loc,r=e[e.length-1].loc;n&&r&&(t={source:n.source,start:{line:n.start.line,column:n.start.column},end:{line:r.end.line,column:r.end.column}})}return{type:"Program",body:e,strip:{},loc:t}}function d(e,t,n,i){return r(e,n),{type:"PartialBlockStatement",name:e.path,params:e.params,hash:e.hash,program:t,openStrip:e.strip,closeStrip:n&&n.strip,loc:this.locInfo(i)}}var f=n(1)["default"];t.__esModule=!0,t.SourceLocation=i,t.id=o,t.stripFlags=a,t.stripComment=s,t.preparePath=l,t.prepareMustache=c,t.prepareRawBlock=u,t.prepareBlock=p,t.prepareProgram=h,t.preparePartialBlock=d;var m=n(6),g=f(m)},function(e,t,n){"use strict";function r(){}function i(e,t,n){if(null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+e);t=t||{},"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var r=n.parse(e,t),i=(new n.Compiler).compile(r,t);return(new n.JavaScriptCompiler).compile(i,t)}function o(e,t,n){function r(){var r=n.parse(e,t),i=(new n.Compiler).compile(r,t),o=(new n.JavaScriptCompiler).compile(i,t,void 0,!0);return n.template(o)}function i(e,t){return o||(o=r()),o.call(this,e,t)}if(void 0===t&&(t={}),null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+e);"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var o=void 0;return i._setup=function(e){return o||(o=r()),o._setup(e)},i._child=function(e,t,n,i){return o||(o=r()),o._child(e,t,n,i)},i}function a(e,t){if(e===t)return!0;if(p.isArray(e)&&p.isArray(t)&&e.length===t.length){for(var n=0;n<e.length;n++)if(!a(e[n],t[n]))return!1;return!0}}function s(e){if(!e.path.parts){var t=e.path;e.path={type:"PathExpression",data:!1,depth:0,parts:[t.original+""],original:t.original+"",loc:t.loc}}}var l=n(1)["default"];t.__esModule=!0,t.Compiler=r,t.precompile=i,t.compile=o;var c=n(6),u=l(c),p=n(5),h=n(21),d=l(h),f=[].slice;r.prototype={compiler:r,equals:function(e){var t=this.opcodes.length;if(e.opcodes.length!==t)return!1;for(var n=0;t>n;n++){var r=this.opcodes[n],i=e.opcodes[n];if(r.opcode!==i.opcode||!a(r.args,i.args))return!1}t=this.children.length;for(var n=0;t>n;n++)if(!this.children[n].equals(e.children[n]))return!1;return!0},guid:0,compile:function(e,t){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=t,this.stringParams=t.stringParams,this.trackIds=t.trackIds,t.blockParams=t.blockParams||[];var n=t.knownHelpers;if(t.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},n)for(var r in n)r in n&&(t.knownHelpers[r]=n[r]);return this.accept(e)},compileProgram:function(e){var t=new this.compiler,n=t.compile(e,this.options),r=this.guid++;return this.usePartial=this.usePartial||n.usePartial,this.children[r]=n,this.useDepths=this.useDepths||n.useDepths,r},accept:function(e){if(!this[e.type])throw new u["default"]("Unknown type: "+e.type,e);this.sourceNode.unshift(e);var t=this[e.type](e);return this.sourceNode.shift(),t},Program:function(e){this.options.blockParams.unshift(e.blockParams);for(var t=e.body,n=t.length,r=0;n>r;r++)this.accept(t[r]);return this.options.blockParams.shift(),this.isSimple=1===n,this.blockParams=e.blockParams?e.blockParams.length:0,this},BlockStatement:function(e){s(e);var t=e.program,n=e.inverse;t=t&&this.compileProgram(t),n=n&&this.compileProgram(n);var r=this.classifySexpr(e);"helper"===r?this.helperSexpr(e,t,n):"simple"===r?(this.simpleSexpr(e),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("blockValue",e.path.original)):(this.ambiguousSexpr(e,t,n),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(e){var t=e.program&&this.compileProgram(e.program),n=this.setupFullMustacheParams(e,t,void 0),r=e.path;this.useDecorators=!0,this.opcode("registerDecorator",n.length,r.original)},PartialStatement:function(e){this.usePartial=!0;var t=e.program;t&&(t=this.compileProgram(e.program));var n=e.params;if(n.length>1)throw new u["default"]("Unsupported number of partial arguments: "+n.length,e);n.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):n.push({type:"PathExpression",parts:[],depth:0}));var r=e.name.original,i="SubExpression"===e.name.type;i&&this.accept(e.name),this.setupFullMustacheParams(e,t,void 0,!0);var o=e.indent||"";this.options.preventIndent&&o&&(this.opcode("appendContent",o),o=""),this.opcode("invokePartial",i,r,o),this.opcode("append")},PartialBlockStatement:function(e){this.PartialStatement(e)},MustacheStatement:function(e){this.SubExpression(e),e.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(e){this.DecoratorBlock(e)},ContentStatement:function(e){e.value&&this.opcode("appendContent",e.value)},CommentStatement:function(){},SubExpression:function(e){s(e);var t=this.classifySexpr(e);"simple"===t?this.simpleSexpr(e):"helper"===t?this.helperSexpr(e):this.ambiguousSexpr(e)},ambiguousSexpr:function(e,t,n){var r=e.path,i=r.parts[0],o=null!=t||null!=n;this.opcode("getContext",r.depth),this.opcode("pushProgram",t),this.opcode("pushProgram",n),r.strict=!0,this.accept(r),this.opcode("invokeAmbiguous",i,o)},simpleSexpr:function(e){var t=e.path;t.strict=!0,this.accept(t),this.opcode("resolvePossibleLambda")},helperSexpr:function(e,t,n){var r=this.setupFullMustacheParams(e,t,n),i=e.path,o=i.parts[0];if(this.options.knownHelpers[o])this.opcode("invokeKnownHelper",r.length,o);else{if(this.options.knownHelpersOnly)throw new u["default"]("You specified knownHelpersOnly, but used the unknown helper "+o,e);i.strict=!0,i.falsy=!0,this.accept(i),this.opcode("invokeHelper",r.length,i.original,d["default"].helpers.simpleId(i))}},PathExpression:function(e){this.addDepth(e.depth),this.opcode("getContext",e.depth);var t=e.parts[0],n=d["default"].helpers.scopedId(e),r=!e.depth&&!n&&this.blockParamIndex(t);r?this.opcode("lookupBlockParam",r,e.parts):t?e.data?(this.options.data=!0,this.opcode("lookupData",e.depth,e.parts,e.strict)):this.opcode("lookupOnContext",e.parts,e.falsy,e.strict,n):this.opcode("pushContext")},StringLiteral:function(e){this.opcode("pushString",e.value)},NumberLiteral:function(e){this.opcode("pushLiteral",e.value)},BooleanLiteral:function(e){this.opcode("pushLiteral",e.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(e){var t=e.pairs,n=0,r=t.length;for(this.opcode("pushHash");r>n;n++)this.pushParam(t[n].value);for(;n--;)this.opcode("assignToHash",t[n].key);this.opcode("popHash")},opcode:function(e){this.opcodes.push({opcode:e,args:f.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(e){e&&(this.useDepths=!0)},classifySexpr:function(e){var t=d["default"].helpers.simpleId(e.path),n=t&&!!this.blockParamIndex(e.path.parts[0]),r=!n&&d["default"].helpers.helperExpression(e),i=!n&&(r||t);if(i&&!r){var o=e.path.parts[0],a=this.options;a.knownHelpers[o]?r=!0:a.knownHelpersOnly&&(i=!1)}return r?"helper":i?"ambiguous":"simple"},pushParams:function(e){for(var t=0,n=e.length;n>t;t++)this.pushParam(e[t])},pushParam:function(e){var t=null!=e.value?e.value:e.original||"";if(this.stringParams)t.replace&&(t=t.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),e.depth&&this.addDepth(e.depth),this.opcode("getContext",e.depth||0),this.opcode("pushStringParam",t,e.type),"SubExpression"===e.type&&this.accept(e);else{if(this.trackIds){var n=void 0;if(!e.parts||d["default"].helpers.scopedId(e)||e.depth||(n=this.blockParamIndex(e.parts[0])),n){var r=e.parts.slice(1).join(".");this.opcode("pushId","BlockParam",n,r)}else t=e.original||t,t.replace&&(t=t.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",e.type,t)}this.accept(e)}},setupFullMustacheParams:function(e,t,n,r){var i=e.params;return this.pushParams(i),this.opcode("pushProgram",t),this.opcode("pushProgram",n),e.hash?this.accept(e.hash):this.opcode("emptyHash",r),i},blockParamIndex:function(e){for(var t=0,n=this.options.blockParams.length;n>t;t++){var r=this.options.blockParams[t],i=r&&p.indexOf(r,e);if(r&&i>=0)return[t,i]}}}},function(e,t,n){"use strict";function r(e){this.value=e}function i(){}function o(e,t,n,r){var i=t.popStack(),o=0,a=n.length;for(e&&a--;a>o;o++)i=t.nameLookup(i,n[o],r);return e?[t.aliasable("container.strict"),"(",i,", ",t.quotedString(n[o]),")"]:i}var a=n(1)["default"];t.__esModule=!0;var s=n(4),l=n(6),c=a(l),u=n(5),p=n(29),h=a(p);i.prototype={nameLookup:function(e,t){return i.isValidJavaScriptVariableName(t)?[e,".",t]:[e,"[",JSON.stringify(t),"]"]},depthedLookup:function(e){return[this.aliasable("container.lookup"),'(depths, "',e,'")']},compilerInfo:function(){var e=s.COMPILER_REVISION,t=s.REVISION_CHANGES[e];return[e,t]},appendToBuffer:function(e,t,n){return u.isArray(e)||(e=[e]),e=this.source.wrap(e,t),this.environment.isSimple?["return ",e,";"]:n?["buffer += ",e,";"]:(e.appendToBuffer=!0,e)},initializeBuffer:function(){return this.quotedString("")},compile:function(e,t,n,r){this.environment=e,this.options=t,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!r,this.name=this.environment.name,this.isChild=!!n,this.context=n||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(e,t),this.useDepths=this.useDepths||e.useDepths||e.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||e.useBlockParams;var i=e.opcodes,o=void 0,a=void 0,s=void 0,l=void 0;for(s=0,l=i.length;l>s;s++)o=i[s],this.source.currentLocation=o.loc,a=a||o.loc,this[o.opcode].apply(this,o.args);if(this.source.currentLocation=a,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new c["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),r?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var u=this.createFunctionContext(r);if(this.isChild)return u;var p={compiler:this.compilerInfo(),main:u};this.decorators&&(p.main_d=this.decorators,p.useDecorators=!0);var h=this.context,d=h.programs,f=h.decorators;for(s=0,l=d.length;l>s;s++)d[s]&&(p[s]=d[s],f[s]&&(p[s+"_d"]=f[s],p.useDecorators=!0));return this.environment.usePartial&&(p.usePartial=!0),this.options.data&&(p.useData=!0),this.useDepths&&(p.useDepths=!0),this.useBlockParams&&(p.useBlockParams=!0),this.options.compat&&(p.compat=!0),r?p.compilerOptions=this.options:(p.compiler=JSON.stringify(p.compiler),this.source.currentLocation={start:{line:1,column:0}},p=this.objectLiteral(p),t.srcName?(p=p.toStringWithSourceMap({file:t.destName}),p.map=p.map&&p.map.toString()):p=p.toString()),p},preamble:function(){this.lastContext=0,this.source=new h["default"](this.options.srcName),this.decorators=new h["default"](this.options.srcName)},createFunctionContext:function(e){var t="",n=this.stackVars.concat(this.registers.list);n.length>0&&(t+=", "+n.join(", "));var r=0;for(var i in this.aliases){var o=this.aliases[i];this.aliases.hasOwnProperty(i)&&o.children&&o.referenceCount>1&&(t+=", alias"+ ++r+"="+i,o.children[0]="alias"+r)}var a=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&a.push("blockParams"),this.useDepths&&a.push("depths");var s=this.mergeSource(t);return e?(a.push(s),Function.apply(this,a)):this.source.wrap(["function(",a.join(","),") {\n  ",s,"}"])},mergeSource:function(e){var t=this.environment.isSimple,n=!this.forceBuffer,r=void 0,i=void 0,o=void 0,a=void 0;return this.source.each(function(e){e.appendToBuffer?(o?e.prepend("  + "):o=e,a=e):(o&&(i?o.prepend("buffer += "):r=!0,a.add(";"),o=a=void 0),i=!0,t||(n=!1))}),n?o?(o.prepend("return "),a.add(";")):i||this.source.push('return "";'):(e+=", buffer = "+(r?"":this.initializeBuffer()),o?(o.prepend("return buffer + "),a.add(";")):this.source.push("return buffer;")),e&&this.source.prepend("var "+e.substring(2)+(r?"":";\n")),this.source.merge()},blockValue:function(e){var t=this.aliasable("helpers.blockHelperMissing"),n=[this.contextName(0)];this.setupHelperArgs(e,0,n);var r=this.popStack();n.splice(1,0,r),this.push(this.source.functionCall(t,"call",n))},ambiguousBlockValue:function(){var e=this.aliasable("helpers.blockHelperMissing"),t=[this.contextName(0)];this.setupHelperArgs("",0,t,!0),this.flushInline();var n=this.topStack();t.splice(1,0,n),this.pushSource(["if (!",this.lastHelper,") { ",n," = ",this.source.functionCall(e,"call",t),"}"])},appendContent:function(e){this.pendingContent?e=this.pendingContent+e:this.pendingLocation=this.source.currentLocation,this.pendingContent=e},append:function(){if(this.isInline())this.replaceStack(function(e){return[" != null ? ",e,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var e=this.popStack();this.pushSource(["if (",e," != null) { ",this.appendToBuffer(e,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(e){this.lastContext=e},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(e,t,n,r){var i=0;r||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(e[i++])),this.resolvePath("context",e,i,t,n)},lookupBlockParam:function(e,t){this.useBlockParams=!0,this.push(["blockParams[",e[0],"][",e[1],"]"]),this.resolvePath("context",t,1)},lookupData:function(e,t,n){e?this.pushStackLiteral("container.data(data, "+e+")"):this.pushStackLiteral("data"),this.resolvePath("data",t,0,!0,n)},resolvePath:function(e,t,n,r,i){var a=this;if(this.options.strict||this.options.assumeObjects)return void this.push(o(this.options.strict&&i,this,t,e));for(var s=t.length;s>n;n++)this.replaceStack(function(i){var o=a.nameLookup(i,t[n],e);return r?[" && ",o]:[" != null ? ",o," : ",i]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(e,t){this.pushContext(),this.pushString(t),"SubExpression"!==t&&("string"==typeof e?this.pushString(e):this.pushStackLiteral(e))},emptyHash:function(e){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(e?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var e=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(e.ids)),this.stringParams&&(this.push(this.objectLiteral(e.contexts)),this.push(this.objectLiteral(e.types))),this.push(this.objectLiteral(e.values))},pushString:function(e){this.pushStackLiteral(this.quotedString(e))},pushLiteral:function(e){this.pushStackLiteral(e)},pushProgram:function(e){null!=e?this.pushStackLiteral(this.programExpression(e)):this.pushStackLiteral(null)},registerDecorator:function(e,t){var n=this.nameLookup("decorators",t,"decorator"),r=this.setupHelperArgs(t,e);this.decorators.push(["fn = ",this.decorators.functionCall(n,"",["fn","props","container",r])," || fn;"])},invokeHelper:function(e,t,n){var r=this.popStack(),i=this.setupHelper(e,t),o=n?[i.name," || "]:"",a=["("].concat(o,r);this.options.strict||a.push(" || ",this.aliasable("helpers.helperMissing")),a.push(")"),this.push(this.source.functionCall(a,"call",i.callParams))},invokeKnownHelper:function(e,t){var n=this.setupHelper(e,t);this.push(this.source.functionCall(n.name,"call",n.callParams))},invokeAmbiguous:function(e,t){this.useRegister("helper");var n=this.popStack();this.emptyHash();var r=this.setupHelper(0,e,t),i=this.lastHelper=this.nameLookup("helpers",e,"helper"),o=["(","(helper = ",i," || ",n,")"];this.options.strict||(o[0]="(helper = ",o.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",o,r.paramsInit?["),(",r.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",r.callParams)," : helper))"])},invokePartial:function(e,t,n){var r=[],i=this.setupParams(t,1,r);e&&(t=this.popStack(),delete i.name),n&&(i.indent=JSON.stringify(n)),i.helpers="helpers",i.partials="partials",i.decorators="container.decorators",e?r.unshift(t):r.unshift(this.nameLookup("partials",t,"partial")),this.options.compat&&(i.depths="depths"),i=this.objectLiteral(i),r.push(i),this.push(this.source.functionCall("container.invokePartial","",r))},assignToHash:function(e){var t=this.popStack(),n=void 0,r=void 0,i=void 0;this.trackIds&&(i=this.popStack()),
-this.stringParams&&(r=this.popStack(),n=this.popStack());var o=this.hash;n&&(o.contexts[e]=n),r&&(o.types[e]=r),i&&(o.ids[e]=i),o.values[e]=t},pushId:function(e,t,n){"BlockParam"===e?this.pushStackLiteral("blockParams["+t[0]+"].path["+t[1]+"]"+(n?" + "+JSON.stringify("."+n):"")):"PathExpression"===e?this.pushString(t):"SubExpression"===e?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:i,compileChildren:function(e,t){for(var n=e.children,r=void 0,i=void 0,o=0,a=n.length;a>o;o++){r=n[o],i=new this.compiler;var s=this.matchExistingProgram(r);null==s?(this.context.programs.push(""),s=this.context.programs.length,r.index=s,r.name="program"+s,this.context.programs[s]=i.compile(r,t,this.context,!this.precompile),this.context.decorators[s]=i.decorators,this.context.environments[s]=r,this.useDepths=this.useDepths||i.useDepths,this.useBlockParams=this.useBlockParams||i.useBlockParams):(r.index=s,r.name="program"+s,this.useDepths=this.useDepths||r.useDepths,this.useBlockParams=this.useBlockParams||r.useBlockParams)}},matchExistingProgram:function(e){for(var t=0,n=this.context.environments.length;n>t;t++){var r=this.context.environments[t];if(r&&r.equals(e))return t}},programExpression:function(e){var t=this.environment.children[e],n=[t.index,"data",t.blockParams];return(this.useBlockParams||this.useDepths)&&n.push("blockParams"),this.useDepths&&n.push("depths"),"container.program("+n.join(", ")+")"},useRegister:function(e){this.registers[e]||(this.registers[e]=!0,this.registers.list.push(e))},push:function(e){return e instanceof r||(e=this.source.wrap(e)),this.inlineStack.push(e),e},pushStackLiteral:function(e){this.push(new r(e))},pushSource:function(e){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),e&&this.source.push(e)},replaceStack:function(e){var t=["("],n=void 0,i=void 0,o=void 0;if(!this.isInline())throw new c["default"]("replaceStack on non-inline");var a=this.popStack(!0);if(a instanceof r)n=[a.value],t=["(",n],o=!0;else{i=!0;var s=this.incrStack();t=["((",this.push(s)," = ",a,")"],n=this.topStack()}var l=e.call(this,n);o||this.popStack(),i&&this.stackSlot--,this.push(t.concat(l,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var e=this.inlineStack;this.inlineStack=[];for(var t=0,n=e.length;n>t;t++){var i=e[t];if(i instanceof r)this.compileStack.push(i);else{var o=this.incrStack();this.pushSource([o," = ",i,";"]),this.compileStack.push(o)}}},isInline:function(){return this.inlineStack.length},popStack:function(e){var t=this.isInline(),n=(t?this.inlineStack:this.compileStack).pop();if(!e&&n instanceof r)return n.value;if(!t){if(!this.stackSlot)throw new c["default"]("Invalid stack pop");this.stackSlot--}return n},topStack:function(){var e=this.isInline()?this.inlineStack:this.compileStack,t=e[e.length-1];return t instanceof r?t.value:t},contextName:function(e){return this.useDepths&&e?"depths["+e+"]":"depth"+e},quotedString:function(e){return this.source.quotedString(e)},objectLiteral:function(e){return this.source.objectLiteral(e)},aliasable:function(e){var t=this.aliases[e];return t?(t.referenceCount++,t):(t=this.aliases[e]=this.source.wrap(e),t.aliasable=!0,t.referenceCount=1,t)},setupHelper:function(e,t,n){var r=[],i=this.setupHelperArgs(t,e,r,n),o=this.nameLookup("helpers",t,"helper"),a=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : {}");return{params:r,paramsInit:i,name:o,callParams:[a].concat(r)}},setupParams:function(e,t,n){var r={},i=[],o=[],a=[],s=!n,l=void 0;s&&(n=[]),r.name=this.quotedString(e),r.hash=this.popStack(),this.trackIds&&(r.hashIds=this.popStack()),this.stringParams&&(r.hashTypes=this.popStack(),r.hashContexts=this.popStack());var c=this.popStack(),u=this.popStack();(u||c)&&(r.fn=u||"container.noop",r.inverse=c||"container.noop");for(var p=t;p--;)l=this.popStack(),n[p]=l,this.trackIds&&(a[p]=this.popStack()),this.stringParams&&(o[p]=this.popStack(),i[p]=this.popStack());return s&&(r.args=this.source.generateArray(n)),this.trackIds&&(r.ids=this.source.generateArray(a)),this.stringParams&&(r.types=this.source.generateArray(o),r.contexts=this.source.generateArray(i)),this.options.data&&(r.data="data"),this.useBlockParams&&(r.blockParams="blockParams"),r},setupHelperArgs:function(e,t,n,r){var i=this.setupParams(e,t,n);return i=this.objectLiteral(i),r?(this.useRegister("options"),n.push("options"),["options=",i]):n?(n.push(i),""):i}},function(){for(var e="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),t=i.RESERVED_WORDS={},n=0,r=e.length;r>n;n++)t[e[n]]=!0}(),i.isValidJavaScriptVariableName=function(e){return!i.RESERVED_WORDS[e]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e)},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function r(e,t,n){if(o.isArray(e)){for(var r=[],i=0,a=e.length;a>i;i++)r.push(t.wrap(e[i],n));return r}return"boolean"==typeof e||"number"==typeof e?e+"":e}function i(e){this.srcFile=e,this.source=[]}t.__esModule=!0;var o=n(5),a=void 0;try{}catch(s){}a||(a=function(e,t,n,r){this.src="",r&&this.add(r)},a.prototype={add:function(e){o.isArray(e)&&(e=e.join("")),this.src+=e},prepend:function(e){o.isArray(e)&&(e=e.join("")),this.src=e+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),i.prototype={isEmpty:function(){return!this.source.length},prepend:function(e,t){this.source.unshift(this.wrap(e,t))},push:function(e,t){this.source.push(this.wrap(e,t))},merge:function(){var e=this.empty();return this.each(function(t){e.add(["  ",t,"\n"])}),e},each:function(e){for(var t=0,n=this.source.length;n>t;t++)e(this.source[t])},empty:function(){var e=this.currentLocation||{start:{}};return new a(e.start.line,e.start.column,this.srcFile)},wrap:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return e instanceof a?e:(e=r(e,this,t),new a(t.start.line,t.start.column,this.srcFile,e))},functionCall:function(e,t,n){return n=this.generateList(n),this.wrap([e,t?"."+t+"(":"(",n,")"])},quotedString:function(e){return'"'+(e+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(e){var t=[];for(var n in e)if(e.hasOwnProperty(n)){var i=r(e[n],this);"undefined"!==i&&t.push([this.quotedString(n),":",i])}var o=this.generateList(t);return o.prepend("{"),o.add("}"),o},generateList:function(e){for(var t=this.empty(),n=0,i=e.length;i>n;n++)n&&t.add(","),t.add(r(e[n],this));return t},generateArray:function(e){var t=this.generateList(e);return t.prepend("["),t.add("]"),t}},t["default"]=i,e.exports=t["default"]}])})},function(e,t,n){function r(){var e=a("#subscriber-box"),t=a("#subscriber-btn"),n=/^[.\-_a-zA-Z0-9]+@[\-_a-zA-Z0-9]+\.[a-zA-Z0-9]/,r={mail:"&#xe601;",tick:"&#xe605;"};e.focus(function(){a(this).val("").css("color",""),t.removeClass("done").html(r.mail)}),t.click(function(){var i=a.trim(e.val());if(""!==i&&n.test(i))try{a.ajax({url:"http://new.yohobuy.com/common/emailsubscriber",dataType:"jsonp",data:{email:i,tmp:Math.random(),uid:window.getUid()},success:function(n){1===n.data.result?(e.val("已订阅到:"+i),t.addClass("done").html(r.tick)):e.css("color","red")}})}catch(o){console.log(o.message)}else e.css("color","red")})}function i(){var e=a(".vote"),t=a("#feed-back-page"),n=e.children("li").length;t.on("click","span",function(){var t=a(this);t.hasClass("cur")||(t.siblings(".cur").removeClass("cur"),t.addClass("cur"),e.children().not(".hide").addClass("hide").end().eq(t.index()).removeClass("hide"))}),e.on("click",".feed-back-btn",function(){var r=a(this),i=r.closest("li"),o=i.index(),s=[],l=i.find(".feedback-answer").val(),c=i.find(".feedback-id").val(),u=i.find(".question-id").val();i.find(":checked").each(function(){s.push(a(this).val())}),a.ajax({url:"http://new.yohobuy.com/common/suggestfeedback",dataType:"jsonp",data:{feedback_id:c||0,question_id:u||0,answer:l||"",solution:s.join(",")},success:function(r){var a=o+1;if(1===~~r.data.result){if(o===n-1)return void alert("感谢您的参与!");i.addClass("hide"),e.children(":eq("+(o+1)+")").removeClass("hide"),t.children(".cur").removeClass("cur"),t.children(":eq("+a+")").addClass("cur")}}})})}function o(){a(window).height()>a(document).height()&&l.addClass("hide")}var a=n(2),s=n(6),l=a(".return-top");s(a("img.lazy")),l.click(function(){a("html,body").animate({scrollTop:0},500)}),a(window).scroll(function(){0===a(window).scrollTop()?l.addClass("hide"):l.removeClass("hide")}),l.hasClass("hide")&&a("img").load(o),r(),i(),window.rePosReturnTop=o},function(e,t,n){var r=n(2);n(7),e.exports=function(e,t){var n,i={effect:"fadeIn",effect_speed:10,placeholder:"data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==",skip_invisible:!1},o=arguments.length;!function(){switch(o){case 0:n=r("img.lazy");break;case 1:e instanceof r?n=e:(n=r("img.lazy"),r.extend(i,e));break;case 2:n=e,i=r.extend(i,t)}}(),n.lazyload(i)}},function(e,t,n){var r=n(2);!function(e,t,n,r){var i=e(t);e.fn.lazyload=function(o){function a(){var t=0;l.each(function(){var n=e(this);if(!c.skip_invisible||n.is(":visible"))if(e.abovethetop(this,c)||e.leftofbegin(this,c));else if(e.belowthefold(this,c)||e.rightoffold(this,c)){if(++t>c.failure_limit)return!1}else n.trigger("appear"),t=0})}var s,l=this,c={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:t,data_attribute:"original",skip_invisible:!0,appear:null,load:null,yasPath:"/web/",yasImgDomain:"http://analytics.yhurl.com/yas.gif",placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC",try_again_css:null};return o&&(r!==o.failurelimit&&(o.failure_limit=o.failurelimit,delete o.failurelimit),r!==o.effectspeed&&(o.effect_speed=o.effectspeed,delete o.effectspeed),e.extend(c,o)),s=c.container===r||c.container===t?i:e(c.container),0===c.event.indexOf("scroll")&&s.bind(c.event,function(){return a()}),this.each(function(){var t=this,n=e(t);t.loaded=!1,n.attr("src")!==r&&n.attr("src")!==!1&&""!==n.attr("src")||n.is("img")&&n.attr("src",c.placeholder),n.one("appear",function(){if(n.timerid&&clearTimeout(n.timerid),!this.loaded){if(c.appear){var r=l.length;c.appear.call(t,r,c)}e("<img />").bind("error abort",function(){n.attr("src",c.placeholder),o({info:"error"})}).bind("load",function(){if(!n.loadtimeout){clearTimeout(n.timerid),n.attr("pfmrpt");var r=n.attr("data-"+c.data_attribute);n.hide(),n.is("img")?n.attr("src",r):n.css("background-image","url('"+r+"')"),n[c.effect](c.effect_speed),t.loaded=!0;var i=e.grep(l,function(e){return!e.loaded});if(l=e(i),c.load){var o=l.length;c.load.call(t,o,c)}}}).attr("src",n.attr("data-"+c.data_attribute)),n.src=n.attr("data-"+c.data_attribute),n.attr("pfmrpt")&&_yas&&_yas.add;var i=function(e){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&e.info,n.attr("src",""),setTimeout(function(){n.attr("src",n.src)},50)},o=function(t){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&t.info;var r=n.width(),o=n.height();if(c.try_again_css)var a=e("<div class="+c.try_again_css+" style='width:"+r+"px;height:"+o+"px;'></div>");else var a=e("<div style='background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC) ;text-align: center;position:relative;width:"+r+"px;height:"+o+"px;background-size:100%;'>加载失败</div>");a.addClass(n.attr("class")),n.replaceWith(a),n.timerid=setTimeout(i,5e3)}}}),0!==c.event.indexOf("scroll")&&n.bind(c.event,function(){t.loaded||n.trigger("appear")})}),i.bind("resize",function(){a()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&i.bind("pageshow",function(t){t.originalEvent&&t.originalEvent.persisted&&l.each(function(){e(this).trigger("appear")})}),e(n).ready(function(){a()}),this},e.belowthefold=function(n,o){var a;return a=o.container===r||o.container===t?(t.innerHeight?t.innerHeight:i.height())+i.scrollTop():e(o.container).offset().top+e(o.container).height(),a<=e(n).offset().top-o.threshold},e.rightoffold=function(n,o){var a;return a=o.container===r||o.container===t?i.width()+i.scrollLeft():e(o.container).offset().left+e(o.container).width(),a<=e(n).offset().left-o.threshold},e.abovethetop=function(n,o){var a;return a=o.container===r||o.container===t?i.scrollTop():e(o.container).offset().top,a>=e(n).offset().top+o.threshold+e(n).height()},e.leftofbegin=function(n,o){var a;return a=o.container===r||o.container===t?i.scrollLeft():e(o.container).offset().left,a>=e(n).offset().left+o.threshold+e(n).width()},e.inviewport=function(t,n){return!(e.rightoffold(t,n)||e.leftofbegin(t,n)||e.belowthefold(t,n)||e.abovethetop(t,n))}}(r,window,document)}]);
\ No newline at end of file
diff --git a/public/dist/yohobuy-node/0.0.1/channel.channel.js b/public/dist/yohobuy-node/0.0.1/channel.channel.js
deleted file mode 100644
index edb44c6..0000000
--- a/public/dist/yohobuy-node/0.0.1/channel.channel.js
+++ /dev/null
@@ -1,55 +0,0 @@
-!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){var i=n(2),r=n(6),o=n(8),a=i(".home-page").data("page"),s=i(".logo-brand").data("url");n(1),n(10),n(11),n(12),i(document).on("mouseenter",".imgopacity a img",function(){i(this).css("opacity",.8)}),i(document).on("mouseout",".imgopacity a img",function(){i(this).css("opacity",1)}),i.inArray(a,["boys","girls","kids","lifestyle"])>-1&&(n(15)({type:a,url:"/common/getNewArrival",count:"boys"===a||"lifestyle"===a?5:4,rows:[5,3]}),window.setCookie("_Channel",a,{domain:".yohobuy.com",path:"/",expires:365})),r(i("img.lazy")),"boys"===a?i(".slide-container").slider({pagination:".thumb-pagination"}):(i(".center-col").slider(),i(".slide-container").slider()),"boys"===a?(i(".logo-brand").logoBrand({url:s}),o.init(".img-brand")):(i(".logo-brand").logoBrand({showNum:10,url:s}),o.init(".img-slider-wrapper"))},function(e,t,n){function i(e){var t=new RegExp(e+"=([^;$]*)","i"),n="$1";return t.test(decodeURIComponent(document.cookie))?RegExp[n]:""}function r(e,t,n){var i,r,o,a,s="";"undefined"!=typeof t&&(n=n||{},null===t&&(t="",n.expires=-1),n.expires&&("number"==typeof n.expires||n.expires.toUTCString)&&("number"==typeof n.expires?(a=new Date,a.setTime(a.getTime()+24*n.expires*60*60*1e3)):a=n.expires,s="; expires="+a.toUTCString()),i=n.path?"; path="+n.path:"",r=n.domain?"; domain="+n.domain:"",o=n.secure?"; secure":"",document.cookie=[e,"=",encodeURIComponent(t),s,i,r,o].join(""))}function o(){var e,t=i("_UID");return"undefined"==typeof t?0:(e=t.split("::"),"undefined"==typeof e||e.length<4?0:e)}function a(){var e=o();return 0===e?0:e[1]}function s(){var e=i("_g");return"undefined"==typeof e?"":JSON.parse(e).k}function l(){var e,t,n={},i=window.location.search,r=i?decodeURIComponent(i).slice(1).split("&"):[];for(t=0;t<r.length;t++)e=r[t].split("="),n[e[0]]=e[1];return n}var c=n(2),u=c("body");!function(e,t,n,i,r){var o=t.createElement(n),a=t.getElementsByTagName(n)[0];e.YohoAcquisitionObject=r,e[r]=function(){e[r].p=arguments},o.async=1,o.src=i,a.parentNode.insertBefore(o,a)}(window,document,"script","http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js","_yas"),function(){var e=a();e=0===e?"":e,window._ozuid=e,window._yas&&window._yas(1*new Date,"1.0.14","yohobuy_web",e,"","")}(),c(window).on("resize",function(){var e=c(this).width();1360>e?c(".return-top").addClass("min"):c(".return-top").removeClass("min"),1180>e?u.addClass("min-screen"):u.removeClass("min-screen")}).trigger("resize"),function(){c(window).load(function(){var e,t=document.getElementById("user-thumb");t&&(e=new Image,e.src=t.src,e.onerror=function(){c(t).parent().append('<div class="default-user-thumb"></div>').end().remove()})})}(),window.cookie=i,window.setCookie=r,window.getUser=o,window.getUid=a,window.getShoppingKey=s,window.queryString=l,n(3),n(5)},function(e,t,n){var i,r;/*!
-	 * jQuery JavaScript Library v1.12.4
-	 * http://jquery.com/
-	 *
-	 * Includes Sizzle.js
-	 * http://sizzlejs.com/
-	 *
-	 * Copyright jQuery Foundation and other contributors
-	 * Released under the MIT license
-	 * http://jquery.org/license
-	 *
-	 * Date: 2016-05-20T17:17Z
-	 */
-!function(t,n){"object"==typeof e&&"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,o){function a(e){var t=!!e&&"length"in e&&e.length,n=ve.type(e);return"function"===n||ve.isWindow(e)?!1:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function s(e,t,n){if(ve.isFunction(t))return ve.grep(e,function(e,i){return!!t.call(e,i,e)!==n});if(t.nodeType)return ve.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ae.test(t))return ve.filter(t,e,n);t=ve.filter(t,e)}return ve.grep(e,function(e){return ve.inArray(e,t)>-1!==n})}function l(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function c(e){var t={};return ve.each(e.match($e)||[],function(e,n){t[n]=!0}),t}function u(){se.addEventListener?(se.removeEventListener("DOMContentLoaded",p),n.removeEventListener("load",p)):(se.detachEvent("onreadystatechange",p),n.detachEvent("onload",p))}function p(){(se.addEventListener||"load"===n.event.type||"complete"===se.readyState)&&(u(),ve.ready())}function h(e,t,n){if(void 0===n&&1===e.nodeType){var i="data-"+t.replace(Be,"-$1").toLowerCase();if(n=e.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:He.test(n)?ve.parseJSON(n):n}catch(r){}ve.data(e,t,n)}else n=void 0}return n}function d(e){var t;for(t in e)if(("data"!==t||!ve.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function f(e,t,n,i){if(Oe(e)){var r,o,a=ve.expando,s=e.nodeType,l=s?ve.cache:e,c=s?e[a]:e[a]&&a;if(c&&l[c]&&(i||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=s?e[a]=ae.pop()||ve.guid++:a),l[c]||(l[c]=s?{}:{toJSON:ve.noop}),"object"!=typeof t&&"function"!=typeof t||(i?l[c]=ve.extend(l[c],t):l[c].data=ve.extend(l[c].data,t)),o=l[c],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[ve.camelCase(t)]=n),"string"==typeof t?(r=o[t],null==r&&(r=o[ve.camelCase(t)])):r=o,r}}function m(e,t,n){if(Oe(e)){var i,r,o=e.nodeType,a=o?ve.cache:e,s=o?e[ve.expando]:ve.expando;if(a[s]){if(t&&(i=n?a[s]:a[s].data)){ve.isArray(t)?t=t.concat(ve.map(t,ve.camelCase)):t in i?t=[t]:(t=ve.camelCase(t),t=t in i?[t]:t.split(" ")),r=t.length;for(;r--;)delete i[t[r]];if(n?!d(i):!ve.isEmptyObject(i))return}(n||(delete a[s].data,d(a[s])))&&(o?ve.cleanData([e],!0):me.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function g(e,t,n,i){var r,o=1,a=20,s=i?function(){return i.cur()}:function(){return ve.css(e,t,"")},l=s(),c=n&&n[3]||(ve.cssNumber[t]?"":"px"),u=(ve.cssNumber[t]||"px"!==c&&+l)&&Re.exec(ve.css(e,t));if(u&&u[3]!==c){c=c||u[3],n=n||[],u=+l||1;do o=o||".5",u/=o,ve.style(e,t,u+c);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(u=+u||+l||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],i&&(i.unit=c,i.start=u,i.end=r)),r}function v(e){var t=Ke.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function y(e,t){var n,i,r=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(i=n[r]);r++)!t||ve.nodeName(i,t)?o.push(i):ve.merge(o,y(i,t));return void 0===t||t&&ve.nodeName(e,t)?ve.merge([e],o):o}function b(e,t){for(var n,i=0;null!=(n=e[i]);i++)ve._data(n,"globalEval",!t||ve._data(t[i],"globalEval"))}function x(e){We.test(e.type)&&(e.defaultChecked=e.checked)}function w(e,t,n,i,r){for(var o,a,s,l,c,u,p,h=e.length,d=v(t),f=[],m=0;h>m;m++)if(a=e[m],a||0===a)if("object"===ve.type(a))ve.merge(f,a.nodeType?[a]:a);else if(Ye.test(a)){for(l=l||d.appendChild(t.createElement("div")),c=(Ue.exec(a)||["",""])[1].toLowerCase(),p=Je[c]||Je._default,l.innerHTML=p[1]+ve.htmlPrefilter(a)+p[2],o=p[0];o--;)l=l.lastChild;if(!me.leadingWhitespace&&Xe.test(a)&&f.push(t.createTextNode(Xe.exec(a)[0])),!me.tbody)for(a="table"!==c||Qe.test(a)?"<table>"!==p[1]||Qe.test(a)?0:l:l.firstChild,o=a&&a.childNodes.length;o--;)ve.nodeName(u=a.childNodes[o],"tbody")&&!u.childNodes.length&&a.removeChild(u);for(ve.merge(f,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=d.lastChild}else f.push(t.createTextNode(a));for(l&&d.removeChild(l),me.appendChecked||ve.grep(y(f,"input"),x),m=0;a=f[m++];)if(i&&ve.inArray(a,i)>-1)r&&r.push(a);else if(s=ve.contains(a.ownerDocument,a),l=y(d.appendChild(a),"script"),s&&b(l),n)for(o=0;a=l[o++];)Ve.test(a.type||"")&&n.push(a);return l=null,d}function k(){return!0}function S(){return!1}function _(){try{return se.activeElement}catch(e){}}function C(e,t,n,i,r,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(i=i||n,n=void 0);for(s in t)C(e,s,n,i,t[s],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),r===!1)r=S;else if(!r)return e;return 1===o&&(a=r,r=function(e){return ve().off(e),a.apply(this,arguments)},r.guid=a.guid||(a.guid=ve.guid++)),e.each(function(){ve.event.add(this,t,r,i,n)})}function E(e,t){return ve.nodeName(e,"table")&&ve.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function A(e){return e.type=(null!==ve.find.attr(e,"type"))+"/"+e.type,e}function T(e){var t=lt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&ve.hasData(e)){var n,i,r,o=ve._data(e),a=ve._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(i=0,r=s[n].length;r>i;i++)ve.event.add(t,n,s[n][i])}a.data&&(a.data=ve.extend({},a.data))}}function P(e,t){var n,i,r;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!me.noCloneEvent&&t[ve.expando]){r=ve._data(t);for(i in r.events)ve.removeEvent(t,i,r.handle);t.removeAttribute(ve.expando)}"script"===n&&t.text!==e.text?(A(t).text=e.text,T(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),me.html5Clone&&e.innerHTML&&!ve.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&We.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}}function L(e,t,n,i){t=ce.apply([],t);var r,o,a,s,l,c,u=0,p=e.length,h=p-1,d=t[0],f=ve.isFunction(d);if(f||p>1&&"string"==typeof d&&!me.checkClone&&st.test(d))return e.each(function(r){var o=e.eq(r);f&&(t[0]=d.call(this,r,o.html())),L(o,t,n,i)});if(p&&(c=w(t,e[0].ownerDocument,!1,e,i),r=c.firstChild,1===c.childNodes.length&&(c=r),r||i)){for(s=ve.map(y(c,"script"),A),a=s.length;p>u;u++)o=c,u!==h&&(o=ve.clone(o,!0,!0),a&&ve.merge(s,y(o,"script"))),n.call(e[u],o,u);if(a)for(l=s[s.length-1].ownerDocument,ve.map(s,T),u=0;a>u;u++)o=s[u],Ve.test(o.type||"")&&!ve._data(o,"globalEval")&&ve.contains(l,o)&&(o.src?ve._evalUrl&&ve._evalUrl(o.src):ve.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ct,"")));c=r=null}return e}function D(e,t,n){for(var i,r=t?ve.filter(t,e):e,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||ve.cleanData(y(i)),i.parentNode&&(n&&ve.contains(i.ownerDocument,i)&&b(y(i,"script")),i.parentNode.removeChild(i));return e}function $(e,t){var n=ve(t.createElement(e)).appendTo(t.body),i=ve.css(n[0],"display");return n.detach(),i}function j(e){var t=se,n=dt[e];return n||(n=$(e,t),"none"!==n&&n||(ht=(ht||ve("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(ht[0].contentWindow||ht[0].contentDocument).document,t.write(),t.close(),n=$(e,t),ht.detach()),dt[e]=n),n}function I(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function O(e){if(e in Tt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=At.length;n--;)if(e=At[n]+t,e in Tt)return e}function H(e,t){for(var n,i,r,o=[],a=0,s=e.length;s>a;a++)i=e[a],i.style&&(o[a]=ve._data(i,"olddisplay"),n=i.style.display,t?(o[a]||"none"!==n||(i.style.display=""),""===i.style.display&&qe(i)&&(o[a]=ve._data(i,"olddisplay",j(i.nodeName)))):(r=qe(i),(n&&"none"!==n||!r)&&ve._data(i,"olddisplay",r?n:ve.css(i,"display"))));for(a=0;s>a;a++)i=e[a],i.style&&(t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?o[a]||"":"none"));return e}function B(e,t,n){var i=_t.exec(t);return i?Math.max(0,i[1]-(n||0))+(i[2]||"px"):t}function M(e,t,n,i,r){for(var o=n===(i?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=ve.css(e,n+Fe[o],!0,r)),i?("content"===n&&(a-=ve.css(e,"padding"+Fe[o],!0,r)),"margin"!==n&&(a-=ve.css(e,"border"+Fe[o]+"Width",!0,r))):(a+=ve.css(e,"padding"+Fe[o],!0,r),"padding"!==n&&(a+=ve.css(e,"border"+Fe[o]+"Width",!0,r)));return a}function R(e,t,n){var i=!0,r="width"===t?e.offsetWidth:e.offsetHeight,o=yt(e),a=me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,o);if(0>=r||null==r){if(r=bt(e,t,o),(0>r||null==r)&&(r=e.style[t]),mt.test(r))return r;i=a&&(me.boxSizingReliable()||r===e.style[t]),r=parseFloat(r)||0}return r+M(e,t,n||(a?"border":"content"),i,o)+"px"}function F(e,t,n,i,r){return new F.prototype.init(e,t,n,i,r)}function q(){return n.setTimeout(function(){Nt=void 0}),Nt=ve.now()}function z(e,t){var n,i={height:e},r=0;for(t=t?1:0;4>r;r+=2-t)n=Fe[r],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function W(e,t,n){for(var i,r=(X.tweeners[t]||[]).concat(X.tweeners["*"]),o=0,a=r.length;a>o;o++)if(i=r[o].call(n,t,e))return i}function U(e,t,n){var i,r,o,a,s,l,c,u,p=this,h={},d=e.style,f=e.nodeType&&qe(e),m=ve._data(e,"fxshow");n.queue||(s=ve._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,p.always(function(){p.always(function(){s.unqueued--,ve.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],c=ve.css(e,"display"),u="none"===c?ve._data(e,"olddisplay")||j(e.nodeName):c,"inline"===u&&"none"===ve.css(e,"float")&&(me.inlineBlockNeedsLayout&&"inline"!==j(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",me.shrinkWrapBlocks()||p.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(r=t[i],Lt.exec(r)){if(delete t[i],o=o||"toggle"===r,r===(f?"hide":"show")){if("show"!==r||!m||void 0===m[i])continue;f=!0}h[i]=m&&m[i]||ve.style(e,i)}else c=void 0;if(ve.isEmptyObject(h))"inline"===("none"===c?j(e.nodeName):c)&&(d.display=c);else{m?"hidden"in m&&(f=m.hidden):m=ve._data(e,"fxshow",{}),o&&(m.hidden=!f),f?ve(e).show():p.done(function(){ve(e).hide()}),p.done(function(){var t;ve._removeData(e,"fxshow");for(t in h)ve.style(e,t,h[t])});for(i in h)a=W(f?m[i]:0,i,p),i in m||(m[i]=a.start,f&&(a.end=a.start,a.start="width"===i||"height"===i?1:0))}}function V(e,t){var n,i,r,o,a;for(n in e)if(i=ve.camelCase(n),r=t[i],o=e[n],ve.isArray(o)&&(r=o[1],o=e[n]=o[0]),n!==i&&(e[i]=o,delete e[n]),a=ve.cssHooks[i],a&&"expand"in a){o=a.expand(o),delete e[i];for(n in o)n in e||(e[n]=o[n],t[n]=r)}else t[i]=r}function X(e,t,n){var i,r,o=0,a=X.prefilters.length,s=ve.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var t=Nt||q(),n=Math.max(0,c.startTime+c.duration-t),i=n/c.duration||0,o=1-i,a=0,l=c.tweens.length;l>a;a++)c.tweens[a].run(o);return s.notifyWith(e,[c,o,n]),1>o&&l?n:(s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:ve.extend({},t),opts:ve.extend(!0,{specialEasing:{},easing:ve.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||q(),duration:n.duration,tweens:[],createTween:function(t,n){var i=ve.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(i),i},stop:function(t){var n=0,i=t?c.tweens.length:0;if(r)return this;for(r=!0;i>n;n++)c.tweens[n].run(1);return t?(s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c,t])):s.rejectWith(e,[c,t]),this}}),u=c.props;for(V(u,c.opts.specialEasing);a>o;o++)if(i=X.prefilters[o].call(c,e,u,c.opts))return ve.isFunction(i.stop)&&(ve._queueHooks(c.elem,c.opts.queue).stop=ve.proxy(i.stop,i)),i;return ve.map(u,W,c),ve.isFunction(c.opts.start)&&c.opts.start.call(e,c),ve.fx.timer(ve.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function K(e){return ve.attr(e,"class")||""}function J(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,r=0,o=t.toLowerCase().match($e)||[];if(ve.isFunction(n))for(;i=o[r++];)"+"===i.charAt(0)?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function Y(e,t,n,i){function r(s){var l;return o[s]=!0,ve.each(e[s]||[],function(e,s){var c=s(t,n,i);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(t.dataTypes.unshift(c),r(c),!1)}),l}var o={},a=e===nn;return r(t.dataTypes[0])||!o["*"]&&r("*")}function Q(e,t){var n,i,r=ve.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((r[i]?e:n||(n={}))[i]=t[i]);return n&&ve.extend(!0,e,n),e}function G(e,t,n){for(var i,r,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(a in s)if(s[a]&&s[a].test(r)){l.unshift(a);break}if(l[0]in n)o=l[0];else{for(a in n){if(!l[0]||e.converters[a+" "+l[0]]){o=a;break}i||(i=a)}o=o||i}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function Z(e,t,n,i){var r,o,a,s,l,c={},u=e.dataTypes.slice();if(u[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(o=u.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=c[l+" "+o]||c["* "+o],!a)for(r in c)if(s=r.split(" "),s[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[r]:c[r]!==!0&&(o=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}function ee(e){return e.style&&e.style.display||ve.css(e,"display")}function te(e){if(!ve.contains(e.ownerDocument||se,e))return!0;for(;e&&1===e.nodeType;){if("none"===ee(e)||"hidden"===e.type)return!0;e=e.parentNode}return!1}function ne(e,t,n,i){var r;if(ve.isArray(t))ve.each(t,function(t,r){n||ln.test(e)?i(e,r):ne(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,i)});else if(n||"object"!==ve.type(t))i(e,t);else for(r in t)ne(e+"["+r+"]",t[r],n,i)}function ie(){try{return new n.XMLHttpRequest}catch(e){}}function re(){try{return new n.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}function oe(e){return ve.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var ae=[],se=n.document,le=ae.slice,ce=ae.concat,ue=ae.push,pe=ae.indexOf,he={},de=he.toString,fe=he.hasOwnProperty,me={},ge="1.12.4",ve=function(e,t){return new ve.fn.init(e,t)},ye=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,be=/^-ms-/,xe=/-([\da-z])/gi,we=function(e,t){return t.toUpperCase()};ve.fn=ve.prototype={jquery:ge,constructor:ve,selector:"",length:0,toArray:function(){return le.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:le.call(this)},pushStack:function(e){var t=ve.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return ve.each(this,e)},map:function(e){return this.pushStack(ve.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(le.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:ae.sort,splice:ae.splice},ve.extend=ve.fn.extend=function(){var e,t,n,i,r,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||ve.isFunction(a)||(a={}),s===l&&(a=this,s--);l>s;s++)if(null!=(r=arguments[s]))for(i in r)e=a[i],n=r[i],a!==n&&(c&&n&&(ve.isPlainObject(n)||(t=ve.isArray(n)))?(t?(t=!1,o=e&&ve.isArray(e)?e:[]):o=e&&ve.isPlainObject(e)?e:{},a[i]=ve.extend(c,o,n)):void 0!==n&&(a[i]=n));return a},ve.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===ve.type(e)},isArray:Array.isArray||function(e){return"array"===ve.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!ve.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==ve.type(e)||e.nodeType||ve.isWindow(e))return!1;try{if(e.constructor&&!fe.call(e,"constructor")&&!fe.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!me.ownFirst)for(t in e)return fe.call(e,t);for(t in e);return void 0===t||fe.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?he[de.call(e)]||"object":typeof e},globalEval:function(e){e&&ve.trim(e)&&(n.execScript||function(e){n.eval.call(n,e)})(e)},camelCase:function(e){return e.replace(be,"ms-").replace(xe,we)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,i=0;if(a(e))for(n=e.length;n>i&&t.call(e[i],i,e[i])!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ye,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(a(Object(e))?ve.merge(n,"string"==typeof e?[e]:e):ue.call(n,e)),n},inArray:function(e,t,n){var i;if(t){if(pe)return pe.call(t,e,n);for(i=t.length,n=n?0>n?Math.max(0,i+n):n:0;i>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,i=0,r=e.length;n>i;)e[r++]=t[i++];if(n!==n)for(;void 0!==t[i];)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){for(var i,r=[],o=0,a=e.length,s=!n;a>o;o++)i=!t(e[o],o),i!==s&&r.push(e[o]);return r},map:function(e,t,n){var i,r,o=0,s=[];if(a(e))for(i=e.length;i>o;o++)r=t(e[o],o,n),null!=r&&s.push(r);else for(o in e)r=t(e[o],o,n),null!=r&&s.push(r);return ce.apply([],s)},guid:1,proxy:function(e,t){var n,i,r;return"string"==typeof t&&(r=e[t],t=e,e=r),ve.isFunction(e)?(n=le.call(arguments,2),i=function(){return e.apply(t||this,n.concat(le.call(arguments)))},i.guid=e.guid=e.guid||ve.guid++,i):void 0},now:function(){return+new Date},support:me}),"function"==typeof Symbol&&(ve.fn[Symbol.iterator]=ae[Symbol.iterator]),ve.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){he["[object "+t+"]"]=t.toLowerCase()});var ke=/*!
-	 * Sizzle CSS Selector Engine v2.2.1
-	 * http://sizzlejs.com/
-	 *
-	 * Copyright jQuery Foundation and other contributors
-	 * Released under the MIT license
-	 * http://jquery.org/license
-	 *
-	 * Date: 2015-10-17
-	 */
-function(e){function t(e,t,n,i){var r,o,a,s,l,c,p,d,f=t&&t.ownerDocument,m=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==m&&9!==m&&11!==m)return n;if(!i&&((t?t.ownerDocument||t:R)!==D&&L(t),t=t||D,j)){if(11!==m&&(c=ve.exec(e)))if(r=c[1]){if(9===m){if(!(a=t.getElementById(r)))return n;if(a.id===r)return n.push(a),n}else if(f&&(a=f.getElementById(r))&&B(t,a)&&a.id===r)return n.push(a),n}else{if(c[2])return G.apply(n,t.getElementsByTagName(e)),n;if((r=c[3])&&w.getElementsByClassName&&t.getElementsByClassName)return G.apply(n,t.getElementsByClassName(r)),n}if(w.qsa&&!U[e+" "]&&(!I||!I.test(e))){if(1!==m)f=t,d=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(be,"\\$&"):t.setAttribute("id",s=M),p=C(e),o=p.length,l=he.test(s)?"#"+s:"[id='"+s+"']";o--;)p[o]=l+" "+h(p[o]);d=p.join(","),f=ye.test(e)&&u(t.parentNode)||t}if(d)try{return G.apply(n,f.querySelectorAll(d)),n}catch(g){}finally{s===M&&t.removeAttribute("id")}}}return A(e.replace(se,"$1"),t,n,i)}function n(){function e(n,i){return t.push(n+" ")>k.cacheLength&&delete e[t.shift()],e[n+" "]=i}var t=[];return e}function i(e){return e[M]=!0,e}function r(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),i=n.length;i--;)k.attrHandle[n[i]]=t}function a(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,i){for(var r,o=e([],n.length,t),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function u(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,i="";n>t;t++)i+=e[t].value;return i}function d(e,t,n){var i=t.dir,r=n&&"parentNode"===i,o=q++;return t.first?function(t,n,o){for(;t=t[i];)if(1===t.nodeType||r)return e(t,n,o)}:function(t,n,a){var s,l,c,u=[F,o];if(a){for(;t=t[i];)if((1===t.nodeType||r)&&e(t,n,a))return!0}else for(;t=t[i];)if(1===t.nodeType||r){if(c=t[M]||(t[M]={}),l=c[t.uniqueID]||(c[t.uniqueID]={}),(s=l[i])&&s[0]===F&&s[1]===o)return u[2]=s[2];if(l[i]=u,u[2]=e(t,n,a))return!0}}}function f(e){return e.length>1?function(t,n,i){for(var r=e.length;r--;)if(!e[r](t,n,i))return!1;return!0}:e[0]}function m(e,n,i){for(var r=0,o=n.length;o>r;r++)t(e,n[r],i);return i}function g(e,t,n,i,r){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,i,r)||(a.push(o),c&&t.push(s)));return a}function v(e,t,n,r,o,a){return r&&!r[M]&&(r=v(r)),o&&!o[M]&&(o=v(o,a)),i(function(i,a,s,l){var c,u,p,h=[],d=[],f=a.length,v=i||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!i&&t?v:g(v,h,e,s,l),b=n?o||(i?e:f||r)?[]:a:y;if(n&&n(y,b,s,l),r)for(c=g(b,d),r(c,[],s,l),u=c.length;u--;)(p=c[u])&&(b[d[u]]=!(y[d[u]]=p));if(i){if(o||e){if(o){for(c=[],u=b.length;u--;)(p=b[u])&&c.push(y[u]=p);o(null,b=[],c,l)}for(u=b.length;u--;)(p=b[u])&&(c=o?ee(i,p):h[u])>-1&&(i[c]=!(a[c]=p))}}else b=g(b===a?b.splice(f,b.length):b),o?o(null,a,b,l):G.apply(a,b)})}function y(e){for(var t,n,i,r=e.length,o=k.relative[e[0].type],a=o||k.relative[" "],s=o?1:0,l=d(function(e){return e===t},a,!0),c=d(function(e){return ee(t,e)>-1},a,!0),u=[function(e,n,i){var r=!o&&(i||n!==T)||((t=n).nodeType?l(e,n,i):c(e,n,i));return t=null,r}];r>s;s++)if(n=k.relative[e[s].type])u=[d(f(u),n)];else{if(n=k.filter[e[s].type].apply(null,e[s].matches),n[M]){for(i=++s;r>i&&!k.relative[e[i].type];i++);return v(s>1&&f(u),s>1&&h(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,i>s&&y(e.slice(s,i)),r>i&&y(e=e.slice(i)),r>i&&h(e))}u.push(n)}return f(u)}function b(e,n){var r=n.length>0,o=e.length>0,a=function(i,a,s,l,c){var u,p,h,d=0,f="0",m=i&&[],v=[],y=T,b=i||o&&k.find.TAG("*",c),x=F+=null==y?1:Math.random()||.1,w=b.length;for(c&&(T=a===D||a||c);f!==w&&null!=(u=b[f]);f++){if(o&&u){for(p=0,a||u.ownerDocument===D||(L(u),s=!j);h=e[p++];)if(h(u,a||D,s)){l.push(u);break}c&&(F=x)}r&&((u=!h&&u)&&d--,i&&m.push(u))}if(d+=f,r&&f!==d){for(p=0;h=n[p++];)h(m,v,a,s);if(i){if(d>0)for(;f--;)m[f]||v[f]||(v[f]=Y.call(l));v=g(v)}G.apply(l,v),c&&!i&&v.length>0&&d+n.length>1&&t.uniqueSort(l)}return c&&(F=x,T=y),m};return r?i(a):a}var x,w,k,S,_,C,E,A,T,N,P,L,D,$,j,I,O,H,B,M="sizzle"+1*new Date,R=e.document,F=0,q=0,z=n(),W=n(),U=n(),V=function(e,t){return e===t&&(P=!0),0},X=1<<31,K={}.hasOwnProperty,J=[],Y=J.pop,Q=J.push,G=J.push,Z=J.slice,ee=function(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",re="\\["+ne+"*("+ie+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+ne+"*\\]",oe=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+re+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),le=new RegExp("^"+ne+"*,"+ne+"*"),ce=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ue=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),pe=new RegExp(oe),he=new RegExp("^"+ie+"$"),de={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+re),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},fe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var i="0x"+t-65536;return i!==i||n?t:0>i?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},ke=function(){L()};try{G.apply(J=Z.call(R.childNodes),R.childNodes),J[R.childNodes.length].nodeType}catch(Se){G={apply:J.length?function(e,t){Q.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}w=t.support={},_=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},L=t.setDocument=function(e){var t,n,i=e?e.ownerDocument||e:R;return i!==D&&9===i.nodeType&&i.documentElement?(D=i,$=D.documentElement,j=!_(D),(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",ke,!1):n.attachEvent&&n.attachEvent("onunload",ke)),w.attributes=r(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=r(function(e){return e.appendChild(D.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=ge.test(D.getElementsByClassName),w.getById=r(function(e){return $.appendChild(e).id=M,!D.getElementsByName||!D.getElementsByName(M).length}),w.getById?(k.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&j){var n=t.getElementById(e);return n?[n]:[]}},k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){return e.getAttribute("id")===t}}):(delete k.find.ID,k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),k.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},k.find.CLASS=w.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&j?t.getElementsByClassName(e):void 0},O=[],I=[],(w.qsa=ge.test(D.querySelectorAll))&&(r(function(e){$.appendChild(e).innerHTML="<a id='"+M+"'></a><select id='"+M+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&I.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||I.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+M+"-]").length||I.push("~="),e.querySelectorAll(":checked").length||I.push(":checked"),e.querySelectorAll("a#"+M+"+*").length||I.push(".#.+[+~]")}),r(function(e){var t=D.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&I.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||I.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),I.push(",.*:")})),(w.matchesSelector=ge.test(H=$.matches||$.webkitMatchesSelector||$.mozMatchesSelector||$.oMatchesSelector||$.msMatchesSelector))&&r(function(e){w.disconnectedMatch=H.call(e,"div"),H.call(e,"[s!='']:x"),O.push("!=",oe)}),I=I.length&&new RegExp(I.join("|")),O=O.length&&new RegExp(O.join("|")),t=ge.test($.compareDocumentPosition),B=t||ge.test($.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return P=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===D||e.ownerDocument===R&&B(R,e)?-1:t===D||t.ownerDocument===R&&B(R,t)?1:N?ee(N,e)-ee(N,t):0:4&n?-1:1)}:function(e,t){if(e===t)return P=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,s=[e],l=[t];if(!r||!o)return e===D?-1:t===D?1:r?-1:o?1:N?ee(N,e)-ee(N,t):0;if(r===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[i]===l[i];)i++;return i?a(s[i],l[i]):s[i]===R?-1:l[i]===R?1:0},D):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&L(e),n=n.replace(ue,"='$1']"),w.matchesSelector&&j&&!U[n+" "]&&(!O||!O.test(n))&&(!I||!I.test(n)))try{var i=H.call(e,n);if(i||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(r){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&L(e),B(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&L(e);var n=k.attrHandle[t.toLowerCase()],i=n&&K.call(k.attrHandle,t.toLowerCase())?n(e,t,!j):void 0;return void 0!==i?i:w.attributes||!j?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],i=0,r=0;if(P=!w.detectDuplicates,N=!w.sortStable&&e.slice(0),e.sort(V),P){for(;t=e[r++];)t===e[r]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return N=null,e},S=t.getText=function(e){var t,n="",i=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=S(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[i++];)n+=S(t);return n},k=t.selectors={cacheLength:50,createPseudo:i,match:de,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(xe,we),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,we),"~="===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]||t.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]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return de.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pe.test(n)&&(t=C(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(xe,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=z[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&z(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,i){return function(r){var o=t.attr(r,e);return null==o?"!="===n:n?(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(i)>-1:"|="===n?o===i||o.slice(0,i.length+1)===i+"-":!1):!0}},CHILD:function(e,t,n,i,r){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===i&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var c,u,p,h,d,f,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(o){for(;m;){for(h=t;h=h[m];)if(s?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&y){for(h=g,p=h[M]||(h[M]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===F&&c[1],b=d&&c[2],h=d&&g.childNodes[d];h=++d&&h&&h[m]||(b=d=0)||f.pop();)if(1===h.nodeType&&++b&&h===t){u[e]=[F,d,b];break}}else if(y&&(h=t,p=h[M]||(h[M]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===F&&c[1],b=d),b===!1)for(;(h=++d&&h&&h[m]||(b=d=0)||f.pop())&&((s?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(y&&(p=h[M]||(h[M]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),u[e]=[F,b]),h!==t)););return b-=r,b===i||b%i===0&&b/i>=0}}},PSEUDO:function(e,n){var r,o=k.pseudos[e]||k.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[M]?o(n):o.length>1?(r=[e,e,"",n],k.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,t){for(var i,r=o(e,n),a=r.length;a--;)i=ee(e,r[a]),e[i]=!(t[i]=r[a])}):function(e){return o(e,0,r)}):o}},pseudos:{not:i(function(e){var t=[],n=[],r=E(e.replace(se,"$1"));return r[M]?i(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;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:i(function(e){return function(n){return t(e,n).length>0}}),contains:i(function(e){return e=e.replace(xe,we),function(t){return(t.textContent||t.innerText||S(t)).indexOf(e)>-1}}),lang:i(function(e){return he.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,we).toLowerCase(),function(t){var n;do if(n=j?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===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===$},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!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,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!k.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return fe.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:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var i=0>n?n+t:n;--i>=0;)e.push(i);return e}),gt:c(function(e,t,n){for(var i=0>n?n+t:n;++i<t;)e.push(i);return e})}},k.pseudos.nth=k.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})k.pseudos[x]=s(x);for(x in{submit:!0,reset:!0})k.pseudos[x]=l(x);return p.prototype=k.filters=k.pseudos,k.setFilters=new p,C=t.tokenize=function(e,n){var i,r,o,a,s,l,c,u=W[e+" "];if(u)return n?0:u.slice(0);for(s=e,l=[],c=k.preFilter;s;){i&&!(r=le.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),i=!1,(r=ce.exec(s))&&(i=r.shift(),o.push({value:i,type:r[0].replace(se," ")}),s=s.slice(i.length));for(a in k.filter)!(r=de[a].exec(s))||c[a]&&!(r=c[a](r))||(i=r.shift(),o.push({value:i,type:a,matches:r}),s=s.slice(i.length));if(!i)break}return n?s.length:s?t.error(e):W(e,l).slice(0)},E=t.compile=function(e,t){var n,i=[],r=[],o=U[e+" "];if(!o){for(t||(t=C(e)),n=t.length;n--;)o=y(t[n]),o[M]?i.push(o):r.push(o);o=U(e,b(r,i)),o.selector=e}return o},A=t.select=function(e,t,n,i){var r,o,a,s,l,c="function"==typeof e&&e,p=!i&&C(e=c.selector||e);if(n=n||[],1===p.length){if(o=p[0]=p[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&j&&k.relative[o[1].type]){if(t=(k.find.ID(a.matches[0].replace(xe,we),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(r=de.needsContext.test(e)?0:o.length;r--&&(a=o[r],!k.relative[s=a.type]);)if((l=k.find[s])&&(i=l(a.matches[0].replace(xe,we),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(r,1),e=i.length&&h(o),!e)return G.apply(n,i),n;break}}return(c||E(e,p))(i,t,!j,n,!t||ye.test(e)&&u(t.parentNode)||t),n},w.sortStable=M.split("").sort(V).join("")===M,w.detectDuplicates=!!P,L(),w.sortDetached=r(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),r(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&r(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),r(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var i;return n?void 0:e[t]===!0?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}),t}(n);ve.find=ke,ve.expr=ke.selectors,ve.expr[":"]=ve.expr.pseudos,ve.uniqueSort=ve.unique=ke.uniqueSort,ve.text=ke.getText,ve.isXMLDoc=ke.isXML,ve.contains=ke.contains;var Se=function(e,t,n){for(var i=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&ve(e).is(n))break;i.push(e)}return i},_e=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Ce=ve.expr.match.needsContext,Ee=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ae=/^.[^:#\[\.,]*$/;ve.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?ve.find.matchesSelector(i,e)?[i]:[]:ve.find.matches(e,ve.grep(t,function(e){return 1===e.nodeType}))},ve.fn.extend({find:function(e){var t,n=[],i=this,r=i.length;if("string"!=typeof e)return this.pushStack(ve(e).filter(function(){for(t=0;r>t;t++)if(ve.contains(i[t],this))return!0}));for(t=0;r>t;t++)ve.find(e,i[t],n);return n=this.pushStack(r>1?ve.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(s(this,e||[],!1))},not:function(e){return this.pushStack(s(this,e||[],!0))},is:function(e){return!!s(this,"string"==typeof e&&Ce.test(e)?ve(e):e||[],!1).length}});var Te,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,Pe=ve.fn.init=function(e,t,n){var i,r;if(!e)return this;if(n=n||Te,"string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!i||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof ve?t[0]:t,ve.merge(this,ve.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:se,!0)),Ee.test(i[1])&&ve.isPlainObject(t))for(i in t)ve.isFunction(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}if(r=se.getElementById(i[2]),r&&r.parentNode){if(r.id!==i[2])return Te.find(e);this.length=1,this[0]=r}return this.context=se,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):ve.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(ve):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),ve.makeArray(e,this))};Pe.prototype=ve.fn,Te=ve(se);var Le=/^(?:parents|prev(?:Until|All))/,De={children:!0,contents:!0,next:!0,prev:!0};ve.fn.extend({has:function(e){var t,n=ve(e,this),i=n.length;return this.filter(function(){for(t=0;i>t;t++)if(ve.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,i=0,r=this.length,o=[],a=Ce.test(e)||"string"!=typeof e?ve(e,t||this.context):0;r>i;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&ve.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?ve.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?ve.inArray(this[0],ve(e)):ve.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ve.uniqueSort(ve.merge(this.get(),ve(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ve.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Se(e,"parentNode")},parentsUntil:function(e,t,n){return Se(e,"parentNode",n)},next:function(e){return l(e,"nextSibling")},prev:function(e){return l(e,"previousSibling")},nextAll:function(e){return Se(e,"nextSibling")},prevAll:function(e){return Se(e,"previousSibling")},nextUntil:function(e,t,n){return Se(e,"nextSibling",n)},prevUntil:function(e,t,n){return Se(e,"previousSibling",n)},siblings:function(e){return _e((e.parentNode||{}).firstChild,e)},children:function(e){return _e(e.firstChild)},contents:function(e){return ve.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:ve.merge([],e.childNodes)}},function(e,t){ve.fn[e]=function(n,i){var r=ve.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(r=ve.filter(i,r)),this.length>1&&(De[e]||(r=ve.uniqueSort(r)),Le.test(e)&&(r=r.reverse())),this.pushStack(r)}});var $e=/\S+/g;ve.Callbacks=function(e){e="string"==typeof e?c(e):ve.extend({},e);var t,n,i,r,o=[],a=[],s=-1,l=function(){for(r=e.once,i=t=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)o[s].apply(n[0],n[1])===!1&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,r&&(o=n?[]:"")},u={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function i(t){ve.each(t,function(t,n){ve.isFunction(n)?e.unique&&u.has(n)||o.push(n):n&&n.length&&"string"!==ve.type(n)&&i(n)})}(arguments),n&&!t&&l()),this},remove:function(){return ve.each(arguments,function(e,t){for(var n;(n=ve.inArray(t,o,n))>-1;)o.splice(n,1),s>=n&&s--}),this},has:function(e){return e?ve.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return r=!0,n||u.disable(),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},ve.extend({Deferred:function(e){var t=[["resolve","done",ve.Callbacks("once memory"),"resolved"],["reject","fail",ve.Callbacks("once memory"),"rejected"],["notify","progress",ve.Callbacks("memory")]],n="pending",i={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},then:function(){var e=arguments;return ve.Deferred(function(n){ve.each(t,function(t,o){var a=ve.isFunction(e[t])&&e[t];r[o[1]](function(){var e=a&&a.apply(this,arguments);e&&ve.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===i?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?ve.extend(e,i):i}},r={};return i.pipe=i.then,ve.each(t,function(e,o){var a=o[2],s=o[3];i[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),r[o[0]]=function(){return r[o[0]+"With"](this===r?i:this,arguments),this},r[o[0]+"With"]=a.fireWith}),i.promise(r),e&&e.call(r,r),r},when:function(e){var t,n,i,r=0,o=le.call(arguments),a=o.length,s=1!==a||e&&ve.isFunction(e.promise)?a:0,l=1===s?e:ve.Deferred(),c=function(e,n,i){return function(r){n[e]=this,i[e]=arguments.length>1?le.call(arguments):r,i===t?l.notifyWith(n,i):--s||l.resolveWith(n,i)}};if(a>1)for(t=new Array(a),n=new Array(a),i=new Array(a);a>r;r++)o[r]&&ve.isFunction(o[r].promise)?o[r].promise().progress(c(r,n,t)).done(c(r,i,o)).fail(l.reject):--s;return s||l.resolveWith(i,o),l.promise()}});var je;ve.fn.ready=function(e){return ve.ready.promise().done(e),this},ve.extend({isReady:!1,readyWait:1,holdReady:function(e){e?ve.readyWait++:ve.ready(!0)},ready:function(e){(e===!0?--ve.readyWait:ve.isReady)||(ve.isReady=!0,e!==!0&&--ve.readyWait>0||(je.resolveWith(se,[ve]),ve.fn.triggerHandler&&(ve(se).triggerHandler("ready"),ve(se).off("ready"))))}}),ve.ready.promise=function(e){if(!je)if(je=ve.Deferred(),"complete"===se.readyState||"loading"!==se.readyState&&!se.documentElement.doScroll)n.setTimeout(ve.ready);else if(se.addEventListener)se.addEventListener("DOMContentLoaded",p),n.addEventListener("load",p);else{se.attachEvent("onreadystatechange",p),n.attachEvent("onload",p);var t=!1;try{t=null==n.frameElement&&se.documentElement}catch(i){}t&&t.doScroll&&!function r(){if(!ve.isReady){try{t.doScroll("left")}catch(e){return n.setTimeout(r,50)}u(),ve.ready()}}()}return je.promise(e)},ve.ready.promise();var Ie;for(Ie in ve(me))break;me.ownFirst="0"===Ie,me.inlineBlockNeedsLayout=!1,ve(function(){var e,t,n,i;n=se.getElementsByTagName("body")[0],n&&n.style&&(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",me.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(i))}),function(){var e=se.createElement("div");me.deleteExpando=!0;try{delete e.test}catch(t){me.deleteExpando=!1}e=null}();var Oe=function(e){var t=ve.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t},He=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Be=/([A-Z])/g;ve.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?ve.cache[e[ve.expando]]:e[ve.expando],!!e&&!d(e)},data:function(e,t,n){return f(e,t,n)},removeData:function(e,t){return m(e,t)},_data:function(e,t,n){return f(e,t,n,!0)},_removeData:function(e,t){return m(e,t,!0)}}),ve.fn.extend({data:function(e,t){var n,i,r,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(r=ve.data(o),1===o.nodeType&&!ve._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(i=a[n].name,0===i.indexOf("data-")&&(i=ve.camelCase(i.slice(5)),h(o,i,r[i])));ve._data(o,"parsedAttrs",!0)}return r}return"object"==typeof e?this.each(function(){ve.data(this,e)}):arguments.length>1?this.each(function(){ve.data(this,e,t)}):o?h(o,e,ve.data(o,e)):void 0},removeData:function(e){return this.each(function(){ve.removeData(this,e)})}}),ve.extend({queue:function(e,t,n){var i;return e?(t=(t||"fx")+"queue",i=ve._data(e,t),n&&(!i||ve.isArray(n)?i=ve._data(e,t,ve.makeArray(n)):i.push(n)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=ve.queue(e,t),i=n.length,r=n.shift(),o=ve._queueHooks(e,t),a=function(){ve.dequeue(e,t)};"inprogress"===r&&(r=n.shift(),i--),r&&("fx"===t&&n.unshift("inprogress"),delete o.stop,r.call(e,a,o)),!i&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return ve._data(e,n)||ve._data(e,n,{empty:ve.Callbacks("once memory").add(function(){ve._removeData(e,t+"queue"),ve._removeData(e,n)})})}}),ve.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?ve.queue(this[0],e):void 0===t?this:this.each(function(){var n=ve.queue(this,e,t);ve._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&ve.dequeue(this,e)})},dequeue:function(e){return this.each(function(){ve.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,i=1,r=ve.Deferred(),o=this,a=this.length,s=function(){--i||r.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=ve._data(o[a],e+"queueHooks"),n&&n.empty&&(i++,n.empty.add(s));return s(),r.promise(t)}}),function(){var e;me.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,i;return n=se.getElementsByTagName("body")[0],n&&n.style?(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.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",t.appendChild(se.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(i),e):void 0}}();var Me=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Re=new RegExp("^(?:([+-])=|)("+Me+")([a-z%]*)$","i"),Fe=["Top","Right","Bottom","Left"],qe=function(e,t){return e=t||e,"none"===ve.css(e,"display")||!ve.contains(e.ownerDocument,e)},ze=function(e,t,n,i,r,o,a){var s=0,l=e.length,c=null==n;if("object"===ve.type(n)){r=!0;for(s in n)ze(e,t,s,n[s],!0,o,a)}else if(void 0!==i&&(r=!0,ve.isFunction(i)||(a=!0),c&&(a?(t.call(e,i),t=null):(c=t,t=function(e,t,n){return c.call(ve(e),n)})),t))for(;l>s;s++)t(e[s],n,a?i:i.call(e[s],s,t(e[s],n)));return r?e:c?t.call(e):l?t(e[0],n):o},We=/^(?:checkbox|radio)$/i,Ue=/<([\w:-]+)/,Ve=/^$|\/(?:java|ecma)script/i,Xe=/^\s+/,Ke="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(){var e=se.createElement("div"),t=se.createDocumentFragment(),n=se.createElement("input");e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",me.leadingWhitespace=3===e.firstChild.nodeType,me.tbody=!e.getElementsByTagName("tbody").length,me.htmlSerialize=!!e.getElementsByTagName("link").length,me.html5Clone="<:nav></:nav>"!==se.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),me.appendChecked=n.checked,e.innerHTML="<textarea>x</textarea>",me.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=se.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),me.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,me.noCloneEvent=!!e.addEventListener,e[ve.expando]=1,me.attributes=!e.getAttribute(ve.expando)}();var Je={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:me.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};Je.optgroup=Je.option,Je.tbody=Je.tfoot=Je.colgroup=Je.caption=Je.thead,Je.th=Je.td;var Ye=/<|&#?\w+;/,Qe=/<tbody/i;!function(){var e,t,i=se.createElement("div");for(e in{submit:!0,change:!0,focusin:!0})t="on"+e,(me[e]=t in n)||(i.setAttribute(t,"t"),me[e]=i.attributes[t].expando===!1);i=null}();
-var Ge=/^(?:input|select|textarea)$/i,Ze=/^key/,et=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,tt=/^(?:focusinfocus|focusoutblur)$/,nt=/^([^.]*)(?:\.(.+)|)/;ve.event={global:{},add:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve._data(e);if(g){for(n.handler&&(l=n,n=l.handler,r=l.selector),n.guid||(n.guid=ve.guid++),(a=g.events)||(a=g.events={}),(u=g.handle)||(u=g.handle=function(e){return"undefined"==typeof ve||e&&ve.event.triggered===e.type?void 0:ve.event.dispatch.apply(u.elem,arguments)},u.elem=e),t=(t||"").match($e)||[""],s=t.length;s--;)o=nt.exec(t[s])||[],d=m=o[1],f=(o[2]||"").split(".").sort(),d&&(c=ve.event.special[d]||{},d=(r?c.delegateType:c.bindType)||d,c=ve.event.special[d]||{},p=ve.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&ve.expr.match.needsContext.test(r),namespace:f.join(".")},l),(h=a[d])||(h=a[d]=[],h.delegateCount=0,c.setup&&c.setup.call(e,i,f,u)!==!1||(e.addEventListener?e.addEventListener(d,u,!1):e.attachEvent&&e.attachEvent("on"+d,u))),c.add&&(c.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),r?h.splice(h.delegateCount++,0,p):h.push(p),ve.event.global[d]=!0);e=null}},remove:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve.hasData(e)&&ve._data(e);if(g&&(u=g.events)){for(t=(t||"").match($e)||[""],c=t.length;c--;)if(s=nt.exec(t[c])||[],d=m=s[1],f=(s[2]||"").split(".").sort(),d){for(p=ve.event.special[d]||{},d=(i?p.delegateType:p.bindType)||d,h=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=h.length;o--;)a=h[o],!r&&m!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||i&&i!==a.selector&&("**"!==i||!a.selector)||(h.splice(o,1),a.selector&&h.delegateCount--,p.remove&&p.remove.call(e,a));l&&!h.length&&(p.teardown&&p.teardown.call(e,f,g.handle)!==!1||ve.removeEvent(e,d,g.handle),delete u[d])}else for(d in u)ve.event.remove(e,d+t[c],n,i,!0);ve.isEmptyObject(u)&&(delete g.handle,ve._removeData(e,"events"))}},trigger:function(e,t,i,r){var o,a,s,l,c,u,p,h=[i||se],d=fe.call(e,"type")?e.type:e,f=fe.call(e,"namespace")?e.namespace.split("."):[];if(s=u=i=i||se,3!==i.nodeType&&8!==i.nodeType&&!tt.test(d+ve.event.triggered)&&(d.indexOf(".")>-1&&(f=d.split("."),d=f.shift(),f.sort()),a=d.indexOf(":")<0&&"on"+d,e=e[ve.expando]?e:new ve.Event(d,"object"==typeof e&&e),e.isTrigger=r?2:3,e.namespace=f.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),t=null==t?[e]:ve.makeArray(t,[e]),c=ve.event.special[d]||{},r||!c.trigger||c.trigger.apply(i,t)!==!1)){if(!r&&!c.noBubble&&!ve.isWindow(i)){for(l=c.delegateType||d,tt.test(l+d)||(s=s.parentNode);s;s=s.parentNode)h.push(s),u=s;u===(i.ownerDocument||se)&&h.push(u.defaultView||u.parentWindow||n)}for(p=0;(s=h[p++])&&!e.isPropagationStopped();)e.type=p>1?l:c.bindType||d,o=(ve._data(s,"events")||{})[e.type]&&ve._data(s,"handle"),o&&o.apply(s,t),o=a&&s[a],o&&o.apply&&Oe(s)&&(e.result=o.apply(s,t),e.result===!1&&e.preventDefault());if(e.type=d,!r&&!e.isDefaultPrevented()&&(!c._default||c._default.apply(h.pop(),t)===!1)&&Oe(i)&&a&&i[d]&&!ve.isWindow(i)){u=i[a],u&&(i[a]=null),ve.event.triggered=d;try{i[d]()}catch(m){}ve.event.triggered=void 0,u&&(i[a]=u)}return e.result}},dispatch:function(e){e=ve.event.fix(e);var t,n,i,r,o,a=[],s=le.call(arguments),l=(ve._data(this,"events")||{})[e.type]||[],c=ve.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(a=ve.event.handlers.call(this,e,l),t=0;(r=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,i=((ve.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,s),void 0!==i&&(e.result=i)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,i,r,o,a=[],s=t.delegateCount,l=e.target;if(s&&l.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(i=[],n=0;s>n;n++)o=t[n],r=o.selector+" ",void 0===i[r]&&(i[r]=o.needsContext?ve(r,this).index(l)>-1:ve.find(r,this,null,[l]).length),i[r]&&i.push(o);i.length&&a.push({elem:l,handlers:i})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[ve.expando])return e;var t,n,i,r=e.type,o=e,a=this.fixHooks[r];for(a||(this.fixHooks[r]=a=et.test(r)?this.mouseHooks:Ze.test(r)?this.keyHooks:{}),i=a.props?this.props.concat(a.props):this.props,e=new ve.Event(o),t=i.length;t--;)n=i[t],e[n]=o[n];return e.target||(e.target=o.srcElement||se),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},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(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,i,r,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(i=e.target.ownerDocument||se,r=i.documentElement,n=i.body,e.pageX=t.clientX+(r&&r.scrollLeft||n&&n.scrollLeft||0)-(r&&r.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||n&&n.scrollTop||0)-(r&&r.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==_()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return ve.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return ve.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var i=ve.extend(new ve.Event,n,{type:e,isSimulated:!0});ve.event.trigger(i,null,t),i.isDefaultPrevented()&&n.preventDefault()}},ve.removeEvent=se.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var i="on"+t;e.detachEvent&&("undefined"==typeof e[i]&&(e[i]=null),e.detachEvent(i,n))},ve.Event=function(e,t){return this instanceof ve.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?k:S):this.type=e,t&&ve.extend(this,t),this.timeStamp=e&&e.timeStamp||ve.now(),void(this[ve.expando]=!0)):new ve.Event(e,t)},ve.Event.prototype={constructor:ve.Event,isDefaultPrevented:S,isPropagationStopped:S,isImmediatePropagationStopped:S,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=k,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=k,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=k,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},ve.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){ve.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=this,r=e.relatedTarget,o=e.handleObj;return r&&(r===i||ve.contains(i,r))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),me.submit||(ve.event.special.submit={setup:function(){return ve.nodeName(this,"form")?!1:void ve.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=ve.nodeName(t,"input")||ve.nodeName(t,"button")?ve.prop(t,"form"):void 0;n&&!ve._data(n,"submit")&&(ve.event.add(n,"submit._submit",function(e){e._submitBubble=!0}),ve._data(n,"submit",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&ve.event.simulate("submit",this.parentNode,e))},teardown:function(){return ve.nodeName(this,"form")?!1:void ve.event.remove(this,"._submit")}}),me.change||(ve.event.special.change={setup:function(){return Ge.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(ve.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._justChanged=!0)}),ve.event.add(this,"click._change",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),ve.event.simulate("change",this,e)})),!1):void ve.event.add(this,"beforeactivate._change",function(e){var t=e.target;Ge.test(t.nodeName)&&!ve._data(t,"change")&&(ve.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||ve.event.simulate("change",this.parentNode,e)}),ve._data(t,"change",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ve.event.remove(this,"._change"),!Ge.test(this.nodeName)}}),me.focusin||ve.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){ve.event.simulate(t,e.target,ve.event.fix(e))};ve.event.special[t]={setup:function(){var i=this.ownerDocument||this,r=ve._data(i,t);r||i.addEventListener(e,n,!0),ve._data(i,t,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this,r=ve._data(i,t)-1;r?ve._data(i,t,r):(i.removeEventListener(e,n,!0),ve._removeData(i,t))}}}),ve.fn.extend({on:function(e,t,n,i){return C(this,e,t,n,i)},one:function(e,t,n,i){return C(this,e,t,n,i,1)},off:function(e,t,n){var i,r;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,ve(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=S),this.each(function(){ve.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){ve.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?ve.event.trigger(e,t,n,!0):void 0}});var it=/ jQuery\d+="(?:null|\d+)"/g,rt=new RegExp("<(?:"+Ke+")[\\s/>]","i"),ot=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,at=/<script|<style|<link/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,lt=/^true\/(.*)/,ct=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ut=v(se),pt=ut.appendChild(se.createElement("div"));ve.extend({htmlPrefilter:function(e){return e.replace(ot,"<$1></$2>")},clone:function(e,t,n){var i,r,o,a,s,l=ve.contains(e.ownerDocument,e);if(me.html5Clone||ve.isXMLDoc(e)||!rt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(pt.innerHTML=e.outerHTML,pt.removeChild(o=pt.firstChild)),!(me.noCloneEvent&&me.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ve.isXMLDoc(e)))for(i=y(o),s=y(e),a=0;null!=(r=s[a]);++a)i[a]&&P(r,i[a]);if(t)if(n)for(s=s||y(e),i=i||y(o),a=0;null!=(r=s[a]);a++)N(r,i[a]);else N(e,o);return i=y(o,"script"),i.length>0&&b(i,!l&&y(e,"script")),i=s=r=null,o},cleanData:function(e,t){for(var n,i,r,o,a=0,s=ve.expando,l=ve.cache,c=me.attributes,u=ve.event.special;null!=(n=e[a]);a++)if((t||Oe(n))&&(r=n[s],o=r&&l[r])){if(o.events)for(i in o.events)u[i]?ve.event.remove(n,i):ve.removeEvent(n,i,o.handle);l[r]&&(delete l[r],c||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ae.push(r))}}}),ve.fn.extend({domManip:L,detach:function(e){return D(this,e,!0)},remove:function(e){return D(this,e)},text:function(e){return ze(this,function(e){return void 0===e?ve.text(this):this.empty().append((this[0]&&this[0].ownerDocument||se).createTextNode(e))},null,e,arguments.length)},append:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.appendChild(e)}})},prepend:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&ve.cleanData(y(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&ve.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return ve.clone(this,e,t)})},html:function(e){return ze(this,function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(it,""):void 0;if("string"==typeof e&&!at.test(e)&&(me.htmlSerialize||!rt.test(e))&&(me.leadingWhitespace||!Xe.test(e))&&!Je[(Ue.exec(e)||["",""])[1].toLowerCase()]){e=ve.htmlPrefilter(e);try{for(;i>n;n++)t=this[n]||{},1===t.nodeType&&(ve.cleanData(y(t,!1)),t.innerHTML=e);t=0}catch(r){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return L(this,arguments,function(t){var n=this.parentNode;ve.inArray(this,e)<0&&(ve.cleanData(y(this)),n&&n.replaceChild(t,this))},e)}}),ve.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){ve.fn[e]=function(e){for(var n,i=0,r=[],o=ve(e),a=o.length-1;a>=i;i++)n=i===a?this:this.clone(!0),ve(o[i])[t](n),ue.apply(r,n.get());return this.pushStack(r)}});var ht,dt={HTML:"block",BODY:"block"},ft=/^margin/,mt=new RegExp("^("+Me+")(?!px)[a-z%]+$","i"),gt=function(e,t,n,i){var r,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];r=n.apply(e,i||[]);for(o in t)e.style[o]=a[o];return r},vt=se.documentElement;!function(){function e(){var e,u,p=se.documentElement;p.appendChild(l),c.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%",t=r=s=!1,i=a=!0,n.getComputedStyle&&(u=n.getComputedStyle(c),t="1%"!==(u||{}).top,s="2px"===(u||{}).marginLeft,r="4px"===(u||{width:"4px"}).width,c.style.marginRight="50%",i="4px"===(u||{marginRight:"4px"}).marginRight,e=c.appendChild(se.createElement("div")),e.style.cssText=c.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",c.style.width="1px",a=!parseFloat((n.getComputedStyle(e)||{}).marginRight),c.removeChild(e)),c.style.display="none",o=0===c.getClientRects().length,o&&(c.style.display="",c.innerHTML="<table><tr><td></td><td>t</td></tr></table>",c.childNodes[0].style.borderCollapse="separate",e=c.getElementsByTagName("td"),e[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===e[0].offsetHeight,o&&(e[0].style.display="",e[1].style.display="none",o=0===e[0].offsetHeight)),p.removeChild(l)}var t,i,r,o,a,s,l=se.createElement("div"),c=se.createElement("div");c.style&&(c.style.cssText="float:left;opacity:.5",me.opacity="0.5"===c.style.opacity,me.cssFloat=!!c.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",me.clearCloneStyle="content-box"===c.style.backgroundClip,l=se.createElement("div"),l.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",c.innerHTML="",l.appendChild(c),me.boxSizing=""===c.style.boxSizing||""===c.style.MozBoxSizing||""===c.style.WebkitBoxSizing,ve.extend(me,{reliableHiddenOffsets:function(){return null==t&&e(),o},boxSizingReliable:function(){return null==t&&e(),r},pixelMarginRight:function(){return null==t&&e(),i},pixelPosition:function(){return null==t&&e(),t},reliableMarginRight:function(){return null==t&&e(),a},reliableMarginLeft:function(){return null==t&&e(),s}}))}();var yt,bt,xt=/^(top|right|bottom|left)$/;n.getComputedStyle?(yt=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||ve.contains(e.ownerDocument,e)||(a=ve.style(e,t)),n&&!me.pixelMarginRight()&&mt.test(a)&&ft.test(t)&&(i=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=i,s.minWidth=r,s.maxWidth=o),void 0===a?a:a+""}):vt.currentStyle&&(yt=function(e){return e.currentStyle},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),mt.test(a)&&!xt.test(t)&&(i=s.left,r=e.runtimeStyle,o=r&&r.left,o&&(r.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=i,o&&(r.left=o)),void 0===a?a:a+""||"auto"});var wt=/alpha\([^)]*\)/i,kt=/opacity\s*=\s*([^)]*)/i,St=/^(none|table(?!-c[ea]).+)/,_t=new RegExp("^("+Me+")(.*)$","i"),Ct={position:"absolute",visibility:"hidden",display:"block"},Et={letterSpacing:"0",fontWeight:"400"},At=["Webkit","O","Moz","ms"],Tt=se.createElement("div").style;ve.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=bt(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:{"float":me.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,o,a,s=ve.camelCase(t),l=e.style;if(t=ve.cssProps[s]||(ve.cssProps[s]=O(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(r=a.get(e,!1,i))?r:l[t];if(o=typeof n,"string"===o&&(r=Re.exec(n))&&r[1]&&(n=g(e,t,r),o="number"),null!=n&&n===n&&("number"===o&&(n+=r&&r[3]||(ve.cssNumber[s]?"":"px")),me.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,i)))))try{l[t]=n}catch(c){}}},css:function(e,t,n,i){var r,o,a,s=ve.camelCase(t);return t=ve.cssProps[s]||(ve.cssProps[s]=O(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=bt(e,t,i)),"normal"===o&&t in Et&&(o=Et[t]),""===n||n?(r=parseFloat(o),n===!0||isFinite(r)?r||0:o):o}}),ve.each(["height","width"],function(e,t){ve.cssHooks[t]={get:function(e,n,i){return n?St.test(ve.css(e,"display"))&&0===e.offsetWidth?gt(e,Ct,function(){return R(e,t,i)}):R(e,t,i):void 0},set:function(e,n,i){var r=i&&yt(e);return B(e,n,i?M(e,t,i,me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,r),r):0)}}}),me.opacity||(ve.cssHooks.opacity={get:function(e,t){return kt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,i=e.currentStyle,r=ve.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=i&&i.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===ve.trim(o.replace(wt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||i&&!i.filter)||(n.filter=wt.test(o)?o.replace(wt,r):o+" "+r)}}),ve.cssHooks.marginRight=I(me.reliableMarginRight,function(e,t){return t?gt(e,{display:"inline-block"},bt,[e,"marginRight"]):void 0}),ve.cssHooks.marginLeft=I(me.reliableMarginLeft,function(e,t){return t?(parseFloat(bt(e,"marginLeft"))||(ve.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-gt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px":void 0}),ve.each({margin:"",padding:"",border:"Width"},function(e,t){ve.cssHooks[e+t]={expand:function(n){for(var i=0,r={},o="string"==typeof n?n.split(" "):[n];4>i;i++)r[e+Fe[i]+t]=o[i]||o[i-2]||o[0];return r}},ft.test(e)||(ve.cssHooks[e+t].set=B)}),ve.fn.extend({css:function(e,t){return ze(this,function(e,t,n){var i,r,o={},a=0;if(ve.isArray(t)){for(i=yt(e),r=t.length;r>a;a++)o[t[a]]=ve.css(e,t[a],!1,i);return o}return void 0!==n?ve.style(e,t,n):ve.css(e,t)},e,t,arguments.length>1)},show:function(){return H(this,!0)},hide:function(){return H(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){qe(this)?ve(this).show():ve(this).hide()})}}),ve.Tween=F,F.prototype={constructor:F,init:function(e,t,n,i,r,o){this.elem=e,this.prop=n,this.easing=r||ve.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(ve.cssNumber[n]?"":"px")},cur:function(){var e=F.propHooks[this.prop];return e&&e.get?e.get(this):F.propHooks._default.get(this)},run:function(e){var t,n=F.propHooks[this.prop];return this.options.duration?this.pos=t=ve.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):F.propHooks._default.set(this),this}},F.prototype.init.prototype=F.prototype,F.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=ve.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){ve.fx.step[e.prop]?ve.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[ve.cssProps[e.prop]]&&!ve.cssHooks[e.prop]?e.elem[e.prop]=e.now:ve.style(e.elem,e.prop,e.now+e.unit)}}},F.propHooks.scrollTop=F.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ve.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ve.fx=F.prototype.init,ve.fx.step={};var Nt,Pt,Lt=/^(?:toggle|show|hide)$/,Dt=/queueHooks$/;ve.Animation=ve.extend(X,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return g(n.elem,e,Re.exec(t),n),n}]},tweener:function(e,t){ve.isFunction(e)?(t=e,e=["*"]):e=e.match($e);for(var n,i=0,r=e.length;r>i;i++)n=e[i],X.tweeners[n]=X.tweeners[n]||[],X.tweeners[n].unshift(t)},prefilters:[U],prefilter:function(e,t){t?X.prefilters.unshift(e):X.prefilters.push(e)}}),ve.speed=function(e,t,n){var i=e&&"object"==typeof e?ve.extend({},e):{complete:n||!n&&t||ve.isFunction(e)&&e,duration:e,easing:n&&t||t&&!ve.isFunction(t)&&t};return i.duration=ve.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in ve.fx.speeds?ve.fx.speeds[i.duration]:ve.fx.speeds._default,null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){ve.isFunction(i.old)&&i.old.call(this),i.queue&&ve.dequeue(this,i.queue)},i},ve.fn.extend({fadeTo:function(e,t,n,i){return this.filter(qe).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var r=ve.isEmptyObject(e),o=ve.speed(t,n,i),a=function(){var t=X(this,ve.extend({},e),o);(r||ve._data(this,"finish"))&&t.stop(!0)};return a.finish=a,r||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var i=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,r=null!=e&&e+"queueHooks",o=ve.timers,a=ve._data(this);if(r)a[r]&&a[r].stop&&i(a[r]);else for(r in a)a[r]&&a[r].stop&&Dt.test(r)&&i(a[r]);for(r=o.length;r--;)o[r].elem!==this||null!=e&&o[r].queue!==e||(o[r].anim.stop(n),t=!1,o.splice(r,1));!t&&n||ve.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=ve._data(this),i=n[e+"queue"],r=n[e+"queueHooks"],o=ve.timers,a=i?i.length:0;for(n.finish=!0,ve.queue(this,e,[]),r&&r.stop&&r.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;a>t;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish})}}),ve.each(["toggle","show","hide"],function(e,t){var n=ve.fn[t];ve.fn[t]=function(e,i,r){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(z(t,!0),e,i,r)}}),ve.each({slideDown:z("show"),slideUp:z("hide"),slideToggle:z("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){ve.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}}),ve.timers=[],ve.fx.tick=function(){var e,t=ve.timers,n=0;for(Nt=ve.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||ve.fx.stop(),Nt=void 0},ve.fx.timer=function(e){ve.timers.push(e),e()?ve.fx.start():ve.timers.pop()},ve.fx.interval=13,ve.fx.start=function(){Pt||(Pt=n.setInterval(ve.fx.tick,ve.fx.interval))},ve.fx.stop=function(){n.clearInterval(Pt),Pt=null},ve.fx.speeds={slow:600,fast:200,_default:400},ve.fn.delay=function(e,t){return e=ve.fx?ve.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,i){var r=n.setTimeout(t,e);i.stop=function(){n.clearTimeout(r)}})},function(){var e,t=se.createElement("input"),n=se.createElement("div"),i=se.createElement("select"),r=i.appendChild(se.createElement("option"));n=se.createElement("div"),n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",me.getSetAttribute="t"!==n.className,me.style=/top/.test(e.getAttribute("style")),me.hrefNormalized="/a"===e.getAttribute("href"),me.checkOn=!!t.value,me.optSelected=r.selected,me.enctype=!!se.createElement("form").enctype,i.disabled=!0,me.optDisabled=!r.disabled,t=se.createElement("input"),t.setAttribute("value",""),me.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),me.radioValue="t"===t.value}();var $t=/\r/g,jt=/[\x20\t\r\n\f]+/g;ve.fn.extend({val:function(e){var t,n,i,r=this[0];{if(arguments.length)return i=ve.isFunction(e),this.each(function(n){var r;1===this.nodeType&&(r=i?e.call(this,n,ve(this).val()):e,null==r?r="":"number"==typeof r?r+="":ve.isArray(r)&&(r=ve.map(r,function(e){return null==e?"":e+""})),t=ve.valHooks[this.type]||ve.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))});if(r)return t=ve.valHooks[r.type]||ve.valHooks[r.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:(n=r.value,"string"==typeof n?n.replace($t,""):null==n?"":n)}}}),ve.extend({valHooks:{option:{get:function(e){var t=ve.find.attr(e,"value");return null!=t?t:ve.trim(ve.text(e)).replace(jt," ")}},select:{get:function(e){for(var t,n,i=e.options,r=e.selectedIndex,o="select-one"===e.type||0>r,a=o?null:[],s=o?r+1:i.length,l=0>r?s:o?r:0;s>l;l++)if(n=i[l],(n.selected||l===r)&&(me.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!ve.nodeName(n.parentNode,"optgroup"))){if(t=ve(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,i,r=e.options,o=ve.makeArray(t),a=r.length;a--;)if(i=r[a],ve.inArray(ve.valHooks.option.get(i),o)>-1)try{i.selected=n=!0}catch(s){i.scrollHeight}else i.selected=!1;return n||(e.selectedIndex=-1),r}}}}),ve.each(["radio","checkbox"],function(){ve.valHooks[this]={set:function(e,t){return ve.isArray(t)?e.checked=ve.inArray(ve(e).val(),t)>-1:void 0}},me.checkOn||(ve.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var It,Ot,Ht=ve.expr.attrHandle,Bt=/^(?:checked|selected)$/i,Mt=me.getSetAttribute,Rt=me.input;ve.fn.extend({attr:function(e,t){return ze(this,ve.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){ve.removeAttr(this,e)})}}),ve.extend({attr:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ve.prop(e,t,n):(1===o&&ve.isXMLDoc(e)||(t=t.toLowerCase(),r=ve.attrHooks[t]||(ve.expr.match.bool.test(t)?Ot:It)),void 0!==n?null===n?void ve.removeAttr(e,t):r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(i=r.get(e,t))?i:(i=ve.find.attr(e,t),null==i?void 0:i))},attrHooks:{type:{set:function(e,t){if(!me.radioValue&&"radio"===t&&ve.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i,r=0,o=t&&t.match($e);if(o&&1===e.nodeType)for(;n=o[r++];)i=ve.propFix[n]||n,ve.expr.match.bool.test(n)?Rt&&Mt||!Bt.test(n)?e[i]=!1:e[ve.camelCase("default-"+n)]=e[i]=!1:ve.attr(e,n,""),e.removeAttribute(Mt?n:i)}}),Ot={set:function(e,t,n){return t===!1?ve.removeAttr(e,n):Rt&&Mt||!Bt.test(n)?e.setAttribute(!Mt&&ve.propFix[n]||n,n):e[ve.camelCase("default-"+n)]=e[n]=!0,n}},ve.each(ve.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Ht[t]||ve.find.attr;Rt&&Mt||!Bt.test(t)?Ht[t]=function(e,t,i){var r,o;return i||(o=Ht[t],Ht[t]=r,r=null!=n(e,t,i)?t.toLowerCase():null,Ht[t]=o),r}:Ht[t]=function(e,t,n){return n?void 0:e[ve.camelCase("default-"+t)]?t.toLowerCase():null}}),Rt&&Mt||(ve.attrHooks.value={set:function(e,t,n){return ve.nodeName(e,"input")?void(e.defaultValue=t):It&&It.set(e,t,n)}}),Mt||(It={set:function(e,t,n){var i=e.getAttributeNode(n);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(n)),i.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Ht.id=Ht.name=Ht.coords=function(e,t,n){var i;return n?void 0:(i=e.getAttributeNode(t))&&""!==i.value?i.value:null},ve.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:It.set},ve.attrHooks.contenteditable={set:function(e,t,n){It.set(e,""===t?!1:t,n)}},ve.each(["width","height"],function(e,t){ve.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),me.style||(ve.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var Ft=/^(?:input|select|textarea|button|object)$/i,qt=/^(?:a|area)$/i;ve.fn.extend({prop:function(e,t){return ze(this,ve.prop,e,t,arguments.length>1)},removeProp:function(e){return e=ve.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),ve.extend({prop:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ve.isXMLDoc(e)||(t=ve.propFix[t]||t,r=ve.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:e[t]=n:r&&"get"in r&&null!==(i=r.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=ve.find.attr(e,"tabindex");return t?parseInt(t,10):Ft.test(e.nodeName)||qt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),me.hrefNormalized||ve.each(["href","src"],function(e,t){ve.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),me.optSelected||(ve.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ve.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ve.propFix[this.toLowerCase()]=this}),me.enctype||(ve.propFix.enctype="encoding");var zt=/[\t\r\n\f]/g;ve.fn.extend({addClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).addClass(e.call(this,t,K(this)))});if("string"==typeof e&&e)for(t=e.match($e)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(zt," ")){for(a=0;o=t[a++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},removeClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).removeClass(e.call(this,t,K(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match($e)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(zt," ")){for(a=0;o=t[a++];)for(;i.indexOf(" "+o+" ")>-1;)i=i.replace(" "+o+" "," ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):ve.isFunction(e)?this.each(function(n){ve(this).toggleClass(e.call(this,n,K(this),t),t)}):this.each(function(){
-var t,i,r,o;if("string"===n)for(i=0,r=ve(this),o=e.match($e)||[];t=o[i++];)r.hasClass(t)?r.removeClass(t):r.addClass(t);else void 0!==e&&"boolean"!==n||(t=K(this),t&&ve._data(this,"__className__",t),ve.attr(this,"class",t||e===!1?"":ve._data(this,"__className__")||""))})},hasClass:function(e){var t,n,i=0;for(t=" "+e+" ";n=this[i++];)if(1===n.nodeType&&(" "+K(n)+" ").replace(zt," ").indexOf(t)>-1)return!0;return!1}}),ve.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){ve.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),ve.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Wt=n.location,Ut=ve.now(),Vt=/\?/,Xt=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;ve.parseJSON=function(e){if(n.JSON&&n.JSON.parse)return n.JSON.parse(e+"");var t,i=null,r=ve.trim(e+"");return r&&!ve.trim(r.replace(Xt,function(e,n,r,o){return t&&n&&(i=0),0===i?e:(t=r||n,i+=!o-!r,"")}))?Function("return "+r)():ve.error("Invalid JSON: "+e)},ve.parseXML=function(e){var t,i;if(!e||"string"!=typeof e)return null;try{n.DOMParser?(i=new n.DOMParser,t=i.parseFromString(e,"text/xml")):(t=new n.ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e))}catch(r){t=void 0}return t&&t.documentElement&&!t.getElementsByTagName("parsererror").length||ve.error("Invalid XML: "+e),t};var Kt=/#.*$/,Jt=/([?&])_=[^&]*/,Yt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Qt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gt=/^(?:GET|HEAD)$/,Zt=/^\/\//,en=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,tn={},nn={},rn="*/".concat("*"),on=Wt.href,an=en.exec(on.toLowerCase())||[];ve.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:on,type:"GET",isLocal:Qt.test(an[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":rn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":ve.parseJSON,"text xml":ve.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,ve.ajaxSettings),t):Q(ve.ajaxSettings,e)},ajaxPrefilter:J(tn),ajaxTransport:J(nn),ajax:function(e,t){function i(e,t,i,r){var o,p,y,b,w,S=t;2!==x&&(x=2,l&&n.clearTimeout(l),u=void 0,s=r||"",k.readyState=e>0?4:0,o=e>=200&&300>e||304===e,i&&(b=G(h,k,i)),b=Z(h,b,k,o),o?(h.ifModified&&(w=k.getResponseHeader("Last-Modified"),w&&(ve.lastModified[a]=w),w=k.getResponseHeader("etag"),w&&(ve.etag[a]=w)),204===e||"HEAD"===h.type?S="nocontent":304===e?S="notmodified":(S=b.state,p=b.data,y=b.error,o=!y)):(y=S,!e&&S||(S="error",0>e&&(e=0))),k.status=e,k.statusText=(t||S)+"",o?m.resolveWith(d,[p,S,k]):m.rejectWith(d,[k,S,y]),k.statusCode(v),v=void 0,c&&f.trigger(o?"ajaxSuccess":"ajaxError",[k,h,o?p:y]),g.fireWith(d,[k,S]),c&&(f.trigger("ajaxComplete",[k,h]),--ve.active||ve.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,o,a,s,l,c,u,p,h=ve.ajaxSetup({},t),d=h.context||h,f=h.context&&(d.nodeType||d.jquery)?ve(d):ve.event,m=ve.Deferred(),g=ve.Callbacks("once memory"),v=h.statusCode||{},y={},b={},x=0,w="canceled",k={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!p)for(p={};t=Yt.exec(s);)p[t[1].toLowerCase()]=t[2];t=p[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)v[t]=[v[t],e[t]];else k.always(e[k.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),i(0,t),this}};if(m.promise(k).complete=g.add,k.success=k.done,k.error=k.fail,h.url=((e||h.url||on)+"").replace(Kt,"").replace(Zt,an[1]+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=ve.trim(h.dataType||"*").toLowerCase().match($e)||[""],null==h.crossDomain&&(r=en.exec(h.url.toLowerCase()),h.crossDomain=!(!r||r[1]===an[1]&&r[2]===an[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(an[3]||("http:"===an[1]?"80":"443")))),h.data&&h.processData&&"string"!=typeof h.data&&(h.data=ve.param(h.data,h.traditional)),Y(tn,h,t,k),2===x)return k;c=ve.event&&h.global,c&&0===ve.active++&&ve.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Gt.test(h.type),a=h.url,h.hasContent||(h.data&&(a=h.url+=(Vt.test(a)?"&":"?")+h.data,delete h.data),h.cache===!1&&(h.url=Jt.test(a)?a.replace(Jt,"$1_="+Ut++):a+(Vt.test(a)?"&":"?")+"_="+Ut++)),h.ifModified&&(ve.lastModified[a]&&k.setRequestHeader("If-Modified-Since",ve.lastModified[a]),ve.etag[a]&&k.setRequestHeader("If-None-Match",ve.etag[a])),(h.data&&h.hasContent&&h.contentType!==!1||t.contentType)&&k.setRequestHeader("Content-Type",h.contentType),k.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+rn+"; q=0.01":""):h.accepts["*"]);for(o in h.headers)k.setRequestHeader(o,h.headers[o]);if(h.beforeSend&&(h.beforeSend.call(d,k,h)===!1||2===x))return k.abort();w="abort";for(o in{success:1,error:1,complete:1})k[o](h[o]);if(u=Y(nn,h,t,k)){if(k.readyState=1,c&&f.trigger("ajaxSend",[k,h]),2===x)return k;h.async&&h.timeout>0&&(l=n.setTimeout(function(){k.abort("timeout")},h.timeout));try{x=1,u.send(y,i)}catch(S){if(!(2>x))throw S;i(-1,S)}}else i(-1,"No Transport");return k},getJSON:function(e,t,n){return ve.get(e,t,n,"json")},getScript:function(e,t){return ve.get(e,void 0,t,"script")}}),ve.each(["get","post"],function(e,t){ve[t]=function(e,n,i,r){return ve.isFunction(n)&&(r=r||i,i=n,n=void 0),ve.ajax(ve.extend({url:e,type:t,dataType:r,data:n,success:i},ve.isPlainObject(e)&&e))}}),ve._evalUrl=function(e){return ve.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},ve.fn.extend({wrapAll:function(e){if(ve.isFunction(e))return this.each(function(t){ve(this).wrapAll(e.call(this,t))});if(this[0]){var t=ve(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return ve.isFunction(e)?this.each(function(t){ve(this).wrapInner(e.call(this,t))}):this.each(function(){var t=ve(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=ve.isFunction(e);return this.each(function(n){ve(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){ve.nodeName(this,"body")||ve(this).replaceWith(this.childNodes)}).end()}}),ve.expr.filters.hidden=function(e){return me.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:te(e)},ve.expr.filters.visible=function(e){return!ve.expr.filters.hidden(e)};var sn=/%20/g,ln=/\[\]$/,cn=/\r?\n/g,un=/^(?:submit|button|image|reset|file)$/i,pn=/^(?:input|select|textarea|keygen)/i;ve.param=function(e,t){var n,i=[],r=function(e,t){t=ve.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=ve.ajaxSettings&&ve.ajaxSettings.traditional),ve.isArray(e)||e.jquery&&!ve.isPlainObject(e))ve.each(e,function(){r(this.name,this.value)});else for(n in e)ne(n,e[n],t,r);return i.join("&").replace(sn,"+")},ve.fn.extend({serialize:function(){return ve.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ve.prop(this,"elements");return e?ve.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ve(this).is(":disabled")&&pn.test(this.nodeName)&&!un.test(e)&&(this.checked||!We.test(e))}).map(function(e,t){var n=ve(this).val();return null==n?null:ve.isArray(n)?ve.map(n,function(e){return{name:t.name,value:e.replace(cn,"\r\n")}}):{name:t.name,value:n.replace(cn,"\r\n")}}).get()}}),ve.ajaxSettings.xhr=void 0!==n.ActiveXObject?function(){return this.isLocal?re():se.documentMode>8?ie():/^(get|post|head|put|delete|options)$/i.test(this.type)&&ie()||re()}:ie;var hn=0,dn={},fn=ve.ajaxSettings.xhr();n.attachEvent&&n.attachEvent("onunload",function(){for(var e in dn)dn[e](void 0,!0)}),me.cors=!!fn&&"withCredentials"in fn,fn=me.ajax=!!fn,fn&&ve.ajaxTransport(function(e){if(!e.crossDomain||me.cors){var t;return{send:function(i,r){var o,a=e.xhr(),s=++hn;if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)a[o]=e.xhrFields[o];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(o in i)void 0!==i[o]&&a.setRequestHeader(o,i[o]+"");a.send(e.hasContent&&e.data||null),t=function(n,i){var o,l,c;if(t&&(i||4===a.readyState))if(delete dn[s],t=void 0,a.onreadystatechange=ve.noop,i)4!==a.readyState&&a.abort();else{c={},o=a.status,"string"==typeof a.responseText&&(c.text=a.responseText);try{l=a.statusText}catch(u){l=""}o||!e.isLocal||e.crossDomain?1223===o&&(o=204):o=c.text?200:404}c&&r(o,l,c,a.getAllResponseHeaders())},e.async?4===a.readyState?n.setTimeout(t):a.onreadystatechange=dn[s]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),ve.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 ve.globalEval(e),e}}}),ve.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),ve.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=se.head||ve("head")[0]||se.documentElement;return{send:function(i,r){t=se.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||r(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var mn=[],gn=/(=)\?(?=&|$)|\?\?/;ve.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=mn.pop()||ve.expando+"_"+Ut++;return this[e]=!0,e}}),ve.ajaxPrefilter("json jsonp",function(e,t,i){var r,o,a,s=e.jsonp!==!1&&(gn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&gn.test(e.data)&&"data");return s||"jsonp"===e.dataTypes[0]?(r=e.jsonpCallback=ve.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(gn,"$1"+r):e.jsonp!==!1&&(e.url+=(Vt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||ve.error(r+" was not called"),a[0]},e.dataTypes[0]="json",o=n[r],n[r]=function(){a=arguments},i.always(function(){void 0===o?ve(n).removeProp(r):n[r]=o,e[r]&&(e.jsonpCallback=t.jsonpCallback,mn.push(r)),a&&ve.isFunction(o)&&o(a[0]),a=o=void 0}),"script"):void 0}),ve.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||se;var i=Ee.exec(e),r=!n&&[];return i?[t.createElement(i[1])]:(i=w([e],t,r),r&&r.length&&ve(r).remove(),ve.merge([],i.childNodes))};var vn=ve.fn.load;ve.fn.load=function(e,t,n){if("string"!=typeof e&&vn)return vn.apply(this,arguments);var i,r,o,a=this,s=e.indexOf(" ");return s>-1&&(i=ve.trim(e.slice(s,e.length)),e=e.slice(0,s)),ve.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(r="POST"),a.length>0&&ve.ajax({url:e,type:r||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(i?ve("<div>").append(ve.parseHTML(e)).find(i):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ve.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ve.fn[t]=function(e){return this.on(t,e)}}),ve.expr.filters.animated=function(e){return ve.grep(ve.timers,function(t){return e===t.elem}).length},ve.offset={setOffset:function(e,t,n){var i,r,o,a,s,l,c,u=ve.css(e,"position"),p=ve(e),h={};"static"===u&&(e.style.position="relative"),s=p.offset(),o=ve.css(e,"top"),l=ve.css(e,"left"),c=("absolute"===u||"fixed"===u)&&ve.inArray("auto",[o,l])>-1,c?(i=p.position(),a=i.top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),ve.isFunction(t)&&(t=t.call(e,n,ve.extend({},s))),null!=t.top&&(h.top=t.top-s.top+a),null!=t.left&&(h.left=t.left-s.left+r),"using"in t?t.using.call(e,h):p.css(h)}},ve.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){ve.offset.setOffset(this,e,t)});var t,n,i={top:0,left:0},r=this[0],o=r&&r.ownerDocument;if(o)return t=o.documentElement,ve.contains(t,r)?("undefined"!=typeof r.getBoundingClientRect&&(i=r.getBoundingClientRect()),n=oe(o),{top:i.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):i},position:function(){if(this[0]){var e,t,n={top:0,left:0},i=this[0];return"fixed"===ve.css(i,"position")?t=i.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),ve.nodeName(e[0],"html")||(n=e.offset()),n.top+=ve.css(e[0],"borderTopWidth",!0),n.left+=ve.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-ve.css(i,"marginTop",!0),left:t.left-n.left-ve.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&!ve.nodeName(e,"html")&&"static"===ve.css(e,"position");)e=e.offsetParent;return e||vt})}}),ve.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);ve.fn[e]=function(i){return ze(this,function(e,i,r){var o=oe(e);return void 0===r?o?t in o?o[t]:o.document.documentElement[i]:e[i]:void(o?o.scrollTo(n?ve(o).scrollLeft():r,n?r:ve(o).scrollTop()):e[i]=r)},e,i,arguments.length,null)}}),ve.each(["top","left"],function(e,t){ve.cssHooks[t]=I(me.pixelPosition,function(e,n){return n?(n=bt(e,t),mt.test(n)?ve(e).position()[t]+"px":n):void 0})}),ve.each({Height:"height",Width:"width"},function(e,t){ve.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,i){ve.fn[i]=function(i,r){var o=arguments.length&&(n||"boolean"!=typeof i),a=n||(i===!0||r===!0?"margin":"border");return ze(this,function(t,n,i){var r;return ve.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(r=t.documentElement,Math.max(t.body["scroll"+e],r["scroll"+e],t.body["offset"+e],r["offset"+e],r["client"+e])):void 0===i?ve.css(t,n,a):ve.style(t,n,i,a)},t,o?i:void 0,o,null)}})}),ve.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,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),ve.fn.size=function(){return this.length},ve.fn.andSelf=ve.fn.addBack,i=[],r=function(){return ve}.apply(t,i),!(void 0!==r&&(e.exports=r));var yn=n.jQuery,bn=n.$;return ve.noConflict=function(e){return n.$===ve&&(n.$=bn),e&&n.jQuery===ve&&(n.jQuery=yn),ve},o||(n.jQuery=n.$=ve),ve})},function(e,t,n){function i(){L.each(function(){var e=b(this).find(".hide-list"),t=[],n=0;if(e.length){for(e.children().each(function(){n%D===0&&t.push(""),t[t.length-1]+=this.outerHTML+"",n++}),n=0;3>n;n++){if(!t[n])return;e.before('<dl class="category-list">'+t[n]+"</dl>")}e.remove()}})}function r(e){var t={usercenter:"http://www.yohobuy.com/home?t="+(new Date).getTime(),nickname:e.profile_name,signout:"http://www.yohobuy.com/logout_"+e.token};1*e.vip.curVipInfo.curLevel===3&&(e.vip3=!0),w.find(".simple-user-center").html(m(e)),S.html(g(t))}function o(){var e={return_type:"jsonp",method:"open.passport.get"};b.getJSON("http://www.yohobuy.com/common/passport/?callback=?",e,function(e){e&&e.data&&-1!==e.data.result?r(e.data.data):window.setCookie("_UID","",{domain:".yohobuy.com",expires:-1})})}function a(e){var t={return_type:"jsonp",query:e};b.getJSON("http://search.yohobuy.com/api/suggest?callback=?",t,function(e){200===e.code&&(e.data&&e.data.length?A.html(e.data).show():A.hide())})}function s(e){var t,n;e&&window.setCookie("_g",e,{path:"/",domain:".yohobuy.com"}),window.cookie("_g")&&(t=b.parseJSON(window.cookie("_g")),n=parseInt(t._nac,10)+parseInt(t._ac,10),n=n>0?n:0,T.data({key:t._k,num:n}),N.text(n))}function l(e){var t={return_type:"jsonp",method:"open.Shoppingcart.getCartData",shopping_key:e};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",t,function(e){var t,n;200===e.code&&(n=e.data,t=b.merge(n.main_goods,n.advance_goods),t=b.merge(t,n.outlet_goods),t=b.merge(t,n.gift_goods),t=b.merge(t,n.need_pay_gifts),t&&t.length?(n.totalGoods=t,P.html(v({carData:n}))):P.html('<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>'))})}function c(e,t){var n={return_type:"jsonp",method:"open.Shoppingcart.delone",shopping_key:e.key,id:e.id,isreduce:e.isreduce};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",n,function(n){var i="";return 200===n.code?(i='{"_k":"'+e.key+'","_nac":'+n.data.total_goods_num+',"_ac":0,"_r":0}',s(i),t()):void 0})}function u(){var e=["webkit","moz","ms"],t=e[0]+"RequestAnimationFrame",n=e[1]+"RequestAnimationFrame",i=e[2]+"RequestAnimationFrame";return window[t]?function(e){requestAnimationFrame(e)}:window[n]?function(e){window[n](e)}:window[i]?function(e){window[i](e)}:function(e){window.setTimeout(e,67)}}function p(){$+=10,E.css({transform:"rotateX("+$+"deg)","-webkit-transform":"rotateX("+$+"deg)","-moz-transform":"rotateX("+$+"deg)"}),$/90%2===1&&E.toggleClass("logo-cn"),$/90%2===0&&$%360!==0?window.setTimeout(p,3e3):$%360===0?window.setTimeout(p,6e4):y(function(){p()})}function h(){var e=3e3;E.hasClass("logo-cn")&&(e=6e4),E.fadeOut(j,function(){E.toggleClass("logo-cn"),E.fadeIn(j,function(){window.setTimeout(h,e)})})}function d(){var e,t,n=["webkit","moz","ms"];for(t=0;t<n.length;t++)return e=n[t]+"RequestAnimationFrame",!!window[e]}var f,m,g,v,y,b=n(2),x=n(4),w=b(".tool-wrapper"),k=w.find(".yoho-group"),S=b("#loginBox"),_=b(".head-wrapper"),C=b("#search-form"),E=_.find(".main-logo"),A=_.find(".search-suggest"),T=_.find(".go-cart"),N=T.find(".goods-num-tip"),P=_.find(".mini-cart-wrapper"),L=b(".sub-nav-list .contain-third"),D=9,$=0,j=500;m=x.compile(b("#simple-account-info-tpl").html()||""),g=x.compile(b("#header-login-info-tpl").html()||""),v=x.compile(b("#mini-cart-tpl").html()||""),x.registerHelper("notzero",function(e,t){return"0"!==e?t.fn(this):t.inverse(this)}),d()?(y=u(),window.setTimeout(p,3e3)):window.setTimeout(h,3e3),o(),i(),setInterval(s,2e3),k.hover(function(){var e=b(this).data();b(this).text(e.cn)},function(){var e=b(this).data();b(this).text(e.en)}),C.on("keyup",".search-key",function(e){var t,n=b.trim(b(this).val()),i=A.find("li"),r=A.find(".action");if(e.which>36&&e.which<41){if(38===e.which)t=r.prev(),r.length&&t.length||(t=i.eq(i.length-1));else{if(40!==e.which)return;t=r.next(),r.length&&t.length||(t=i.eq(0))}i.removeClass("action"),t.addClass("action"),b(this).val(t.find(".searchvalue").text())}else 13===e.which?""!==n&&C.submit():(n=n.replace(new RegExp("'","gm"),""),b(this).val(n),a(n))}).on("blur",".search-key",function(){setTimeout(function(){A.hide()},200)}),T.hover(function(){var e,t="";T.hasClass("on-hover")||(e=T.data(),e&&1*e.num?(t='<div class="loading-cart"><h3>加载中,请稍后</h3></div>',l(e.key)):t='<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>',P.html(t),T.addClass("on-hover"))},function(){T.removeClass("on-hover")}),T.on("click",".cart-goods-del",function(){var e,t=b(this),n=t.data();n&&(e=function(){t.closest(".goods-item").remove()},n.key=T.data().key,c(n,e))}),L.on({mouseenter:function(){var e=b(this).children(".third-nav-wrapper"),t=e.find(".show-detail"),n={};f=setTimeout(function(){e.show()},200),t.length&&!t.hasClass("show")&&(n.content_code=t.data().code,n.client_type="web",n.width=337,n.height=250,n._=new Date,b.getJSON("http://new.yohobuy.com/common/getbanner?callback=?",n,function(e){200===e.code&&(t.addClass("show"),t.find("img").attr("src",e.data.src),t.find("a").attr("href",e.data.url),t.find(".title").text(e.data.title))}))},mouseleave:function(){var e=b(this).children(".third-nav-wrapper");f&&clearTimeout(f),e.hide()}})},function(e,t,n){/*!
-	
-	 handlebars v4.0.5
-	
-	Copyright (C) 2011-2015 by Yehuda Katz
-	
-	Permission is hereby granted, free of charge, to any person obtaining a copy
-	of this software and associated documentation files (the "Software"), to deal
-	in the Software without restriction, including without limitation the rights
-	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-	copies of the Software, and to permit persons to whom the Software is
-	furnished to do so, subject to the following conditions:
-	
-	The above copyright notice and this permission notice shall be included in
-	all copies or substantial portions of the Software.
-	
-	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-	THE SOFTWARE.
-	
-	@license
-	*/
-!function(t,n){e.exports=n()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(){var e=v();return e.compile=function(t,n){return u.compile(t,n,e)},e.precompile=function(t,n){return u.precompile(t,n,e)},e.AST=l["default"],e.Compiler=u.Compiler,e.JavaScriptCompiler=h["default"],e.Parser=c.parser,e.parse=c.parse,e}var r=n(1)["default"];t.__esModule=!0;var o=n(2),a=r(o),s=n(21),l=r(s),c=n(22),u=n(27),p=n(28),h=r(p),d=n(25),f=r(d),m=n(20),g=r(m),v=a["default"].create,y=i();y.create=i,g["default"](y),y.Visitor=f["default"],y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){return e&&e.__esModule?e:{"default":e}},t.__esModule=!0},function(e,t,n){"use strict";function i(){var e=new s.HandlebarsEnvironment;return d.extend(e,s),e.SafeString=c["default"],e.Exception=p["default"],e.Utils=d,e.escapeExpression=d.escapeExpression,e.VM=m,e.template=function(t){return m.template(t,e)},e}var r=n(3)["default"],o=n(1)["default"];t.__esModule=!0;var a=n(4),s=r(a),l=n(18),c=o(l),u=n(6),p=o(u),h=n(5),d=r(h),f=n(19),m=r(f),g=n(20),v=o(g),y=i();y.create=i,v["default"](y),y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t},t.__esModule=!0},function(e,t,n){"use strict";function i(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},l.registerDefaultHelpers(this),c.registerDefaultDecorators(this)}var r=n(1)["default"];t.__esModule=!0,t.HandlebarsEnvironment=i;var o=n(5),a=n(6),s=r(a),l=n(7),c=n(15),u=n(17),p=r(u),h="4.0.5";t.VERSION=h;var d=7;t.COMPILER_REVISION=d;var f={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};t.REVISION_CHANGES=f;var m="[object Object]";i.prototype={constructor:i,logger:p["default"],log:p["default"].log,registerHelper:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(o.toString.call(e)===m)o.extend(this.partials,e);else{if("undefined"==typeof t)throw new s["default"]('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]}};var g=p["default"].log;t.log=g,t.createFrame=o.createFrame,t.logger=p["default"]},function(e,t){"use strict";function n(e){return u[e]}function i(e){for(var t=1;t<arguments.length;t++)for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e}function r(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1}function o(e){if("string"!=typeof e){if(e&&e.toHTML)return e.toHTML();if(null==e)return"";if(!e)return e+"";e=""+e}return h.test(e)?e.replace(p,n):e}function a(e){return e||0===e?!(!m(e)||0!==e.length):!0}function s(e){var t=i({},e);return t._parent=e,t}function l(e,t){return e.path=t,e}function c(e,t){return(e?e+".":"")+t}t.__esModule=!0,t.extend=i,t.indexOf=r,t.escapeExpression=o,t.isEmpty=a,t.createFrame=s,t.blockParams=l,t.appendContextPath=c;var u={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;","=":"&#x3D;"},p=/[&<>"'`=]/g,h=/[&<>"'`=]/,d=Object.prototype.toString;t.toString=d;var f=function(e){return"function"==typeof e};f(/x/)&&(t.isFunction=f=function(e){return"function"==typeof e&&"[object Function]"===d.call(e)}),t.isFunction=f;var m=Array.isArray||function(e){return e&&"object"==typeof e?"[object Array]"===d.call(e):!1};t.isArray=m},function(e,t){"use strict";function n(e,t){var r=t&&t.loc,o=void 0,a=void 0;r&&(o=r.start.line,a=r.start.column,e+=" - "+o+":"+a);for(var s=Error.prototype.constructor.call(this,e),l=0;l<i.length;l++)this[i[l]]=s[i[l]];Error.captureStackTrace&&Error.captureStackTrace(this,n),r&&(this.lineNumber=o,this.column=a)}t.__esModule=!0;var i=["description","fileName","lineNumber","message","name","number","stack"];n.prototype=new Error,t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e),l["default"](e),u["default"](e),h["default"](e),f["default"](e),g["default"](e),y["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultHelpers=i;var o=n(8),a=r(o),s=n(9),l=r(s),c=n(10),u=r(c),p=n(11),h=r(p),d=n(12),f=r(d),m=n(13),g=r(m),v=n(14),y=r(v)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("blockHelperMissing",function(t,n){var r=n.inverse,o=n.fn;if(t===!0)return o(this);if(t===!1||null==t)return r(this);if(i.isArray(t))return t.length>0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):r(this);if(n.data&&n.ids){var a=i.createFrame(n.data);a.contextPath=i.appendContextPath(n.data.contextPath,n.name),n={data:a}}return o(t,n)})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(5),o=n(6),a=i(o);t["default"]=function(e){e.registerHelper("each",function(e,t){function n(t,n,o){c&&(c.key=t,c.index=n,c.first=0===n,c.last=!!o,u&&(c.contextPath=u+t)),l+=i(e[t],{data:c,blockParams:r.blockParams([e[t],t],[u+t,null])})}if(!t)throw new a["default"]("Must pass iterator to #each");var i=t.fn,o=t.inverse,s=0,l="",c=void 0,u=void 0;if(t.data&&t.ids&&(u=r.appendContextPath(t.data.contextPath,t.ids[0])+"."),r.isFunction(e)&&(e=e.call(this)),t.data&&(c=r.createFrame(t.data)),e&&"object"==typeof e)if(r.isArray(e))for(var p=e.length;p>s;s++)s in e&&n(s,s,s===e.length-1);else{var h=void 0;for(var d in e)e.hasOwnProperty(d)&&(void 0!==h&&n(h,s-1),h=d,s++);void 0!==h&&n(h,s-1,!0)}return 0===s&&(l=o(this)),l})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(6),o=i(r);t["default"]=function(e){e.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new o["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("if",function(e,t){return i.isFunction(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||i.isEmpty(e)?t.inverse(this):t.fn(this)}),e.registerHelper("unless",function(t,n){return e.helpers["if"].call(this,t,{fn:n.inverse,inverse:n.fn,hash:n.hash})})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("log",function(){for(var t=[void 0],n=arguments[arguments.length-1],i=0;i<arguments.length-1;i++)t.push(arguments[i]);var r=1;null!=n.hash.level?r=n.hash.level:n.data&&null!=n.data.level&&(r=n.data.level),t[0]=r,e.log.apply(e,t)})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("lookup",function(e,t){return e&&e[t]})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("with",function(e,t){i.isFunction(e)&&(e=e.call(this));var n=t.fn;if(i.isEmpty(e))return t.inverse(this);var r=t.data;return t.data&&t.ids&&(r=i.createFrame(t.data),r.contextPath=i.appendContextPath(t.data.contextPath,t.ids[0])),n(e,{data:r,blockParams:i.blockParams([e],[r&&r.contextPath])})})},e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultDecorators=i;var o=n(16),a=r(o)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerDecorator("inline",function(e,t,n,r){var o=e;return t.partials||(t.partials={},o=function(r,o){var a=n.partials;n.partials=i.extend({},a,t.partials);var s=e(r,o);return n.partials=a,s}),t.partials[r.args[0]]=r.fn,o})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5),r={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=i.indexOf(r.methodMap,e.toLowerCase());e=t>=0?t:parseInt(e,10)}return e},log:function(e){if(e=r.lookupLevel(e),"undefined"!=typeof console&&r.lookupLevel(r.level)<=e){var t=r.methodMap[e];console[t]||(t="log");for(var n=arguments.length,i=Array(n>1?n-1:0),o=1;n>o;o++)i[o-1]=arguments[o];console[t].apply(console,i)}}};t["default"]=r,e.exports=t["default"]},function(e,t){"use strict";function n(e){this.string=e}t.__esModule=!0,n.prototype.toString=n.prototype.toHTML=function(){return""+this.string},t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){var t=e&&e[0]||1,n=v.COMPILER_REVISION;if(t!==n){if(n>t){var i=v.REVISION_CHANGES[n],r=v.REVISION_CHANGES[t];throw new g["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+i+") or downgrade your runtime to an older version ("+r+").")}throw new g["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")}}function r(e,t){function n(n,i,r){r.hash&&(i=f.extend({},i,r.hash),r.ids&&(r.ids[0]=!0)),n=t.VM.resolvePartial.call(this,n,i,r);var o=t.VM.invokePartial.call(this,n,i,r);if(null==o&&t.compile&&(r.partials[r.name]=t.compile(n,e.compilerOptions,t),o=r.partials[r.name](i,r)),null!=o){if(r.indent){for(var a=o.split("\n"),s=0,l=a.length;l>s&&(a[s]||s+1!==l);s++)a[s]=r.indent+a[s];o=a.join("\n")}return o}throw new g["default"]("The partial "+r.name+" could not be compiled when running in runtime-only mode")}function i(t){function n(t){return""+e.main(r,t,r.helpers,r.partials,a,l,s)}var o=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],a=o.data;i._setup(o),!o.partial&&e.useData&&(a=c(t,a));var s=void 0,l=e.useBlockParams?[]:void 0;return e.useDepths&&(s=o.depths?t!==o.depths[0]?[t].concat(o.depths):o.depths:[t]),(n=u(e.main,n,r,o.depths||[],a,l))(t,o)}if(!t)throw new g["default"]("No environment passed to template");if(!e||!e.main)throw new g["default"]("Unknown template object: "+typeof e);e.main.decorator=e.main_d,t.VM.checkRevision(e.compiler);var r={strict:function(e,t){if(!(t in e))throw new g["default"]('"'+t+'" not defined in '+e);return e[t]},lookup:function(e,t){for(var n=e.length,i=0;n>i;i++)if(e[i]&&null!=e[i][t])return e[i][t]},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:f.escapeExpression,invokePartial:n,fn:function(t){var n=e[t];return n.decorator=e[t+"_d"],n},programs:[],program:function(e,t,n,i,r){var a=this.programs[e],s=this.fn(e);return t||r||i||n?a=o(this,e,s,t,n,i,r):a||(a=this.programs[e]=o(this,e,s)),a},data:function(e,t){for(;e&&t--;)e=e._parent;return e},merge:function(e,t){var n=e||t;return e&&t&&e!==t&&(n=f.extend({},t,e)),n},noop:t.VM.noop,compilerInfo:e.compiler};return i.isTop=!0,i._setup=function(n){n.partial?(r.helpers=n.helpers,r.partials=n.partials,r.decorators=n.decorators):(r.helpers=r.merge(n.helpers,t.helpers),e.usePartial&&(r.partials=r.merge(n.partials,t.partials)),(e.usePartial||e.useDecorators)&&(r.decorators=r.merge(n.decorators,t.decorators)))},i._child=function(t,n,i,a){if(e.useBlockParams&&!i)throw new g["default"]("must pass block params");if(e.useDepths&&!a)throw new g["default"]("must pass parent depths");return o(r,t,e[t],n,0,i,a)},i}function o(e,t,n,i,r,o,a){function s(t){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],s=a;return a&&t!==a[0]&&(s=[t].concat(a)),n(e,t,e.helpers,e.partials,r.data||i,o&&[r.blockParams].concat(o),s)}return s=u(n,s,e,a,i,o),s.program=t,s.depth=a?a.length:0,s.blockParams=r||0,s}function a(e,t,n){return e?e.call||n.name||(n.name=e,e=n.partials[e]):e="@partial-block"===n.name?n.data["partial-block"]:n.partials[n.name],e}function s(e,t,n){n.partial=!0,n.ids&&(n.data.contextPath=n.ids[0]||n.data.contextPath);var i=void 0;if(n.fn&&n.fn!==l&&(n.data=v.createFrame(n.data),i=n.data["partial-block"]=n.fn,i.partials&&(n.partials=f.extend({},n.partials,i.partials))),void 0===e&&i&&(e=i),void 0===e)throw new g["default"]("The partial "+n.name+" could not be found");return e instanceof Function?e(t,n):void 0}function l(){return""}function c(e,t){return t&&"root"in t||(t=t?v.createFrame(t):{},t.root=e),t}function u(e,t,n,i,r,o){if(e.decorator){var a={};t=e.decorator(t,a,n,i&&i[0],r,o,i),f.extend(t,a)}return t}var p=n(3)["default"],h=n(1)["default"];t.__esModule=!0,t.checkRevision=i,t.template=r,t.wrapProgram=o,t.resolvePartial=a,t.invokePartial=s,t.noop=l;var d=n(5),f=p(d),m=n(6),g=h(m),v=n(4)},function(e,t){(function(n){"use strict";t.__esModule=!0,t["default"]=function(e){var t="undefined"!=typeof n?n:window,i=t.Handlebars;e.noConflict=function(){return t.Handlebars===e&&(t.Handlebars=i),e}},e.exports=t["default"]}).call(t,function(){return this}())},function(e,t){"use strict";t.__esModule=!0;var n={helpers:{helperExpression:function(e){return"SubExpression"===e.type||("MustacheStatement"===e.type||"BlockStatement"===e.type)&&!!(e.params&&e.params.length||e.hash)},scopedId:function(e){return/^\.|this\b/.test(e.original)},simpleId:function(e){return 1===e.parts.length&&!n.helpers.scopedId(e)&&!e.depth}}};t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if("Program"===e.type)return e;s["default"].yy=d,d.locInfo=function(e){return new d.SourceLocation(t&&t.srcName,e)};var n=new c["default"](t);return n.accept(s["default"].parse(e))}var r=n(1)["default"],o=n(3)["default"];t.__esModule=!0,t.parse=i;var a=n(23),s=r(a),l=n(24),c=r(l),u=n(26),p=o(u),h=n(5);t.parser=s["default"];var d={};h.extend(d,p)},function(e,t){"use strict";var n=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(e,t,n,i,r,o,a){var s=o.length-1;switch(r){case 1:return o[s-1];case 2:this.$=i.prepareProgram(o[s]);break;case 3:this.$=o[s];break;case 4:this.$=o[s];break;case 5:this.$=o[s];break;case 6:this.$=o[s];break;case 7:this.$=o[s];break;case 8:this.$=o[s];break;case 9:this.$={type:"CommentStatement",value:i.stripComment(o[s]),strip:i.stripFlags(o[s],o[s]),loc:i.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:o[s],value:o[s],loc:i.locInfo(this._$)};break;case 11:this.$=i.prepareRawBlock(o[s-2],o[s-1],o[s],this._$);break;case 12:this.$={path:o[s-3],params:o[s-2],hash:o[s-1]};break;case 13:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!1,this._$);break;case 14:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!0,this._$);break;case 15:this.$={open:o[s-5],path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 16:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 17:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 18:this.$={strip:i.stripFlags(o[s-1],o[s-1]),program:o[s]};break;case 19:var l=i.prepareBlock(o[s-2],o[s-1],o[s],o[s],!1,this._$),c=i.prepareProgram([l],o[s-1].loc);c.chained=!0,this.$={strip:o[s-2].strip,program:c,chain:!0};break;case 20:this.$=o[s];break;case 21:this.$={path:o[s-1],strip:i.stripFlags(o[s-2],o[s])};break;case 22:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 23:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 24:this.$={type:"PartialStatement",name:o[s-3],params:o[s-2],hash:o[s-1],indent:"",strip:i.stripFlags(o[s-4],o[s]),loc:i.locInfo(this._$)};break;case 25:this.$=i.preparePartialBlock(o[s-2],o[s-1],o[s],this._$);break;case 26:this.$={path:o[s-3],params:o[s-2],hash:o[s-1],strip:i.stripFlags(o[s-4],o[s])};break;case 27:this.$=o[s];break;case 28:this.$=o[s];break;case 29:this.$={type:"SubExpression",path:o[s-3],params:o[s-2],hash:o[s-1],loc:i.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:o[s],loc:i.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:i.id(o[s-2]),value:o[s],loc:i.locInfo(this._$)};break;case 32:this.$=i.id(o[s-1]);break;case 33:this.$=o[s];break;case 34:this.$=o[s];break;case 35:this.$={type:"StringLiteral",value:o[s],original:o[s],loc:i.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(o[s]),original:Number(o[s]),loc:i.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===o[s],original:"true"===o[s],loc:i.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:i.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:i.locInfo(this._$)};break;case 40:this.$=o[s];break;case 41:this.$=o[s];break;case 42:this.$=i.preparePath(!0,o[s],this._$);break;case 43:this.$=i.preparePath(!1,o[s],this._$);break;case 44:o[s-2].push({part:i.id(o[s]),original:o[s],separator:o[s-1]}),this.$=o[s-2];break;case 45:this.$=[{part:i.id(o[s]),original:o[s]}];break;case 46:this.$=[];break;case 47:o[s-1].push(o[s]);break;case 48:this.$=[o[s]];break;case 49:o[s-1].push(o[s]);break;case 50:this.$=[];break;case 51:o[s-1].push(o[s]);break;case 58:this.$=[];break;case 59:o[s-1].push(o[s]);break;case 64:this.$=[];break;case 65:o[s-1].push(o[s]);break;case 70:this.$=[];break;case 71:o[s-1].push(o[s]);break;case 78:this.$=[];break;case 79:o[s-1].push(o[s]);break;case 82:this.$=[];break;case 83:o[s-1].push(o[s]);break;case 86:this.$=[];break;case 87:o[s-1].push(o[s]);break;case 90:this.$=[];break;case 91:o[s-1].push(o[s]);break;case 94:this.$=[];break;case 95:o[s-1].push(o[s]);break;case 98:this.$=[o[s]];break;case 99:o[s-1].push(o[s]);break;case 100:this.$=[o[s]];break;case 101:o[s-1].push(o[s])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],
-47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,i=[0],r=[null],o=[],a=this.table,s="",l=0,c=0,u=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;o.push(p);var h=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var d,f,m,g,v,y,b,x,w,k={};;){if(m=i[i.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null!==d&&"undefined"!=typeof d||(d=t()),g=a[m]&&a[m][d]),"undefined"==typeof g||!g.length||!g[0]){var S="";if(!u){w=[];for(y in a[m])this.terminals_[y]&&y>2&&w.push("'"+this.terminals_[y]+"'");S=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[d]||d)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==d?"end of input":"'"+(this.terminals_[d]||d)+"'"),this.parseError(S,{text:this.lexer.match,token:this.terminals_[d]||d,line:this.lexer.yylineno,loc:p,expected:w})}}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+d);switch(g[0]){case 1:i.push(d),r.push(this.lexer.yytext),o.push(this.lexer.yylloc),i.push(g[1]),d=null,f?(d=f,f=null):(c=this.lexer.yyleng,s=this.lexer.yytext,l=this.lexer.yylineno,p=this.lexer.yylloc,u>0&&u--);break;case 2:if(b=this.productions_[g[1]][1],k.$=r[r.length-b],k._$={first_line:o[o.length-(b||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(b||1)].first_column,last_column:o[o.length-1].last_column},h&&(k._$.range=[o[o.length-(b||1)].range[0],o[o.length-1].range[1]]),v=this.performAction.call(k,s,c,l,this.yy,g[1],r,o),"undefined"!=typeof v)return v;b&&(i=i.slice(0,-1*b*2),r=r.slice(0,-1*b),o=o.slice(0,-1*b)),i.push(this.productions_[g[1]][0]),r.push(k.$),o.push(k._$),x=a[i[i.length-2]][i[i.length-1]],i.push(x);break;case 3:return!0}}return!0}},n=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this},more:function(){return this._more=!0,this},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),a=0;a<o.length&&(n=this._input.match(this.rules[o[a]]),!n||t&&!(n[0].length>t[0].length)||(t=n,i=a,this.options.flex));a++);return t?(r=t[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){function r(e,n){return t.yytext=t.yytext.substr(e,t.yyleng-n)}switch(n){case 0:if("\\\\"===t.yytext.slice(-2)?(r(0,1),this.begin("mu")):"\\"===t.yytext.slice(-1)?(r(0,1),this.begin("emu")):this.begin("mu"),t.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(t.yytext=t.yytext.substr(5,t.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(t.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return t.yytext=r(1,2).replace(/\\"/g,'"'),80;case 32:return t.yytext=r(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return t.yytext=t.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},e.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],e.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},e}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();t.__esModule=!0,t["default"]=n},function(e,t,n){"use strict";function i(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=e}function r(e,t,n){void 0===t&&(t=e.length);var i=e[t-1],r=e[t-2];return i?"ContentStatement"===i.type?(r||!n?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(i.original):void 0:n}function o(e,t,n){void 0===t&&(t=-1);var i=e[t+1],r=e[t+2];return i?"ContentStatement"===i.type?(r||!n?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(i.original):void 0:n}function a(e,t,n){var i=e[null==t?0:t+1];if(i&&"ContentStatement"===i.type&&(n||!i.rightStripped)){var r=i.value;i.value=i.value.replace(n?/^\s+/:/^[ \t]*\r?\n?/,""),i.rightStripped=i.value!==r}}function s(e,t,n){var i=e[null==t?e.length-1:t-1];if(i&&"ContentStatement"===i.type&&(n||!i.leftStripped)){var r=i.value;return i.value=i.value.replace(n?/\s+$/:/[ \t]+$/,""),i.leftStripped=i.value!==r,i.leftStripped}}var l=n(1)["default"];t.__esModule=!0;var c=n(25),u=l(c);i.prototype=new u["default"],i.prototype.Program=function(e){var t=!this.options.ignoreStandalone,n=!this.isRootSeen;this.isRootSeen=!0;for(var i=e.body,l=0,c=i.length;c>l;l++){var u=i[l],p=this.accept(u);if(p){var h=r(i,l,n),d=o(i,l,n),f=p.openStandalone&&h,m=p.closeStandalone&&d,g=p.inlineStandalone&&h&&d;p.close&&a(i,l,!0),p.open&&s(i,l,!0),t&&g&&(a(i,l),s(i,l)&&"PartialStatement"===u.type&&(u.indent=/([ \t]+$)/.exec(i[l-1].original)[1])),t&&f&&(a((u.program||u.inverse).body),s(i,l)),t&&m&&(a(i,l),s((u.inverse||u.program).body))}}return e},i.prototype.BlockStatement=i.prototype.DecoratorBlock=i.prototype.PartialBlockStatement=function(e){this.accept(e.program),this.accept(e.inverse);var t=e.program||e.inverse,n=e.program&&e.inverse,i=n,l=n;if(n&&n.chained)for(i=n.body[0].program;l.chained;)l=l.body[l.body.length-1].program;var c={open:e.openStrip.open,close:e.closeStrip.close,openStandalone:o(t.body),closeStandalone:r((i||t).body)};if(e.openStrip.close&&a(t.body,null,!0),n){var u=e.inverseStrip;u.open&&s(t.body,null,!0),u.close&&a(i.body,null,!0),e.closeStrip.open&&s(l.body,null,!0),!this.options.ignoreStandalone&&r(t.body)&&o(i.body)&&(s(t.body),a(i.body))}else e.closeStrip.open&&s(t.body,null,!0);return c},i.prototype.Decorator=i.prototype.MustacheStatement=function(e){return e.strip},i.prototype.PartialStatement=i.prototype.CommentStatement=function(e){var t=e.strip||{};return{inlineStandalone:!0,open:t.open,close:t.close}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(){this.parents=[]}function r(e){this.acceptRequired(e,"path"),this.acceptArray(e.params),this.acceptKey(e,"hash")}function o(e){r.call(this,e),this.acceptKey(e,"program"),this.acceptKey(e,"inverse")}function a(e){this.acceptRequired(e,"name"),this.acceptArray(e.params),this.acceptKey(e,"hash")}var s=n(1)["default"];t.__esModule=!0;var l=n(6),c=s(l);i.prototype={constructor:i,mutating:!1,acceptKey:function(e,t){var n=this.accept(e[t]);if(this.mutating){if(n&&!i.prototype[n.type])throw new c["default"]('Unexpected node type "'+n.type+'" found when accepting '+t+" on "+e.type);e[t]=n}},acceptRequired:function(e,t){if(this.acceptKey(e,t),!e[t])throw new c["default"](e.type+" requires "+t)},acceptArray:function(e){for(var t=0,n=e.length;n>t;t++)this.acceptKey(e,t),e[t]||(e.splice(t,1),t--,n--)},accept:function(e){if(e){if(!this[e.type])throw new c["default"]("Unknown type: "+e.type,e);this.current&&this.parents.unshift(this.current),this.current=e;var t=this[e.type](e);return this.current=this.parents.shift(),!this.mutating||t?t:t!==!1?e:void 0}},Program:function(e){this.acceptArray(e.body)},MustacheStatement:r,Decorator:r,BlockStatement:o,DecoratorBlock:o,PartialStatement:a,PartialBlockStatement:function(e){a.call(this,e),this.acceptKey(e,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:r,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(e){this.acceptArray(e.pairs)},HashPair:function(e){this.acceptRequired(e,"value")}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if(t=t.path?t.path.original:t,e.path.original!==t){var n={loc:e.path.loc};throw new g["default"](e.path.original+" doesn't match "+t,n)}}function r(e,t){this.source=e,this.start={line:t.first_line,column:t.first_column},this.end={line:t.last_line,column:t.last_column}}function o(e){return/^\[.*\]$/.test(e)?e.substr(1,e.length-2):e}function a(e,t){return{open:"~"===e.charAt(2),close:"~"===t.charAt(t.length-3)}}function s(e){return e.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function l(e,t,n){n=this.locInfo(n);for(var i=e?"@":"",r=[],o=0,a="",s=0,l=t.length;l>s;s++){var c=t[s].part,u=t[s].original!==c;if(i+=(t[s].separator||"")+c,u||".."!==c&&"."!==c&&"this"!==c)r.push(c);else{if(r.length>0)throw new g["default"]("Invalid path: "+i,{loc:n});".."===c&&(o++,a+="../")}}return{type:"PathExpression",data:e,depth:o,parts:r,original:i,loc:n}}function c(e,t,n,i,r,o){var a=i.charAt(3)||i.charAt(2),s="{"!==a&&"&"!==a,l=/\*/.test(i);return{type:l?"Decorator":"MustacheStatement",path:e,params:t,hash:n,escaped:s,strip:r,loc:this.locInfo(o)}}function u(e,t,n,r){i(e,n),r=this.locInfo(r);var o={type:"Program",body:t,strip:{},loc:r};return{type:"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:o,openStrip:{},inverseStrip:{},closeStrip:{},loc:r}}function p(e,t,n,r,o,a){r&&r.path&&i(e,r);var s=/\*/.test(e.open);t.blockParams=e.blockParams;var l=void 0,c=void 0;if(n){if(s)throw new g["default"]("Unexpected inverse block on decorator",n);n.chain&&(n.program.body[0].closeStrip=r.strip),c=n.strip,l=n.program}return o&&(o=l,l=t,t=o),{type:s?"DecoratorBlock":"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:t,inverse:l,openStrip:e.strip,inverseStrip:c,closeStrip:r&&r.strip,loc:this.locInfo(a)}}function h(e,t){if(!t&&e.length){var n=e[0].loc,i=e[e.length-1].loc;n&&i&&(t={source:n.source,start:{line:n.start.line,column:n.start.column},end:{line:i.end.line,column:i.end.column}})}return{type:"Program",body:e,strip:{},loc:t}}function d(e,t,n,r){return i(e,n),{type:"PartialBlockStatement",name:e.path,params:e.params,hash:e.hash,program:t,openStrip:e.strip,closeStrip:n&&n.strip,loc:this.locInfo(r)}}var f=n(1)["default"];t.__esModule=!0,t.SourceLocation=r,t.id=o,t.stripFlags=a,t.stripComment=s,t.preparePath=l,t.prepareMustache=c,t.prepareRawBlock=u,t.prepareBlock=p,t.prepareProgram=h,t.preparePartialBlock=d;var m=n(6),g=f(m)},function(e,t,n){"use strict";function i(){}function r(e,t,n){if(null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+e);t=t||{},"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var i=n.parse(e,t),r=(new n.Compiler).compile(i,t);return(new n.JavaScriptCompiler).compile(r,t)}function o(e,t,n){function i(){var i=n.parse(e,t),r=(new n.Compiler).compile(i,t),o=(new n.JavaScriptCompiler).compile(r,t,void 0,!0);return n.template(o)}function r(e,t){return o||(o=i()),o.call(this,e,t)}if(void 0===t&&(t={}),null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+e);"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var o=void 0;return r._setup=function(e){return o||(o=i()),o._setup(e)},r._child=function(e,t,n,r){return o||(o=i()),o._child(e,t,n,r)},r}function a(e,t){if(e===t)return!0;if(p.isArray(e)&&p.isArray(t)&&e.length===t.length){for(var n=0;n<e.length;n++)if(!a(e[n],t[n]))return!1;return!0}}function s(e){if(!e.path.parts){var t=e.path;e.path={type:"PathExpression",data:!1,depth:0,parts:[t.original+""],original:t.original+"",loc:t.loc}}}var l=n(1)["default"];t.__esModule=!0,t.Compiler=i,t.precompile=r,t.compile=o;var c=n(6),u=l(c),p=n(5),h=n(21),d=l(h),f=[].slice;i.prototype={compiler:i,equals:function(e){var t=this.opcodes.length;if(e.opcodes.length!==t)return!1;for(var n=0;t>n;n++){var i=this.opcodes[n],r=e.opcodes[n];if(i.opcode!==r.opcode||!a(i.args,r.args))return!1}t=this.children.length;for(var n=0;t>n;n++)if(!this.children[n].equals(e.children[n]))return!1;return!0},guid:0,compile:function(e,t){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=t,this.stringParams=t.stringParams,this.trackIds=t.trackIds,t.blockParams=t.blockParams||[];var n=t.knownHelpers;if(t.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},n)for(var i in n)i in n&&(t.knownHelpers[i]=n[i]);return this.accept(e)},compileProgram:function(e){var t=new this.compiler,n=t.compile(e,this.options),i=this.guid++;return this.usePartial=this.usePartial||n.usePartial,this.children[i]=n,this.useDepths=this.useDepths||n.useDepths,i},accept:function(e){if(!this[e.type])throw new u["default"]("Unknown type: "+e.type,e);this.sourceNode.unshift(e);var t=this[e.type](e);return this.sourceNode.shift(),t},Program:function(e){this.options.blockParams.unshift(e.blockParams);for(var t=e.body,n=t.length,i=0;n>i;i++)this.accept(t[i]);return this.options.blockParams.shift(),this.isSimple=1===n,this.blockParams=e.blockParams?e.blockParams.length:0,this},BlockStatement:function(e){s(e);var t=e.program,n=e.inverse;t=t&&this.compileProgram(t),n=n&&this.compileProgram(n);var i=this.classifySexpr(e);"helper"===i?this.helperSexpr(e,t,n):"simple"===i?(this.simpleSexpr(e),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("blockValue",e.path.original)):(this.ambiguousSexpr(e,t,n),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(e){var t=e.program&&this.compileProgram(e.program),n=this.setupFullMustacheParams(e,t,void 0),i=e.path;this.useDecorators=!0,this.opcode("registerDecorator",n.length,i.original)},PartialStatement:function(e){this.usePartial=!0;var t=e.program;t&&(t=this.compileProgram(e.program));var n=e.params;if(n.length>1)throw new u["default"]("Unsupported number of partial arguments: "+n.length,e);n.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):n.push({type:"PathExpression",parts:[],depth:0}));var i=e.name.original,r="SubExpression"===e.name.type;r&&this.accept(e.name),this.setupFullMustacheParams(e,t,void 0,!0);var o=e.indent||"";this.options.preventIndent&&o&&(this.opcode("appendContent",o),o=""),this.opcode("invokePartial",r,i,o),this.opcode("append")},PartialBlockStatement:function(e){this.PartialStatement(e)},MustacheStatement:function(e){this.SubExpression(e),e.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(e){this.DecoratorBlock(e)},ContentStatement:function(e){e.value&&this.opcode("appendContent",e.value)},CommentStatement:function(){},SubExpression:function(e){s(e);var t=this.classifySexpr(e);"simple"===t?this.simpleSexpr(e):"helper"===t?this.helperSexpr(e):this.ambiguousSexpr(e)},ambiguousSexpr:function(e,t,n){var i=e.path,r=i.parts[0],o=null!=t||null!=n;this.opcode("getContext",i.depth),this.opcode("pushProgram",t),this.opcode("pushProgram",n),i.strict=!0,this.accept(i),this.opcode("invokeAmbiguous",r,o)},simpleSexpr:function(e){var t=e.path;t.strict=!0,this.accept(t),this.opcode("resolvePossibleLambda")},helperSexpr:function(e,t,n){var i=this.setupFullMustacheParams(e,t,n),r=e.path,o=r.parts[0];if(this.options.knownHelpers[o])this.opcode("invokeKnownHelper",i.length,o);else{if(this.options.knownHelpersOnly)throw new u["default"]("You specified knownHelpersOnly, but used the unknown helper "+o,e);r.strict=!0,r.falsy=!0,this.accept(r),this.opcode("invokeHelper",i.length,r.original,d["default"].helpers.simpleId(r))}},PathExpression:function(e){this.addDepth(e.depth),this.opcode("getContext",e.depth);var t=e.parts[0],n=d["default"].helpers.scopedId(e),i=!e.depth&&!n&&this.blockParamIndex(t);i?this.opcode("lookupBlockParam",i,e.parts):t?e.data?(this.options.data=!0,this.opcode("lookupData",e.depth,e.parts,e.strict)):this.opcode("lookupOnContext",e.parts,e.falsy,e.strict,n):this.opcode("pushContext")},StringLiteral:function(e){this.opcode("pushString",e.value)},NumberLiteral:function(e){this.opcode("pushLiteral",e.value)},BooleanLiteral:function(e){this.opcode("pushLiteral",e.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(e){var t=e.pairs,n=0,i=t.length;for(this.opcode("pushHash");i>n;n++)this.pushParam(t[n].value);for(;n--;)this.opcode("assignToHash",t[n].key);this.opcode("popHash")},opcode:function(e){this.opcodes.push({opcode:e,args:f.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(e){e&&(this.useDepths=!0)},classifySexpr:function(e){var t=d["default"].helpers.simpleId(e.path),n=t&&!!this.blockParamIndex(e.path.parts[0]),i=!n&&d["default"].helpers.helperExpression(e),r=!n&&(i||t);if(r&&!i){var o=e.path.parts[0],a=this.options;a.knownHelpers[o]?i=!0:a.knownHelpersOnly&&(r=!1)}return i?"helper":r?"ambiguous":"simple"},pushParams:function(e){for(var t=0,n=e.length;n>t;t++)this.pushParam(e[t])},pushParam:function(e){var t=null!=e.value?e.value:e.original||"";if(this.stringParams)t.replace&&(t=t.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),e.depth&&this.addDepth(e.depth),this.opcode("getContext",e.depth||0),this.opcode("pushStringParam",t,e.type),"SubExpression"===e.type&&this.accept(e);else{if(this.trackIds){var n=void 0;if(!e.parts||d["default"].helpers.scopedId(e)||e.depth||(n=this.blockParamIndex(e.parts[0])),n){var i=e.parts.slice(1).join(".");this.opcode("pushId","BlockParam",n,i)}else t=e.original||t,t.replace&&(t=t.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",e.type,t)}this.accept(e)}},setupFullMustacheParams:function(e,t,n,i){var r=e.params;return this.pushParams(r),this.opcode("pushProgram",t),this.opcode("pushProgram",n),e.hash?this.accept(e.hash):this.opcode("emptyHash",i),r},blockParamIndex:function(e){for(var t=0,n=this.options.blockParams.length;n>t;t++){var i=this.options.blockParams[t],r=i&&p.indexOf(i,e);if(i&&r>=0)return[t,r]}}}},function(e,t,n){"use strict";function i(e){this.value=e}function r(){}function o(e,t,n,i){var r=t.popStack(),o=0,a=n.length;for(e&&a--;a>o;o++)r=t.nameLookup(r,n[o],i);return e?[t.aliasable("container.strict"),"(",r,", ",t.quotedString(n[o]),")"]:r}var a=n(1)["default"];t.__esModule=!0;var s=n(4),l=n(6),c=a(l),u=n(5),p=n(29),h=a(p);r.prototype={nameLookup:function(e,t){return r.isValidJavaScriptVariableName(t)?[e,".",t]:[e,"[",JSON.stringify(t),"]"]},depthedLookup:function(e){return[this.aliasable("container.lookup"),'(depths, "',e,'")']},compilerInfo:function(){var e=s.COMPILER_REVISION,t=s.REVISION_CHANGES[e];return[e,t]},appendToBuffer:function(e,t,n){return u.isArray(e)||(e=[e]),e=this.source.wrap(e,t),this.environment.isSimple?["return ",e,";"]:n?["buffer += ",e,";"]:(e.appendToBuffer=!0,e)},initializeBuffer:function(){return this.quotedString("")},compile:function(e,t,n,i){this.environment=e,this.options=t,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!i,this.name=this.environment.name,this.isChild=!!n,this.context=n||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(e,t),this.useDepths=this.useDepths||e.useDepths||e.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||e.useBlockParams;var r=e.opcodes,o=void 0,a=void 0,s=void 0,l=void 0;for(s=0,l=r.length;l>s;s++)o=r[s],this.source.currentLocation=o.loc,a=a||o.loc,this[o.opcode].apply(this,o.args);if(this.source.currentLocation=a,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new c["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),i?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var u=this.createFunctionContext(i);if(this.isChild)return u;var p={compiler:this.compilerInfo(),main:u};this.decorators&&(p.main_d=this.decorators,p.useDecorators=!0);var h=this.context,d=h.programs,f=h.decorators;for(s=0,l=d.length;l>s;s++)d[s]&&(p[s]=d[s],f[s]&&(p[s+"_d"]=f[s],p.useDecorators=!0));return this.environment.usePartial&&(p.usePartial=!0),this.options.data&&(p.useData=!0),this.useDepths&&(p.useDepths=!0),this.useBlockParams&&(p.useBlockParams=!0),this.options.compat&&(p.compat=!0),i?p.compilerOptions=this.options:(p.compiler=JSON.stringify(p.compiler),this.source.currentLocation={start:{line:1,column:0}},p=this.objectLiteral(p),t.srcName?(p=p.toStringWithSourceMap({file:t.destName}),p.map=p.map&&p.map.toString()):p=p.toString()),p},preamble:function(){this.lastContext=0,this.source=new h["default"](this.options.srcName),this.decorators=new h["default"](this.options.srcName)},createFunctionContext:function(e){var t="",n=this.stackVars.concat(this.registers.list);n.length>0&&(t+=", "+n.join(", "));var i=0;for(var r in this.aliases){var o=this.aliases[r];this.aliases.hasOwnProperty(r)&&o.children&&o.referenceCount>1&&(t+=", alias"+ ++i+"="+r,o.children[0]="alias"+i)}var a=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&a.push("blockParams"),this.useDepths&&a.push("depths");var s=this.mergeSource(t);return e?(a.push(s),Function.apply(this,a)):this.source.wrap(["function(",a.join(","),") {\n  ",s,"}"])},mergeSource:function(e){var t=this.environment.isSimple,n=!this.forceBuffer,i=void 0,r=void 0,o=void 0,a=void 0;return this.source.each(function(e){e.appendToBuffer?(o?e.prepend("  + "):o=e,a=e):(o&&(r?o.prepend("buffer += "):i=!0,a.add(";"),o=a=void 0),r=!0,t||(n=!1))}),n?o?(o.prepend("return "),a.add(";")):r||this.source.push('return "";'):(e+=", buffer = "+(i?"":this.initializeBuffer()),o?(o.prepend("return buffer + "),a.add(";")):this.source.push("return buffer;")),e&&this.source.prepend("var "+e.substring(2)+(i?"":";\n")),this.source.merge()},blockValue:function(e){var t=this.aliasable("helpers.blockHelperMissing"),n=[this.contextName(0)];this.setupHelperArgs(e,0,n);var i=this.popStack();n.splice(1,0,i),this.push(this.source.functionCall(t,"call",n))},ambiguousBlockValue:function(){var e=this.aliasable("helpers.blockHelperMissing"),t=[this.contextName(0)];this.setupHelperArgs("",0,t,!0),this.flushInline();var n=this.topStack();t.splice(1,0,n),this.pushSource(["if (!",this.lastHelper,") { ",n," = ",this.source.functionCall(e,"call",t),"}"])},appendContent:function(e){this.pendingContent?e=this.pendingContent+e:this.pendingLocation=this.source.currentLocation,this.pendingContent=e},append:function(){if(this.isInline())this.replaceStack(function(e){return[" != null ? ",e,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var e=this.popStack();this.pushSource(["if (",e," != null) { ",this.appendToBuffer(e,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(e){this.lastContext=e},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(e,t,n,i){var r=0;i||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(e[r++])),this.resolvePath("context",e,r,t,n)},lookupBlockParam:function(e,t){this.useBlockParams=!0,this.push(["blockParams[",e[0],"][",e[1],"]"]),this.resolvePath("context",t,1)},lookupData:function(e,t,n){e?this.pushStackLiteral("container.data(data, "+e+")"):this.pushStackLiteral("data"),this.resolvePath("data",t,0,!0,n)},resolvePath:function(e,t,n,i,r){var a=this;if(this.options.strict||this.options.assumeObjects)return void this.push(o(this.options.strict&&r,this,t,e));for(var s=t.length;s>n;n++)this.replaceStack(function(r){var o=a.nameLookup(r,t[n],e);return i?[" && ",o]:[" != null ? ",o," : ",r]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(e,t){this.pushContext(),this.pushString(t),"SubExpression"!==t&&("string"==typeof e?this.pushString(e):this.pushStackLiteral(e))},emptyHash:function(e){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(e?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var e=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(e.ids)),this.stringParams&&(this.push(this.objectLiteral(e.contexts)),this.push(this.objectLiteral(e.types))),this.push(this.objectLiteral(e.values))},pushString:function(e){this.pushStackLiteral(this.quotedString(e))},pushLiteral:function(e){this.pushStackLiteral(e)},pushProgram:function(e){null!=e?this.pushStackLiteral(this.programExpression(e)):this.pushStackLiteral(null)},registerDecorator:function(e,t){var n=this.nameLookup("decorators",t,"decorator"),i=this.setupHelperArgs(t,e);this.decorators.push(["fn = ",this.decorators.functionCall(n,"",["fn","props","container",i])," || fn;"])},invokeHelper:function(e,t,n){var i=this.popStack(),r=this.setupHelper(e,t),o=n?[r.name," || "]:"",a=["("].concat(o,i);this.options.strict||a.push(" || ",this.aliasable("helpers.helperMissing")),a.push(")"),this.push(this.source.functionCall(a,"call",r.callParams))},invokeKnownHelper:function(e,t){var n=this.setupHelper(e,t);this.push(this.source.functionCall(n.name,"call",n.callParams))},invokeAmbiguous:function(e,t){this.useRegister("helper");var n=this.popStack();this.emptyHash();var i=this.setupHelper(0,e,t),r=this.lastHelper=this.nameLookup("helpers",e,"helper"),o=["(","(helper = ",r," || ",n,")"];this.options.strict||(o[0]="(helper = ",o.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",o,i.paramsInit?["),(",i.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",i.callParams)," : helper))"])},invokePartial:function(e,t,n){var i=[],r=this.setupParams(t,1,i);e&&(t=this.popStack(),delete r.name),n&&(r.indent=JSON.stringify(n)),r.helpers="helpers",r.partials="partials",r.decorators="container.decorators",e?i.unshift(t):i.unshift(this.nameLookup("partials",t,"partial")),this.options.compat&&(r.depths="depths"),r=this.objectLiteral(r),i.push(r),this.push(this.source.functionCall("container.invokePartial","",i))},assignToHash:function(e){var t=this.popStack(),n=void 0,i=void 0,r=void 0;this.trackIds&&(r=this.popStack()),
-this.stringParams&&(i=this.popStack(),n=this.popStack());var o=this.hash;n&&(o.contexts[e]=n),i&&(o.types[e]=i),r&&(o.ids[e]=r),o.values[e]=t},pushId:function(e,t,n){"BlockParam"===e?this.pushStackLiteral("blockParams["+t[0]+"].path["+t[1]+"]"+(n?" + "+JSON.stringify("."+n):"")):"PathExpression"===e?this.pushString(t):"SubExpression"===e?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:r,compileChildren:function(e,t){for(var n=e.children,i=void 0,r=void 0,o=0,a=n.length;a>o;o++){i=n[o],r=new this.compiler;var s=this.matchExistingProgram(i);null==s?(this.context.programs.push(""),s=this.context.programs.length,i.index=s,i.name="program"+s,this.context.programs[s]=r.compile(i,t,this.context,!this.precompile),this.context.decorators[s]=r.decorators,this.context.environments[s]=i,this.useDepths=this.useDepths||r.useDepths,this.useBlockParams=this.useBlockParams||r.useBlockParams):(i.index=s,i.name="program"+s,this.useDepths=this.useDepths||i.useDepths,this.useBlockParams=this.useBlockParams||i.useBlockParams)}},matchExistingProgram:function(e){for(var t=0,n=this.context.environments.length;n>t;t++){var i=this.context.environments[t];if(i&&i.equals(e))return t}},programExpression:function(e){var t=this.environment.children[e],n=[t.index,"data",t.blockParams];return(this.useBlockParams||this.useDepths)&&n.push("blockParams"),this.useDepths&&n.push("depths"),"container.program("+n.join(", ")+")"},useRegister:function(e){this.registers[e]||(this.registers[e]=!0,this.registers.list.push(e))},push:function(e){return e instanceof i||(e=this.source.wrap(e)),this.inlineStack.push(e),e},pushStackLiteral:function(e){this.push(new i(e))},pushSource:function(e){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),e&&this.source.push(e)},replaceStack:function(e){var t=["("],n=void 0,r=void 0,o=void 0;if(!this.isInline())throw new c["default"]("replaceStack on non-inline");var a=this.popStack(!0);if(a instanceof i)n=[a.value],t=["(",n],o=!0;else{r=!0;var s=this.incrStack();t=["((",this.push(s)," = ",a,")"],n=this.topStack()}var l=e.call(this,n);o||this.popStack(),r&&this.stackSlot--,this.push(t.concat(l,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var e=this.inlineStack;this.inlineStack=[];for(var t=0,n=e.length;n>t;t++){var r=e[t];if(r instanceof i)this.compileStack.push(r);else{var o=this.incrStack();this.pushSource([o," = ",r,";"]),this.compileStack.push(o)}}},isInline:function(){return this.inlineStack.length},popStack:function(e){var t=this.isInline(),n=(t?this.inlineStack:this.compileStack).pop();if(!e&&n instanceof i)return n.value;if(!t){if(!this.stackSlot)throw new c["default"]("Invalid stack pop");this.stackSlot--}return n},topStack:function(){var e=this.isInline()?this.inlineStack:this.compileStack,t=e[e.length-1];return t instanceof i?t.value:t},contextName:function(e){return this.useDepths&&e?"depths["+e+"]":"depth"+e},quotedString:function(e){return this.source.quotedString(e)},objectLiteral:function(e){return this.source.objectLiteral(e)},aliasable:function(e){var t=this.aliases[e];return t?(t.referenceCount++,t):(t=this.aliases[e]=this.source.wrap(e),t.aliasable=!0,t.referenceCount=1,t)},setupHelper:function(e,t,n){var i=[],r=this.setupHelperArgs(t,e,i,n),o=this.nameLookup("helpers",t,"helper"),a=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : {}");return{params:i,paramsInit:r,name:o,callParams:[a].concat(i)}},setupParams:function(e,t,n){var i={},r=[],o=[],a=[],s=!n,l=void 0;s&&(n=[]),i.name=this.quotedString(e),i.hash=this.popStack(),this.trackIds&&(i.hashIds=this.popStack()),this.stringParams&&(i.hashTypes=this.popStack(),i.hashContexts=this.popStack());var c=this.popStack(),u=this.popStack();(u||c)&&(i.fn=u||"container.noop",i.inverse=c||"container.noop");for(var p=t;p--;)l=this.popStack(),n[p]=l,this.trackIds&&(a[p]=this.popStack()),this.stringParams&&(o[p]=this.popStack(),r[p]=this.popStack());return s&&(i.args=this.source.generateArray(n)),this.trackIds&&(i.ids=this.source.generateArray(a)),this.stringParams&&(i.types=this.source.generateArray(o),i.contexts=this.source.generateArray(r)),this.options.data&&(i.data="data"),this.useBlockParams&&(i.blockParams="blockParams"),i},setupHelperArgs:function(e,t,n,i){var r=this.setupParams(e,t,n);return r=this.objectLiteral(r),i?(this.useRegister("options"),n.push("options"),["options=",r]):n?(n.push(r),""):r}},function(){for(var e="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),t=r.RESERVED_WORDS={},n=0,i=e.length;i>n;n++)t[e[n]]=!0}(),r.isValidJavaScriptVariableName=function(e){return!r.RESERVED_WORDS[e]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e)},t["default"]=r,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t,n){if(o.isArray(e)){for(var i=[],r=0,a=e.length;a>r;r++)i.push(t.wrap(e[r],n));return i}return"boolean"==typeof e||"number"==typeof e?e+"":e}function r(e){this.srcFile=e,this.source=[]}t.__esModule=!0;var o=n(5),a=void 0;try{}catch(s){}a||(a=function(e,t,n,i){this.src="",i&&this.add(i)},a.prototype={add:function(e){o.isArray(e)&&(e=e.join("")),this.src+=e},prepend:function(e){o.isArray(e)&&(e=e.join("")),this.src=e+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),r.prototype={isEmpty:function(){return!this.source.length},prepend:function(e,t){this.source.unshift(this.wrap(e,t))},push:function(e,t){this.source.push(this.wrap(e,t))},merge:function(){var e=this.empty();return this.each(function(t){e.add(["  ",t,"\n"])}),e},each:function(e){for(var t=0,n=this.source.length;n>t;t++)e(this.source[t])},empty:function(){var e=this.currentLocation||{start:{}};return new a(e.start.line,e.start.column,this.srcFile)},wrap:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return e instanceof a?e:(e=i(e,this,t),new a(t.start.line,t.start.column,this.srcFile,e))},functionCall:function(e,t,n){return n=this.generateList(n),this.wrap([e,t?"."+t+"(":"(",n,")"])},quotedString:function(e){return'"'+(e+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(e){var t=[];for(var n in e)if(e.hasOwnProperty(n)){var r=i(e[n],this);"undefined"!==r&&t.push([this.quotedString(n),":",r])}var o=this.generateList(t);return o.prepend("{"),o.add("}"),o},generateList:function(e){for(var t=this.empty(),n=0,r=e.length;r>n;n++)n&&t.add(","),t.add(i(e[n],this));return t},generateArray:function(e){var t=this.generateList(e);return t.prepend("["),t.add("]"),t}},t["default"]=r,e.exports=t["default"]}])})},function(e,t,n){function i(){var e=a("#subscriber-box"),t=a("#subscriber-btn"),n=/^[.\-_a-zA-Z0-9]+@[\-_a-zA-Z0-9]+\.[a-zA-Z0-9]/,i={mail:"&#xe601;",tick:"&#xe605;"};e.focus(function(){a(this).val("").css("color",""),t.removeClass("done").html(i.mail)}),t.click(function(){var r=a.trim(e.val());if(""!==r&&n.test(r))try{a.ajax({url:"http://new.yohobuy.com/common/emailsubscriber",dataType:"jsonp",data:{email:r,tmp:Math.random(),uid:window.getUid()},success:function(n){1===n.data.result?(e.val("已订阅到:"+r),t.addClass("done").html(i.tick)):e.css("color","red")}})}catch(o){console.log(o.message)}else e.css("color","red")})}function r(){var e=a(".vote"),t=a("#feed-back-page"),n=e.children("li").length;t.on("click","span",function(){var t=a(this);t.hasClass("cur")||(t.siblings(".cur").removeClass("cur"),t.addClass("cur"),e.children().not(".hide").addClass("hide").end().eq(t.index()).removeClass("hide"))}),e.on("click",".feed-back-btn",function(){var i=a(this),r=i.closest("li"),o=r.index(),s=[],l=r.find(".feedback-answer").val(),c=r.find(".feedback-id").val(),u=r.find(".question-id").val();r.find(":checked").each(function(){s.push(a(this).val())}),a.ajax({url:"http://new.yohobuy.com/common/suggestfeedback",dataType:"jsonp",data:{feedback_id:c||0,question_id:u||0,answer:l||"",solution:s.join(",")},success:function(i){var a=o+1;if(1===~~i.data.result){if(o===n-1)return void alert("感谢您的参与!");r.addClass("hide"),e.children(":eq("+(o+1)+")").removeClass("hide"),t.children(".cur").removeClass("cur"),t.children(":eq("+a+")").addClass("cur")}}})})}function o(){a(window).height()>a(document).height()&&l.addClass("hide")}var a=n(2),s=n(6),l=a(".return-top");s(a("img.lazy")),l.click(function(){a("html,body").animate({scrollTop:0},500)}),a(window).scroll(function(){0===a(window).scrollTop()?l.addClass("hide"):l.removeClass("hide")}),l.hasClass("hide")&&a("img").load(o),i(),r(),window.rePosReturnTop=o},function(e,t,n){var i=n(2);n(7),e.exports=function(e,t){var n,r={effect:"fadeIn",effect_speed:10,placeholder:"data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==",skip_invisible:!1},o=arguments.length;!function(){switch(o){case 0:n=i("img.lazy");break;case 1:e instanceof i?n=e:(n=i("img.lazy"),i.extend(r,e));break;case 2:n=e,r=i.extend(r,t)}}(),n.lazyload(r)}},function(e,t,n){var i=n(2);!function(e,t,n,i){var r=e(t);e.fn.lazyload=function(o){function a(){var t=0;l.each(function(){var n=e(this);if(!c.skip_invisible||n.is(":visible"))if(e.abovethetop(this,c)||e.leftofbegin(this,c));else if(e.belowthefold(this,c)||e.rightoffold(this,c)){if(++t>c.failure_limit)return!1}else n.trigger("appear"),t=0})}var s,l=this,c={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:t,data_attribute:"original",skip_invisible:!0,appear:null,load:null,yasPath:"/web/",yasImgDomain:"http://analytics.yhurl.com/yas.gif",placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC",try_again_css:null};return o&&(i!==o.failurelimit&&(o.failure_limit=o.failurelimit,delete o.failurelimit),i!==o.effectspeed&&(o.effect_speed=o.effectspeed,delete o.effectspeed),e.extend(c,o)),s=c.container===i||c.container===t?r:e(c.container),0===c.event.indexOf("scroll")&&s.bind(c.event,function(){return a()}),this.each(function(){var t=this,n=e(t);t.loaded=!1,n.attr("src")!==i&&n.attr("src")!==!1&&""!==n.attr("src")||n.is("img")&&n.attr("src",c.placeholder),n.one("appear",function(){if(n.timerid&&clearTimeout(n.timerid),!this.loaded){if(c.appear){var i=l.length;c.appear.call(t,i,c)}e("<img />").bind("error abort",function(){n.attr("src",c.placeholder),o({info:"error"})}).bind("load",function(){if(!n.loadtimeout){clearTimeout(n.timerid),n.attr("pfmrpt");var i=n.attr("data-"+c.data_attribute);n.hide(),n.is("img")?n.attr("src",i):n.css("background-image","url('"+i+"')"),n[c.effect](c.effect_speed),t.loaded=!0;var r=e.grep(l,function(e){return!e.loaded});if(l=e(r),c.load){var o=l.length;c.load.call(t,o,c)}}}).attr("src",n.attr("data-"+c.data_attribute)),n.src=n.attr("data-"+c.data_attribute),n.attr("pfmrpt")&&_yas&&_yas.add;var r=function(e){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&e.info,n.attr("src",""),setTimeout(function(){n.attr("src",n.src)},50)},o=function(t){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&t.info;var i=n.width(),o=n.height();if(c.try_again_css)var a=e("<div class="+c.try_again_css+" style='width:"+i+"px;height:"+o+"px;'></div>");else var a=e("<div style='background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC) ;text-align: center;position:relative;width:"+i+"px;height:"+o+"px;background-size:100%;'>加载失败</div>");a.addClass(n.attr("class")),n.replaceWith(a),n.timerid=setTimeout(r,5e3)}}}),0!==c.event.indexOf("scroll")&&n.bind(c.event,function(){t.loaded||n.trigger("appear")})}),r.bind("resize",function(){a()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&r.bind("pageshow",function(t){t.originalEvent&&t.originalEvent.persisted&&l.each(function(){e(this).trigger("appear")})}),e(n).ready(function(){a()}),this},e.belowthefold=function(n,o){var a;return a=o.container===i||o.container===t?(t.innerHeight?t.innerHeight:r.height())+r.scrollTop():e(o.container).offset().top+e(o.container).height(),a<=e(n).offset().top-o.threshold},e.rightoffold=function(n,o){var a;return a=o.container===i||o.container===t?r.width()+r.scrollLeft():e(o.container).offset().left+e(o.container).width(),a<=e(n).offset().left-o.threshold},e.abovethetop=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollTop():e(o.container).offset().top,a>=e(n).offset().top+o.threshold+e(n).height()},e.leftofbegin=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollLeft():e(o.container).offset().left,a>=e(n).offset().left+o.threshold+e(n).width()},e.inviewport=function(t,n){return!(e.rightoffold(t,n)||e.leftofbegin(t,n)||e.belowthefold(t,n)||e.abovethetop(t,n))}}(i,window,document)},function(e,t,n){var i=n(2);window.jQuery=i,n(9),t.init=function(e){var t=i(e),n=t.unslider({autoplay:!0,delay:3e3,arrows:{},nav:!1,animate:"fade"}),r=t.find("li").length,o=r/3;t.find("li").length%3||(o-=1),t.find("li:nth-child(3n)").css("margin-right",0),n.on("unslider.change",function(e,t){t>o&&(n.unslider("animate:"+r),n.unslider("animate:first"))})}},function(e,t){!function(e){return e?(e.Unslider=function(t,n){var i=this;return i._="unslider",i.defaults={autoplay:!1,delay:3e3,speed:750,easing:"swing",keys:{prev:37,next:39},nav:!0,arrows:{prev:'<a class="'+i._+'-arrow prev">Prev</a>',next:'<a class="'+i._+'-arrow next">Next</a>'},animation:"horizontal",selectors:{container:"ul:first",slides:"li"},animateHeight:!1,activeClass:i._+"-active",swipe:!0,swipeThreshold:.2},i.$context=t,i.options={},i.$parent=null,i.$container=null,i.$slides=null,i.$nav=null,i.$arrows=[],i.total=0,i.current=0,i.prefix=i._+"-",i.eventSuffix="."+i.prefix+~~(2e3*Math.random()),i.interval=null,i.init=function(t){return i.options=e.extend({},i.defaults,t),i.$container=i.$context.find(i.options.selectors.container).addClass(i.prefix+"wrap"),i.$slides=i.$container.children(i.options.selectors.slides),i.setup(),e.each(["nav","arrows","keys","infinite"],function(t,n){i.options[n]&&i["init"+e._ucfirst(n)]()}),jQuery.event.special.swipe&&i.options.swipe&&i.initSwipe(),i.options.autoplay&&i.start(),i.calculateSlides(),i.$context.trigger(i._+".ready"),i.animate(i.options.index||i.current,"init")},i.setup=function(){i.$context.addClass(i.prefix+i.options.animation).wrap('<div class="'+i._+'" />'),i.$parent=i.$context.parent("."+i._);var e=i.$context.css("position");"static"===e&&i.$context.css("position","relative"),i.$context.css("overflow","hidden")},i.calculateSlides=function(){if(i.total=i.$slides.length,"fade"!==i.options.animation){var e="width";"vertical"===i.options.animation&&(e="height"),i.$container.css(e,100*i.total+"%").addClass(i.prefix+"carousel"),i.$slides.css(e,100/i.total+"%")}},i.start=function(){return i.interval=setTimeout(function(){i.next()},i.options.delay),i},i.stop=function(){return clearTimeout(i.interval),i},i.initNav=function(){var t=e('<nav class="'+i.prefix+'nav"><ol /></nav>');i.$slides.each(function(n){var r=this.getAttribute("data-nav")||n+1;e.isFunction(i.options.nav)&&(r=i.options.nav.call(i.$slides.eq(n),n,r)),t.children("ol").append('<li data-slide="'+n+'">'+r+"</li>")}),i.$nav=t.insertAfter(i.$context),i.$nav.find("li").on("click"+i.eventSuffix,function(){var t=e(this).addClass(i.options.activeClass);t.siblings().removeClass(i.options.activeClass),i.animate(t.attr("data-slide"))})},i.initArrows=function(){i.options.arrows===!0&&(i.options.arrows=i.defaults.arrows),e.each(i.options.arrows,function(t,n){i.$arrows.push(e(n).insertAfter(i.$context).on("click"+i.eventSuffix,i[t]))})},i.initKeys=function(){i.options.keys===!0&&(i.options.keys=i.defaults.keys),e(document).on("keyup"+i.eventSuffix,function(t){e.each(i.options.keys,function(n,r){t.which===r&&e.isFunction(i[n])&&i[n].call(i)})})},i.initSwipe=function(){var e=i.$slides.width();"fade"!==i.options.animation&&i.$container.on({movestart:function(e){return e.distX>e.distY&&e.distX<-e.distY||e.distX<e.distY&&e.distX>-e.distY?!!e.preventDefault():void i.$container.css("position","relative")},move:function(t){i.$container.css("left",-(100*i.current)+100*t.distX/e+"%")},moveend:function(t){Math.abs(t.distX)/e>i.options.swipeThreshold?i[t.distX<0?"next":"prev"]():i.$container.animate({left:-(100*i.current)+"%"},i.options.speed/2)}})},i.initInfinite=function(){var t=["first","last"];e.each(t,function(e,n){i.$slides.push.apply(i.$slides,i.$slides.filter(':not(".'+i._+'-clone")')[n]().clone().addClass(i._+"-clone")["insert"+(0===e?"After":"Before")](i.$slides[t[~~!e]]()))})},i.destroyArrows=function(){e.each(i.$arrows,function(e,t){t.remove()})},i.destroySwipe=function(){i.$container.off("movestart move moveend")},i.destroyKeys=function(){e(document).off("keyup"+i.eventSuffix)},i.setIndex=function(e){return 0>e&&(e=i.total-1),i.current=Math.min(Math.max(0,e),i.total-1),i.options.nav&&i.$nav.find('[data-slide="'+i.current+'"]')._active(i.options.activeClass),i.$slides.eq(i.current)._active(i.options.activeClass),i},i.animate=function(t,n){if("first"===t&&(t=0),"last"===t&&(t=i.total),isNaN(t))return i;i.options.autoplay&&i.stop().start(),i.setIndex(t),i.$context.trigger(i._+".change",[t,i.$slides.eq(t)]);var r="animate"+e._ucfirst(i.options.animation);return e.isFunction(i[r])&&i[r](i.current,n),i},i.next=function(){var e=i.current+1;return e>=i.total&&(e=0),i.animate(e,"next")},i.prev=function(){return i.animate(i.current-1,"prev")},i.animateHorizontal=function(e){var t="left";return"rtl"===i.$context.attr("dir")&&(t="right"),i.options.infinite&&i.$container.css("margin-"+t,"-100%"),i.slide(t,e)},i.animateVertical=function(e){return i.options.animateHeight=!0,i.options.infinite&&i.$container.css("margin-top",-i.$slides.outerHeight()),i.slide("top",e)},i.slide=function(e,t){if(i.options.animateHeight&&i._move(i.$context,{height:i.$slides.eq(t).outerHeight()},!1),i.options.infinite){var n;t===i.total-1&&(n=i.total-3,t=-1),t===i.total-2&&(n=0,t=i.total-2),"number"==typeof n&&(i.setIndex(n),i.$context.on(i._+".moved",function(){i.current===n&&i.$container.css(e,-(100*n)+"%").off(i._+".moved")}))}var r={};return r[e]=-(100*t)+"%",i._move(i.$container,r)},i.animateFade=function(e){var t=i.$slides.eq(e).addClass(i.options.activeClass);i._move(t.siblings().removeClass(i.options.activeClass),{opacity:0}),i._move(t,{opacity:1},!1)},i._move=function(e,t,n,r){return n!==!1&&(n=function(){i.$context.trigger(i._+".moved")}),e._move(t,r||i.options.speed,i.options.easing,n)},i.init(n)},e.fn._active=function(e){return this.addClass(e).siblings().removeClass(e)},e._ucfirst=function(e){return(e+"").toLowerCase().replace(/^./,function(e){return e.toUpperCase()})},e.fn._move=function(){return this.stop(!0,!0),e.fn[e.fn.velocity?"velocity":"animate"].apply(this,arguments)},void(e.fn.unslider=function(t){return this.each(function(){var n=e(this);if("string"==typeof t&&n.data("unslider")){t=t.split(":");var i=n.data("unslider")[t[0]];if(e.isFunction(i))return i.apply(n,t[1]?t[1].split(","):null)}return n.data("unslider",new e.Unslider(n,t))})})):console.warn("Unslider needs jQuery")}(window.jQuery)},function(e,t,n){var i=n(2),r=n(6);!function(){var e=function(e,t){this.$element=i(e),this.options=i.extend({},i.fn.slider.defaults,t),this.bigItem=this.$element.find(".slide-wrapper").find("li"),this.smallItem=null,this.len=this.bigItem.size(),this.index=0,this.timer=null,this.init()};e.prototype={init:function(){if(this.$element){if(this.len<=1)return void r(this.$element.find("img.lazy"));this.options.pagination?this.smallItem=i(this.options.pagination).find("li"):this._createPage(),this.options.orient&&this._createOrient(),this._slideShow(),this._bindEvent(),this._autoplay()}},_createOrient:function(){var e='<div class="slide-switch"><a class="prev" href="javascript:;"><span class="iconfont">&#xe609;</span></a><a class="next" href="javascript:;"><span class="iconfont">&#xe608;</span></a></div>';this.$element.find(".slide-switch").length>0||this.$element.append(e)},_createPage:function(){var e='<div class="slide-pagination"><div class="slide-pagination-inner"><div class="slide-shade"></div><div class="slide-pagination-last">',t=0;if(!(this.len<=1)){for(t=0;t<this.len;t++)e+="<span></span>";e+="</div></div></div>",this.$element.append(i(e)),this.smallItem=this.$element.find(".slide-pagination-inner span")}},_bindEvent:function(){var e=this;this.$element.find(".slide-switch").on("click",".next",function(){e._nextSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}).on("click",".prev",function(){e._prevSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}),this.smallItem.on("mouseenter",function(){e.index=i(this).index(),clearInterval(e.timer),e._slideShow()}).on("mouseleave",function(){e._autoplay()}),this.$element.on("mouseenter",function(){i(this).find(".slide-switch").addClass("show")}).on("mouseleave",function(){i(this).find(".slide-switch").removeClass("show")})},_nextSlide:function(){this.index===this.len-1?this.index=0:this.index++,this._slideShow()},_prevSlide:function(){0===this.index?this.index=this.len-1:this.index--,this._slideShow()},_slideShow:function(){var e=this.bigItem.eq(this.index).find("img.lazy");e.attr("src")!==e.data("original")&&(r(e,{event:"sporty"}),e.trigger("sporty")),this.smallItem.eq(this.index).addClass("focus").siblings().removeClass("focus"),this.bigItem.eq(this.index).show().stop().animate({opacity:1},function(){i(this).find(".slide-tips > p").removeClass("hide")}).siblings().stop().animate({opacity:0},function(){i(this).hide().find(".slide-tips > p").addClass("hide")})},_autoplay:function(){var e=this;clearInterval(this.timer),this.timer=setInterval(function(){e._nextSlide()},this.options.time)}},i.fn.slider=function(t){return this.each(function(){var n=i(this),r=n.data("Slider"),o="object"==typeof t&&t;r||n.data("Slider",r=new e(this,o)),"string"==typeof t&&r[t]()})},i.fn.slider.Constructor=e,i.fn.slider.defaults={time:5e3,orient:!0,pagination:null}}(i)},function(e,t,n){var i=n(2),r=n(4),o=n(6);!function(e){var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.logoBrand.defaults,n),this.init()};t.prototype={init:function(){this.$element.addClass("logos-"+this.options.showNum),this._sendRequest()},_createHelper:function(){var e=this.options.showNum;r.registerHelper("brandList",function(t,n){var i="<ul>",r=0,o=null,a=0;if(t.length%e!==0)for(a=e-t.length%e,r=0;a>r;r++)t.push({href:"javascript:;",img:""});for(r=0;r<t.length;r++)o=n.fn(t[r]),i=r%e===5||5===r?i+'<li class="logo-brand-switch" data-page="'+Math.floor(r/e)+'"><a class="prev iconfont" href="javascript:;">&#xe60f;</a><a class="next iconfont" href="javascript:;">&#xe60e;</a></li><li data-page="'+Math.floor(r/e)+'">'+o+"</li>":0!==r&&r%e===0?i+'<li class="brand-more" data-page="'+Math.floor(r/(e+1))+'"><a href="javascript:;" target="_blank">MORE ></a></li><li data-page="'+Math.floor(r/e)+'">'+o+"</li>":i+'<li data-page="'+Math.floor(r/e)+'">'+o+"</li>";return i+'<li class="brand-more" data-page="'+Math.floor(r/(e+1))+'"><a href="javascript:;" target="_blank">MORE ></a></li></ul>'})},_sendRequest:function(){var t=this;e.ajax({type:"GET",url:t.options.url,dataType:"json",success:function(e){var n,i;e&&0!==e.length&&(t._createHelper(),i='{{#brandList logoBrand}}<a href="{{href}}" target="_blank"><img class="lazy" data-original="{{img}}" alt=""></a>{{/brandList}}',n=r.compile(i),t.$element.html(n(e)),t.$element.find(".brand-more a").attr("href",e.moreBrand),o(t.$element.find("img.lazy")),t._bindEvent())}})},_brandShow:function(t,n){var i=this;o(e("li[data-page="+n+"]").find("img.lazy").trigger("appear")),i.$element.find("li[data-page="+t+"]").find("img").fadeOut("normal",function(){i.$element.find("li").hide(),i.$element.find("li[data-page="+n+"]").show().find("img").fadeIn()})},_bindEvent:function(){var t=this;t.$element.on("click",".next",function(){var n=e(this).parent().data("page"),i=0,r=Math.ceil(t.$element.find("li").size()/(t.options.showNum+2))-1;i=n===r?0:n+1,t._brandShow(n,i)}),t.$element.on("click",".prev",function(){var n=e(this).parent().data("page"),i=0,r=Math.ceil(t.$element.find("li").size()/(t.options.showNum+2))-1;i=0===n?r:n-1,t._brandShow(n,i)})}},e.fn.logoBrand=function(n){return this.each(function(){var i=e(this),r=i.data("LogoBrand"),o="object"==typeof n&&n;r||i.data("LogoBrand",r=new t(this,o)),"string"==typeof n&&r[n]()})},e.fn.logoBrand.Constructor=t,e.fn.logoBrand.defaults={showNum:16,url:"/boys/getBrand"}}(i)},function(e,t,n){function i(e){l.each(function(t){a(this).css("zIndex",t),e>=t?a(this).stop().animate({left:t*u},400):a(this).stop().animate({left:e*u+c+u*(t-e-1)},400)})}var r,o=n(13),a=n(2),s=a(".slide-accordion"),l=s.find("li"),c=l.width(),u=1150===parseInt(a(".home-page").width(),10)?125:107;i(0),r=new o({length:5,loop:!1,auto:!1,timeout:2,index:0}),r.on("change",function(e){i(e.to)}),l.mouseover(function(){r.go(a(this).index())}),r.init()},function(e,t,n){var i=n(14),r=function(e){this.__lastTime=null,this.__isStop=!1,e=i.extend(this.defaults,e),r.superclass.constructor.call(this,e)};i.inherit(r,i.assembly),r.prototype.oninit=function(){var e=this,t=e.options;return t.auto&&e.play(),e.go(t.index),this},r.prototype.go=function(e,t){var n,i,r,o,a,s,l,c,u=this,p=u.options;u.__lastTime&&(clearTimeout(u.__lastTime),u.__lastTime=null),t="undefined"==typeof t?p.index:t,n=e===t?0:e>t?1:-1,i=p.loop,o=p.length-1,a=e,e=i?e>o?e-o-1:0>e?e+o+1:e:e>o?o:0>e?0:e,r=p.index=e,s={from:t,to:e,originalto:a,direction:n};for(l in u.registerEvent)if(u.registerEvent[l].length>0)for(c in u.registerEvent[l])u.registerEvent[l].hasOwnProperty(c)&&u.registerEvent[l][c](s);r!==o||e?!u.__isStop&&p.auto&&u.play():u.__lastTime&&clearTimeout(u.__lastTime)},r.prototype.play=function(){var e=this,t=e.options;return e.__lastTime=setTimeout(function(){e.next()},1e3*t.timeout),this},r.prototype.next=function(){var e=this,t=e.options,n=t.index,i=n+t.step;e.go(i,n)},r.prototype.prev=function(){var e=this,t=e.options,n=t.index,i=n-t.step;e.go(i,n)},r.prototype.pause=function(){var e=this;e.__lastTime&&clearTimeout(e.__lastTime),e.__isStop=!0},r.prototype.resume=function(){var e=this;e.__isStop=!1,e.play()},r.prototype.defaults={index:0,timeout:5,step:1,per:1,auto:!1,loop:!1},e.exports=r},function(e,t){var n,i={"[object Array]":"array","[object Boolean]":"boolean","[object Date]":"date","[object Function]":"function","[object Number]":"number","[object Object]":"object","[object RegExp]":"regexp","[object String]":"string"},r={__Index:0,list:[],get:function(e){return void 0===e?this.list:this.list[e]},fn:function(){},inherit:function(e,t){var n=r.fn;n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e,e.superclass=t.prototype,e.prototype.constructor===Object.prototype.constructor&&(e.prototype.constructor=t)},extend:function(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},copy:function(e,t,n){var i,o,a;if("object"!=typeof t)return t;if(i=t.valueOf(),t!==i)return new t.constructor(i);if(t instanceof t.constructor&&t.constructor!==Object){o=e?new e:r.clone(t.constructor.prototype);for(a in t)(e||t.hasOwnProperty(a))&&(o[a]=t[a])}else{o={};for(a in t)o.hasOwnProperty(a)&&(o[a]=t[a])}if(n)for(a in n)o.hasOwnProperty(a)&&(o[a]=n[a]);return o},clone:function(e){return r.__cloneFunc.prototype=e,new r.__cloneFunc},__cloneFunc:function(){},delegate:function(e,t){var n;return t=t||window,arguments.length>2?(n=Array.prototype.slice.call(arguments,2),function(){return e.apply(t,n)}):function(){return e.call(t)}},dom:function(e,t){var n,i,r=e,o={wrap:r},a=r[0].getElementsByTagName("*"),s=a.length;for(i=0;s>i;i++)n=a[i].className,n.indexOf(t)>-1&&(n=n.split(t)[1]),n&&(o[n]=r.find(a[i]));return o},template:function(){var e,t,n,i,o=arguments;if(o.length>0&&r.isString(o[0]))if(e=o[0],2===o.length&&r.isObject(o[1]))for(t in o[1])void 0!==o[1][t]&&(n=new RegExp("({"+t+"})","g"),e=e.replace(n,o[1][t]));else for(i=1;i<o.length;i++)void 0!==o[i]&&(n=new RegExp("({["+(i-1)+"]})","g"),e=e.replace(n,o[i]));return e},__type:function(e){return null==e?String(e):i[Object.prototype.toString.call(e)]||"object"},isObject:function(e){return this.isFunction(e)||!(!e||"object"!=typeof e)},isFunction:function(e){return"function"===this.__type(e)},isArray:Array.isArray||function(e){return"array"===this.__type(e)},isNum:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},isString:function(e){return"string"===this.__type(e)},each:function(e,t,n){var i,o;if(r.isArray(e))for(i=0,o=e.length;o>i&&t.call(e[i],i,e[i],n)!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i],n)===!1)break},funManager:{__loadList:{},__loadFun:function(e,t,n){e.methord&&r.isFunction(e.methord())&&(n=n||window,e.methord()(e,function(){t()},n))},load:function(e,t,n,i){i=i||0,e[i]&&r.funManager.__loadFun(e[i],function(){r.funManager.load(e,t,n,i+1)},n),t(i,n)},get:function(e){return this.__loadList[e]}},log:function(e){var t=window.console||{log:function(){}};t.log(e)},Event:{mousewheel:function(e){var t=e.originalEvent,n=t.detail?-1*t.detail:t.wheelDelta/40,i=0>n?-1:1;return{direction:i,unit:n}},__:function(e,t,n,i){var r;for(r in e)if(window[e[r].validator]){t[e[r].validator](e[r].prefix+n,i,!1);break}},add:function(e,t,n){var i=[{validator:"addEventListener",prefix:""},{validator:"attachEvent",prefix:"on"}];this.__(i,e,t,n)},remove:function(e,t,n){var i=[{validator:"removeEventListener",prefix:""},{validator:"detachEvent",prefix:"on"}];this.__(i,e,t,n)}},getUid:function(e){return r.template("me-{0}{1}-{2}",e,(new Date).getTime(),r.__Index++)},Browser:{isTouch:function(){var e=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture;return!!("ontouchstart"in window||e||window.DocumentTouch)},Prefix:function(){var e,t=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"],n=document.createElement("div");for(e in t)if(void 0!==n.style[t[e]])return r.template("-{0}-",t[e].replace("Perspective","").toLowerCase())},parseURL:function(e){var t,n,i,r,o,a=document.createElement("a");return a.href=e,{source:e,protocol:a.protocol.replace(":",""),host:a.hostname,port:a.port,query:a.search,params:function(){for(t={},n=a.search.replace(/^\?/,"").split("&"),i=n.length,r=0,o;i>r;r++)n[r]&&(o=n[r].split("="),t[o[0]]=o[1]);return t}(),file:(a.pathname.match(/\/([^\/?#]+)$/i)||[null,""])[1],hash:a.hash.replace("#",""),path:a.pathname.replace(/^([^\/])/,"/$1"),relative:(a.href.match(/tps?:\/\/[^\/]+(.+)/)||[null,""])[1],segments:a.pathname.replace(/^\//,"").split("/")}}},Array:{indexOf:function(e,t){var n;for(n=0;n<e.length;n++)if(this[n]===t)return n;return-1},remove:function(e,t){var n=this.indexOf(e,t);return n>-1&&e.splice(n,1),e}}};n=function(e){this.initialized=!1,this.registerEvent={before:[],change:[],after:[]},this.options=e,this.init(e)},n.output=function(){r.log(r.list)},n.prototype.oninit=r.fn,n.prototype.init=function(e){this.initialized=!0,this.__Uid=r.getUid("me"),this.oninit(e),r.list[this.__Uid]=this},n.prototype.destory=function(){this.initialized=!1,delete r.list[this.__Uid]},n.prototype.getUid=function(){return this.__Uid},n.prototype.getOptions=function(){return this.options},n.prototype.config=function(){if(!(arguments.length>0))return this.options;if("string"==typeof arguments[0]){
-if(!(arguments.length>1))return this.options[name];this.options[arguments[0]]=arguments[1]}},n.prototype.on=function(e,t){var n=this,i=n.registerEvent[e];return i&&i.push(t),i},n.prototype.off=function(e,t){var n=this,i=n.registerEvent[e],o=[];r.each(i,function(e,n){n===t&&o.push(e)}),r.each(o.reverse(),function(e,t){i.splice(t,1)})},r.assembly=n,e.exports=r},function(e,t,n){function i(e){var t={index:0,isload:!0,isrun:!0,offset:{height:null,width:null}};return this.registerEvent={before:[],change:[],after:[]},this.options=r.extend(!0,{},t,e),this}var r=n(2),o=n(6),a=n(4);i.prototype.on=function(e,t){var n=this,i=n.registerEvent[e];return i&&i.push(t),i},i.prototype.exect=function(e,t){var n,i=this;if(i.registerEvent[e]&&i.registerEvent[e].length>0)for(n in i.registerEvent[e])i.registerEvent[e].hasOwnProperty(n)&&i.registerEvent[e][n](t)},i.prototype.init=function(){function e(){n.isrun&&n.isload&&t.__directionCalculation()&&(n.isload=!1,n.index++,t.exect("after",n)),t.exect("change",n)}var t=this,n=this.options;t.exect("before",n),r(window).scroll(e)},i.prototype.emit=function(){var e=this.options;e.isload=!0},i.prototype.stop=function(){var e=this.options;e.isrun=!1,e.isload=!1},i.prototype.__directionCalculation=function(){var e=this.options;return!!(e.offset.height&&e.offset.height()>0&&r(window).scrollTop()+r(window).height()>=e.offset.height())},e.exports=function(e){var t,n=r("#newarrivals .goods-container"),s=r(".loading a"),l=new i({index:1,isload:!1,offset:{height:function(){return parseFloat(n.offset().top)+parseFloat(n.height())-200}}}),c=e.url,u=e.count,p=e.rows;e.pageIndex=0,delete e.url,delete e.count,delete e.rows,t=function(e,t,i){var c={type:"POST",url:e,success:function(e){var r,c,u,p=e.code;200===p?(c=e.goods.length%i,u=e.goods.length-c-1,e.goods.splice(u,c),r=a.compile(l.tpl),n.append(r(e.goods)),t.pageIndex=t.pageIndex+e.goods.length,o(n.find("img.lazy")),l.emit()):(l.stop(),s.html("查看更多"))},error:function(){l.stop(),s.html("网络断开连接了~")}};c.data=t,r.ajax(c)},l.on("after",function(n){e.pageCount=u*p[1],t(c,e)}),l.on("before",function(n){l.tpl="{{#each this}}",l.tpl+='<div class="good-info imgopacity" data-skn="{{skn}}">',l.tpl+='    <div class="tag-container clearfix">',l.tpl+="        {{# tags}}",l.tpl+="            {{# isNew}}",l.tpl+='                <span class="good-tag new-tag">NEW</span>',l.tpl+="            {{/ isNew}}",l.tpl+="            {{# isReNew}}",l.tpl+='                <span class="good-tag renew-tag">再到着</span>',l.tpl+="            {{/ isReNew}}",l.tpl+="            {{# isSale}}",l.tpl+='                <span class="good-tag sale-tag">SALE</span>',l.tpl+="            {{/ isSale}}",l.tpl+="            {{# isNewFestival}}",l.tpl+='                <span class="good-tag new-festival-tag">新品节</span>',l.tpl+="            {{/ isNewFestival}}",l.tpl+="            {{# isLimit}}",l.tpl+='                <span class="good-tag limit-tag">限量商品</span>',l.tpl+="            {{/ isLimit}}",l.tpl+="            {{# isYearEndPromotion}}",l.tpl+='                <span class="good-tag yep-tag">年终大促</span>',l.tpl+="            {{/ isYearEndPromotion}}",l.tpl+="            {{# isYearMidPromotion}}",l.tpl+='                <span class="good-tag ymp-tag">年中热促</span>',l.tpl+="            {{/ isYearMidPromotion}}",l.tpl+="        {{/ tags}}",l.tpl+="    </div>",l.tpl+='    <div class="good-detail-img">',l.tpl+='        <a class="good-thumb" href="{{url}}" target= "_blank">',l.tpl+='            <img class="lazy" data-original="{{thumb}}">',l.tpl+="        </a>",l.tpl+="        {{# isFew}}",l.tpl+='            <p class="few-tag">即将售罄</p>',l.tpl+="        {{/ isFew}}",l.tpl+="        {{#if showColBtn}}",l.tpl+='            <span class="col-btn iconfont{{#if coled}} coled{{/if}}">&#xe616;</span>',l.tpl+="        {{/if}}",l.tpl+="    </div>",l.tpl+='    <div class="good-detail-text">',l.tpl+='        <a href="{{url}}" target= "_blank">{{name}}</a>',l.tpl+='        <p class="price">',l.tpl+='            <span class="sale-price{{#unless marketPrice}}prime-cost{{/unless}}">',l.tpl+="                ¥{{salePrice}}",l.tpl+="            </span>",l.tpl+="            {{# marketPrice}}",l.tpl+='                <span class="market-price">¥{{.}}</span>',l.tpl+="            {{/ marketPrice}}",l.tpl+="        </p>",l.tpl+="    </div>",l.tpl+="</div>",l.tpl+="{{/each}}",e.pageCount=u*p[0],t(c,e,e.count)}),l.init()}}]);
\ No newline at end of file
diff --git a/public/dist/yohobuy-node/0.0.1/index.css b/public/dist/yohobuy-node/0.0.1/index.css
deleted file mode 100644
index 3549969..0000000
--- a/public/dist/yohobuy-node/0.0.1/index.css
+++ /dev/null
@@ -1 +0,0 @@
-a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,td,th{text-align:left;font-weight:400;vertical-align:middle}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}.clearfix:after{content:'';display:block;clear:both}body{font-family:arial,Microsoft YaHei}@font-face{font-family:iconfont;src:url(../assets/font/iconfont.eot?v15551efcef6);src:url(../assets/font/iconfont.eot?v15551efcef6#iefix) format('embedded-opentype'),url(../assets/font/iconfont.woff?v15551f02c0f) format('woff'),url(../assets/font/iconfont.ttf?v15551efd145) format('truetype'),url(../assets/font/iconfont.svg?v15551efcfe6#iconfont) format('svg')}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;text-decoration:none;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale}.min-screen .center-content{width:990px}.left,.pull-left{float:left}.pull-right,.right{float:right}.center{text-align:center}.hide{display:none!important}a:focus,input,textarea{outline:none}a{text-decoration:none;color:#000}.body-mask{position:absolute;z-index:8;background:#000;opacity:.2;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";top:0;left:0}.yoho-page .floor-header{position:relative;margin:80px 0 40px}.yoho-page .floor-header .floor-title{margin:0 auto;width:298px;height:31px;line-height:31px;border:1px solid #000;font-size:16px;text-align:center}.yoho-page .floor-header .header-navs{position:absolute;padding:10px 0;top:0;right:0;font-size:14px}.yoho-page .floor-header .header-navs li{float:left;padding:1px 15px;border-left:1px solid #ccc}.yoho-page .floor-header .header-navs li a{color:#333}.yoho-page .floor-header .header-navs li:first-child{border-left:none}.yoho-page .floor-header .header-navs li:hover{text-decoration:underline}.home-page .flash-sale .flash-sale-list{margin-left:-10px}.home-page .flash-sale .flash-sale-list a{height:340px;width:560px}.home-page .flash-sale .flash-sale-list li{margin:10px}.home-page .flash-sale .flash-sale-list .flash-sale-banner{position:relative;height:260px}.home-page .flash-sale .flash-sale-list .flash-sale-bottom{height:78px;position:relative;border:1px solid #000;border-top-style:none}.home-page .flash-sale .flash-sale-list p.flash-sale-count{position:absolute;left:50px;top:20px}.home-page .flash-sale .flash-sale-list p.flash-sale-name{position:absolute;left:120px;top:20px}.home-page .flash-sale .flash-sale-list p.flash-sale-timer{position:absolute;left:50px;top:50px}.home-page .flash-sale .flash-sale-list .flash-sale-logo{position:absolute;right:50px;width:100px;height:80px}.home-page .flash-sale .flash-sale-list .flash-sale-logo img{width:100px;height:50px;margin-top:15px}.yoho-header .tool-wrapper{width:100%;height:32px;line-height:32px;font-size:12px;background-color:#f4f4f4}.yoho-header .tool-wrapper .yoho-group-map{padding:0 5px}.yoho-header .tool-wrapper .yoho-group-map .yoho-group-list{position:absolute;display:none;width:170px;top:32px;margin-left:-5px;background-color:#f4f4f4;padding:20px 0 20px 20px;z-index:10}.yoho-header .tool-wrapper .yoho-group-map li a{color:#9196a0;font-size:14px}.yoho-header .tool-wrapper .yoho-group-map li:hover a{color:#000}.yoho-header .tool-wrapper .yoho-group-map:hover{background-color:#dcdcdc}.yoho-header .tool-wrapper .yoho-group-map:hover .yoho-group-list{display:block}.yoho-header .tool-wrapper .yoho-buy-tools li{float:left;padding-right:10px}.yoho-header .tool-wrapper .yoho-buy-tools li span{display:inline-block;vertical-align:middle;line-height:30px}.yoho-header .tool-wrapper .yoho-buy-tools li .hi{vertical-align:top}.yoho-header .tool-wrapper .yoho-buy-tools li a{color:#8e8e8e}.yoho-header .tool-wrapper .yoho-buy-tools .nick-name{color:#000}.yoho-header .tool-wrapper .yoho-buy-tools .tag-seprate{width:0;margin-top:11px;margin-right:12px;height:14px;float:left;border-left:1px solid #dcdcdc}.yoho-header .tool-wrapper .simple-user-center{top:32px;margin-left:-110px;width:300px;position:absolute;background-color:#f8f8f8;z-index:8;display:none}.yoho-header .tool-wrapper .simple-user-center .account-info-header{margin:17px auto 0;width:257px;border-bottom:1px solid #dcdcdc;text-align:center;padding-bottom:15px}.yoho-header .tool-wrapper .simple-user-center .user-img{width:63px;height:63px;margin:0 auto;border-radius:50%;overflow:hidden;background:url(../assets/img/layout/default-thumb.png?v15551f02c43) 50%;filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale')";background-size:100% 100%;-moz-background-size:100% 100%}.yoho-header .tool-wrapper .simple-user-center .user-name{margin-top:14px;line-height:25px}.yoho-header .tool-wrapper .simple-user-center .user-level{color:#000;height:20px;line-height:20px;font-size:18px}.yoho-header .tool-wrapper .simple-user-center .user-level span{color:#8cc4f9}.yoho-header .tool-wrapper .simple-user-center .level-detail{font-size:14px;line-height:14px;padding-top:10px;padding-left:20px}.yoho-header .tool-wrapper .simple-user-center .level-view-bar{width:150px;height:14px;margin-right:5px;text-align:left;background-color:#e2e2e2;display:inline-block;vertical-align:middle;overflow:hidden}.yoho-header .tool-wrapper .simple-user-center .level-view-bar .text-span{font-size:16px;line-height:16px;padding-left:3px;position:absolute}.yoho-header .tool-wrapper .simple-user-center .level-view-bar .integrate{height:14px;background-color:#ceae64;padding-left:5px}.yoho-header .tool-wrapper .simple-user-center .account-info-content{padding:20px 30px 0;border-bottom:1px solid #dcdcdc}.yoho-header .tool-wrapper .simple-user-center .account-info-content li{float:none;font-size:16px}.yoho-header .tool-wrapper .simple-user-center .account-info-content a{font-size:14px;color:#000}.yoho-header .tool-wrapper .simple-user-center .account-info-footer{height:51px;line-height:51px;text-align:center}.yoho-header .tool-wrapper .simple-user-center .account-info-footer a{font-size:14px;color:#000}.yoho-header .tool-wrapper .myyoho:hover{background-color:#dcdcdc}.yoho-header .tool-wrapper .myyoho:hover .simple-user-center{display:block}.yoho-header .tool-wrapper .download-app-box{position:absolute;top:32px;margin-left:-100px;width:231px;height:290px;background-color:#f8f8f8;z-index:10;display:none}.yoho-header .tool-wrapper .download-app-box .qr-img{position:relative;background-image:url(../assets/img/layout/qr.png?v15551f02c70);background-repeat:no-repeat;background-size:100% 100%;margin:32px auto 15px;width:143px;height:147px}.yoho-header .tool-wrapper .download-app-box .qr-words{height:25px;line-height:25px;font-size:16px;text-align:center}.yoho-header .tool-wrapper .download-app-box .qr-more{margin-top:6px;line-height:25px;font-size:14px;text-align:center}.yoho-header .tool-wrapper .phoneapp:hover{background-color:#dcdcdc}.yoho-header .tool-wrapper .phoneapp:hover .download-app-box{display:block}.yoho-header .tool-wrapper .icon-hamburger{background-image:url(../assets/img/sprite.layout.png?v15551f03761);background-position:0 -12px;width:16px;height:12px;display:inline-block;vertical-align:middle}.yoho-header .tool-wrapper .icon-bottomarrow{background-position:-30px -13px;height:5px}.yoho-header .tool-wrapper .icon-bottomarrow,.yoho-header .tool-wrapper .icon-papers{background-image:url(../assets/img/sprite.layout.png?v15551f03761);width:10px;margin-top:-2px}.yoho-header .tool-wrapper .icon-papers{background-position:-18px 0;height:14px}.yoho-header .tool-wrapper .icon-heart{background-position:-30px 0;width:12px;height:11px}.yoho-header .tool-wrapper .icon-heart,.yoho-header .tool-wrapper .icon-mail{background-image:url(../assets/img/sprite.layout.png?v15551f03761);margin-top:-2px}.yoho-header .tool-wrapper .icon-mail{background-position:0 0;width:16px;height:10px}.yoho-header .tool-wrapper .icon-phone{background-image:url(../assets/img/sprite.layout.png?v15551f03761);background-position:0 -25px;width:8px;height:14px;margin-top:-2px}.yoho-header .head-wrapper{width:100%}.yoho-header .head-wrapper .main-nav-list{display:inline-block;vertical-align:top;padding-top:45px}.yoho-header .head-wrapper .main-nav-list li{float:left;padding:8px 23px 5px}.yoho-header .head-wrapper .main-nav-list li a{font-size:12px;line-height:14px}.yoho-header .head-wrapper .main-nav-list li .name-cn a{font-size:16px}.yoho-header .head-wrapper .main-nav-list .cure{color:#fff;background-color:#3a3a3a}.yoho-header .head-wrapper .main-nav-list .cure a{color:#fff}.yoho-header .head-wrapper .main-nav-list .menu-ico{width:80px;height:32px;display:block}.yoho-header .head-wrapper .outlets-logo{background:url(../assets/img/layout/outlets.png?v15551f02c69) no-repeat 50%;width:200px;height:34px;left:42%;margin-top:28px;position:absolute;display:none}.yoho-header .head-wrapper .main-logo{background:url(../assets/img/layout/logo-en.png?v15551f02c59) no-repeat 50%;width:182px;height:53px;left:42%;margin-top:22px;position:absolute;animation:logoflip 20s infinite;-moz-animation:logoflip 20s infinite;-webkit-animation:logoflip 20s infinite;-o-animation:logoflip 20s infinite}.yoho-header .head-wrapper .main-logo .main-link{display:block;width:100%;height:100%}.yoho-header .head-wrapper .main-logo.logo-cn{background:url(../assets/img/layout/logo-cn.png?v15551f02c57) no-repeat 50%}.yoho-header .head-wrapper .func-area{float:right;width:378px;padding-right:18px;margin-top:45px;margin-bottom:12px}.yoho-header .head-wrapper .search-2016{width:320px;height:28px;background-color:#3a3a3a;border:1px solid #3a3a3a;display:inline-block;overflow:hidden}.yoho-header .head-wrapper .search-2016 input{width:240px;height:100%;border:none;background:#fff;box-sizing:border-box;padding:7px 0 9px 10px}.yoho-header .head-wrapper .search-2016 .search-btn{background:url(../assets/img/layout/search.png?v15551f02c73) no-repeat 50%;width:80px;height:28px;float:right;border:none;cursor:pointer}.yoho-header .head-wrapper .search-suggest{position:absolute;width:320px;border:1px solid #000;margin-top:29px;padding-top:20px;background-color:#fff;display:none;z-index:10}.yoho-header .head-wrapper .search-suggest .action,.yoho-header .head-wrapper .search-suggest li:hover{background-color:#eee}.yoho-header .head-wrapper .search-suggest a{display:block;padding:5px;height:25px;line-height:25px;font-size:12px}.yoho-header .head-wrapper .search-suggest .valuenum{float:right}.yoho-header .head-wrapper .go-cart{width:30px;height:30px;float:right;cursor:pointer;position:relative}.yoho-header .head-wrapper .go-cart .iconfont{font-size:26px;color:#3a3a3a}.yoho-header .head-wrapper .go-cart .goods-num-tip{position:absolute;background:url(../assets/img/layout/ic-information.png?v15551f02c4d) no-repeat;width:27px;height:20px;top:-10px;right:-15px;color:#fff;text-align:center;line-height:20px;font-size:12px}.yoho-header .head-wrapper .mini-cart-wrapper{position:absolute;top:30px;right:-14px;width:378px;background:#f8f8f8 url(../assets/img/layout/empty_car.png?v15551f02c47) no-repeat 106px 132px;z-index:10;display:none}.yoho-header .head-wrapper .mini-cart-wrapper .empty-cart{padding:280px 0 200px;text-align:center}.yoho-header .head-wrapper .mini-cart-wrapper .loading-cart{padding:200px 0;text-align:center;background:#f8f8f8 reslove('layout/loading.gif') no-repeat center 170px}.yoho-header .head-wrapper .mini-cart-wrapper .rich-cart{background:#f8f8f8}.yoho-header .head-wrapper .mini-cart-wrapper .goods-list{padding-top:20px;margin-bottom:15px;max-height:444px;overflow-x:hidden}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item{padding:0 0 18px 18px}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item>div{font-size:14px;display:inline-block;vertical-align:top}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item p{margin-bottom:12px}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item .goods-img{width:60px}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item .goods-info{width:170px;color:#b0b0b0}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item .goods-price{min-width:90px;text-align:right}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item .title{width:170px;height:14px;font-size:14px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.yoho-header .head-wrapper .mini-cart-wrapper .goods-item .title>a{color:#666}.yoho-header .head-wrapper .mini-cart-wrapper .activity-item{font-size:14px;margin-bottom:8px;padding-left:18px;line-height:18px}.yoho-header .head-wrapper .mini-cart-wrapper .activity-item label{width:60px;height:18px;background-color:#3a3a3a;color:#fff;text-align:center;margin-right:13px;vertical-align:top;display:inline-block}.yoho-header .head-wrapper .mini-cart-wrapper .activity-item h3{width:250px;color:#3a3a3a;font-size:12px;word-break:break-all;display:inline-block}.yoho-header .head-wrapper .mini-cart-wrapper .go-full-cart{padding:0 18px}.yoho-header .head-wrapper .mini-cart-wrapper .go-full-cart>div{height:61px;line-height:61px;border-top:1px solid #dcdcdc;text-align:center}.yoho-header .head-wrapper .on-hover .mini-cart-wrapper{display:block}.yoho-header .nav-wrapper{height:40px;width:100%;background-color:#3a3a3a;position:relative}.yoho-header .nav-wrapper .sub-nav-list li{line-height:40px;padding-right:46px;box-sizing:border-box;margin-right:36px;display:inline-block}.yoho-header .nav-wrapper .sub-nav-list .newlogo{display:block;width:26px;height:12px;background-image:url(../assets/img/layout/new.png?v15551f02c67);background-repeat:no-repeat;position:absolute;right:-29px;top:-6px}.yoho-header .nav-wrapper .sub-nav-list a{color:#fff;font-size:14px;line-height:14px;display:inline-block;position:relative}.yoho-header .nav-wrapper .sub-nav-list li:hover a{padding-bottom:3px;border-bottom:2px solid #fff}.yoho-header .nav-wrapper .third-nav-wrapper{width:100%;height:410px;box-sizing:border-box;position:absolute;left:0;top:38px;display:none;padding:30px 0;background-color:#f8f8f8;z-index:9}.yoho-header .nav-wrapper .third-nav-wrapper a{font-size:14px;border-bottom:none!important}.yoho-header .nav-wrapper .third-nav-wrapper dl{float:left;width:278px;height:352px;box-sizing:border-box;border-left:1px solid #ccc;padding:0 50px}.yoho-header .nav-wrapper .third-nav-wrapper dl:first-child{width:228px;border-left:0;padding-left:0}.yoho-header .nav-wrapper .third-nav-wrapper dt{width:180px;padding-bottom:10px;border-bottom:1px solid #000;line-height:18px;margin-bottom:20px}.yoho-header .nav-wrapper .third-nav-wrapper dt a{color:#000}.yoho-header .nav-wrapper .third-nav-wrapper dd{line-height:14px;height:14px;margin-bottom:24px}.yoho-header .nav-wrapper .third-nav-wrapper dd a{color:#a1a1a1}.yoho-header .nav-wrapper .third-nav-wrapper dd a:hover{text-decoration:underline}.yoho-header .nav-wrapper .third-nav-wrapper .hot{color:#e01}.yoho-header .nav-wrapper .show-detail{box-sizing:border-box;padding-left:19px;padding-right:19px;width:337px;height:250px;float:right}.yoho-header .nav-wrapper .show-detail .title{width:100%;margin-top:40px;text-align:center;font-size:14px;color:#000;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.yoho-header.girls .search-2016{background-color:#ff88ae;border-color:#ff88ae}.yoho-header.girls .cure,.yoho-header.girls .nav-wrapper{background-color:#ff88ae!important}.yoho-header.girls .go-cart .iconfont{color:#ff88ae}.yoho-header.kids .search-2016{background-color:#7bd3f9;border-color:#7bd3f9}.yoho-header.kids .cure,.yoho-header.kids .nav-wrapper{background-color:#7bd3f9!important}.yoho-header.kids .go-cart .iconfont{color:#7bd3f9}.yoho-header.lifestyle .search-2016{background-color:#5e4b3c;border-color:#5e4b3c}.yoho-header.lifestyle .cure,.yoho-header.lifestyle .nav-wrapper{background-color:#5e4b3c!important}.yoho-header.lifestyle .go-cart .iconfont{color:#5e4b3c}.yoho-header.outlets .head-wrapper{background:#3a3a3a}.yoho-header.outlets .nav-wrapper{background:#e6e6e6}.yoho-header.outlets .main-logo,.yoho-header.outlets .main-nav-list,.yoho-header.outlets .search-2016{display:none}.yoho-header.outlets .outlets-logo{display:block}.yoho-header.outlets .go-cart .iconfont{color:#fff}.yoho-header.outlets .sub-nav-list{padding-left:15%}.yoho-header.outlets .sub-nav-list a{color:#222}.yoho-header.outlets .sub-nav-list li{padding:0;margin:0;width:14%;text-align:center}.yoho-header.outlets .sub-nav-list li:hover a{border-color:#555}.min-screen .head-wrapper .main-nav-list>li{padding:8px 14px 5px}.min-screen .nav-wrapper .sub-nav-list>li{margin-right:15px}.min-screen .nav-wrapper .show-detail{width:190px;padding-right:0}.min-screen .head-wrapper .main-logo{left:39%}.min-screen .show-detail img{width:174px;height:155px}.yoho-footer{font-size:12px}.yoho-footer *{box-sizing:border-box}.yoho-footer .red{color:#e01}.yoho-footer .rgb6{color:#666}.yoho-footer .rgb9{color:#999}.yoho-footer .rgbf{color:#fff}.yoho-footer .index-foot{background:#eee;padding:20px 0}.yoho-footer .index-foot dd{float:left;width:370px;margin-right:20px;overflow:hidden}.yoho-footer .index-foot dd ul{margin-top:18px;padding-top:18px}.yoho-footer .index-foot dd.last{margin-right:0}.yoho-footer .foot-panel{background:#fff;padding:20px}.yoho-footer .title{position:relative;text-align:center}.yoho-footer .title-line{border-bottom:1px solid #ddd;position:absolute;top:9px;width:100%;left:0}.yoho-footer .text{position:absolute;width:100%;text-align:center;left:0;top:0}.yoho-footer .text span{background:#fff;font-size:18px;line-height:18px;padding:0 10px}.yoho-footer .item-nav{padding-top:20px}.yoho-footer .item-nav span{color:#fff;padding:0 3px;cursor:pointer;font-size:20px}.yoho-footer .item-nav .cur{color:#999}.yoho-footer .vote{line-height:24px}.yoho-footer .vote input{margin:0 5px 0 1px}.yoho-footer .vote .button{height:24px;line-height:24px;width:55px;font-size:12px;margin-top:11px;margin-right:10px;background:#222;color:#fff;display:inline-block;text-align:center;cursor:pointer}.yoho-footer .vote p{height:24px;overflow:hidden}.yoho-footer .vote textarea{width:98%;height:68px;vertical-align:middle;margin:5px 0 0;resize:none}.yoho-footer .vote-item p{float:left;width:50%}.yoho-footer .mobile{margin-right:-10px}.yoho-footer .mobile li{margin-right:10px;float:left}.yoho-footer .mobile img{display:block;width:103px;height:131px}.yoho-footer .index-banner{width:100%;margin-top:20px}.yoho-footer .two-dim{margin-right:-10px;overflow:hidden}.yoho-footer .two-dim li{border:1px solid #ddd;padding:7px;margin-right:10px}.yoho-footer .two-dim li a{display:block}.yoho-footer .two-dim li p{text-align:center;margin-top:13px;margin-bottom:3px;line-height:12px}.yoho-footer .dim-img{display:block;width:87px;height:87px}.yoho-footer .dim-hover{position:absolute}.yoho-footer .dim-hover img{width:38px;height:38px}.yoho-footer .dim-active .dim-img{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.yoho-footer .dim-active .dim-hover{display:none}.yoho-footer .footerbottom{width:100%}.yoho-footer .promise{padding:20px 0 10px;background:#000}.yoho-footer .promise .left{margin-right:60px;line-height:30px;font-size:12px;font-weight:700}.yoho-footer .promise .left .iconfont{display:inline-block;font-weight:400;font-size:22px;vertical-align:middle;margin-right:5px}.yoho-footer .promise .left:first-child .iconfont{font-size:27px}.yoho-footer .subscribe{border:1px solid #262626;width:240px}.yoho-footer .subscribe input{width:180px;height:32px;padding:0 10px;line-height:32px;border:none;margin:0;background:#000}.yoho-footer .subscribe a{display:block;float:right;margin-right:20px;font-size:20px;line-height:28px;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"}.yoho-footer .footer-help{background:#000;font-size:12px;overflow:hidden}.yoho-footer .footer-help>div{padding:15px 0;border-top:1px solid #262626}.yoho-footer .footer-help ul{width:110%}.yoho-footer .footer-help p{line-height:24px}.yoho-footer .footer-help p span{color:#fff}.yoho-footer .footer-help p a{color:#666}.yoho-footer .footer-help p a:hover{text-decoration:underline}.yoho-footer .footer-help li{width:180px}.yoho-footer .footer-help .screen{border-top:1px solid #262626;padding:15px 0}.yoho-footer .footer-link{background:#000;padding:10px 0 30px;font-size:12px}.yoho-footer .footer-link .right-flag{margin-top:3px}.yoho-footer .footer-link .right-flag a{margin-right:5px}.yoho-footer .footer-link .about-us{line-height:20px;color:#666;margin-left:10px}.yoho-footer .footer-link .about-us a{color:#666}.yoho-footer .footer-link .about-us span{padding:0 10px}.yoho-footer .return-top{position:fixed;width:60px;height:60px;left:50%;margin-left:595px;text-align:center;line-height:50px;color:#fff;background:#000;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";bottom:20px;cursor:pointer;z-index:4}.yoho-footer .return-top .iconfont{font-size:34px}.yoho-footer .return-top:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.yoho-footer .return-top.min{left:100%;right:20px;margin-left:auto}.min-screen .yoho-footer .index-foot dd{width:316px}.min-screen .yoho-footer .two-dim{margin-top:26px;margin-bottom:10px;overflow:hidden}.min-screen .yoho-footer .dim-img{width:69px;height:69px}.min-screen .yoho-footer .mobile{margin-top:26px;padding-bottom:15px}.min-screen .yoho-footer .mobile img{width:85px;height:108px}.min-screen .yoho-footer .promise .left{margin-right:45px}.min-screen .yoho-footer .subscribe{width:200px}.min-screen .yoho-footer .subscribe input{width:140px}.min-screen .yoho-footer .footer-help li{width:150px}.unslider{overflow:auto;margin:0;padding:0}.unslider-wrap{position:relative}.unslider-wrap.unslider-carousel>li{float:left}.unslider-vertical>ul{height:100%}.unslider-vertical li{float:none;width:100%}.unslider-fade{position:relative}.unslider-fade .unslider-wrap li{position:absolute;left:0;top:0;right:0;z-index:5}.unslider-fade .unslider-wrap li.unslider-active{z-index:6}.unslider li,.unslider ol,.unslider ul{list-style:none;margin:0;padding:0;border:none}.unslider-arrow{position:absolute;left:20px;z-index:2;cursor:pointer}.unslider-arrow.next{left:auto;right:20px}.wrapper-404{padding:80px 0}.wrapper-404 .main-error{width:560px;height:240px;margin:0 auto}.wrapper-404 .main-error .text1{font-size:24px;margin-top:60px;line-height:24px}.wrapper-404 .main-error .text2{margin:18px 0 10px;line-height:12px}.wrapper-404 .main-error .text3 a{text-decoration:none;color:#666;font-size:12px;outline:none}.slider{position:relative;height:327px;width:100%;overflow:hidden}.slider img{max-width:100%;max-height:100%}.slide-pagination{position:absolute;left:0;right:0;bottom:12px;text-align:center}.slide-pagination-inner{display:inline-block;position:relative;padding:7px;vertical-align:middle}.slide-shade{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";border-radius:13px}.slide-pagination-last span{display:block;float:left;position:relative;margin:0 7px;width:12px;height:12px;background:#fff;cursor:pointer;opacity:.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";border-radius:6px;z-index:2}.slide-pagination-last span.focus{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.slide-switch{display:none}.slide-switch a{display:block;position:absolute;top:50%;margin:-30px 0 0;width:60px;height:60px;line-height:56px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.slide-switch a .iconfont{font-size:32px;color:#59585a}.slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.slide-switch .prev{left:0}.slide-switch .next{right:0}.slide-switch.show{display:block}.yoho-dialog{position:fixed;padding:20px;top:50%;left:50%;min-height:130px;min-width:350px;background:#f8f8f8;z-index:11;border:5px solid rgba(0,0,0,.38)}.yoho-dialog .close{position:absolute;top:5px;right:5px;cursor:pointer}.yoho-dialog .btns,.yoho-dialog .content{text-align:center}.yoho-dialog .alert-sure,.yoho-dialog .confirm-sure{background:#000;color:#fff}.yoho-dialog .btn{display:inline-block;width:56px;height:26px;line-height:26px;text-align:center;border:1px solid #000;cursor:pointer;margin-left:10px}.yoho-dialog .btn:first-child{margin-left:0}.yoho-dialog.alert-dialog .content,.yoho-dialog.confirm-dialog .content{width:350px;height:auto;min-height:90px;overflow:hidden;line-height:20px;position:relative;padding-top:40px;padding-bottom:20px}.yoho-dialog.alert-dialog .content p,.yoho-dialog.confirm-dialog .content p{position:absolute;left:0;bottom:25px;width:100%;color:#444;line-height:25px}.yoho-dialog.alert-dialog .content div,.yoho-dialog.confirm-dialog .content div{position:absolute;top:0;left:100px;padding-top:30px;font-size:22px;font-weight:700;width:150px;height:30px;line-height:30px;margin:0 auto}.yoho-dialog.alert-dialog .content div span,.yoho-dialog.confirm-dialog .content div span{background:url(/cart/del.png);float:left;width:27px;height:30px}.yoho-dialog.subcontent-dialog{padding:30px 0}.yoho-dialog.subcontent-dialog .content{font-weight:700;margin:0 auto 30px}.yoho-dialog.subcontent-dialog .sub-content{text-align:center;font-size:12px;color:#555;margin-left:5px;margin-bottom:5px}.yoho-dialog.subcontent-dialog .btn{margin-top:25px;width:100px;font-size:13px;margin-left:0;margin-right:0}.yoho-dialog.subcontent-dialog .btn.black{background-color:#000;color:#fff}.home-page{width:1150px;margin:10px auto 0}.home-page .slide-container{position:absolute;left:0;right:0;height:450px}.home-page .slide-thumb-container{height:510px}.home-page .slide-wrapper{position:relative;height:450px;overflow:hidden}.home-page .slide-wrapper ul{position:relative;height:100%}.home-page .slide-wrapper li{display:none;position:absolute;top:0;right:0;width:100%;height:100%}.home-page .slide-wrapper li a{display:block;height:100%;width:1150px;margin:0 auto}.home-page .slide-wrapper li img{width:100%;height:100%}.home-page .slide-wrapper:hover .slide-switch.show,.home-page .slide-wrapper li:first-child{display:block}.home-page .slide-container-placeholder{height:450px;width:100%}.home-page .slide-thumb-container-placeholder{height:510px}.home-page .slide-switch{display:block}.home-page .slide-switch a{position:absolute;top:50%;margin:-30px 0 0;width:60px;height:60px;line-height:56px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.home-page .slide-switch a .iconfont{font-size:32px;color:#59585a}.home-page .slide-switch a.prev{left:50%;margin-left:-575px}.home-page .slide-switch a.next{right:50%;margin-right:-575px}.home-page .slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.home-page .thumb-pagination{width:1148px;margin:6px auto 0;padding-left:2px}.home-page .thumb-pagination li{position:relative;float:left;margin-left:6px;width:138px;height:54px}.home-page .thumb-pagination li a{position:absolute;left:0;right:0;bottom:0;top:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.home-page .thumb-pagination li img{width:100%;height:100%}.home-page .thumb-pagination li:first-child{margin:0}.home-page .thumb-pagination li.focus a{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.home-page .slide-pagination{font-size:0}.home-page .slide-pagination .slide-shade{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";border-radius:13px}.home-page .slide-pagination span{position:relative;display:inline-block;margin:0 7px;width:12px;height:12px;background:#fff;cursor:pointer;opacity:.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";border-radius:6px;z-index:2}.home-page .slide-pagination span.focus{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.home-page .debris-slider{height:510px;width:100%}.home-page .debris-slider .col{float:left}.home-page .debris-slider .col a{display:block}.home-page .debris-slider .left-col a,.home-page .debris-slider .right-col a{margin-bottom:10px}.home-page .debris-slider .left-col a:last-child,.home-page .debris-slider .right-col a:last-child{margin-bottom:0}.home-page .debris-slider .left-col img,.home-page .debris-slider .right-col img{height:100%;width:100%}.home-page .debris-slider .left-col{margin-right:10px}.home-page .debris-slider .left-col a{width:280px;height:120px}.home-page .debris-slider .left-col a:first-child{height:250px}.home-page .debris-slider .center-col{position:relative;width:570px;height:100%;margin-right:10px;font-size:0}.home-page .debris-slider .center-col .slide-wrapper{height:100%}.home-page .debris-slider .center-col .slide-wrapper a{width:100%}.home-page .debris-slider .center-col .slide-switch a.prev{left:0;margin-left:0}.home-page .debris-slider .center-col .slide-switch a.next{right:0;margin-right:0}.home-page .debris-slider .center-col img{max-width:100%;max-height:100%}.home-page .debris-slider .center-col:hover .slide-switch.show{display:block}.home-page .debris-slider .right-col a{width:280px;height:120px}.home-page .debris-slider .right-col a:first-child{height:380px;margin-bottom:11px}.home-page .new-report img{display:block;width:100%;height:100%}.home-page .new-report .report-list{float:left;width:868px}.home-page .new-report .report-list li{float:left;margin:0 8px 8px 0;width:185px;height:248px;overflow:hidden}.home-page .new-report .report-list li:first-child{margin-right:7px;width:282px;height:504px}.home-page .new-report .last-item{float:left;width:282px;height:504px;overflow:hidden}.home-page .preference-brand{overflow:hidden}.home-page .preference-brand-list{margin-top:8px;width:1158px}.home-page .preference-brand-item{float:left;margin-right:8px;margin-bottom:8px}.home-page .preference-brand-item a{display:table-cell;width:185px;height:86px;text-align:center;vertical-align:middle}.home-page .preference-brand-item img{display:block;max-width:100%;max-height:100%;margin:0 auto}.home-page .preference-more{float:left;width:185px;height:86px;line-height:100px;text-align:center;color:#000;font-size:16px}.home-page .img-slider-wrapper{position:relative;width:100%;height:558px;background:#8ae6e0;overflow:hidden}.home-page .img-slider-wrapper .img-brand-switch{display:block}.home-page .img-slider-wrapper .img-brand-switch a{position:absolute;top:50%;font-size:36px;color:#fff}.home-page .img-slider-wrapper .img-brand-switch a.next{right:30px}.home-page .img-slider-wrapper .img-brand-switch a.prev{left:30px}.home-page .img-container-landscape{box-sizing:border-box;margin:86px auto 0;width:982px;height:433px;overflow:hidden}.home-page .img-container-landscape .img-list{width:1000px;height:100%}.home-page .img-container-landscape .img-item{float:left;box-sizing:border-box;width:320px!important;height:100%;margin-right:10px}.home-page .img-container-landscape .img-item img{width:100%;height:100%}.home-page .img-brand{position:relative;width:100%;height:175px;overflow:hidden}.home-page .img-brand ul{width:1158px}.home-page .img-brand li{float:left;margin-right:8px;width:378px!important;height:175px;line-height:175px;overflow:hidden;font-size:0;text-align:center}.home-page .img-brand li img{max-width:100%;max-height:100%;vertical-align:middle}.home-page .img-brand .img-brand-switch{display:none}.home-page .img-brand .img-brand-switch a{position:absolute;top:50%;margin:-20px 0 0;width:40px;height:40px;line-height:40px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.home-page .img-brand .img-brand-switch a.prev{left:0}.home-page .img-brand .img-brand-switch a.next{right:0}.home-page .img-brand .img-brand-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.home-page .img-brand:hover .img-brand-switch{display:block}.home-page .logo-brand{width:100%;height:282px;overflow:hidden}.home-page .logo-brand ul{width:1158px}.home-page .logo-brand li{float:left;margin:8px 8px 0 0;width:185px;height:86px;line-height:86px;font-size:0;text-align:center}.home-page .logo-brand li img{max-width:100%;max-height:100%;vertical-align:middle}.home-page .logo-brand .logo-brand-switch{position:relative;background:url(../../../img/index/logo-brand-line.png?v15529250dc2) no-repeat 50%;line-height:normal}.home-page .logo-brand .logo-brand-switch .iconfont{position:absolute;left:50%;font-size:32px}.home-page .logo-brand .logo-brand-switch .iconfont.prev{top:10px;margin-left:-48px}.home-page .logo-brand .logo-brand-switch .iconfont.next{bottom:12px;margin-left:20px}.home-page .logo-brand .brand-more{font-size:16px}.home-page .logo-brand .brand-more:hover{text-decoration:underline}.home-page .logo-brand.logos-10{height:188px}.home-page .categorys-list ul{width:1158px}.home-page .categorys-list li{float:left;margin:0 8px 8px 0;width:185px;height:248px}.home-page .categorys-list li img{display:block;width:100%;height:100%}.home-page .categorys-list li.cate-item0{width:185px;height:504px}.home-page .categorys-list li.cate-item1{width:377px;height:504px}.home-page .floor-header{position:relative;margin:80px 0 40px}.home-page .floor-header .floor-title{margin:0 auto;width:298px;height:31px;line-height:31px;border:1px solid #000;font-size:16px;text-align:center}.home-page .floor-header .header-navs{position:absolute;padding:10px 0;top:0;right:0;font-size:14px}.home-page .floor-header .header-navs li{float:left;padding:1px 15px;border-left:1px solid #ccc}.home-page .floor-header .header-navs li a{color:#333}.home-page .floor-header .header-navs li:first-child{border-left:none}.home-page .floor-header .header-navs li:hover{text-decoration:underline}.g-list li{float:left}.g-list li a{position:relative;display:block;overflow:hidden}.g-list li a img,.g-mask{width:100%;height:100%}.g-mask{display:block;position:absolute;z-index:1;background:#000;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";overflow:hidden;transition:opacity .6s}.g-title{display:block;text-align:center;font-weight:700;line-height:1.5;width:100%;margin-top:14px}.home-page .tpl-recommend{width:100%;position:relative}.home-page .tpl-recommend a{display:block}.home-page .tpl-recommend a img{display:block;width:100%;height:100%}.home-page .tpl-recommend .tpl-body{margin-bottom:8px}.home-page .tpl-recommend .tpl-nav{float:left;overflow:hidden}.home-page .tpl-recommend .tpl-nav .tpl-keywords{margin-bottom:8px}.home-page .tpl-recommend .tpl-nav .tpl-category{padding:10px 0;background-color:#f8f8f8;overflow:hidden}.home-page .tpl-recommend .tpl-nav .tpl-category a{float:left;width:50%;text-align:center;color:#000;overflow:hidden}.home-page .tpl-recommend .tpl-brands{float:left;overflow:hidden;margin-left:8px}.home-page .tpl-recommend .tpl-brands li{margin-top:8px}.home-page .tpl-recommend .tpl-types{float:left;overflow:hidden;margin-top:-8px;width:579px}.home-page .tpl-recommend .tpl-types li{float:left;margin-left:8px;margin-top:8px}.home-page .tpl-recommend .tpl-types li a{width:185px;height:248px}.home-page .tpl-recommend .tpl-products{overflow:hidden;margin-left:-10px}.home-page .tpl-recommend .tpl-products li{float:left;margin-left:10px}.home-page .tpl-recommend .tpl-products li a{width:222px;height:298px}.home-page .tpl-recommend .tpl-nav{width:185px}.home-page .tpl-recommend .tpl-nav .keywords0,.home-page .tpl-recommend .tpl-nav .keywords1,.home-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:10px;height:76px}.home-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:0}.home-page .tpl-recommend .tpl-nav .tpl-category{height:228px}.home-page .tpl-recommend .tpl-nav .tpl-category a{height:38px;line-height:38px;font-size:14px}.home-page .tpl-recommend .tpl-brands{width:378px;height:512px}.home-page .tpl-recommend .tpl-brands li a{height:248px}.min-screen .home-page .tpl-recommend .tpl-nav{width:158px}.min-screen .home-page .tpl-recommend .tpl-nav .keywords0,.min-screen .home-page .tpl-recommend .tpl-nav .keywords1,.min-screen .home-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:8px;height:65px}.min-screen .home-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:0}.min-screen .home-page .tpl-recommend .tpl-nav .tpl-category{height:192px}.min-screen .home-page .tpl-recommend .tpl-nav .tpl-category a{height:32px;line-height:32px;font-size:12px}.min-screen .home-page .tpl-recommend .tpl-nav .tpl-category a:hover{text-decoration:underline}.min-screen .home-page .tpl-recommend .tpl-brands{width:324px;height:432px}.min-screen .home-page .tpl-recommend .tpl-brands li a{height:212px}.min-screen .home-page .tpl-recommend .tpl-types{width:498px}.min-screen .home-page .tpl-recommend .tpl-types li a{width:158px;height:212px}.min-screen .home-page .tpl-recommend .tpl-products li a{width:190px;height:254px}.home-page .singlehot{overflow:hidden;margin-left:-8px}.home-page .singlehot li{margin-left:8px;margin-bottom:8px}.home-page .singlehot li a{width:185px;height:248px}.home-page .singlehot .impo1,.home-page .singlehot .impo9{width:378px}.home-page .floor-ad a{display:block;height:129px}.home-page .floor-ad a img{display:block;width:100%;height:100%}.home-page .goods-container{margin-right:-10px;width:inherit;padding-top:0}.home-page .goods-container .good-info{margin-bottom:0;width:280px;height:485px}.home-page .goods-container .good-detail-img{height:374px}.home-page .goods-container .good-detail-text{text-align:center}.home-page .adbanner{margin-top:12px}.home-page .adbanner a{height:150px}.min-screen .home-page .singlehot li a{width:158px;height:212px}.min-screen .home-page .singlehot .impo1,.min-screen .home-page .singlehot .impo9{width:323px}.min-screen .home-page .goods-container .good-info{width:240px;height:412px}.min-screen .home-page .goods-container .good-info .good-detail-img{height:320px}.home-page .commodity .commodity-list{margin-left:-10px}.home-page .commodity .commodity-list a{height:465px;width:280px}.home-page .commodity .commodity-list li{margin-left:10px}.home-page .commodity .commodity-list i{position:absolute;bottom:0;width:100%;height:20px;background:#ffac5b;color:#fff;line-height:20px;text-align:center;font-size:12px}.home-page .commodity .commodity-list i.top{position:absolute;top:10px;right:10px;background-color:#ff575c;color:#fff;border-radius:30px;z-index:2;height:60px;width:60px;line-height:60px;font-size:20px}.home-page .commodity .commodity-list .commodity-img{position:relative;height:374px}.home-page .commodity .commodity-list p.commodity-name{font-size:12px;color:#000;text-align:center;margin-top:14px;line-height:18px}.home-page .commodity .commodity-list p.commodity-price{position:relative;margin:3px 0 0;text-align:center;line-height:20px;color:#000}.home-page .commodity .commodity-list p.commodity-price span{display:inline-block;font-size:12px}.home-page .commodity .commodity-brands{margin-left:-8px}.home-page .commodity .commodity-brands a{float:left;margin-left:8px;display:block;width:185px;height:86px}.home-page .commodity .commodity-brands a img{width:100%;height:100%}.home-page .commodity .loading{position:relative;width:100%;text-align:center;padding-top:40px}.home-page .commodity .loading a{display:block;height:35px;width:120px;margin:0 auto 40px;background-color:#000;color:#fff;font-size:14px;line-height:35px;text-align:center}.min-screen .home-page .commodity .commodity-list a{height:400px;width:240px}.min-screen .home-page .commodity .commodity-list .commodity-img{height:320px}.min-screen .home-page .commodity .commodity-list i.top{height:52px;width:52px;line-height:52px;font-size:14px}.min-screen .home-page .commodity .commodity-brands a{width:158px;height:74px}.home-page .slide-accordion{overflow:hidden;position:relative;height:400px}.home-page .slide-accordion a{position:relative;display:block}.home-page .slide-accordion a img{display:block;width:100%;height:100%}.home-page .slide-accordion ul{position:absolute;left:-5px}.home-page .slide-accordion li{position:absolute;border-left:5px solid #fff}.home-page .slide-accordion li a{width:650px;height:400px}.home-page .slide-accordion .g-mask{opacity:.2;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"}.home-page .slide-accordion .g-mask:hover{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.min-screen .home-page .slide-accordion{height:342px}.min-screen .home-page .slide-accordion li a{width:558px;height:342px}.boys .tpl-nav .keywords0{margin-bottom:10px!important;height:152px!important}.boys .tpl-nav .keywords1{height:86px!important}.boys .tpl-nav .tpl-category a{height:38px!important;line-height:38px!important;font-size:14px!important}.boys .tpl-brands{margin-top:-8px!important}.boys .goods-container .good-info,.lifestyle .goods-container .good-info{width:222px!important;height:408px!important}.boys .goods-container .good-info .good-detail-img,.lifestyle .goods-container .good-info .good-detail-img{height:298px!important}.min-screen .boys .tpl-nav .keywords0{margin-bottom:8px!important;height:130px!important}.min-screen .boys .tpl-nav .keywords1{margin-bottom:0!important;height:74px!important}.min-screen .boys .tpl-brands{margin-top:-8px!important}.min-screen .boys .goods-container .good-info,.min-screen .lifestyle .goods-container .good-info{width:188px;height:360px}.min-screen .boys .goods-container .good-info .good-detail-img,.min-screen .lifestyle .goods-container .good-info .good-detail-img{height:255px}.min-screen .home-page{width:990px}.min-screen .home-page .slide-container{height:387px}.min-screen .home-page .slide-container img{display:block}.min-screen .home-page .slide-thumb-container{height:440px}.min-screen .home-page .slide-container-placeholder{height:387px}.min-screen .home-page .slide-thumb-container-placeholder{height:440px}.min-screen .home-page .slide-wrapper{height:387px}.min-screen .home-page .slide-wrapper li a{width:990px}.min-screen .home-page .slide-switch{display:block}.min-screen .home-page .slide-switch a.prev{margin-left:-495px}.min-screen .home-page .slide-switch a.next{margin-right:-495px}.min-screen .home-page .slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.min-screen .home-page .thumb-pagination{width:990px;margin:7px auto 0;padding:0}.min-screen .home-page .thumb-pagination li{width:118px;height:46px}.min-screen .home-page .debris-slider{height:440px}.min-screen .home-page .debris-slider .left-col{margin-right:9px}.min-screen .home-page .debris-slider .left-col a{width:240px;height:103px}.min-screen .home-page .debris-slider .left-col a:first-child{height:214px}.min-screen .home-page .debris-slider .center-col{width:492px;margin-right:9px}.min-screen .home-page .debris-slider .right-col a{width:240px;height:103px}.min-screen .home-page .debris-slider .right-col a:first-child{height:326px;margin-bottom:10px}.min-screen .home-page .new-report .report-list{width:748px}.min-screen .home-page .new-report .report-list li{width:158px;height:212px}.min-screen .home-page .new-report .last-item,.min-screen .home-page .new-report .report-list li:first-child{width:242px;height:432px}.min-screen .home-page .preference-brand-list{width:998px}.min-screen .home-page .preference-brand-item{margin-right:7px}.min-screen .home-page .preference-brand-item a{width:159px;height:74px}.min-screen .home-page .preference-more{width:159px;height:74px;line-height:90px}.min-screen .home-page .img-slider-wrapper{height:480px}.min-screen .home-page .img-container-landscape{margin:73px auto 0;width:844px;height:370px}.min-screen .home-page .img-container-landscape .img-item{width:275px;height:100%;margin-right:9px}.min-screen .home-page .img-brand{height:150px}.min-screen .home-page .img-brand ul{width:998px}.min-screen .home-page .img-brand li{width:325px;height:150px;line-height:150px}.min-screen .home-page .logo-brand{height:246px}.min-screen .home-page .logo-brand ul{width:998px}.min-screen .home-page .logo-brand li{margin:8px 8px 0 0;width:158px;height:74px;line-height:74px}.min-screen .home-page .logo-brand .logo-brand-switch .iconfont{font-size:24px}.min-screen .home-page .logo-brand .logo-brand-switch .iconfont.prev{top:-12px}.min-screen .home-page .logo-brand .logo-brand-switch .iconfont.next{bottom:-12px}.min-screen .home-page .logo-brand.logos-10{height:164px}.min-screen .home-page .categorys-list ul{width:1004px}.min-screen .home-page .categorys-list li{margin:0 7px 7px 0;width:161px;height:214px}.min-screen .home-page .categorys-list li.cate-item0{width:160px;height:435px}.min-screen .home-page .categorys-list li.cate-item1{width:326px;height:435px}.min-screen .home-page .floor-header{margin:50px 0 30px}.min-screen .home-page .floor-header .header-navs li{padding:1px 10px}.brands .path-nav{border-bottom:none;margin-bottom:0;padding-top:10px;padding-bottom:20px}.brands .brands-tabs{position:relative}.brands .brands-tabs a{display:block}.brands .brands-tabs a img{width:100%;height:100%;display:block}.brands .brands-tabs li{float:left}.brands .brands-tabs li p{display:block;font-size:30px;text-align:center;color:#dedede;position:absolute;top:50%;width:100%;margin-top:-15px;z-index:3}.brands .brands-tabs li .g-mask{opacity:.4;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"}.brands .brands-tabs li .g-mask-on,.brands .brands-tabs li:hover .g-mask{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.brands .brands-tabs .hover-contain{position:relative;border-bottom:1px solid #dfdfdf}.brands .brands-tabs .hover-contain .hoverarr{background-color:#3d3d3d;position:absolute;bottom:0;z-index:6}.brands .brands-tabs .hover-contain .hoverarr i{width:0;height:0;position:absolute;left:50%;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #3d3d3d;top:-6px;margin-left:-3px}.brands .header-navs{margin-right:-15px}.brands .category-nav{border:2px solid #222;padding-left:16px;height:44px;line-height:44px;font-size:12px;font-weight:700;position:relative;z-index:8;background-color:#fff}.brands .category-nav span{display:inline-block;margin-right:15px}.brands .category-nav a{display:inline-block;padding:0 7px;text-align:center;color:#222;cursor:pointer}.brands .category-fix{position:fixed;top:0;z-index:8;margin-top:0!important}.brands .brands-list dl{position:relative;border-top:1px dotted #999;padding:20px 0}.brands .brands-list dt{position:absolute;width:130px;font-weight:700;font-size:16px;text-align:center;top:50%;margin-top:-9px}.brands .brands-list dd{margin-left:130px}.brands .brands-list dd li{float:left;display:block;width:170px;height:18px}.brands .brands-list dd a{color:#666;line-height:18px;font-size:12px;position:relative}.brands .brands-list dd span{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}.brands .brands-list dd span:hover{text-decoration:underline}.brands .brands-list dd .brands-dialog{display:inline;position:relative}.brands .brands-list dd .hot{font-weight:700;color:#222}.brands .brands-list dd i{position:relative;top:-4px;color:#e01;font-size:14px}.brands .brands-category{width:1150px}.brands .brands-tabs{width:100%}.brands .brands-tabs li{margin-left:10px}.brands .brands-tabs li a{position:relative;width:222px;height:180px}.brands .brands-tabs li:first-child{margin-left:0}.brands .brands-tabs .hover-contain{height:30px}.brands .brands-tabs .hover-contain .hoverarr{height:5px;width:222px}.brands .brands-ad,.brands .brands-logo{margin:20px 0}.brands .brands-ad li{float:left;margin-left:10px}.brands .brands-ad li img{display:block;width:280px;height:280px}.brands .brands-ad li:first-child{margin-left:0}.brands .brands-ad li:first-child img{width:570px}.brands .brands-logo a{float:left;margin-left:26px}.brands .brands-logo a img{display:block;width:91px;height:38px}.brands .brands-logo a:first-child{margin-left:0}.brands .list-floor{width:1160px}.brands .brandfloor .g-list{margin-top:-32px}.brands .brandfloor li{margin-right:8px;margin-top:32px}.brands .brandfloor li a{width:378px;height:250px}.brands .singlegoods .g-list{margin-top:-10px}.brands .singlegoods li{margin-right:10px;margin-top:10px}.brands .singlegoods li a{width:280px;height:374px}.brands .singlegoods .singlegoods-title{position:absolute;left:0;bottom:0;height:50px;width:100%}.brands .singlegoods .singlegoods-title p{position:absolute;z-index:2;top:0;left:0;display:block;width:100%;height:100%;line-height:50px;font-size:18px;text-align:center;color:#fff}.brands .video .g-list{margin-top:-10px}.brands .video li{margin-right:8px;margin-top:10px}.brands .video li a{width:378px;height:242px}.brands .video .video-play{display:block;position:absolute;left:50%;top:50%;margin-left:-30px;margin-top:-28px;width:60px;height:56px;background-image:url(../../../img/index/play.png?v15529250dc5)}.brands .video .video-title{position:absolute;left:0;bottom:0;height:32px;width:100%}.brands .video .video-title p{position:absolute;z-index:2;top:0;left:0;display:block;width:100%;height:100%;font-size:14px;line-height:32px;text-align:center;color:#fff}.brands .news{margin-bottom:40px}.brands .news .news-pic{position:relative;float:left;width:764px;height:436px}.brands .news .news-pic .slide-container{height:100%}.brands .news .news-pic .slide-container li a{height:100%;width:764px}.brands .news .news-pic .slide-container .slide-wrapper{height:100%}.brands .news .news-pic .slide-container .slide-switch{display:none}.brands .news .news-pic .slide-container .prev{left:0;margin-left:0}.brands .news .news-pic .slide-container .next{right:0;margin-right:0}.brands .news .news-pic .slide-container .slide-switch.show{display:block}.brands .news .news-pic .slide-tips{position:absolute;left:0;bottom:0;height:30px;width:100%;background:#000;opacity:.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"}.brands .news .news-pic .slide-tips p{position:absolute;left:18px;z-index:2;height:30px;font-size:14px;line-height:30px;color:#fff}.brands .news .news-pic .slide-pagination{right:0;left:auto;bottom:0}.brands .news .news-pic .slide-pagination .slide-shade{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";background:none}.brands .news .news-pic .slide-pagination span{margin-top:3px}.brands .news .news-txt{padding:20px 16px;float:right;border:1px solid #000;overflow:hidden}.brands .news .news-txt ul{height:100%}.brands .news .news-txt li{position:relative;display:block;margin-bottom:10px;margin-left:20px}.brands .news .news-txt a{font-size:14px;line-height:27px;cursor:pointer;color:#010101;display:block}.brands .news .news-txt a:hover{color:#fff;background:#000;padding-left:12px;transition:padding .4s}.brands .news .news-txt i{position:absolute;top:0;left:-26px;font-size:22px}.brands .news .news-txt{width:342px;height:394px}.brands .ads{margin:40px 0}.brands .ads li{margin-right:10px;margin-bottom:10px}.brands .ads li a{width:280px}.brands .ads li a img{height:160px}.brands .ads li .name{font-size:14px}.brands .ads li .des{font-size:12px}.brands .brands-items{margin:25px auto}.brands .brands-items .brands-item{float:left;padding:15px 0;width:50%}.brands .brands-items a.brands-pic{float:left;width:280px;height:136px;display:block}.brands .brands-items a.brands-pic img{width:100%;height:100%}.brands .brands-items .brand-info{float:right;padding:0 20px;width:255px;color:#000}.brands .brands-items .brand-info h3{width:100%;font-size:20px;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brands .brands-items .brand-info .brand-desc{padding:12px 0;height:92px;font-size:14px;line-height:22px;overflow:hidden}.brands .pagination{margin:40px 0 80px;text-align:center}.brands .pagination a{height:24px;padding:0 9px;line-height:24px;display:inline-block;text-align:center;margin-right:8px;color:#222;font-size:12px}.brands .pagination a i{position:relative;top:-1px;font-size:10px;transform:scale(.8)}.brands .pagination a.cur{background:#222;color:#fff}.min-screen .brands .header-navs{margin-right:-10px}.min-screen .brands .sit-nav{padding-top:10px;font-size:12px}.min-screen .brands .sit-nav .sep{margin:0 6px}.min-screen .brands .brands-category{width:990px}.min-screen .brands .brands-tabs li a{width:190px;height:154px}.min-screen .brands .brands-tabs .hover-contain{height:25px}.min-screen .brands .brands-tabs .hover-contain .hoverarr{height:4px;width:190px}.min-screen .brands .brands-ad li img{width:240px;height:240px}.min-screen .brands .brands-ad li:first-child img{width:490px}.min-screen .brands .brands-logo a{margin-left:10px}.min-screen .brands .brands-logo a img{width:90px;height:37px}.min-screen .brands .brands-logo a:first-child{margin-left:0}.min-screen .brands .list-floor{width:1000px}.min-screen .brands .brandfloor .g-list{margin-top:-26px}.min-screen .brands .brandfloor li{margin-right:9px;margin-top:26px}.min-screen .brands .brandfloor li a{width:324px;height:214px}.min-screen .brands .singlegoods .g-list{margin-top:-10px}.min-screen .brands .singlegoods li{margin-right:10px;margin-top:10px}.min-screen .brands .singlegoods li a{width:240px;height:324px}.min-screen .brands .singlegoods .singlegoods-title{position:absolute;left:0;bottom:0;height:50px;width:100%}.min-screen .brands .singlegoods .singlegoods-title p{position:absolute;z-index:2;top:0;left:0;display:block;width:100%;height:100%;line-height:50px;font-size:18px;text-align:center;color:#fff}.min-screen .brands .video .g-list{margin-top:-10px}.min-screen .brands .video li{margin-right:9px;margin-top:10px}.min-screen .brands .video li a{width:324px;height:206px}.min-screen .brands .video .video-play{display:block;position:absolute;left:50%;top:50%;margin-left:-30px;margin-top:-28px;width:60px;height:56px;background-image:url(../../../img/index/play.png?v15529250dc5)}.min-screen .brands .video .video-title{position:absolute;left:0;bottom:0;height:30px;width:100%}.min-screen .brands .video .video-title p{position:absolute;z-index:2;top:0;left:0;display:block;width:100%;height:100%;font-size:14px;line-height:30px;text-align:center;color:#fff}.min-screen .brands .news .news-pic{width:660px;height:376px}.min-screen .brands .news .news-pic .slide-container,.min-screen .brands .news .news-pic .slide-container img{height:376px}.min-screen .brands .news .news-txt{width:284px;height:334px}.min-screen .brands .news .news-txt li{margin-bottom:13px}.min-screen .brands .ads{margin-bottom:30px}.min-screen .brands .ads li{margin-right:10px;margin-bottom:10px}.min-screen .brands .ads li a{width:240px}.min-screen .brands .ads li a img{height:138px}.min-screen .brands .ads li .name{font-size:14px}.min-screen .brands .ads li .des{font-size:12px}.min-screen .brands .brands-items a.brands-pic{width:240px;height:116px}.min-screen .brands .brands-items .brand-info{width:212px}.min-screen .brands .brands-items .brand-info .brand-desc{height:72px}.brands-layer{position:absolute;z-index:8;top:-83px;left:15px;width:325px;height:287px;background:url(../../../img/index/brands-layer.png?v15529250dc1) no-repeat;font-weight:400}.brands-layer .layer-content{padding:20px 20px 20px 35px}.brands-layer .layer-content .title{font-size:24px;line-height:24px;border-bottom:1px solid #ccc;padding-bottom:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brands-layer .layer-content .desc{margin:5px 0;height:72px;overflow:hidden}.brands-layer .layer-content .desc img{width:80px;height:50px;margin:3px 5px 0 0;float:left}.brands-layer .layer-content .desc .right{width:180px;float:right;font-size:12px;line-height:150%;max-height:80px}.brands-layer .layer-content .featured{font-size:16px;margin-right:-15px}.brands-layer .layer-content .featured img{height:100px;width:80px;float:left;margin:15px 15px 0 0}.brands-layer-right{background:url(../../../img/index/brands-layer.png?v15529250dc1) no-repeat 0 -287px;left:-325px;top:-83px}.brands-layer-right .layer-content{padding:20px 35px 20px 20px}.coupon-page{width:1150px;margin:10px auto 0}.coupon-page .slide-container{position:relative}.coupon-page .slide-wrapper{position:relative;height:450px;overflow:hidden}.coupon-page .slide-wrapper ul{position:relative;height:100%}.coupon-page .slide-wrapper li{display:none;position:absolute;top:0;right:0;width:100%;height:100%}.coupon-page .slide-wrapper li a{display:block;height:100%;width:1150px;margin:0 auto}.coupon-page .slide-wrapper li img{width:100%;height:100%}.coupon-page .slide-switch,.coupon-page .slide-wrapper:hover .slide-switch.show,.coupon-page .slide-wrapper li:first-child{display:block}.coupon-page .slide-switch a{position:absolute;top:50%;margin:-30px 0 0;width:60px;height:60px;line-height:56px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.coupon-page .slide-switch a .iconfont{font-size:32px;color:#59585a}.coupon-page .slide-switch a.prev{left:50%;margin-left:-575px}.coupon-page .slide-switch a.next{right:50%;margin-right:-575px}.coupon-page .slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.coupon-page .title{width:300px;margin:80px auto 40px;text-align:center;border:1px solid #000;height:31px;line-height:31px;position:relative}.coupon-page .title span{margin:5px}.coupon-page .coupon{display:inline-block;position:relative;width:282px;height:258px;margin-right:2px}.coupon-page .coupon img{width:100%;height:100%}.coupon-page .coupon .coupon-mask{width:100%;height:259px;background-color:rgba(0,0,0,.6);position:absolute;top:0;left:0;right:0;z-index:7}.coupon-page .coupon .info{width:78px;height:78px;position:absolute;right:2px;bottom:-1px}.coupon-page .coupon .info>div{width:100%;height:38px;font-size:16px;color:#fff;text-align:center;position:absolute;top:50%;margin-top:-19px}.coupon-page .coupon .info p{margin-bottom:5px}.coupon-page .coupon .info .guang{width:50px;height:18px;line-height:18px;font-size:12px;background-color:#fff;color:#d0021b;margin:0 auto}.product-search-page .goods-container{height:auto;padding:25px 0 0;position:relative;width:1160px}.product-search-page .goods-container .good-info{width:222px}.product-search-page .path-nav .last{font-weight:400}.product-search-page .path-nav .last span{font-weight:700}.min-screen .product-search-page .goods-container{height:auto;padding-top:25px;position:relative;width:1000px}.min-screen .product-search-page .goods-container .good-info{width:190px}.min-screen .product-search-page .goods-container .good-info .good-detail-img{height:255px}.min-screen .product-search-page .goods-container .block-next-page{width:190px;height:255px}.min-screen .product-search-page .filter-box .brand .attr-content{max-width:750px}.product-list-page .list-left{width:160px}.product-list-page .list-right{width:970px}.product-list-page .brand-banner{position:relative}.product-list-page .brand-banner .opt-wrap{position:absolute;width:100%;height:32px;top:50%;margin-top:-16px;text-align:right}.product-list-page .brand-banner a,.product-list-page .brand-banner span{display:inline-block;height:20px;margin-right:5px;line-height:20px;border:1px solid #fff;padding:5px 10px;color:#fff;font-size:12px}.product-list-page .brand-banner .iconfont{font-size:13px}.product-list-page .brand-banner .brand-favor{margin-right:0;cursor:pointer}.product-list-page .brand-banner .coled{color:red}.product-list-page .brand-about{font-size:12px;line-height:150%}.product-list-page .sort-intro{margin-bottom:20px}.product-list-page .sort-intro .texts{width:386px;height:298px;padding:0 50px;border:1px solid #eaeceb;text-align:center;overflow:hidden}.product-list-page .sort-intro .name{font-size:30px;font-weight:700;margin-top:60px}.product-list-page .sort-intro .en-name{font-size:14px;font-weight:700}.product-list-page .sort-intro .desc{color:#666;margin-top:15px;font-size:12px;line-height:150%}.product-list-page .sort-intro .img{width:480px;height:300px}.product-list-page .sort-intro .key-entry{width:330px;margin:30px auto 0}.product-list-page .sort-intro .key-entry a{float:left;display:block;width:110px;line-height:20px;font-size:12px;color:#069;text-decoration:underline}.product-list-page.search-page .path-nav .last{font-weight:400}.product-list-page.search-page .path-nav .last span{font-weight:700}.min-screen .product-list-page .sort-intro .texts{width:346px;height:248px;padding:0 30px}.min-screen .product-list-page .sort-intro .name{margin-top:30px}.min-screen .product-list-page .sort-intro .img{width:400px;height:250px}.new-sale-page .sale-list-banner{width:100%;position:relative}.new-sale-page .sale-list-banner ul{overflow:hidden;width:100%;position:relative;z-index:1}.new-sale-page .sale-list-banner ul li{width:100%;height:100%;display:block;position:absolute;top:0;left:0}.new-sale-page .sale-list-pagation{z-index:2;position:absolute;left:0;bottom:50px;width:100%;height:20px;text-align:center}.new-sale-page .sale-list-pagation div{display:inline-block}.new-sale-page .sale-list-pagation span{display:block;width:20px;height:20px;background:url(../assets/img/product/default-normal.png?v15551f02c7e);float:left;margin:0 10px;cursor:pointer}.new-sale-page .sale-list-pagation span.active{background:url(../assets/img/product/default-active.png?v15551f02c7c)}.new-sale-page .header-title{position:relative;width:100%;height:42px;margin:20px 0;text-align:center;font-size:20px}.new-sale-page .header-title .count-wrap{position:relative}.new-sale-page .header-title .count{background:#fff;padding:0 5px;color:#999;font-size:12px;margin-top:6px}.new-sale-page .header-title .line-through{position:absolute;bottom:9px;left:0;right:0;height:1px;border-top:1px dotted #999}.new-sale-page .new-banner img{display:block;width:100%}.new-sale-page .new-brands{position:relative;width:100%;margin-top:25px}.new-sale-page .new-brands>*{float:left}.new-sale-page .new-brands .pre .next{position:absolute;display:block;width:40px;height:40px;line-height:40px;color:#fff;background:#e0e0e0;text-align:center;top:50%;margin-top:-20px;cursor:pointer;opacity:.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"}.new-sale-page .new-brands .pre .next:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.new-sale-page .new-brands .pre{left:0}.new-sale-page .new-brands .next{right:0}.new-sale-page .new-brands .brands-wrap{position:relative;overflow:hidden;width:890px;height:76px;margin-left:40px}.new-sale-page .new-brands .brands{position:absolute;width:auto;height:76px}.new-sale-page .new-brands .brands li{float:left;margin-left:14px}.new-sale-page .new-brands .brands li a{width:164px;height:76px;line-height:76px;vertical-align:middle;text-align:center}.new-sale-page .new-brands .brands li img{vertical-align:middle;max-width:100%;max-height:100%;border:none}.new-sale-page .new-floor-title{position:relative;margin:35px auto;width:300px;height:31px;line-height:31px;font-size:18px;border:1px solid #000}.new-sale-page .new-floor-title .date{position:absolute;left:-1px;top:-1px;width:155px;height:33px;color:#fff;text-align:center;background:url(../assets/img/product/floor-title.png?v15551f02c83)}.new-sale-page .new-floor-title .title{float:right;margin-right:40px}.filter-box{border:1px solid #dfdfdf}.filter-box .section{padding:10px 15px;font-size:12px;border-top:1px solid #dfdfdf}.filter-box .section:first-child{border-top:none;padding:5px 15px}.filter-box .title{float:left;width:75px;line-height:30px;font-weight:700}.filter-box .attr-content{margin-left:75px}.filter-box .multi-select{display:inline-block;width:60px;height:18px;line-height:18px;border:1px solid #555;color:#555;text-align:center;cursor:pointer}.filter-box .attr{display:block;float:left;padding:0 10px;margin-right:30px;line-height:30px;cursor:pointer;color:#666;-moz-user-select:none}.filter-box .attr a{color:#666}.filter-box .attr:first-child{margin-left:0}.filter-box .attr.checked,.filter-box .attr.checked a{color:#e01}.filter-box .attr:hover{text-decoration:underline}.filter-box .color .attr{margin-right:0}.filter-box .checked .color-block{width:16px;height:16px;border:2px solid #222;padding:2px;background-size:100%!important}.filter-box .checked .color-block .sub-color-block{display:block;width:16px;height:16px;background-position:50%!important}.filter-box .checked-conditions{line-height:30px;background:#eaeceb}.filter-box .checked-conditions .title{margin-top:5px}.filter-box .checked-conditions .tag{display:block;float:left;padding:0 10px;margin:5px 30px 5px 0;background:#000;color:#fff;cursor:pointer}.filter-box .checked-conditions .color-block{height:14px;width:14px;border:1px solid #fff;margin-bottom:-3px;background-size:100%!important;background-position:50%!important}.filter-box .checked-conditions .clear-checked{margin-top:5px;color:#999;float:right}.filter-box .checked-conditions .clear-checked:hover{color:#468fa2}.filter-box .checked-conditions .close{font-size:14px}.filter-box .sort-pre .active .attr{border:1px solid #000}.filter-box .sort-pre .attr{position:relative}.filter-box .active .sort-up-icon{visibility:visible}.filter-box .sort-up-icon{position:absolute;width:15px;height:9px;left:50%;margin-left:-7px;bottom:-17px;z-index:3;visibility:hidden;background:url(../assets/img/product/senior-up.png?v15551f02c90) no-repeat;background-position:50% 0}.filter-box .sort-sub-wrap{width:100%}.filter-box .sort-sub-wrap .sort-sub{border-top:1px solid #eaeceb;margin-top:15px;padding:0 0 15px}.filter-box .sort-sub-wrap .sort-sub .attr{padding-top:15px}.filter-box .brand{position:relative}.filter-box .brand .attr{box-sizing:border-box;width:20%;height:30px;margin:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.filter-box .brand .attr-content{max-width:900px}.filter-box .brand .brand-opt{position:absolute;right:20px;top:15px;color:#555}.filter-box .brand .multi .attr.checked,.filter-box .brand .multi .attr.checked a{color:#000}.filter-box .brand .brand-more{margin-right:10px;cursor:pointer}.filter-box .brand .brands-index{float:left;line-height:30px;margin-right:5px;cursor:pointer}.filter-box .brand .brands-index span{margin:0 3px;-moz-user-select:none}.filter-box .brand .brands-index span:first-child{margin-left:10px}.filter-box .brand .brands-index span.hover{color:red}.filter-box .brand .brand-search{float:left;height:18px;line-height:18px;border:1px solid #b0b0b0;margin-top:5px;margin-left:10px}.filter-box .brand .brand-search input{float:left;border:none;width:100px;height:18px;padding:0}.filter-box .brand .brand-search .btn{position:relative;display:inline-block;top:-1px;width:55px;height:20px;line-height:20px;background:#3a3a3a;color:#fff;text-align:center;cursor:default}.filter-box .brand .panel-body{padding:15px 20px;background:#f4f7f6;margin-top:5px;margin-left:10px}.filter-box .brand .panel-body .ul-scroll{overflow:auto;min-height:30px;max-height:150px}.filter-box .btns{display:none;margin-top:10px;text-align:center}.filter-box .multi .btns{display:block}.filter-box .multi-select-cancel,.filter-box .multi-select-ok{width:55px;height:24px;border:none;background:#000;color:#fff;font-size:14px;margin-right:20px;cursor:pointer;outline:none;font-family:Microsoft YaHei}.filter-box .multi-select-cancel.dis,.filter-box .multi-select-ok.dis{background:#ccc}.filter-box .ud-price-range{margin-top:2px}.filter-box .limit{height:22px;width:42px;border:1px solid #ccc;padding:0}.filter-box .price-sep{margin:0 5px}.filter-box .price-sure{height:24px;width:44px;background:#333;color:#fff;margin-left:10px;outline:none;border:none;font-size:12px;cursor:pointer}.filter-box .color-block{display:inline-block;height:22px;width:22px;border:1px solid #ccc;margin-bottom:-6px;margin-right:5px;background-size:100%!important;background-repeat:no-repeat!important;background-position:50%!important}.filter-box .senior{padding-bottom:6px}.filter-box .senior .attr-content{position:relative}.filter-box .senior .senior-attr-wrap>.attr:hover{text-decoration:none}.filter-box .senior-attr-wrap{position:relative}.filter-box .senior-attr-wrap>.attr.hover,.filter-box .senior-attr-wrap>.attr:hover{font-weight:700}.filter-box .senior-attr-wrap>.attr.hover>.iconfont,.filter-box .senior-attr-wrap>.attr:hover>.iconfont{visibility:hidden}.filter-box .senior-attr-wrap>.attr.hover .senior-up-icon,.filter-box .senior-attr-wrap>.attr:hover .senior-up-icon{visibility:visible}.filter-box .senior-sub{box-sizing:border-box;position:absolute;padding:0 15px 15px 91px;left:-91px;right:-16px;top:39px;background:#fff;border:1px solid #dfdfdf;border-top:0;z-index:2}.filter-box .senior-sub ul{max-width:950px}.filter-box .senior-sub .multi-select{position:absolute;top:20px;right:15px}.filter-box .senior-sub .attr{height:30px}.filter-box .senior-sub.multi .multi-select{display:none}.filter-box .senior-baffle{height:18px;margin-top:-18px;background:none}.filter-box .senior-content{padding-top:15px;border-top:1px solid #eaeceb}.filter-box .senior-up-icon{position:relative;width:100%;height:9px;z-index:3;margin-left:-11px;visibility:hidden;background:url(../assets/img/product/senior-up.png?v15551f02c90) no-repeat;background-position:50% 0;top:-1px;top:1px/9}.filter-box .checkbox{display:none;float:left}.filter-box .multi .checkbox{display:block;color:#ccc;font-size:12px;margin-right:3px}.filter-box .multi .checkbox.checked{color:#000}.filter-box .multi .checkbox.checked+span{color:#000;font-weight:700}.min-screen .filter-box .brand .attr{width:25%}:root .senior-up-icon,_:-ms-fullscreen{top:1px}.sort-pager{height:48px;background:#f5f7f6;line-height:48px;margin:10px 0}.sort-pager .checks,.sort-pager .sort-type{color:#999;font-size:12px;padding:0 10px}.sort-pager .checks .iconfont,.sort-pager .sort-type .iconfont{font-size:12px}.sort-pager .checks.active,.sort-pager .checks.checked,.sort-pager .sort-type.active,.sort-pager .sort-type.checked{color:#000;font-weight:700}.sort-pager .checks.active .iconfont,.sort-pager .checks.checked .iconfont,.sort-pager .sort-type.active .iconfont,.sort-pager .sort-type.checked .iconfont{font-weight:100}.sort-pager .checks .iconfont{background:#fff}.sort-pager .sort-type:first-child .iconfont{display:none}.sort-pager .page-nav{padding:7px 0;float:right;font-size:14px}.sort-pager .page-nav .page-prev{width:33px;height:33px;line-height:34px;background:#ccc;text-align:center;float:left}.sort-pager .page-nav a .page-next,.sort-pager .page-nav a .page-prev{background:#000;color:#fff}.sort-pager .page-nav .page-next{min-width:110px;height:33px;background:#a9a9a9;float:left;margin-left:1px;line-height:33px;padding-left:10px;box-sizing:border-box;padding-right:10px}.sort-pager .page-nav .pages{margin-left:10px}.sort-pager .pager-wrap{float:right;padding:15px 0}.sort-pager .page-count{position:relative;height:18px;float:left;font-size:12px;line-height:18px}.sort-pager .page-count>span{float:left;display:block;width:42px;height:10px;line-height:10px;padding:3px;border:1px solid #ccc;color:#222;cursor:pointer;margin-right:10px;background:#fff}.sort-pager .page-count .iconfont{font-size:14px;color:#ccc;float:right}.sort-pager .page-count>ul{position:absolute;display:none;width:48px;border-left:1px solid #ccc;border-right:1px solid #ccc;background:#fff;z-index:1}.sort-pager .page-count li{padding:0 3px;border-bottom:1px solid #ccc}.sort-pager .page-count li:hover{background:#376cf7;color:#fff}.sort-pager .page-count a{display:block;width:100%}.sort-pager .page-orient{float:left;font-size:14px;line-height:15px;margin:0 20px}.sort-pager .page-orient .dis-icon{color:#e6e6e6}.sort-pager .page-orient i{color:red}.pager a{height:24px;padding:0 9px;line-height:24px;display:inline-block;text-align:center;margin-right:8px;color:#222}.pager .cur{color:#fff;background-color:#222}.good-info{margin-bottom:35px;width:222px;margin-right:10px;float:left}.good-info .good-detail-img{width:100%;height:100%;position:relative}.good-info .good-detail-img .good-thumb,.good-info .good-detail-img img.lazy{display:block;overflow:hidden;width:100%;height:100%}.good-info .good-detail-img .few-tag{width:100%;position:absolute;left:0;height:16px;line-height:16px;background:#ffac5b;color:#fff;font-size:12px;text-align:center;bottom:0}.good-info .good-detail-text{color:#222;font-size:12px;text-align:left;overflow:hidden}.good-info .good-detail-text>a{margin-top:16px;line-height:1.5;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.good-info .good-detail-text>.price{margin-top:5px;text-align:center}.good-info .good-detail-text .brand a{color:#666;line-height:1.5}.good-info .good-detail-text .market-price{text-decoration:line-through;color:#999;margin-right:10px}.good-info .good-detail-text span.vip-tag{background-image:url(../assets/img/sale/vip.png?v15551f02cb3);background-repeat:no-repeat;background-size:100% 90%;width:40px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;width:30px}.good-info .good-detail-text span.vip-1{background-image:url(../assets/img/product/silver-small.png?v15551f02c94)}.good-info .good-detail-text span.vip-1,.good-info .good-detail-text span.vip-2{background-repeat:no-repeat;width:30px;display:inline-block;height:12px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;position:absolute}.good-info .good-detail-text span.vip-2{background-image:url(../assets/img/product/golden-small.png?v15551f02c85)}.good-info .good-detail-text span.vip-3{background-image:url(../assets/img/product/platinum-small.png?v15551f02c8d);background-repeat:no-repeat;width:30px;display:inline-block;height:12px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;position:absolute}.good-info .col-btn{position:absolute;top:15px;right:15px;color:#ccc;font-size:12px}.good-info .col-btn.coled{color:#f95b4f}.good-info .tag-container{font-size:12px;height:22px;line-height:22px}.good-info .tag-container .good-tag{float:left;box-sizing:border-box;display:block;height:22px;padding:0 7px;margin-right:3px;color:#fff}.good-info .tag-container .good-tag:nth-last-of-type(1){margin-right:0}.good-info .tag-container .new-tag{background:#78dc7d}.good-info .tag-container .renew-tag{background:#78dc7e}.good-info .tag-container .new-festival-tag{background:#000}.good-info .tag-container .sale-tag,.good-info .tag-container .yep-tag,.good-info .tag-container .ymp-tag{background:#ff565b}.good-info .tag-container .limit-tag{color:#4e4e4e;border:1px solid #4e4e4e}@keyframes a{0%{max-width:0}to{max-width:150px}}.good-item-wrapper{border:1px solid #ddd;padding-left:20px;padding-top:18px;padding-right:20px;position:absolute;background:#fff;display:none}.good-item-wrapper .good-info-main{float:left}.good-item-wrapper .col-btn{display:block}.good-item-wrapper .col-btn:hover{cursor:pointer}.good-item-wrapper .good-select-color{float:left;margin-top:22px;overflow:hidden;animation:a .6s 1}.good-item-wrapper .good-select-color ul{display:block;float:left;margin-left:15px}.good-item-wrapper .good-select-color li{width:50px;margin-bottom:15px}.good-item-wrapper .good-select-color li a,.good-item-wrapper .good-select-color li img{display:block;overflow:hidden;width:100%}.block-next-page,.good-item-wrapper .good-info{margin-right:10px}.block-next-page{width:222px;height:297px;padding-top:22px;margin-bottom:35px;float:left;cursor:pointer}.block-next-page a{display:block}.block-next-page a img{width:100%;height:100%;display:block;overflow:hidden}.good-info-big{width:280px;height:380px;margin-right:10px;float:left;margin-bottom:100px}.latest-walk{overflow:hidden;border-top:2px solid #eaeceb;font-size:12px}.latest-walk h2{padding-top:15px;font-size:14px}.latest-walk .goods{min-width:984px;height:241px;margin:30px 0;overflow:hidden}.latest-walk .good{float:left;margin-right:14px;width:150px}.latest-walk img{display:block;width:150px;height:201px}.latest-walk .name{display:block;height:18px;line-height:18px;max-width:150px;margin:5px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.latest-walk .market-price{color:#999;margin-right:5px;text-decoration:line-through}.latest-walk .sale-price{color:#000;font-weight:700}.min-screen .latest-walk .goods{width:820px;min-width:820px;height:301px}.min-screen .latest-walk .good{margin-right:10px;width:195px}.min-screen .latest-walk img{width:195px;height:261px}.product-page .sort-container{width:100%;font-size:12px;border-bottom:1px solid #ebebeb;padding-bottom:10px;margin-bottom:10px}.product-page .sort-container h2{height:28px;line-height:28px;color:#222;font-weight:700;position:relative}.product-page .sort-container h2 span{color:#bbb;padding-left:5px}.product-page .product-list-nav h3{height:28px;line-height:28px;color:#222;font-weight:700;position:relative;text-indent:10px;cursor:pointer}.product-page .product-list-nav h3 span{color:#bbb;padding-left:5px}.product-page .product-list-nav h3 span.icon-triangle{display:inline-block;padding-left:0;width:0;height:0;border-top:6px solid #fff;border-left:6px solid #000;border-bottom:6px solid #fff;position:absolute;top:50%;margin-top:-6px;left:0;transition:transform .3s}.product-page .product-list-nav.active .icon-triangle{transform:rotate(90deg)}.product-page .product-list-nav.active .sort-child-list{display:block}.product-page .sort-child-list{display:none}.product-page .sort-child-list li{color:#bbb}.product-page .sort-child-list li span{padding-left:5px;color:#bbb}.product-page .sort-child-list li.active{background:#333;color:#fff}.product-page .sort-child-list li.active a{color:#fff}.product-page .sort-child-list a{display:block;color:#666;padding-left:10px;height:22px;line-height:22px}.product-page .sort-child-list.new-sale{display:block}.product-page .nav-pic-title{height:35px;line-height:35px;color:#000;font-weight:700;border-bottom:1px solid #ebebeb;font-size:12px}.product-page .pic-nav{display:block}.product-page .pic-nav li{margin-bottom:10px}.product-page .pic-nav img,.product-page .pic-nav li{display:block;width:100%;overflow:hidden}.product-page .brand-ad img,.product-page .brand-card img{max-width:100%}.product-page .no-result{border:1px solid #eaeceb;padding:60px 0;text-align:center;margin-bottom:20px}.product-page .no-result .no-title{font-size:16px}.product-page .no-result .keyword{color:#e01}.product-page .no-result .search-again{width:490px;margin:15px auto}.product-page .no-result .search-again input{float:left;width:380px;height:18px;padding:15px 5px;border:10px solid #343434;color:#333;outline:none;box-sizing:content-box}.product-page .no-result .search-again .search-again-btn{float:left;width:80px;height:68px;line-height:68px;background:#343434;color:#fff;cursor:pointer;outline:none;border:none}.product-page .no-result .search-again .iconfont{font-size:30px}.product-page .no-result .no-tip{font-size:12px;color:#999}.hotrank-page .popular-list{width:1160px}.hotrank-page .popular-list li{position:relative;float:left;width:378px;height:596px;overflow:hidden;list-style:none;margin:0 8px 0 0}.hotrank-page .popular-list li .item-img{width:100%;height:506px;line-height:506px;text-align:center;overflow:hidden}.hotrank-page .popular-list li img{display:block;width:100%;height:100%}.hotrank-page .popular-list .polular-icon{position:absolute;top:0;right:0;width:50px;height:50px;line-height:60px;background:#ffc513 url(../assets/img/product/hotrank/popular-icon.png?v15551f02cb5) no-repeat 50%;text-align:center;color:#ffc513;font-weight:700}.hotrank-page .popular-list .item-content{width:100%;padding:14px 0 0;height:77px;overflow:hidden;text-align:center;color:#222;line-height:18px}.hotrank-page .popular-list .item-content h2{max-height:36px;font-size:12px;color:#000;line-height:18px;text-align:center;overflow:hidden}.hotrank-page .popular-list .item-content p{display:inline-block;margin:3px 0 0;font-size:12px;text-align:center;line-height:20px;color:#000}.hotrank-page .popular-list .item-content p span{text-decoration:line-through;margin:0 10px 0 0;color:#999}.hotrank-page .popular-list .popular-item6,.hotrank-page .popular-list .popular-item7,.hotrank-page .popular-list .popular-item8,.hotrank-page .popular-list .popular-item9{width:280px;height:464px;margin:0 10px 0 0;overflow:hidden}.hotrank-page .popular-list .popular-item6 .item-img,.hotrank-page .popular-list .popular-item7 .item-img,.hotrank-page .popular-list .popular-item8 .item-img,.hotrank-page .popular-list .popular-item9 .item-img{height:374px;line-height:374px}.hotrank-page .hot-week{position:relative;padding:0 0 40px}.hotrank-page .hot-cate{height:45px;background:#f5f7f6;overflow:hidden}.hotrank-page .hot-cate li{float:left;height:45px;line-height:45px;display:table-cell}.hotrank-page .hot-cate li a{vertical-align:middle;padding:0 26px;font-size:14px;color:#777;border-left:1px solid #999}.hotrank-page .hot-cate li:first-child a{border:none}.hotrank-page .hot-cate li.current a{font-size:16px;color:#000}.hotrank-page .hot-week-list{width:1160px}.hotrank-page .hot-week-list .good-info{width:280px;height:464px;margin:10px 10px 0 0}.hotrank-page .hot-week-list .good-info .tag-container{display:none}.hotrank-page .hot-week-list .good-info .good-detail-img{height:374px;line-height:374px;text-align:center;font-size:0}.hotrank-page .hot-week-list .good-info .good-detail-img img{vertical-align:middle}.hotrank-page .hot-week-list .good-info .good-detail-text{height:77px;overflow:hidden;text-align:center;color:#222;line-height:18px}.hotrank-page .hot-week-list .good-info .good-detail-text a{max-height:36px;font-size:12px;color:#000;line-height:18px;text-align:center;overflow:hidden}.hotrank-page .hot-week-list .good-info .good-detail-text p{display:inline-block;margin:3px 0 0;font-size:12px;text-align:center;line-height:20px;color:#000}.hotrank-page .hot-week-list .good-info .good-detail-text .sale-price{margin:0 10px 0 0}.hotrank-page .floatlayer{display:none;position:fixed;top:50%;left:50%;margin:0 0 0 575px;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.hotrank-page .floatlayer li{width:42px;height:42px;border:2px solid #555;border-top:none;border-bottom-width:1px;text-align:center}.hotrank-page .floatlayer li a{position:relative;display:table-cell;width:42px;height:42px;vertical-align:middle;color:#555;font-size:12px}.hotrank-page .floatlayer li a span{display:inline-block;vertical-align:middle;width:28px;word-wrap:break-word}.hotrank-page .floatlayer li:first-child{border-top:1px solid #555}.hotrank-page .floatlayer li.current,.hotrank-page .floatlayer li:hover{background:#555}.hotrank-page .floatlayer li.current a,.hotrank-page .floatlayer li:hover a{color:#fff}.min-screen .hotrank-page{width:990px}.min-screen .hotrank-page .popular-list li{width:324px;height:521px}.min-screen .hotrank-page .popular-list li .item-img{height:434px;line-height:434px}.min-screen .hotrank-page .popular-list .popular-item6,.min-screen .hotrank-page .popular-list .popular-item7,.min-screen .hotrank-page .popular-list .popular-item8,.min-screen .hotrank-page .popular-list .popular-item9{width:240px;height:408px}.min-screen .hotrank-page .popular-list .popular-item6 .item-img,.min-screen .hotrank-page .popular-list .popular-item7 .item-img,.min-screen .hotrank-page .popular-list .popular-item8 .item-img,.min-screen .hotrank-page .popular-list .popular-item9 .item-img{height:320px;line-height:320px}.min-screen .hotrank-page .hot-week-list .good-info{width:240px;height:408px}.min-screen .hotrank-page .hot-week-list .good-info .good-detail-img{height:320px;line-height:320px}.shop-entry{position:relative;background:#f5f7f6;border:1px solid #eaeceb;padding:12px 15px;margin-bottom:10px}.shop-entry .logo{width:80px;height:50px}.shop-entry .name{margin-left:10px}.shop-entry .shop-name{font-size:16px;color:#222;line-height:26px}.shop-entry .sorts{color:#999;font-size:12px;line-height:18px}.shop-entry .sorts a{color:#999}.shop-entry .entry-btn{position:absolute;right:15px;top:50%;width:110px;height:32px;line-height:32px;margin-top:-16px;background:#222;text-align:center;color:#fff;font-size:12px}.shop-entry .entry-btn .iconfont{font-size:12px}.goods-container{height:auto;padding:25px 0 0;position:relative;width:980px}.goods-container .good-info{width:235px}.product-detail-page .brand-banner{height:45px;width:100%}.product-detail-page .brand-banner img{display:block;height:45px}.product-detail-page .brand-banner .opt{margin-top:5px}.product-detail-page .brand-banner .brand-fav,.product-detail-page .brand-banner .home{display:inline-block;width:32px;height:32px;line-height:32px;border:1px solid #fff;text-align:center;color:#fff;cursor:pointer}.product-detail-page .brand-banner .home{margin-right:5px}.product-detail-page .brand-banner .home .iconfont{font-size:14px}.product-detail-page .brand-banner .brand-fav .iconfont{font-size:13px}.product-detail-page .brand-banner .coled{color:#ee0014}.product-detail-page .path-nav{border:none;margin-bottom:0}.product-detail-page .main{width:990px;margin:0 auto}.product-detail-page .main .infos{width:465px}.product-detail-page .main .img{position:relative;width:420px;height:560px}.product-detail-page .main .img-show{display:block;width:100%;height:100%}.product-detail-page .main .tags{position:absolute;top:0;left:0}.product-detail-page .main .good-tag{float:left;box-sizing:border-box;height:22px;line-height:22px;color:#fff;padding:0 7px;margin-right:5px;font-size:12px}.product-detail-page .main .new-tag{background:#78dc7d}.product-detail-page .main .renew-tag{background:#78dc7e}.product-detail-page .main .new-festival-tag{background:#000}.product-detail-page .main .sale-tag,.product-detail-page .main .yep-tag,.product-detail-page .main .ymp-tag{background:#ff565b}.product-detail-page .main .few-tag{background:#ffac5b}.product-detail-page .main .limit-tag{border:1px solid #4e4e4e;color:#4e4e4e;background:#fff}.product-detail-page .main .thumbs{width:75px;height:510px;margin-left:2px;overflow:hidden}.product-detail-page .main .thumb{display:block;width:75px;cursor:pointer;margin-bottom:2px}.product-detail-page .main .name{font-size:18px;font-weight:700;line-height:24px}.product-detail-page .main .sale-tip{color:#ee0014;padding-left:3px}.product-detail-page .main .brand-name{color:#666;font-size:12px}.product-detail-page .main .title{color:#999;font-size:12px}.product-detail-page .main .market-price{margin-top:8px}.product-detail-page .main .price{color:#000;font-size:22px;line-height:24px;font-weight:700}.product-detail-page .main .has-other-price{color:#999;text-decoration:line-through;font-size:12px}.product-detail-page .main .arrival-date{color:#ee0014;font-size:14px;font-weight:700;margin-left:24px}.product-detail-page .main .vip-price{line-height:14px;color:#222;margin-top:5px;background:url(../assets/img/product/vip-price-icon.png?v15551f02c9f) no-repeat;padding-left:48px;font-size:12px}.product-detail-page .main .vip-price .cur,.product-detail-page .main .vip-price .login-url{color:#f02200}.product-detail-page .main .vip-price .vip-price-item{margin-left:5px}.product-detail-page .main .vip-price .vip-schedual{color:#999;text-decoration:underline;margin-left:5px}.product-detail-page .main .activity{margin-top:12px}.product-detail-page .main .activity li{line-height:20px}.product-detail-page .main .ac-type{display:inline-block;width:60px;height:16px;line-height:16px;margin-right:5px;text-align:center;background:#999;color:#fff;font-size:12px}.product-detail-page .main .ac-des{font-size:12px}.product-detail-page .main .row{margin-top:10px}.product-detail-page .main .trade-content{padding-top:20px;margin-top:20px;border-top:1px solid #eaeceb}.product-detail-page .main .chose-color{font-size:12px}.product-detail-page .main .chose-color .title{margin-top:14px}.product-detail-page .main .chose-color img{display:block;height:36px;width:36px;border:2px solid #fff}.product-detail-page .main .chose-color .focus img{border-color:#222}.product-detail-page .main .chose-color li{margin-right:5px;margin-bottom:5px;cursor:pointer}.product-detail-page .main .chose-size{font-size:12px}.product-detail-page .main .chose-size .title{margin-top:6px}.product-detail-page .main .chose-size li{float:left;display:block;height:22px;line-height:22px;margin-right:5px;margin-bottom:5px;padding:0 5px;border:1px solid #eaeceb;text-align:center;cursor:pointer;min-width:28px}.product-detail-page .main .chose-size li.disable{opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"}.product-detail-page .main .chose-size li.focus{color:#fff;background:#222}.product-detail-page .main .size-wrapper{width:415px}.product-detail-page .main .size{float:left;color:#666}.product-detail-page .main .size-ruler{float:left;display:block;width:57px;height:24px;background:url(../assets/img/product/size-ruler.jpg?v15551f02c9b);margin-bottom:5px;cursor:pointer}.product-detail-page .main .num-warn,.product-detail-page .main .size-warn{float:left;height:24px;line-height:24px}.product-detail-page .main .color-size-tip{color:#999;clear:both;line-height:18px}.product-detail-page .main .chose-count .title{margin-top:6px}.product-detail-page .main .num{display:block;width:38px;height:23px;line-height:23px;text-align:center;border:1px solid #eaeceb;color:#333;font-size:12px;background:#ebebe4}.product-detail-page .main .minus-plus{display:block;width:14px;height:23px;border:1px solid #eaeceb;border-left:none;text-align:center;cursor:pointer}.product-detail-page .main .minus-plus i{display:block;width:13px;height:11px;line-height:8px;font-size:12px;-moz-user-select:none}.product-detail-page .main .minus-plus .dis{color:#999}.product-detail-page .main .minus{border-top:1px solid #eaeceb;font-size:13px}.product-detail-page .main .lc-btn{float:left;display:block;width:80px;height:25px;line-height:25px;color:#fff;background:#222;margin-left:10px;font-size:12px;text-align:center;cursor:default}.product-detail-page .main .lc-btn.dis,.product-detail-page .main .lc-btn.had-lc,.product-detail-page .main .lc-btn.lc-sold-out{background:#ccc}.product-detail-page .main .num-wraper{position:relative}.product-detail-page .main .lc-container{position:absolute;top:-39px;right:-233px;z-index:1}.product-detail-page .main .lc-arrow{position:absolute;top:40px;left:-12px;width:13px;height:20px;background:url(../assets/img/product/arrow.png?v15551f02c7b)}.product-detail-page .main .lc-content{box-sizing:border-box;width:220px;height:285px;text-align:center;background:#f8f8f8;border:1px solid #cecece;padding:40px 25px 0}.product-detail-page .main .lc-content .qr-code{width:137px;height:137px;background:url(../assets/img/product/top-good-qr.png?v15551f02c9d);margin:0 auto}.product-detail-page .main .lc-content .title{font-size:18px;color:#000;margin:12px 0;line-height:24px}.product-detail-page .main .lc-content .sub-title{font-size:14px;color:#939290}.product-detail-page .main .buy-btn{display:inline-block;margin-right:10px;height:48px;line-height:48px;width:197px;text-align:center;color:#fff;background:#e92601;font-size:14px;cursor:pointer}.product-detail-page .main .buy-btn.hover{background:#eb3b19;background:rgba(233,38,1,.8)}.product-detail-page .main .buy-btn.dis{background:#ccc}.product-detail-page .main .collect-product,.product-detail-page .main .keep-shopping{display:inline-block;width:127px;height:48px;text-align:center;line-height:48px;background:#fff;color:#222;border:1px solid #ccc;font-weight:700;font-size:12px;cursor:pointer}.product-detail-page .main .collect-product .iconfont,.product-detail-page .main .keep-shopping .iconfont{color:#ccc;font-size:14px}.product-detail-page .main .collect-product.coled .iconfont,.product-detail-page .main .keep-shopping.coled .iconfont{color:#fa5252}.product-detail-page .main .share-row{margin-top:20px}.product-detail-page .main .share-row .title{margin-top:2px}.product-detail-page .main .balance{display:none}.product-detail-page .main .balance .success-tip{color:#222;font-size:18px;margin-bottom:10px}.product-detail-page .main .balance .cart-total{color:#999;font-size:12px}.product-detail-page .main .balance .balance-btns{margin-top:20px}.product-detail-page .other-infos{padding-bottom:30px}.product-detail-page .info-block{margin-top:30px;color:#999;border-top:2px solid #eaeceb;font-size:12px}.product-detail-page .info-block .basic{width:640px;margin:0 auto}.product-detail-page .info-block .basic li{float:left;width:25%;line-height:20px}.product-detail-page .info-block .comfort{width:470px;border:1px solid #eaeceb;margin:17px auto 0;padding-bottom:15px}.product-detail-page .info-block .comfort li{margin:12px 20px 0}.product-detail-page .info-block .comfort-block{display:inline-block;width:14px;height:10px;border:1px solid #eaeceb;margin-right:2px}.product-detail-page .info-block .comfort-block.cur{background:#999;border:1px solid #999}.product-detail-page .block-title{margin-bottom:25px;text-align:center}.product-detail-page .block-title .title{display:inline-block;padding-top:15px;font-weight:700;cursor:pointer}.product-detail-page .block-title .title.cur{color:#222;border-top:2px solid #222;margin-top:-2px}.product-detail-page .block-title .sep{display:inline-block;margin:0 30px;color:#eaeceb;font-size:14px;cursor:default;font-weight:700}.product-detail-page .description-content{overflow:hidden}.product-detail-page .material-content{display:none;overflow:hidden}.product-detail-page .material-detail li{width:860px;padding-bottom:20px;border-bottom:1px dotted #eaeceb;margin:0 auto 20px}.product-detail-page .material-detail li img{float:left;width:125px;height:50px}.product-detail-page .material-detail li .name{float:left;width:100px;line-height:25px;border-right:1px dotted #eaeceb;color:#666;font-weight:700;text-align:center;font-size:14px}.product-detail-page .material-detail li .text{float:left;width:614px;padding-left:20px;line-height:18px}.product-detail-page .wash{text-align:center}.product-detail-page .wash li{display:inline-block;padding:0 20px;color:#666;border-right:1px solid #eaeceb}.product-detail-page .size-info{text-align:center}.product-detail-page .fitting-report-table,.product-detail-page .reference-table,.product-detail-page .size-table{text-align:center;margin:0 auto}.product-detail-page .fitting-report-table th,.product-detail-page .reference-table th,.product-detail-page .size-table th{width:110px;text-align:center}.product-detail-page .fitting-report-table tr,.product-detail-page .reference-table tr,.product-detail-page .size-table tr{height:30px}.product-detail-page .fitting-report-table td,.product-detail-page .fitting-report-table tr,.product-detail-page .reference-table td,.product-detail-page .reference-table tr,.product-detail-page .size-table td,.product-detail-page .size-table tr{text-align:center}.product-detail-page .fitting-report-table thead,.product-detail-page .reference-table thead,.product-detail-page .size-table thead{background:#f5f7f6;color:#999}.product-detail-page .fitting-report-table tbody,.product-detail-page .reference-table tbody,.product-detail-page .size-table tbody{color:#222}.product-detail-page .fitting-report-table .avatar,.product-detail-page .reference-table .avatar,.product-detail-page .size-table .avatar{width:26px;height:26px;border-radius:50px}.product-detail-page .fitting-report-table .avatar-col,.product-detail-page .reference-table .avatar-col,.product-detail-page .size-table .avatar-col{width:26px;padding-left:20px;padding-right:20px}.product-detail-page .fitting-report-table .model-col,.product-detail-page .reference-table .model-col,.product-detail-page .size-table .model-col{width:90px}.product-detail-page .fitting-report-table .remark-col,.product-detail-page .reference-table .remark-col,.product-detail-page .size-table .remark-col{width:200px}.product-detail-page .fr-img-wrap{width:100%;text-align:center}.product-detail-page .fr-img-wrap img{max-width:100%}.product-detail-page .ref-model{padding-top:10px}.product-detail-page .ref-model .model{width:444px;height:35px;padding-top:47px;padding-left:316px;color:#666;overflow:hidden;margin:10px auto 0}.product-detail-page .ref-model .model em{margin-left:5px}.product-detail-page .size-tip{color:#999;margin-top:15px;text-align:center}.product-detail-page .details{text-align:center;font-size:12px;color:#999;line-height:18px}.product-detail-page .details-html{width:750px;text-align:center;margin:0 auto}.product-detail-page .details-html b{font-weight:700}.product-detail-page .details-html i{font-style:italic}.product-detail-page .consults{display:none}.product-detail-page .consult-comment .title,.product-detail-page .consult-comment .title.cur{color:#666}.product-detail-page .cc-content{background:#f5f7f6;padding:20px 20px 0;font-size:12px}.product-detail-page .cc-content h2{font-weight:700;font-size:14px;margin-bottom:10px;color:#000}.product-detail-page .cc-content li{border-top:1px solid #eaeceb;padding:20px 0}.product-detail-page .cc-content .user-info{color:#999;line-height:16px}.product-detail-page .cc-content .user-info>*{float:left}.product-detail-page .cc-content .user-info .name{color:#666}.product-detail-page .cc-content .user-info .date{color:#bbb}.product-detail-page .cc-content .user-info .question{color:#222}.product-detail-page .cc-content .user-avatar{width:30px;height:30px;margin-right:5px}.product-detail-page .cc-content .more-wrap{text-align:center;border-top:1px solid #eaeceb;padding:20px 0;font-size:14px;font-weight:700;color:#666}.product-detail-page .cc-content .btn-wrap{padding:20px 0;border-top:1px solid #eaeceb}.product-detail-page .cc-content .load-more{cursor:pointer}.product-detail-page .cc-content .btn{display:block;width:140px;height:32px;line-height:32px;color:#fff;background:#222;text-align:center;font-size:12px;margin:0 auto;cursor:pointer}.product-detail-page .cc-content .btn .iconfont{font-size:14px}.product-detail-page .cc-content .comment,.product-detail-page .cc-content .consult{margin-top:10px}.product-detail-page .cc-content .consults{display:none}.product-detail-page .new-consult{padding:20px 0;border-top:1px solid #eaeceb}.product-detail-page .new-consult textarea{width:590px;height:80px;padding:5px;outline:none;resize:none}.product-detail-page .new-consult .submit-consult{display:block;width:140px;height:32px;line-height:32px;margin:8px 0 0}.product-detail-page .new-consult .error{border-color:#e01}.product-detail-page .consult-success{border-top:1px solid #eaeceb;margin-top:30px;text-align:center;padding:20px 0}.product-detail-page .consult-success p{width:295px;height:55px;line-height:55px;margin:0 auto;border:2px solid #222;display:block;color:#222;font-weight:700}.product-detail-page .after-service{text-align:center;margin-top:30px}.product-detail-page .after-service .after-service-content{display:none}.product-detail-page .after-service .after-service-switch{height:44px;line-height:44px;background:#eaeceb;text-align:center;font-size:12px;cursor:pointer}.product-detail-page .after-service .after-service-switch .iconfont{font-size:12px}.product-detail-page .after-service .text{padding:20px 15px;background:#f5f7f6;text-align:left;color:#666;line-height:18px}.product-detail-page .after-service .orange{color:#f9761a}.product-detail-page .after-service h4{font-weight:700;font-size:14px;line-height:24px;color:#222;margin-top:10px}.product-detail-page .after-service h4:first-child{margin-top:0}.product-detail-page .after-service .img-1{width:715px;height:259px;margin:0 auto;background:url(../assets/img/product/after-service-1.png?v15551f02c77)}.product-detail-page .after-service .img-2{width:715px;height:230px;margin:0 auto;background:url(../assets/img/product/after-service-2.png?v15551f02c79)}.product-detail-page .after-service a{color:#666}.product-detail-page .service{width:403px;height:19px;margin:45px auto;background:url(../assets/img/product/service.png?v15551f02c92)}.product-detail-page .latest-walk{overflow:inherit}.product-detail-page .latest-walk .goods{width:1010px;margin:0 auto;height:auto}.product-detail-page .latest-walk .goods>div{float:left;width:180px;margin-right:22px}.product-detail-page .latest-walk img{height:240px;width:180px;display:block}.product-detail-page .latest-walk .name{display:block;margin-top:5px;color:#222;line-height:16px}.product-detail-page .latest-walk .price{color:#222;font-weight:700;margin-top:5px}.product-detail-page .latest-walk .market-price{margin-right:5px}.product-detail-page .latest-walk .has-sale{text-decoration:line-through;color:#999}.product-detail-page .warn-tip{display:inline-block;color:#e01;margin-left:7px;font-size:12px}.product-detail-page .warn-tip i{font-size:14px}.product-detail-page .hot-point-wrap{position:relative;margin:0 auto}.product-detail-page .hot-point-wrap .hot-point{position:absolute;background:#fff;filter:progid:dximagetransform.microsoft.alpha(Opacity=0)}.product-detail-page .hot-point-wrap .hot-point.hover .pointer{background-position:0 -25px}.product-detail-page .hot-point-wrap .hot-point.hover .hp-good{display:block}.product-detail-page .hot-point-wrap .pointer{position:absolute;display:block;background:url(../assets/img/product/hp-num.png?v15551f02c8a) no-repeat 0 0;color:#fff;cursor:pointer;width:25px;height:25px;line-height:25px;text-align:center;left:0;top:0;font-size:18px}.product-detail-page .hot-point-wrap .hp-good{display:none;position:absolute;left:30px;top:0;width:210px;background:#000;height:60px;padding:10px}.product-detail-page .hot-point-wrap .hp-good .pic{display:block;float:left;width:60px;height:60px;margin-right:10px}.product-detail-page .hot-point-wrap .hp-good .info{position:relative;float:left;color:#fff;font-size:12px;width:140px;height:60px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left}.product-detail-page .hot-point-wrap .hp-good .check-btn{display:block;position:absolute;height:18px;width:40px;text-decoration:none;right:0;bottom:0;text-align:center;background:#e8e8e8;border-radius:2px}.sale-discount-page .sale-list-banner{width:100%;position:relative}.sale-discount-page .sale-list-banner ul{overflow:hidden;width:100%;height:100%;position:relative;z-index:1}.sale-discount-page .sale-list-banner ul li{width:100%;height:100%;display:block;top:0;left:0}.sale-discount-page .sale-list-pagation{z-index:2;position:absolute;left:0;bottom:50px;width:100%;height:20px;text-align:center}.sale-discount-page .sale-list-pagation div{display:inline-block}.sale-discount-page .sale-list-pagation span{display:block;width:20px;height:20px;background:url(../assets/img/product/default-normal.png?v15551f02c7e);float:left;margin:0 10px;cursor:pointer}.sale-discount-page .sale-list-pagation span.active{background:url(../assets/img/product/default-active.png?v15551f02c7c)}.sale-discount-page .header-title{position:relative;width:100%;height:42px;margin:20px 0;text-align:center;font-size:20px}.sale-discount-page .header-title .count-wrap{position:relative}.sale-discount-page .header-title .count{background:#fff;padding:0 5px;color:#999;font-size:12px;margin-top:6px}.sale-discount-page .header-title .line-through{position:absolute;bottom:9px;left:0;right:0;height:1px;border-top:1px dotted #999}.sale-discount-page .new-banner img{display:block;width:100%}.sale-discount-page .new-brands{position:relative;width:100%;margin-top:25px}.sale-discount-page .new-brands>*{float:left}.sale-discount-page .new-brands .next,.sale-discount-page .new-brands .pre{position:absolute;display:block;width:40px;height:40px;line-height:40px;color:#fff;background:#e0e0e0;text-align:center;top:50%;margin-top:-20px;cursor:pointer;opacity:.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"}.sale-discount-page .new-brands .next:hover,.sale-discount-page .new-brands .pre:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.sale-discount-page .new-brands .pre{left:0}.sale-discount-page .new-brands .next{right:0}.sale-discount-page .new-brands .brands-wrap{position:relative;overflow:hidden;width:890px;height:76px;margin-left:40px}.sale-discount-page .new-brands .brands{position:absolute;width:auto;height:76px}.sale-discount-page .new-brands .brands li{float:left;margin-left:14px}.sale-discount-page .new-brands .brands li a{display:block;width:164px;height:76px;line-height:76px;text-align:center}.sale-discount-page .new-brands .brands li img{vertical-align:middle;max-width:100%;max-height:100%;border:none}.sale-discount-page .new-floor-title{position:relative;margin:35px auto;width:300px;height:31px;line-height:31px;font-size:18px;border:1px solid #000}.sale-discount-page .new-floor-title .date{position:absolute;left:-1px;top:-1px;width:155px;height:33px;color:#fff;text-align:center;background:url(../assets/img/product/floor-title.png?v15551f02c83)}.sale-discount-page .new-floor-title .title{float:right;margin-right:40px}.min-screen .new-sale-page .new-brands .brands-wrap{width:730px}.center-content{width:1150px;margin-left:auto;margin-right:auto}.sale-page{margin-top:10px}.sale-page .slide-switch{display:block}.sale-page .slide-switch a{position:absolute;top:50%;margin:-30px 0 0;width:60px;height:60px;line-height:56px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.sale-page .slide-switch a .iconfont{font-size:32px;color:#59585a}.sale-page .slide-switch a.prev{left:50%;margin-left:-575px}.sale-page .slide-switch a.next{right:50%;margin-right:-575px}.sale-page .slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.sale-page .slide-container{position:relative;height:450px;overflow:hidden}.sale-page .slide-pagination{font-size:0}.sale-page .slide-pagination .slide-shade{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";border-radius:13px}.sale-page .slide-pagination span{position:relative;display:inline-block;margin:0 7px;width:12px;height:12px;background:#fff;cursor:pointer;opacity:.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";border-radius:6px;z-index:2}.sale-page .slide-pagination span.focus{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.sale-page .activity-entry{margin:10px 0;width:1170px}.sale-page .activity-entry .entry-item{display:block;width:376px;margin-right:10px;background:#f5f5f5}.sale-page .activity-entry .entry-item.first,.sale-page .activity-entry .entry-item.last{width:376px}.sale-page .activity-entry .entry-item.last{margin-right:0}.sale-page .activity-entry .entry-text{padding-left:160px;font-size:16px}.sale-page .activity-entry .icon{width:70px;height:70px;margin-left:48px;background-repeat:no-repeat}.sale-page .activity-entry .title{font-size:30px;font-weight:700;line-height:48px}.sale-page .floor-title{margin:80px auto 40px;width:300px;font-size:16px;line-height:30px;text-align:center;border:1px solid #000}.sale-page .brand-sale .sale-group-big{width:1150px + 10px}.sale-page .brand-sale .sale-group-big .item{width:375px;margin-right:8px;margin-bottom:10px}.sale-page .brand-sale .sale-group-big .pic{position:relative;height:400px}.sale-page .brand-sale .sale-group-big .time{@include box-sizing(border-box);position:absolute;left:0;bottom:0;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";width:100%;font-size:22px;line-height:30px;text-align:right;color:#fff;background:#4e4e4e}.sale-page .brand-sale .sale-group-big .detail{background:#f5f5f5}.sale-page .brand-sale .sale-group-big .brand{margin:24px 10px 10px}.sale-page .brand-sale .sale-group-big .text{padding:24px 10px 48px 0;font-size:16px;height:74px;color:#fd5659}.sale-page .brand-sale .sale-group-big .discount{font-size:28px;font-weight:700;text-align:right;margin-right:20px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sale-page .brand-sale .sale-group-big .discount .num{font-size:38px;max-width:120px;overflow:hidden}.sale-page .brand-sale .sale-group-big .active-name{font-size:15px;font-weight:700;text-align:center;margin-top:10px}.sale-page .brand-sale .sale-group-big .title{font-size:22px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sale-page .brand-sale .sale-group{width:1150px + 8px}.sale-page .brand-sale .sale-group .item{width:183px;margin-right:8px;margin-bottom:10px}.sale-page .brand-sale .sale-group .pic{width:100%;display:block}.sale-page .brand-sale .sale-group .detail{padding:14px 10px;background:#f5f5f5;text-align:center;line-height:20px}.sale-page .brand-sale .sale-group .title{height:40px;width:auto;font-size:10px;line-height:40px;text-align:center;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sale-page .brand-sale .sale-group .title span{font-size:18px;color:#ff0705;display:inline-block}.sale-page .brand-sale .sale-group .time{font-size:14px}.sale-page .sale-nav{display:inline-block;width:100%}.sale-page li{float:left;width:20%;height:40px;line-height:40px;background-color:#e0e0e0;text-align:center;background-color:#f5f5f5;color:#6d6d6d;margin-bottom:10px}.sale-page li.active{color:#fff;background-repeat:no-repeat;background-size:100% 100%}.sale-page li.green.active{color:#fff;background-image:url(../assets/img/sale/navactive-green-middle.png?v15551f02ca7);background-repeat:no-repeat;background-size:100% 100%}.sale-page li.green.first.active{background-image:url(../assets/img/sale/navactive-green-first.png?v15551f02ca3)}.sale-page li.green.last.active{background-image:url(../assets/img/sale/navactive-green-last.png?v15551f02ca5)}.sale-page li.yellow.active{color:#fff;background-image:url(../assets/img/sale/navactive-yellow-middle.png?v15551f02cb0);background-repeat:no-repeat;background-size:100% 100%}.sale-page li.yellow.first.active{background-image:url(../assets/img/sale/navactive-yellow-first.png?v15551f02cad)}.sale-page li.yellow.last.active{background-image:url(../assets/img/sale/navactive-yellow-last.png?v15551f02caf)}.sale-page li.red.active{color:#fff;background-image:url(../assets/img/sale/navactive-red-middle.png?v15551f02cac);background-repeat:no-repeat;background-size:100% 100%}.sale-page li.red.first.active{background-image:url(../assets/img/sale/navactive-red-first.png?v15551f02ca8)}.sale-page li.red.last.active{background-image:url(../assets/img/sale/navactive-red-last.png?v15551f02caa)}.sale-page .commodity-list ul{width:1004px}.sale-page .commodity-item{float:left;width:241px;margin:0 10px 0 0}.sale-page .commodity-img{position:relative;height:323px;text-align:center}.sale-page .commodity-img img{width:100%;height:100%;vertical-align:middle}.sale-page .commodity-img .top-tag{position:absolute;width:60px;height:60px;top:10px;right:10px;line-height:60px;background:url(furniture/top-tag-bg.png?1450667948);font-size:20px;color:#fff}.sale-page .commodity-img .few-tag{position:absolute;bottom:0;width:100%;height:20px;background:#ffac5b;color:#fff;line-height:20px;text-align:center;font-size:12px}.sale-page .commodity-content{padding-top:10px;height:69px;overflow:hidden}.sale-page .commodity-content .commodity-name{font-size:12px;color:#000;line-height:18px;text-align:center}.sale-page .commodity-content .commodity-price{position:relative;margin-top:3px;text-align:center;line-height:20px;color:#000}.sale-page .commodity-content .commodity-price span{display:inline-block;display:inline;zoom:1;font-size:12px;padding:0 15px}.sale-page .commodity-content .commodity-price span.origin{text-decoration:line-through}.sale-page .commodity-content .commodity-price strong{font-weight:400;color:#565656;font-size:13px}.sale-page .commodity-content .commodity-price span.vip-tag{background-image:url(../assets/img/sale/vip.png?v15551f02cb3);background-repeat:no-repeat;background-size:100% 90%;width:40px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;width:30px}.sale-page .commodity-content .commodity-price span.vip-1{background-image:url(../assets/img/product/silver-small.png?v15551f02c94)}.sale-page .commodity-content .commodity-price span.vip-1,.sale-page .commodity-content .commodity-price span.vip-2{background-repeat:no-repeat;width:30px;display:inline-block;height:12px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;position:absolute}.sale-page .commodity-content .commodity-price span.vip-2{background-image:url(../assets/img/product/golden-small.png?v15551f02c85)}.sale-page .commodity-content .commodity-price span.vip-3{background-image:url(../assets/img/product/platinum-small.png?v15551f02c8d);background-repeat:no-repeat;width:30px;display:inline-block;height:12px;color:#fff;font-style:italic;margin-right:5px;margin-left:5px;position:absolute}.sale-page .commodity-content .commodity-price .price-sale{margin-left:10px;padding-left:10px;width:36px;height:20px;line-height:20px;background:url(../assets/images/furniture/sale-tag-bg.png?1450667948);color:#fff}@media screen and (min-width:1150px){.sale-page .floor-header{margin:80px 0 40px}.sale-page .floor-header .header-navs li{padding:1px 15px}}@media screen and (min-width:1150px){.sale-page .commodity-list ul{width:1160px}.sale-page .commodity-item{width:280px}.sale-page .commodity-img{height:374px}.sale-page .commodity-content{padding-top:14px;height:77px}}.sale-discount-page .sale-title{margin:30px 0;font-size:12px;line-height:26px}.sale-discount-page .sale-title .title{margin-right:20px;font-size:16px}.sale-discount-page .sale-title .discount{display:inline-block;margin-right:10px;padding:0 10px;font-weight:lighter;line-height:16px;vertical-align:text-bottom;color:#fff;background:#ff575c}.sale-discount-page .sale-title .time .iconfont{margin-right:5px}.sale-discount-page .sort{padding:10px;border:1px solid #eaeceb}.sale-discount-page .sort li{display:inline-block;margin-right:15px;padding:0 10px;font-size:12px;line-height:20px;color:#444}.sale-discount-page .sort li.title{margin-right:0;font-weight:700}.sale-discount-page .sort li.active{color:#666;border:1px solid #000}.sale-discount-page .pager{float:right}.outlets-page .column-img-tab{height:178px;margin-top:15px}.outlets-page .column-img-tab li{width:380px;height:178px;margin-left:5px;float:left;overflow:hidden}.outlets-page .column-img-tab li:first-child{margin-left:0}.outlets-page .column-img-tab img{width:100%}.outlets-page .limited-buy .limit-list{width:65%}.outlets-page .limited-buy .limit-item{height:260px;margin-top:15px;overflow:hidden}.outlets-page .limited-buy .limit-item img{width:76%;height:100%;float:right}.outlets-page .limited-buy .limit-item .item-info{width:24%;height:100%;color:#585858;font-size:14px;background-color:#f5f5f5;position:relative;text-align:center;z-index:1}.outlets-page .limited-buy .limit-item .item-info>a{width:100%;height:100%;display:block}.outlets-page .limited-buy .limit-item .logo-img{width:79%;height:25%;margin:25px 0 40px;float:none}.outlets-page .limited-buy .limit-item .discount{font-size:20px;font-weight:700}.outlets-page .limited-buy .limit-item i{font-style:italic;color:#fe575d;font-size:30px;margin-right:10px}.outlets-page .limited-buy .limit-item .title{font-size:16px;margin:28px 0 14px;font-weight:700}.outlets-page .limited-buy .limit-item .time{color:#585858}.outlets-page .limited-buy .limit-item:first-child{margin-top:0}.outlets-page .limit-extra{width:33%}.outlets-page .limit-extra .source-img{display:block;margin-bottom:15px}.outlets-page .limit-extra .type-list{padding:15px 10px}.outlets-page .limit-extra .type-list li{width:27%;margin-left:4%;line-height:40px;display:inline-block;text-align:center}.outlets-page .limit-extra .good-list{width:300%}.outlets-page .limit-extra .good-list .list-page{width:33%;max-height:918px;overflow:hidden;display:inline-block;vertical-align:top}.outlets-page .limit-extra .good-list .good-item{padding:15px}.outlets-page .limit-extra .item-text{width:225px;padding-right:10px;padding-top:5px;float:right}.outlets-page .limit-extra .item-text a{line-height:26px;color:#555;margin:5px 0 20px}.outlets-page .limit-extra .item-text .price{margin-top:20px}.outlets-page .limit-extra .item-text .sale-price{color:#ec0011;margin-right:15px}.outlets-page .limit-extra .item-text .market-price{color:#999;margin-right:15px;text-decoration:line-through}.outlets-page .limit-extra .item-text .discount{font-size:12px;line-height:22px;color:#fff;padding:0 10px 0 20px;background:url(../assets/img/product/discount-tag.png?v15551f02c81) no-repeat;display:inline-block}.outlets-page .limit-extra .good-page-btns{text-align:center;padding-bottom:10px;user-select:none}.outlets-page .limit-extra .good-page-btns label{width:40px;height:40px;line-height:40px;color:#fff;background-color:#000;text-align:center;display:inline-block;cursor:pointer;font-size:26px}.outlets-page .limit-extra .good-page-btns label:first-child{margin-right:20px}.outlets-page .extra-pack{margin-bottom:15px;border:1px solid #000;overflow:hidden}.outlets-page .extra-pack .extra-title{height:34px;line-height:34px;background-color:#000;color:#fff;font-size:18px;text-align:center}.outlets-page .near-over{width:1170px;margin-top:-20px}.outlets-page .near-over .activity-list{margin-top:-20px}.outlets-page .near-over li{float:left;margin-right:20px;margin-top:20px}.outlets-page .near-over li>a{width:565px;height:263px;display:block}.outlets-page .near-over .item-info{height:80px;border:1px solid #000;border-top:0;margin-top:-3px}.outlets-page .near-over .brand-logo{width:120px;float:right}.outlets-page .near-over .activity-info{width:360px;padding:10px 20px}.outlets-page .near-over .activity-info p{color:#585858;font-size:16px}.outlets-page .near-over .activity-info p:first-child{font-size:20px;font-weight:700;margin-bottom:10px;color:#000}.outlets-page .near-over .activity-info i{font-style:italic;color:#fe575d;font-size:30px;margin-right:10px}.outlets-page .near-over .activity-info .title{max-width:250px;color:#3a3a3a;font-size:16px;margin-left:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom}.outlets-page .sort-layer{height:48px}.outlets-page .sort-layer .full-line{width:100%;background:#f5f7f6;position:absolute;left:0}.outlets-page .sort-layer .fixed{position:fixed;top:0;z-index:12;opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.outlets-page .sort-layer .sort-pager{width:1150px;margin:0 auto}.outlets-page .main-banner{height:450px;position:relative}.outlets-page .main-banner .slide-wrapper{height:100%}.outlets-page .main-banner ul{width:100%;height:100%;position:relative}.outlets-page .main-banner li{position:absolute;top:0;left:0}.outlets-page .main-banner li,.outlets-page .main-banner li>a{width:100%;height:100%;display:block}.outlets-page .main-banner .slide-switch{position:relative;width:1150px;left:50%;margin-left:-575px;top:-225px;display:block}.outlets-page .main-banner .slide-shade{display:none}.outlets-page .product-pager{padding:20px 0;font-size:12px;color:#6a6a6a;border-top:2px solid #eaeceb}.outlets-page .product-pager .pager{float:right}.outlets-channel-page .slide-thumb-container{height:510px}.outlets-channel-page .slide-wrapper{position:relative;height:450px;overflow:hidden}.outlets-channel-page .slide-wrapper ul{position:relative;height:100%}.outlets-channel-page .slide-wrapper li{display:none;position:absolute;top:0;right:0;width:860px;height:100%}.outlets-channel-page .slide-wrapper li a{display:block;height:100%;width:860px;margin:0 auto}.outlets-channel-page .slide-wrapper li img{width:100%;height:100%}.outlets-channel-page .slide-wrapper:hover .slide-switch.show,.outlets-channel-page .slide-wrapper li:first-child{display:block}.outlets-channel-page .slide-container-placeholder{height:450px;width:100%}.outlets-channel-page .slide-thumb-container-placeholder{height:510px}.outlets-channel-page .slide-switch{display:block}.outlets-channel-page .slide-switch a{position:absolute;top:50%;margin:-30px 0 0;width:60px;height:60px;line-height:56px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.outlets-channel-page .slide-switch a .iconfont{font-size:32px;color:#59585a}.outlets-channel-page .slide-switch a.prev{left:50%;margin-left:-575px}.outlets-channel-page .slide-switch a.next{right:50%;margin-right:-575px}.outlets-channel-page .slide-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.outlets-channel-page .thumb-pagination{width:1148px;margin:6px auto 0;padding-left:2px}.outlets-channel-page .thumb-pagination li{position:relative;float:left;margin-left:6px;width:138px;height:54px}.outlets-channel-page .thumb-pagination li a{position:absolute;left:0;right:0;bottom:0;top:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.outlets-channel-page .thumb-pagination li img{width:100%;height:100%}.outlets-channel-page .thumb-pagination li:first-child{margin:0}.outlets-channel-page .thumb-pagination li.focus a{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.outlets-channel-page .slide-pagination{font-size:0;width:860px}.outlets-channel-page .slide-pagination .slide-shade{position:absolute;left:0;right:0;top:0;bottom:0;background:#000;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";border-radius:13px}.outlets-channel-page .slide-pagination span{position:relative;display:inline-block;margin:0 7px;width:12px;height:12px;background:#fff;cursor:pointer;opacity:.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";border-radius:6px;z-index:2}.outlets-channel-page .slide-pagination span.focus{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.outlets-channel-page .slide-container{height:450px;width:100%;position:relative}.outlets-channel-page .slide-container .col{float:left}.outlets-channel-page .slide-container .col a{display:block}.outlets-channel-page .slide-container .right-col a:last-child{margin-bottom:0}.outlets-channel-page .slide-container .right-col img{height:100%;width:100%}.outlets-channel-page .slide-container .center-col{position:relative;width:860px;height:450px;font-size:0;margin-right:0}.outlets-channel-page .slide-container .center-col .slide-wrapper{height:100%}.outlets-channel-page .slide-container .center-col .slide-wrapper li a{width:100%}.outlets-channel-page .slide-container .center-col img{max-width:100%;max-height:100%}.outlets-channel-page .slide-container .center-col:hover .slide-switch.show{display:block}.outlets-channel-page .slide-container .right-col a{width:290px;height:270px}.outlets-channel-page .slide-container .right-col a:first-child{margin-bottom:0;height:180px}.outlets-channel-page .new-report img{display:block;width:100%;height:100%}.outlets-channel-page .new-report .report-list{float:left;width:868px}.outlets-channel-page .new-report li{float:left;margin:0 8px 8px 0;width:185px;height:248px;overflow:hidden}.outlets-channel-page .new-report li:first-child{margin-right:7px;width:282px;height:504px}.outlets-channel-page .new-report .last-item{float:left;width:282px;height:504px;overflow:hidden}.outlets-channel-page .preference-brand{overflow:hidden}.outlets-channel-page .preference-brand-list{margin-top:8px;width:1158px}.outlets-channel-page .preference-brand-item{float:left;margin-right:8px;margin-bottom:8px}.outlets-channel-page .preference-brand-item a{display:table-cell;width:185px;height:86px;text-align:center;vertical-align:middle}.outlets-channel-page .preference-brand-item img{display:block;max-width:100%;max-height:100%;margin:0 auto}.outlets-channel-page .preference-more{float:left;width:185px;height:86px;line-height:100px;text-align:center;color:#000;font-size:16px}.outlets-channel-page .img-slider-wrapper{position:relative;width:100%;height:558px;background:#8ae6e0;overflow:hidden}.outlets-channel-page .img-slider-wrapper .img-brand-switch{display:block}.outlets-channel-page .img-slider-wrapper .img-brand-switch a{position:absolute;top:50%;font-size:36px;color:#fff}.outlets-channel-page .img-slider-wrapper .img-brand-switch a.next{right:30px}.outlets-channel-page .img-slider-wrapper .img-brand-switch a.prev{left:30px}.outlets-channel-page .img-container-landscape{box-sizing:border-box;margin:86px auto 0;width:982px;height:433px;overflow:hidden}.outlets-channel-page .img-container-landscape .img-list{width:1000px;height:100%}.outlets-channel-page .img-container-landscape .img-item{float:left;box-sizing:border-box;width:320px;height:100%;margin-right:10px}.outlets-channel-page .img-container-landscape .img-item img{width:100%;height:100%}.outlets-channel-page .img-brand{position:relative;width:100%;height:175px;overflow:hidden}.outlets-channel-page .img-brand ul{width:1158px}.outlets-channel-page .img-brand li{float:left;margin:0 8px 0 0;width:378px;height:175px;line-height:175px;overflow:hidden;font-size:0;text-align:center}.outlets-channel-page .img-brand li img{max-width:100%;max-height:100%;vertical-align:middle}.outlets-channel-page .img-brand .img-brand-switch{display:none}.outlets-channel-page .img-brand .img-brand-switch a{position:absolute;top:50%;margin:-20px 0 0;width:40px;height:40px;line-height:40px;text-align:center;z-index:2;background:#fff;opacity:.55;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=55)"}.outlets-channel-page .img-brand .img-brand-switch a.prev{left:0}.outlets-channel-page .img-brand .img-brand-switch a.next{right:0}.outlets-channel-page .img-brand .img-brand-switch a:hover{opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"}.outlets-channel-page .img-brand:hover .img-brand-switch{display:block}.outlets-channel-page .logo-brand{width:100%;height:282px;overflow:hidden}.outlets-channel-page .logo-brand ul{width:1158px}.outlets-channel-page .logo-brand li{float:left;margin:8px 8px 0 0;width:185px;height:86px;line-height:86px;font-size:0;text-align:center}.outlets-channel-page .logo-brand li img{max-width:100%;max-height:100%;vertical-align:middle}.outlets-channel-page .logo-brand .logo-brand-switch{position:relative;background:url(../assets/img/index/logo-brand-line.png?v15551f02c1e) no-repeat 50%;line-height:normal}.outlets-channel-page .logo-brand .logo-brand-switch .iconfont{position:absolute;left:50%;font-size:32px}.outlets-channel-page .logo-brand .logo-brand-switch .iconfont.prev{top:10px;margin-left:-48px}.outlets-channel-page .logo-brand .logo-brand-switch .iconfont.next{bottom:12px;margin-left:20px}.outlets-channel-page .logo-brand .brand-more{font-size:16px}.outlets-channel-page .logo-brand .brand-more:hover{text-decoration:underline}.outlets-channel-page .logo-brand.logos-10{height:188px}.outlets-channel-page .categorys-list ul{width:1158px}.outlets-channel-page .categorys-list li{float:left;margin:0 8px 8px 0;width:185px;height:248px}.outlets-channel-page .categorys-list li img{display:block;width:100%;height:100%}.outlets-channel-page .categorys-list li.cate-item0{width:185px;height:504px}.outlets-channel-page .categorys-list li.cate-item1{width:377px;height:504px}.outlets-channel-page .tpl-recommend{width:100%;position:relative}.outlets-channel-page .tpl-recommend a{display:block}.outlets-channel-page .tpl-recommend a img{display:block;width:100%;height:100%}.outlets-channel-page .tpl-recommend .tpl-body{margin-bottom:8px}.outlets-channel-page .tpl-recommend .tpl-nav{float:left;overflow:hidden}.outlets-channel-page .tpl-recommend .tpl-nav .tpl-keywords{margin-bottom:8px}.outlets-channel-page .tpl-recommend .tpl-nav .tpl-category{padding:10px 0;background-color:#f8f8f8;overflow:hidden}.outlets-channel-page .tpl-recommend .tpl-nav .tpl-category a{float:left;width:50%;text-align:center;color:#000;overflow:hidden}.outlets-channel-page .tpl-recommend .tpl-brands{float:left;overflow:hidden;margin-left:8px}.outlets-channel-page .tpl-recommend .tpl-brands li{margin-top:8px}.outlets-channel-page .tpl-recommend .tpl-types{float:left;overflow:hidden;margin-top:-8px;width:579px}.outlets-channel-page .tpl-recommend .tpl-types li{float:left;margin-left:8px;margin-top:8px}.outlets-channel-page .tpl-recommend .tpl-types li a{width:185px;height:248px}.outlets-channel-page .tpl-recommend .tpl-products{overflow:hidden;margin-left:-10px}.outlets-channel-page .tpl-recommend .tpl-products li{float:left;margin-left:10px}.outlets-channel-page .tpl-recommend .tpl-products li a{width:222px;height:298px}.outlets-channel-page .tpl-recommend .tpl-nav{width:185px}.outlets-channel-page .tpl-recommend .tpl-nav .keywords0,.outlets-channel-page .tpl-recommend .tpl-nav .keywords1,.outlets-channel-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:10px;height:76px}.outlets-channel-page .tpl-recommend .tpl-nav .keywords2{margin-bottom:0}.outlets-channel-page .tpl-recommend .tpl-nav .tpl-category{height:228px}.outlets-channel-page .tpl-recommend .tpl-nav .tpl-category a{height:38px;line-height:38px;font-size:14px}.outlets-channel-page .tpl-recommend .tpl-brands{width:378px;height:512px}.outlets-channel-page .tpl-recommend .tpl-brands li a{height:248px}.outlets-special-page .main-banner{height:360px}.outlets-special-page .special-head{margin:15px 0;border-bottom:1px dashed #ccc}.outlets-special-page .special-head .special-limit{float:right;line-height:38px}.outlets-special-page .special-head .special-name{height:40px;line-height:40px;font-size:20px}.outlets-special-page .special-head .special-name img{width:100px;height:40px;vertical-align:top}.outlets-special-page .special-head .special-name span{font-size:16px}.outlets-special-page .special-head .special-name i{font-weight:700;font-style:italic;color:#fe575d;font-size:26px;position:relative;top:3px;margin:0 8px 0 2px}.outlets-special-page .special-head .special-title{font-size:22px;height:34px;text-align:center}.outlets-special-page .special-head .all-count{width:120px;font-size:12px;line-height:26px;background:#fff;margin-left:-60px;font-weight:400;position:absolute;left:50%;display:block}.main-product .all-goods-menu{height:35px;line-height:35px;padding:45px 0 10px}.main-product .all-goods-menu .menu-tag{color:#d0021b;font-size:15px;font-weight:700;text-align:left;padding:0 20px 0 10px;border-right:1px solid #000;float:left}.main-product .all-goods-menu .menu-list{width:850px;height:35px;overflow:hidden;float:left;font-size:14px;padding-left:10px}.main-product .all-goods-menu .menu-list li{display:inline-block;padding:0 15px}.main-product .all-goods-menu .menu-list .on{background:#000;height:28px;line-height:28px}.main-product .all-goods-menu .menu-list .on a{color:#fff}.main-product .all-goods-menu .more{font-size:14px;float:right}.main-product .product-list{width:1160px}.main-product .product-list .list-item{width:222px;margin:23px 10px 23px 0;float:left}.main-product .product-list .thumb{width:100%;height:130%;display:inline-block}.main-product .product-list .thumb img{width:100%;height:100%}.main-product .product-list .detail-text{padding:15px 0;text-align:center;font-size:14px;font-weight:700}.main-product .product-list .name{line-height:1.5;padding:0 20px;margin-bottom:3px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main-product .product-list .discount{font-size:12px;line-height:22px;color:#fff;padding:0 10px 0 20px;margin-left:20px;background:url(../assets/img/product/discount-tag.png?v15551f02c81) no-repeat;display:inline-block}.product-page .product-pager{padding:20px 0;font-size:12px;color:#6a6a6a;border-top:2px solid #eaeceb}.product-page .product-pager .pager{float:right}.product-page .list-left{width:160px}.product-page .list-right{width:970px}.new-sale-page .goods-container,.product-list-page .goods-container{height:auto;padding-top:25px;position:relative;width:980px}.new-sale-page .goods-container .good-info,.product-list-page .goods-container .good-info{width:235px}.new-sale-page .goods-container .good-info .good-detail-img,.product-list-page .goods-container .good-info .good-detail-img{height:315px}.new-sale-page .goods-container .block-next-page,.product-list-page .goods-container .block-next-page{width:235px;height:315px}.new-sale-page .filter-box .brand .attr-content,.product-list-page .filter-box .brand .attr-content{max-width:730px}.min-screen .new-sale-page .list-right,.min-screen .product-list-page .list-right{width:810px}.min-screen .new-sale-page .goods-container,.min-screen .product-list-page .goods-container{height:auto;padding-top:25px;position:relative;width:820px}.min-screen .new-sale-page .goods-container .good-info,.min-screen .product-list-page .goods-container .good-info{width:195px}.min-screen .new-sale-page .goods-container .good-info .good-detail-img,.min-screen .product-list-page .goods-container .good-info .good-detail-img{height:261px}.min-screen .new-sale-page .goods-container .block-next-page,.min-screen .product-list-page .goods-container .block-next-page{width:195px;height:261px}.min-screen .new-sale-page .filter-box .brand .attr-content,.min-screen .product-list-page .filter-box .brand .attr-content{max-width:570px}
\ No newline at end of file
diff --git a/public/dist/yohobuy-node/0.0.1/product.outlets.js b/public/dist/yohobuy-node/0.0.1/product.outlets.js
deleted file mode 100644
index 8152b08..0000000
--- a/public/dist/yohobuy-node/0.0.1/product.outlets.js
+++ /dev/null
@@ -1,54 +0,0 @@
-!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){function i(e){var t=36e5,n=6e4,i=1e3,r="",o=0,a=0,s=0,l=0;return e>1e3&&(o=Math.floor(e/t/24),a=Math.floor(e/t%24),s=Math.floor(e/n%60),l=Math.floor(e/i%60),r+=o>0?o+"天":"",r+=a>0?a+"小时":"",r+=s>0?s+"分钟":"",r+=l>0?l+"秒":""),r}function r(){var e,t;for(e=0;e<d.length;e++)d[e].time-=1e3,t=i(d[e].time),d[e].dom.text(t)}function o(e){u.animate({"margin-left":10*-e+"0%"},"fast"),u.data({page:e})}function a(){var e=u.find(".good-item"),t="",n=[],i=0;if(u.length){for(e.each(function(){i%5===0&&n.push(""),n[n.length-1]+=e[i].outerHTML,i++}),u.data({max:n.length}),i=0;i<n.length;i++)t+='<div class="list-page">'+n[i]+"</div>";u.html(t)}}var s,l=n(2),c=n(6),u=l(".limit-main .good-list"),p=l(".sort-layer .full-line"),h=l(".outlets-page").data("page"),d=[];n(1),n(10),n(16),p.length&&(s=p.parent(),l(window).scroll(function(){var e=s.position().top;l(this).scrollTop()>=e?p.addClass("fixed"):p.removeClass("fixed")})),l(".time").each(function(){var e=l(this).data();e.limit&&d.push({dom:l(this),time:e.limit})}),l(".good-page-btns > label").click(function(){var e=(new Date).getTime(),t=u.data(),n=t.max-1,i=t.page?t.page:0;t.time&&e-t.time<700||(u.data({time:e}),l(this).hasClass("pre-page-btn")?i>0?i-=1:o(-.1):n>i?i+=1:o(n+.1),o(i))}),setInterval(r,1e3),h?l(".slide-container").slider({orient:!1}):l(".slide-container").slider({orient:!0}),a(),c(l("img.lazy"))},function(e,t,n){function i(e){var t=new RegExp(e+"=([^;$]*)","i"),n="$1";return t.test(decodeURIComponent(document.cookie))?RegExp[n]:""}function r(e,t,n){var i,r,o,a,s="";"undefined"!=typeof t&&(n=n||{},null===t&&(t="",n.expires=-1),n.expires&&("number"==typeof n.expires||n.expires.toUTCString)&&("number"==typeof n.expires?(a=new Date,a.setTime(a.getTime()+24*n.expires*60*60*1e3)):a=n.expires,s="; expires="+a.toUTCString()),i=n.path?"; path="+n.path:"",r=n.domain?"; domain="+n.domain:"",o=n.secure?"; secure":"",document.cookie=[e,"=",encodeURIComponent(t),s,i,r,o].join(""))}function o(){var e,t=i("_UID");return"undefined"==typeof t?0:(e=t.split("::"),"undefined"==typeof e||e.length<4?0:e)}function a(){var e=o();return 0===e?0:e[1]}function s(){var e=i("_g");return"undefined"==typeof e?"":JSON.parse(e).k}function l(){var e,t,n={},i=window.location.search,r=i?decodeURIComponent(i).slice(1).split("&"):[];for(t=0;t<r.length;t++)e=r[t].split("="),n[e[0]]=e[1];return n}var c=n(2),u=c("body");!function(e,t,n,i,r){var o=t.createElement(n),a=t.getElementsByTagName(n)[0];e.YohoAcquisitionObject=r,e[r]=function(){e[r].p=arguments},o.async=1,o.src=i,a.parentNode.insertBefore(o,a)}(window,document,"script","http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js","_yas"),function(){var e=a();e=0===e?"":e,window._ozuid=e,window._yas&&window._yas(1*new Date,"1.0.14","yohobuy_web",e,"","")}(),c(window).on("resize",function(){var e=c(this).width();1360>e?c(".return-top").addClass("min"):c(".return-top").removeClass("min"),1180>e?u.addClass("min-screen"):u.removeClass("min-screen")}).trigger("resize"),function(){c(window).load(function(){var e,t=document.getElementById("user-thumb");t&&(e=new Image,e.src=t.src,e.onerror=function(){c(t).parent().append('<div class="default-user-thumb"></div>').end().remove()})})}(),window.cookie=i,window.setCookie=r,window.getUser=o,window.getUid=a,window.getShoppingKey=s,window.queryString=l,n(3),n(5)},function(e,t,n){var i,r;/*!
-	 * jQuery JavaScript Library v1.12.4
-	 * http://jquery.com/
-	 *
-	 * Includes Sizzle.js
-	 * http://sizzlejs.com/
-	 *
-	 * Copyright jQuery Foundation and other contributors
-	 * Released under the MIT license
-	 * http://jquery.org/license
-	 *
-	 * Date: 2016-05-20T17:17Z
-	 */
-!function(t,n){"object"==typeof e&&"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,o){function a(e){var t=!!e&&"length"in e&&e.length,n=ve.type(e);return"function"===n||ve.isWindow(e)?!1:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function s(e,t,n){if(ve.isFunction(t))return ve.grep(e,function(e,i){return!!t.call(e,i,e)!==n});if(t.nodeType)return ve.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ae.test(t))return ve.filter(t,e,n);t=ve.filter(t,e)}return ve.grep(e,function(e){return ve.inArray(e,t)>-1!==n})}function l(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function c(e){var t={};return ve.each(e.match(Ie)||[],function(e,n){t[n]=!0}),t}function u(){se.addEventListener?(se.removeEventListener("DOMContentLoaded",p),n.removeEventListener("load",p)):(se.detachEvent("onreadystatechange",p),n.detachEvent("onload",p))}function p(){(se.addEventListener||"load"===n.event.type||"complete"===se.readyState)&&(u(),ve.ready())}function h(e,t,n){if(void 0===n&&1===e.nodeType){var i="data-"+t.replace(Me,"-$1").toLowerCase();if(n=e.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:Be.test(n)?ve.parseJSON(n):n}catch(r){}ve.data(e,t,n)}else n=void 0}return n}function d(e){var t;for(t in e)if(("data"!==t||!ve.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function f(e,t,n,i){if(je(e)){var r,o,a=ve.expando,s=e.nodeType,l=s?ve.cache:e,c=s?e[a]:e[a]&&a;if(c&&l[c]&&(i||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=s?e[a]=ae.pop()||ve.guid++:a),l[c]||(l[c]=s?{}:{toJSON:ve.noop}),"object"!=typeof t&&"function"!=typeof t||(i?l[c]=ve.extend(l[c],t):l[c].data=ve.extend(l[c].data,t)),o=l[c],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[ve.camelCase(t)]=n),"string"==typeof t?(r=o[t],null==r&&(r=o[ve.camelCase(t)])):r=o,r}}function m(e,t,n){if(je(e)){var i,r,o=e.nodeType,a=o?ve.cache:e,s=o?e[ve.expando]:ve.expando;if(a[s]){if(t&&(i=n?a[s]:a[s].data)){ve.isArray(t)?t=t.concat(ve.map(t,ve.camelCase)):t in i?t=[t]:(t=ve.camelCase(t),t=t in i?[t]:t.split(" ")),r=t.length;for(;r--;)delete i[t[r]];if(n?!d(i):!ve.isEmptyObject(i))return}(n||(delete a[s].data,d(a[s])))&&(o?ve.cleanData([e],!0):me.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function g(e,t,n,i){var r,o=1,a=20,s=i?function(){return i.cur()}:function(){return ve.css(e,t,"")},l=s(),c=n&&n[3]||(ve.cssNumber[t]?"":"px"),u=(ve.cssNumber[t]||"px"!==c&&+l)&&Re.exec(ve.css(e,t));if(u&&u[3]!==c){c=c||u[3],n=n||[],u=+l||1;do o=o||".5",u/=o,ve.style(e,t,u+c);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(u=+u||+l||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],i&&(i.unit=c,i.start=u,i.end=r)),r}function v(e){var t=Ke.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function y(e,t){var n,i,r=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(i=n[r]);r++)!t||ve.nodeName(i,t)?o.push(i):ve.merge(o,y(i,t));return void 0===t||t&&ve.nodeName(e,t)?ve.merge([e],o):o}function b(e,t){for(var n,i=0;null!=(n=e[i]);i++)ve._data(n,"globalEval",!t||ve._data(t[i],"globalEval"))}function x(e){ze.test(e.type)&&(e.defaultChecked=e.checked)}function w(e,t,n,i,r){for(var o,a,s,l,c,u,p,h=e.length,d=v(t),f=[],m=0;h>m;m++)if(a=e[m],a||0===a)if("object"===ve.type(a))ve.merge(f,a.nodeType?[a]:a);else if(Ye.test(a)){for(l=l||d.appendChild(t.createElement("div")),c=(Ue.exec(a)||["",""])[1].toLowerCase(),p=Je[c]||Je._default,l.innerHTML=p[1]+ve.htmlPrefilter(a)+p[2],o=p[0];o--;)l=l.lastChild;if(!me.leadingWhitespace&&Xe.test(a)&&f.push(t.createTextNode(Xe.exec(a)[0])),!me.tbody)for(a="table"!==c||Qe.test(a)?"<table>"!==p[1]||Qe.test(a)?0:l:l.firstChild,o=a&&a.childNodes.length;o--;)ve.nodeName(u=a.childNodes[o],"tbody")&&!u.childNodes.length&&a.removeChild(u);for(ve.merge(f,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=d.lastChild}else f.push(t.createTextNode(a));for(l&&d.removeChild(l),me.appendChecked||ve.grep(y(f,"input"),x),m=0;a=f[m++];)if(i&&ve.inArray(a,i)>-1)r&&r.push(a);else if(s=ve.contains(a.ownerDocument,a),l=y(d.appendChild(a),"script"),s&&b(l),n)for(o=0;a=l[o++];)Ve.test(a.type||"")&&n.push(a);return l=null,d}function k(){return!0}function S(){return!1}function _(){try{return se.activeElement}catch(e){}}function C(e,t,n,i,r,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(i=i||n,n=void 0);for(s in t)C(e,s,n,i,t[s],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),r===!1)r=S;else if(!r)return e;return 1===o&&(a=r,r=function(e){return ve().off(e),a.apply(this,arguments)},r.guid=a.guid||(a.guid=ve.guid++)),e.each(function(){ve.event.add(this,t,r,i,n)})}function E(e,t){return ve.nodeName(e,"table")&&ve.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function A(e){return e.type=(null!==ve.find.attr(e,"type"))+"/"+e.type,e}function T(e){var t=lt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&ve.hasData(e)){var n,i,r,o=ve._data(e),a=ve._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(i=0,r=s[n].length;r>i;i++)ve.event.add(t,n,s[n][i])}a.data&&(a.data=ve.extend({},a.data))}}function P(e,t){var n,i,r;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!me.noCloneEvent&&t[ve.expando]){r=ve._data(t);for(i in r.events)ve.removeEvent(t,i,r.handle);t.removeAttribute(ve.expando)}"script"===n&&t.text!==e.text?(A(t).text=e.text,T(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),me.html5Clone&&e.innerHTML&&!ve.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&ze.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}}function L(e,t,n,i){t=ce.apply([],t);var r,o,a,s,l,c,u=0,p=e.length,h=p-1,d=t[0],f=ve.isFunction(d);if(f||p>1&&"string"==typeof d&&!me.checkClone&&st.test(d))return e.each(function(r){var o=e.eq(r);f&&(t[0]=d.call(this,r,o.html())),L(o,t,n,i)});if(p&&(c=w(t,e[0].ownerDocument,!1,e,i),r=c.firstChild,1===c.childNodes.length&&(c=r),r||i)){for(s=ve.map(y(c,"script"),A),a=s.length;p>u;u++)o=c,u!==h&&(o=ve.clone(o,!0,!0),a&&ve.merge(s,y(o,"script"))),n.call(e[u],o,u);if(a)for(l=s[s.length-1].ownerDocument,ve.map(s,T),u=0;a>u;u++)o=s[u],Ve.test(o.type||"")&&!ve._data(o,"globalEval")&&ve.contains(l,o)&&(o.src?ve._evalUrl&&ve._evalUrl(o.src):ve.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ct,"")));c=r=null}return e}function D(e,t,n){for(var i,r=t?ve.filter(t,e):e,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||ve.cleanData(y(i)),i.parentNode&&(n&&ve.contains(i.ownerDocument,i)&&b(y(i,"script")),i.parentNode.removeChild(i));return e}function I(e,t){var n=ve(t.createElement(e)).appendTo(t.body),i=ve.css(n[0],"display");return n.detach(),i}function H(e){var t=se,n=dt[e];return n||(n=I(e,t),"none"!==n&&n||(ht=(ht||ve("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(ht[0].contentWindow||ht[0].contentDocument).document,t.write(),t.close(),n=I(e,t),ht.detach()),dt[e]=n),n}function O(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function j(e){if(e in Tt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=At.length;n--;)if(e=At[n]+t,e in Tt)return e}function B(e,t){for(var n,i,r,o=[],a=0,s=e.length;s>a;a++)i=e[a],i.style&&(o[a]=ve._data(i,"olddisplay"),n=i.style.display,t?(o[a]||"none"!==n||(i.style.display=""),""===i.style.display&&Fe(i)&&(o[a]=ve._data(i,"olddisplay",H(i.nodeName)))):(r=Fe(i),(n&&"none"!==n||!r)&&ve._data(i,"olddisplay",r?n:ve.css(i,"display"))));for(a=0;s>a;a++)i=e[a],i.style&&(t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?o[a]||"":"none"));return e}function M(e,t,n){var i=_t.exec(t);return i?Math.max(0,i[1]-(n||0))+(i[2]||"px"):t}function $(e,t,n,i,r){for(var o=n===(i?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=ve.css(e,n+qe[o],!0,r)),i?("content"===n&&(a-=ve.css(e,"padding"+qe[o],!0,r)),"margin"!==n&&(a-=ve.css(e,"border"+qe[o]+"Width",!0,r))):(a+=ve.css(e,"padding"+qe[o],!0,r),"padding"!==n&&(a+=ve.css(e,"border"+qe[o]+"Width",!0,r)));return a}function R(e,t,n){var i=!0,r="width"===t?e.offsetWidth:e.offsetHeight,o=yt(e),a=me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,o);if(0>=r||null==r){if(r=bt(e,t,o),(0>r||null==r)&&(r=e.style[t]),mt.test(r))return r;i=a&&(me.boxSizingReliable()||r===e.style[t]),r=parseFloat(r)||0}return r+$(e,t,n||(a?"border":"content"),i,o)+"px"}function q(e,t,n,i,r){return new q.prototype.init(e,t,n,i,r)}function F(){return n.setTimeout(function(){Nt=void 0}),Nt=ve.now()}function W(e,t){var n,i={height:e},r=0;for(t=t?1:0;4>r;r+=2-t)n=qe[r],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function z(e,t,n){for(var i,r=(X.tweeners[t]||[]).concat(X.tweeners["*"]),o=0,a=r.length;a>o;o++)if(i=r[o].call(n,t,e))return i}function U(e,t,n){var i,r,o,a,s,l,c,u,p=this,h={},d=e.style,f=e.nodeType&&Fe(e),m=ve._data(e,"fxshow");n.queue||(s=ve._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,p.always(function(){p.always(function(){s.unqueued--,ve.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],c=ve.css(e,"display"),u="none"===c?ve._data(e,"olddisplay")||H(e.nodeName):c,"inline"===u&&"none"===ve.css(e,"float")&&(me.inlineBlockNeedsLayout&&"inline"!==H(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",me.shrinkWrapBlocks()||p.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(r=t[i],Lt.exec(r)){if(delete t[i],o=o||"toggle"===r,r===(f?"hide":"show")){if("show"!==r||!m||void 0===m[i])continue;f=!0}h[i]=m&&m[i]||ve.style(e,i)}else c=void 0;if(ve.isEmptyObject(h))"inline"===("none"===c?H(e.nodeName):c)&&(d.display=c);else{m?"hidden"in m&&(f=m.hidden):m=ve._data(e,"fxshow",{}),o&&(m.hidden=!f),f?ve(e).show():p.done(function(){ve(e).hide()}),p.done(function(){var t;ve._removeData(e,"fxshow");for(t in h)ve.style(e,t,h[t])});for(i in h)a=z(f?m[i]:0,i,p),i in m||(m[i]=a.start,f&&(a.end=a.start,a.start="width"===i||"height"===i?1:0))}}function V(e,t){var n,i,r,o,a;for(n in e)if(i=ve.camelCase(n),r=t[i],o=e[n],ve.isArray(o)&&(r=o[1],o=e[n]=o[0]),n!==i&&(e[i]=o,delete e[n]),a=ve.cssHooks[i],a&&"expand"in a){o=a.expand(o),delete e[i];for(n in o)n in e||(e[n]=o[n],t[n]=r)}else t[i]=r}function X(e,t,n){var i,r,o=0,a=X.prefilters.length,s=ve.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var t=Nt||F(),n=Math.max(0,c.startTime+c.duration-t),i=n/c.duration||0,o=1-i,a=0,l=c.tweens.length;l>a;a++)c.tweens[a].run(o);return s.notifyWith(e,[c,o,n]),1>o&&l?n:(s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:ve.extend({},t),opts:ve.extend(!0,{specialEasing:{},easing:ve.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||F(),duration:n.duration,tweens:[],createTween:function(t,n){var i=ve.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(i),i},stop:function(t){var n=0,i=t?c.tweens.length:0;if(r)return this;for(r=!0;i>n;n++)c.tweens[n].run(1);return t?(s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c,t])):s.rejectWith(e,[c,t]),this}}),u=c.props;for(V(u,c.opts.specialEasing);a>o;o++)if(i=X.prefilters[o].call(c,e,u,c.opts))return ve.isFunction(i.stop)&&(ve._queueHooks(c.elem,c.opts.queue).stop=ve.proxy(i.stop,i)),i;return ve.map(u,z,c),ve.isFunction(c.opts.start)&&c.opts.start.call(e,c),ve.fx.timer(ve.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function K(e){return ve.attr(e,"class")||""}function J(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,r=0,o=t.toLowerCase().match(Ie)||[];if(ve.isFunction(n))for(;i=o[r++];)"+"===i.charAt(0)?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function Y(e,t,n,i){function r(s){var l;return o[s]=!0,ve.each(e[s]||[],function(e,s){var c=s(t,n,i);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(t.dataTypes.unshift(c),r(c),!1)}),l}var o={},a=e===nn;return r(t.dataTypes[0])||!o["*"]&&r("*")}function Q(e,t){var n,i,r=ve.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((r[i]?e:n||(n={}))[i]=t[i]);return n&&ve.extend(!0,e,n),e}function G(e,t,n){for(var i,r,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(a in s)if(s[a]&&s[a].test(r)){l.unshift(a);break}if(l[0]in n)o=l[0];else{for(a in n){if(!l[0]||e.converters[a+" "+l[0]]){o=a;break}i||(i=a)}o=o||i}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function Z(e,t,n,i){var r,o,a,s,l,c={},u=e.dataTypes.slice();if(u[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(o=u.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=c[l+" "+o]||c["* "+o],!a)for(r in c)if(s=r.split(" "),s[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[r]:c[r]!==!0&&(o=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}function ee(e){return e.style&&e.style.display||ve.css(e,"display")}function te(e){if(!ve.contains(e.ownerDocument||se,e))return!0;for(;e&&1===e.nodeType;){if("none"===ee(e)||"hidden"===e.type)return!0;e=e.parentNode}return!1}function ne(e,t,n,i){var r;if(ve.isArray(t))ve.each(t,function(t,r){n||ln.test(e)?i(e,r):ne(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,i)});else if(n||"object"!==ve.type(t))i(e,t);else for(r in t)ne(e+"["+r+"]",t[r],n,i)}function ie(){try{return new n.XMLHttpRequest}catch(e){}}function re(){try{return new n.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}function oe(e){return ve.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var ae=[],se=n.document,le=ae.slice,ce=ae.concat,ue=ae.push,pe=ae.indexOf,he={},de=he.toString,fe=he.hasOwnProperty,me={},ge="1.12.4",ve=function(e,t){return new ve.fn.init(e,t)},ye=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,be=/^-ms-/,xe=/-([\da-z])/gi,we=function(e,t){return t.toUpperCase()};ve.fn=ve.prototype={jquery:ge,constructor:ve,selector:"",length:0,toArray:function(){return le.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:le.call(this)},pushStack:function(e){var t=ve.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return ve.each(this,e)},map:function(e){return this.pushStack(ve.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(le.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:ae.sort,splice:ae.splice},ve.extend=ve.fn.extend=function(){var e,t,n,i,r,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||ve.isFunction(a)||(a={}),s===l&&(a=this,s--);l>s;s++)if(null!=(r=arguments[s]))for(i in r)e=a[i],n=r[i],a!==n&&(c&&n&&(ve.isPlainObject(n)||(t=ve.isArray(n)))?(t?(t=!1,o=e&&ve.isArray(e)?e:[]):o=e&&ve.isPlainObject(e)?e:{},a[i]=ve.extend(c,o,n)):void 0!==n&&(a[i]=n));return a},ve.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===ve.type(e)},isArray:Array.isArray||function(e){return"array"===ve.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!ve.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==ve.type(e)||e.nodeType||ve.isWindow(e))return!1;try{if(e.constructor&&!fe.call(e,"constructor")&&!fe.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!me.ownFirst)for(t in e)return fe.call(e,t);for(t in e);return void 0===t||fe.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?he[de.call(e)]||"object":typeof e},globalEval:function(e){e&&ve.trim(e)&&(n.execScript||function(e){n.eval.call(n,e)})(e)},camelCase:function(e){return e.replace(be,"ms-").replace(xe,we)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,i=0;if(a(e))for(n=e.length;n>i&&t.call(e[i],i,e[i])!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ye,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(a(Object(e))?ve.merge(n,"string"==typeof e?[e]:e):ue.call(n,e)),n},inArray:function(e,t,n){var i;if(t){if(pe)return pe.call(t,e,n);for(i=t.length,n=n?0>n?Math.max(0,i+n):n:0;i>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,i=0,r=e.length;n>i;)e[r++]=t[i++];if(n!==n)for(;void 0!==t[i];)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){for(var i,r=[],o=0,a=e.length,s=!n;a>o;o++)i=!t(e[o],o),i!==s&&r.push(e[o]);return r},map:function(e,t,n){var i,r,o=0,s=[];if(a(e))for(i=e.length;i>o;o++)r=t(e[o],o,n),null!=r&&s.push(r);else for(o in e)r=t(e[o],o,n),null!=r&&s.push(r);return ce.apply([],s)},guid:1,proxy:function(e,t){var n,i,r;return"string"==typeof t&&(r=e[t],t=e,e=r),ve.isFunction(e)?(n=le.call(arguments,2),i=function(){return e.apply(t||this,n.concat(le.call(arguments)))},i.guid=e.guid=e.guid||ve.guid++,i):void 0},now:function(){return+new Date},support:me}),"function"==typeof Symbol&&(ve.fn[Symbol.iterator]=ae[Symbol.iterator]),ve.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){he["[object "+t+"]"]=t.toLowerCase()});var ke=/*!
-	 * Sizzle CSS Selector Engine v2.2.1
-	 * http://sizzlejs.com/
-	 *
-	 * Copyright jQuery Foundation and other contributors
-	 * Released under the MIT license
-	 * http://jquery.org/license
-	 *
-	 * Date: 2015-10-17
-	 */
-function(e){function t(e,t,n,i){var r,o,a,s,l,c,p,d,f=t&&t.ownerDocument,m=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==m&&9!==m&&11!==m)return n;if(!i&&((t?t.ownerDocument||t:R)!==D&&L(t),t=t||D,H)){if(11!==m&&(c=ve.exec(e)))if(r=c[1]){if(9===m){if(!(a=t.getElementById(r)))return n;if(a.id===r)return n.push(a),n}else if(f&&(a=f.getElementById(r))&&M(t,a)&&a.id===r)return n.push(a),n}else{if(c[2])return G.apply(n,t.getElementsByTagName(e)),n;if((r=c[3])&&w.getElementsByClassName&&t.getElementsByClassName)return G.apply(n,t.getElementsByClassName(r)),n}if(w.qsa&&!U[e+" "]&&(!O||!O.test(e))){if(1!==m)f=t,d=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(be,"\\$&"):t.setAttribute("id",s=$),p=C(e),o=p.length,l=he.test(s)?"#"+s:"[id='"+s+"']";o--;)p[o]=l+" "+h(p[o]);d=p.join(","),f=ye.test(e)&&u(t.parentNode)||t}if(d)try{return G.apply(n,f.querySelectorAll(d)),n}catch(g){}finally{s===$&&t.removeAttribute("id")}}}return A(e.replace(se,"$1"),t,n,i)}function n(){function e(n,i){return t.push(n+" ")>k.cacheLength&&delete e[t.shift()],e[n+" "]=i}var t=[];return e}function i(e){return e[$]=!0,e}function r(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),i=n.length;i--;)k.attrHandle[n[i]]=t}function a(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,i){for(var r,o=e([],n.length,t),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function u(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,i="";n>t;t++)i+=e[t].value;return i}function d(e,t,n){var i=t.dir,r=n&&"parentNode"===i,o=F++;return t.first?function(t,n,o){for(;t=t[i];)if(1===t.nodeType||r)return e(t,n,o)}:function(t,n,a){var s,l,c,u=[q,o];if(a){for(;t=t[i];)if((1===t.nodeType||r)&&e(t,n,a))return!0}else for(;t=t[i];)if(1===t.nodeType||r){if(c=t[$]||(t[$]={}),l=c[t.uniqueID]||(c[t.uniqueID]={}),(s=l[i])&&s[0]===q&&s[1]===o)return u[2]=s[2];if(l[i]=u,u[2]=e(t,n,a))return!0}}}function f(e){return e.length>1?function(t,n,i){for(var r=e.length;r--;)if(!e[r](t,n,i))return!1;return!0}:e[0]}function m(e,n,i){for(var r=0,o=n.length;o>r;r++)t(e,n[r],i);return i}function g(e,t,n,i,r){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,i,r)||(a.push(o),c&&t.push(s)));return a}function v(e,t,n,r,o,a){return r&&!r[$]&&(r=v(r)),o&&!o[$]&&(o=v(o,a)),i(function(i,a,s,l){var c,u,p,h=[],d=[],f=a.length,v=i||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!i&&t?v:g(v,h,e,s,l),b=n?o||(i?e:f||r)?[]:a:y;if(n&&n(y,b,s,l),r)for(c=g(b,d),r(c,[],s,l),u=c.length;u--;)(p=c[u])&&(b[d[u]]=!(y[d[u]]=p));if(i){if(o||e){if(o){for(c=[],u=b.length;u--;)(p=b[u])&&c.push(y[u]=p);o(null,b=[],c,l)}for(u=b.length;u--;)(p=b[u])&&(c=o?ee(i,p):h[u])>-1&&(i[c]=!(a[c]=p))}}else b=g(b===a?b.splice(f,b.length):b),o?o(null,a,b,l):G.apply(a,b)})}function y(e){for(var t,n,i,r=e.length,o=k.relative[e[0].type],a=o||k.relative[" "],s=o?1:0,l=d(function(e){return e===t},a,!0),c=d(function(e){return ee(t,e)>-1},a,!0),u=[function(e,n,i){var r=!o&&(i||n!==T)||((t=n).nodeType?l(e,n,i):c(e,n,i));return t=null,r}];r>s;s++)if(n=k.relative[e[s].type])u=[d(f(u),n)];else{if(n=k.filter[e[s].type].apply(null,e[s].matches),n[$]){for(i=++s;r>i&&!k.relative[e[i].type];i++);return v(s>1&&f(u),s>1&&h(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,i>s&&y(e.slice(s,i)),r>i&&y(e=e.slice(i)),r>i&&h(e))}u.push(n)}return f(u)}function b(e,n){var r=n.length>0,o=e.length>0,a=function(i,a,s,l,c){var u,p,h,d=0,f="0",m=i&&[],v=[],y=T,b=i||o&&k.find.TAG("*",c),x=q+=null==y?1:Math.random()||.1,w=b.length;for(c&&(T=a===D||a||c);f!==w&&null!=(u=b[f]);f++){if(o&&u){for(p=0,a||u.ownerDocument===D||(L(u),s=!H);h=e[p++];)if(h(u,a||D,s)){l.push(u);break}c&&(q=x)}r&&((u=!h&&u)&&d--,i&&m.push(u))}if(d+=f,r&&f!==d){for(p=0;h=n[p++];)h(m,v,a,s);if(i){if(d>0)for(;f--;)m[f]||v[f]||(v[f]=Y.call(l));v=g(v)}G.apply(l,v),c&&!i&&v.length>0&&d+n.length>1&&t.uniqueSort(l)}return c&&(q=x,T=y),m};return r?i(a):a}var x,w,k,S,_,C,E,A,T,N,P,L,D,I,H,O,j,B,M,$="sizzle"+1*new Date,R=e.document,q=0,F=0,W=n(),z=n(),U=n(),V=function(e,t){return e===t&&(P=!0),0},X=1<<31,K={}.hasOwnProperty,J=[],Y=J.pop,Q=J.push,G=J.push,Z=J.slice,ee=function(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",re="\\["+ne+"*("+ie+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+ne+"*\\]",oe=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+re+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),le=new RegExp("^"+ne+"*,"+ne+"*"),ce=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ue=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),pe=new RegExp(oe),he=new RegExp("^"+ie+"$"),de={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+re),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},fe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var i="0x"+t-65536;return i!==i||n?t:0>i?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},ke=function(){L()};try{G.apply(J=Z.call(R.childNodes),R.childNodes),J[R.childNodes.length].nodeType}catch(Se){G={apply:J.length?function(e,t){Q.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}w=t.support={},_=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},L=t.setDocument=function(e){var t,n,i=e?e.ownerDocument||e:R;return i!==D&&9===i.nodeType&&i.documentElement?(D=i,I=D.documentElement,H=!_(D),(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",ke,!1):n.attachEvent&&n.attachEvent("onunload",ke)),w.attributes=r(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=r(function(e){return e.appendChild(D.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=ge.test(D.getElementsByClassName),w.getById=r(function(e){return I.appendChild(e).id=$,!D.getElementsByName||!D.getElementsByName($).length}),w.getById?(k.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&H){var n=t.getElementById(e);return n?[n]:[]}},k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){return e.getAttribute("id")===t}}):(delete k.find.ID,k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),k.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},k.find.CLASS=w.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&H?t.getElementsByClassName(e):void 0},j=[],O=[],(w.qsa=ge.test(D.querySelectorAll))&&(r(function(e){I.appendChild(e).innerHTML="<a id='"+$+"'></a><select id='"+$+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&O.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||O.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||O.push("~="),e.querySelectorAll(":checked").length||O.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||O.push(".#.+[+~]")}),r(function(e){var t=D.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&O.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||O.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),O.push(",.*:")})),(w.matchesSelector=ge.test(B=I.matches||I.webkitMatchesSelector||I.mozMatchesSelector||I.oMatchesSelector||I.msMatchesSelector))&&r(function(e){w.disconnectedMatch=B.call(e,"div"),B.call(e,"[s!='']:x"),j.push("!=",oe)}),O=O.length&&new RegExp(O.join("|")),j=j.length&&new RegExp(j.join("|")),t=ge.test(I.compareDocumentPosition),M=t||ge.test(I.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return P=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===D||e.ownerDocument===R&&M(R,e)?-1:t===D||t.ownerDocument===R&&M(R,t)?1:N?ee(N,e)-ee(N,t):0:4&n?-1:1)}:function(e,t){if(e===t)return P=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,s=[e],l=[t];if(!r||!o)return e===D?-1:t===D?1:r?-1:o?1:N?ee(N,e)-ee(N,t):0;if(r===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[i]===l[i];)i++;return i?a(s[i],l[i]):s[i]===R?-1:l[i]===R?1:0},D):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&L(e),n=n.replace(ue,"='$1']"),w.matchesSelector&&H&&!U[n+" "]&&(!j||!j.test(n))&&(!O||!O.test(n)))try{var i=B.call(e,n);if(i||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(r){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&L(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&L(e);var n=k.attrHandle[t.toLowerCase()],i=n&&K.call(k.attrHandle,t.toLowerCase())?n(e,t,!H):void 0;return void 0!==i?i:w.attributes||!H?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],i=0,r=0;if(P=!w.detectDuplicates,N=!w.sortStable&&e.slice(0),e.sort(V),P){for(;t=e[r++];)t===e[r]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return N=null,e},S=t.getText=function(e){var t,n="",i=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=S(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[i++];)n+=S(t);return n},k=t.selectors={cacheLength:50,createPseudo:i,match:de,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(xe,we),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,we),"~="===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]||t.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]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return de.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pe.test(n)&&(t=C(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(xe,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,i){return function(r){var o=t.attr(r,e);return null==o?"!="===n:n?(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(i)>-1:"|="===n?o===i||o.slice(0,i.length+1)===i+"-":!1):!0}},CHILD:function(e,t,n,i,r){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===i&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var c,u,p,h,d,f,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(o){for(;m;){for(h=t;h=h[m];)if(s?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&y){for(h=g,p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d&&c[2],h=d&&g.childNodes[d];h=++d&&h&&h[m]||(b=d=0)||f.pop();)if(1===h.nodeType&&++b&&h===t){u[e]=[q,d,b];break}}else if(y&&(h=t,p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d),b===!1)for(;(h=++d&&h&&h[m]||(b=d=0)||f.pop())&&((s?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(y&&(p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),u[e]=[q,b]),h!==t)););return b-=r,b===i||b%i===0&&b/i>=0}}},PSEUDO:function(e,n){var r,o=k.pseudos[e]||k.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[$]?o(n):o.length>1?(r=[e,e,"",n],k.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,t){for(var i,r=o(e,n),a=r.length;a--;)i=ee(e,r[a]),e[i]=!(t[i]=r[a])}):function(e){return o(e,0,r)}):o}},pseudos:{not:i(function(e){var t=[],n=[],r=E(e.replace(se,"$1"));return r[$]?i(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;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:i(function(e){return function(n){return t(e,n).length>0}}),contains:i(function(e){return e=e.replace(xe,we),function(t){return(t.textContent||t.innerText||S(t)).indexOf(e)>-1}}),lang:i(function(e){return he.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,we).toLowerCase(),function(t){var n;do if(n=H?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===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===I},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!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,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!k.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return fe.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:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var i=0>n?n+t:n;--i>=0;)e.push(i);return e}),gt:c(function(e,t,n){for(var i=0>n?n+t:n;++i<t;)e.push(i);return e})}},k.pseudos.nth=k.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})k.pseudos[x]=s(x);for(x in{submit:!0,reset:!0})k.pseudos[x]=l(x);return p.prototype=k.filters=k.pseudos,k.setFilters=new p,C=t.tokenize=function(e,n){var i,r,o,a,s,l,c,u=z[e+" "];if(u)return n?0:u.slice(0);for(s=e,l=[],c=k.preFilter;s;){i&&!(r=le.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),i=!1,(r=ce.exec(s))&&(i=r.shift(),o.push({value:i,type:r[0].replace(se," ")}),s=s.slice(i.length));for(a in k.filter)!(r=de[a].exec(s))||c[a]&&!(r=c[a](r))||(i=r.shift(),o.push({value:i,type:a,matches:r}),s=s.slice(i.length));if(!i)break}return n?s.length:s?t.error(e):z(e,l).slice(0)},E=t.compile=function(e,t){var n,i=[],r=[],o=U[e+" "];if(!o){for(t||(t=C(e)),n=t.length;n--;)o=y(t[n]),o[$]?i.push(o):r.push(o);o=U(e,b(r,i)),o.selector=e}return o},A=t.select=function(e,t,n,i){var r,o,a,s,l,c="function"==typeof e&&e,p=!i&&C(e=c.selector||e);if(n=n||[],1===p.length){if(o=p[0]=p[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&H&&k.relative[o[1].type]){if(t=(k.find.ID(a.matches[0].replace(xe,we),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(r=de.needsContext.test(e)?0:o.length;r--&&(a=o[r],!k.relative[s=a.type]);)if((l=k.find[s])&&(i=l(a.matches[0].replace(xe,we),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(r,1),e=i.length&&h(o),!e)return G.apply(n,i),n;break}}return(c||E(e,p))(i,t,!H,n,!t||ye.test(e)&&u(t.parentNode)||t),n},w.sortStable=$.split("").sort(V).join("")===$,w.detectDuplicates=!!P,L(),w.sortDetached=r(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),r(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&r(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),r(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var i;return n?void 0:e[t]===!0?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}),t}(n);ve.find=ke,ve.expr=ke.selectors,ve.expr[":"]=ve.expr.pseudos,ve.uniqueSort=ve.unique=ke.uniqueSort,ve.text=ke.getText,ve.isXMLDoc=ke.isXML,ve.contains=ke.contains;var Se=function(e,t,n){for(var i=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&ve(e).is(n))break;i.push(e)}return i},_e=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Ce=ve.expr.match.needsContext,Ee=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ae=/^.[^:#\[\.,]*$/;ve.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?ve.find.matchesSelector(i,e)?[i]:[]:ve.find.matches(e,ve.grep(t,function(e){return 1===e.nodeType}))},ve.fn.extend({find:function(e){var t,n=[],i=this,r=i.length;if("string"!=typeof e)return this.pushStack(ve(e).filter(function(){for(t=0;r>t;t++)if(ve.contains(i[t],this))return!0}));for(t=0;r>t;t++)ve.find(e,i[t],n);return n=this.pushStack(r>1?ve.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(s(this,e||[],!1))},not:function(e){return this.pushStack(s(this,e||[],!0))},is:function(e){return!!s(this,"string"==typeof e&&Ce.test(e)?ve(e):e||[],!1).length}});var Te,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,Pe=ve.fn.init=function(e,t,n){var i,r;if(!e)return this;if(n=n||Te,"string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!i||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof ve?t[0]:t,ve.merge(this,ve.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:se,!0)),Ee.test(i[1])&&ve.isPlainObject(t))for(i in t)ve.isFunction(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}if(r=se.getElementById(i[2]),r&&r.parentNode){if(r.id!==i[2])return Te.find(e);this.length=1,this[0]=r}return this.context=se,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):ve.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(ve):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),ve.makeArray(e,this))};Pe.prototype=ve.fn,Te=ve(se);var Le=/^(?:parents|prev(?:Until|All))/,De={children:!0,contents:!0,next:!0,prev:!0};ve.fn.extend({has:function(e){var t,n=ve(e,this),i=n.length;return this.filter(function(){for(t=0;i>t;t++)if(ve.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,i=0,r=this.length,o=[],a=Ce.test(e)||"string"!=typeof e?ve(e,t||this.context):0;r>i;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&ve.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?ve.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?ve.inArray(this[0],ve(e)):ve.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ve.uniqueSort(ve.merge(this.get(),ve(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ve.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Se(e,"parentNode")},parentsUntil:function(e,t,n){return Se(e,"parentNode",n)},next:function(e){return l(e,"nextSibling")},prev:function(e){return l(e,"previousSibling")},nextAll:function(e){return Se(e,"nextSibling")},prevAll:function(e){return Se(e,"previousSibling")},nextUntil:function(e,t,n){return Se(e,"nextSibling",n)},prevUntil:function(e,t,n){return Se(e,"previousSibling",n)},siblings:function(e){return _e((e.parentNode||{}).firstChild,e)},children:function(e){return _e(e.firstChild)},contents:function(e){return ve.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:ve.merge([],e.childNodes)}},function(e,t){ve.fn[e]=function(n,i){var r=ve.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(r=ve.filter(i,r)),this.length>1&&(De[e]||(r=ve.uniqueSort(r)),Le.test(e)&&(r=r.reverse())),this.pushStack(r)}});var Ie=/\S+/g;ve.Callbacks=function(e){e="string"==typeof e?c(e):ve.extend({},e);var t,n,i,r,o=[],a=[],s=-1,l=function(){for(r=e.once,i=t=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)o[s].apply(n[0],n[1])===!1&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,r&&(o=n?[]:"")},u={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function i(t){ve.each(t,function(t,n){ve.isFunction(n)?e.unique&&u.has(n)||o.push(n):n&&n.length&&"string"!==ve.type(n)&&i(n)})}(arguments),n&&!t&&l()),this},remove:function(){return ve.each(arguments,function(e,t){for(var n;(n=ve.inArray(t,o,n))>-1;)o.splice(n,1),s>=n&&s--}),this},has:function(e){return e?ve.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return r=!0,n||u.disable(),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},ve.extend({Deferred:function(e){var t=[["resolve","done",ve.Callbacks("once memory"),"resolved"],["reject","fail",ve.Callbacks("once memory"),"rejected"],["notify","progress",ve.Callbacks("memory")]],n="pending",i={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},then:function(){var e=arguments;return ve.Deferred(function(n){ve.each(t,function(t,o){var a=ve.isFunction(e[t])&&e[t];r[o[1]](function(){var e=a&&a.apply(this,arguments);e&&ve.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===i?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?ve.extend(e,i):i}},r={};return i.pipe=i.then,ve.each(t,function(e,o){var a=o[2],s=o[3];i[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),r[o[0]]=function(){return r[o[0]+"With"](this===r?i:this,arguments),this},r[o[0]+"With"]=a.fireWith}),i.promise(r),e&&e.call(r,r),r},when:function(e){var t,n,i,r=0,o=le.call(arguments),a=o.length,s=1!==a||e&&ve.isFunction(e.promise)?a:0,l=1===s?e:ve.Deferred(),c=function(e,n,i){return function(r){n[e]=this,i[e]=arguments.length>1?le.call(arguments):r,i===t?l.notifyWith(n,i):--s||l.resolveWith(n,i)}};if(a>1)for(t=new Array(a),n=new Array(a),i=new Array(a);a>r;r++)o[r]&&ve.isFunction(o[r].promise)?o[r].promise().progress(c(r,n,t)).done(c(r,i,o)).fail(l.reject):--s;return s||l.resolveWith(i,o),l.promise()}});var He;ve.fn.ready=function(e){return ve.ready.promise().done(e),this},ve.extend({isReady:!1,readyWait:1,holdReady:function(e){e?ve.readyWait++:ve.ready(!0)},ready:function(e){(e===!0?--ve.readyWait:ve.isReady)||(ve.isReady=!0,e!==!0&&--ve.readyWait>0||(He.resolveWith(se,[ve]),ve.fn.triggerHandler&&(ve(se).triggerHandler("ready"),ve(se).off("ready"))))}}),ve.ready.promise=function(e){if(!He)if(He=ve.Deferred(),"complete"===se.readyState||"loading"!==se.readyState&&!se.documentElement.doScroll)n.setTimeout(ve.ready);else if(se.addEventListener)se.addEventListener("DOMContentLoaded",p),n.addEventListener("load",p);else{se.attachEvent("onreadystatechange",p),n.attachEvent("onload",p);var t=!1;try{t=null==n.frameElement&&se.documentElement}catch(i){}t&&t.doScroll&&!function r(){if(!ve.isReady){try{t.doScroll("left")}catch(e){return n.setTimeout(r,50)}u(),ve.ready()}}()}return He.promise(e)},ve.ready.promise();var Oe;for(Oe in ve(me))break;me.ownFirst="0"===Oe,me.inlineBlockNeedsLayout=!1,ve(function(){var e,t,n,i;n=se.getElementsByTagName("body")[0],n&&n.style&&(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",me.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(i))}),function(){var e=se.createElement("div");me.deleteExpando=!0;try{delete e.test}catch(t){me.deleteExpando=!1}e=null}();var je=function(e){var t=ve.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t},Be=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Me=/([A-Z])/g;ve.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?ve.cache[e[ve.expando]]:e[ve.expando],!!e&&!d(e)},data:function(e,t,n){return f(e,t,n)},removeData:function(e,t){return m(e,t)},_data:function(e,t,n){return f(e,t,n,!0)},_removeData:function(e,t){return m(e,t,!0)}}),ve.fn.extend({data:function(e,t){var n,i,r,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(r=ve.data(o),1===o.nodeType&&!ve._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(i=a[n].name,0===i.indexOf("data-")&&(i=ve.camelCase(i.slice(5)),h(o,i,r[i])));ve._data(o,"parsedAttrs",!0)}return r}return"object"==typeof e?this.each(function(){ve.data(this,e)}):arguments.length>1?this.each(function(){ve.data(this,e,t)}):o?h(o,e,ve.data(o,e)):void 0},removeData:function(e){return this.each(function(){ve.removeData(this,e)})}}),ve.extend({queue:function(e,t,n){var i;return e?(t=(t||"fx")+"queue",i=ve._data(e,t),n&&(!i||ve.isArray(n)?i=ve._data(e,t,ve.makeArray(n)):i.push(n)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=ve.queue(e,t),i=n.length,r=n.shift(),o=ve._queueHooks(e,t),a=function(){ve.dequeue(e,t)};"inprogress"===r&&(r=n.shift(),i--),r&&("fx"===t&&n.unshift("inprogress"),delete o.stop,r.call(e,a,o)),!i&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return ve._data(e,n)||ve._data(e,n,{empty:ve.Callbacks("once memory").add(function(){ve._removeData(e,t+"queue"),ve._removeData(e,n)})})}}),ve.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?ve.queue(this[0],e):void 0===t?this:this.each(function(){var n=ve.queue(this,e,t);ve._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&ve.dequeue(this,e)})},dequeue:function(e){return this.each(function(){ve.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,i=1,r=ve.Deferred(),o=this,a=this.length,s=function(){--i||r.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=ve._data(o[a],e+"queueHooks"),n&&n.empty&&(i++,n.empty.add(s));return s(),r.promise(t)}}),function(){var e;me.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,i;return n=se.getElementsByTagName("body")[0],n&&n.style?(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.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",t.appendChild(se.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(i),e):void 0}}();var $e=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Re=new RegExp("^(?:([+-])=|)("+$e+")([a-z%]*)$","i"),qe=["Top","Right","Bottom","Left"],Fe=function(e,t){return e=t||e,"none"===ve.css(e,"display")||!ve.contains(e.ownerDocument,e)},We=function(e,t,n,i,r,o,a){var s=0,l=e.length,c=null==n;if("object"===ve.type(n)){r=!0;for(s in n)We(e,t,s,n[s],!0,o,a)}else if(void 0!==i&&(r=!0,ve.isFunction(i)||(a=!0),c&&(a?(t.call(e,i),t=null):(c=t,t=function(e,t,n){return c.call(ve(e),n)})),t))for(;l>s;s++)t(e[s],n,a?i:i.call(e[s],s,t(e[s],n)));return r?e:c?t.call(e):l?t(e[0],n):o},ze=/^(?:checkbox|radio)$/i,Ue=/<([\w:-]+)/,Ve=/^$|\/(?:java|ecma)script/i,Xe=/^\s+/,Ke="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(){var e=se.createElement("div"),t=se.createDocumentFragment(),n=se.createElement("input");e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",me.leadingWhitespace=3===e.firstChild.nodeType,me.tbody=!e.getElementsByTagName("tbody").length,me.htmlSerialize=!!e.getElementsByTagName("link").length,me.html5Clone="<:nav></:nav>"!==se.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),me.appendChecked=n.checked,e.innerHTML="<textarea>x</textarea>",me.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=se.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),me.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,me.noCloneEvent=!!e.addEventListener,e[ve.expando]=1,me.attributes=!e.getAttribute(ve.expando)}();var Je={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:me.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};Je.optgroup=Je.option,Je.tbody=Je.tfoot=Je.colgroup=Je.caption=Je.thead,Je.th=Je.td;var Ye=/<|&#?\w+;/,Qe=/<tbody/i;!function(){var e,t,i=se.createElement("div");for(e in{submit:!0,change:!0,focusin:!0})t="on"+e,(me[e]=t in n)||(i.setAttribute(t,"t"),me[e]=i.attributes[t].expando===!1);i=null}();
-var Ge=/^(?:input|select|textarea)$/i,Ze=/^key/,et=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,tt=/^(?:focusinfocus|focusoutblur)$/,nt=/^([^.]*)(?:\.(.+)|)/;ve.event={global:{},add:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve._data(e);if(g){for(n.handler&&(l=n,n=l.handler,r=l.selector),n.guid||(n.guid=ve.guid++),(a=g.events)||(a=g.events={}),(u=g.handle)||(u=g.handle=function(e){return"undefined"==typeof ve||e&&ve.event.triggered===e.type?void 0:ve.event.dispatch.apply(u.elem,arguments)},u.elem=e),t=(t||"").match(Ie)||[""],s=t.length;s--;)o=nt.exec(t[s])||[],d=m=o[1],f=(o[2]||"").split(".").sort(),d&&(c=ve.event.special[d]||{},d=(r?c.delegateType:c.bindType)||d,c=ve.event.special[d]||{},p=ve.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&ve.expr.match.needsContext.test(r),namespace:f.join(".")},l),(h=a[d])||(h=a[d]=[],h.delegateCount=0,c.setup&&c.setup.call(e,i,f,u)!==!1||(e.addEventListener?e.addEventListener(d,u,!1):e.attachEvent&&e.attachEvent("on"+d,u))),c.add&&(c.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),r?h.splice(h.delegateCount++,0,p):h.push(p),ve.event.global[d]=!0);e=null}},remove:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve.hasData(e)&&ve._data(e);if(g&&(u=g.events)){for(t=(t||"").match(Ie)||[""],c=t.length;c--;)if(s=nt.exec(t[c])||[],d=m=s[1],f=(s[2]||"").split(".").sort(),d){for(p=ve.event.special[d]||{},d=(i?p.delegateType:p.bindType)||d,h=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=h.length;o--;)a=h[o],!r&&m!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||i&&i!==a.selector&&("**"!==i||!a.selector)||(h.splice(o,1),a.selector&&h.delegateCount--,p.remove&&p.remove.call(e,a));l&&!h.length&&(p.teardown&&p.teardown.call(e,f,g.handle)!==!1||ve.removeEvent(e,d,g.handle),delete u[d])}else for(d in u)ve.event.remove(e,d+t[c],n,i,!0);ve.isEmptyObject(u)&&(delete g.handle,ve._removeData(e,"events"))}},trigger:function(e,t,i,r){var o,a,s,l,c,u,p,h=[i||se],d=fe.call(e,"type")?e.type:e,f=fe.call(e,"namespace")?e.namespace.split("."):[];if(s=u=i=i||se,3!==i.nodeType&&8!==i.nodeType&&!tt.test(d+ve.event.triggered)&&(d.indexOf(".")>-1&&(f=d.split("."),d=f.shift(),f.sort()),a=d.indexOf(":")<0&&"on"+d,e=e[ve.expando]?e:new ve.Event(d,"object"==typeof e&&e),e.isTrigger=r?2:3,e.namespace=f.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),t=null==t?[e]:ve.makeArray(t,[e]),c=ve.event.special[d]||{},r||!c.trigger||c.trigger.apply(i,t)!==!1)){if(!r&&!c.noBubble&&!ve.isWindow(i)){for(l=c.delegateType||d,tt.test(l+d)||(s=s.parentNode);s;s=s.parentNode)h.push(s),u=s;u===(i.ownerDocument||se)&&h.push(u.defaultView||u.parentWindow||n)}for(p=0;(s=h[p++])&&!e.isPropagationStopped();)e.type=p>1?l:c.bindType||d,o=(ve._data(s,"events")||{})[e.type]&&ve._data(s,"handle"),o&&o.apply(s,t),o=a&&s[a],o&&o.apply&&je(s)&&(e.result=o.apply(s,t),e.result===!1&&e.preventDefault());if(e.type=d,!r&&!e.isDefaultPrevented()&&(!c._default||c._default.apply(h.pop(),t)===!1)&&je(i)&&a&&i[d]&&!ve.isWindow(i)){u=i[a],u&&(i[a]=null),ve.event.triggered=d;try{i[d]()}catch(m){}ve.event.triggered=void 0,u&&(i[a]=u)}return e.result}},dispatch:function(e){e=ve.event.fix(e);var t,n,i,r,o,a=[],s=le.call(arguments),l=(ve._data(this,"events")||{})[e.type]||[],c=ve.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(a=ve.event.handlers.call(this,e,l),t=0;(r=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,i=((ve.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,s),void 0!==i&&(e.result=i)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,i,r,o,a=[],s=t.delegateCount,l=e.target;if(s&&l.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(i=[],n=0;s>n;n++)o=t[n],r=o.selector+" ",void 0===i[r]&&(i[r]=o.needsContext?ve(r,this).index(l)>-1:ve.find(r,this,null,[l]).length),i[r]&&i.push(o);i.length&&a.push({elem:l,handlers:i})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[ve.expando])return e;var t,n,i,r=e.type,o=e,a=this.fixHooks[r];for(a||(this.fixHooks[r]=a=et.test(r)?this.mouseHooks:Ze.test(r)?this.keyHooks:{}),i=a.props?this.props.concat(a.props):this.props,e=new ve.Event(o),t=i.length;t--;)n=i[t],e[n]=o[n];return e.target||(e.target=o.srcElement||se),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},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(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,i,r,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(i=e.target.ownerDocument||se,r=i.documentElement,n=i.body,e.pageX=t.clientX+(r&&r.scrollLeft||n&&n.scrollLeft||0)-(r&&r.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||n&&n.scrollTop||0)-(r&&r.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==_()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return ve.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return ve.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var i=ve.extend(new ve.Event,n,{type:e,isSimulated:!0});ve.event.trigger(i,null,t),i.isDefaultPrevented()&&n.preventDefault()}},ve.removeEvent=se.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var i="on"+t;e.detachEvent&&("undefined"==typeof e[i]&&(e[i]=null),e.detachEvent(i,n))},ve.Event=function(e,t){return this instanceof ve.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?k:S):this.type=e,t&&ve.extend(this,t),this.timeStamp=e&&e.timeStamp||ve.now(),void(this[ve.expando]=!0)):new ve.Event(e,t)},ve.Event.prototype={constructor:ve.Event,isDefaultPrevented:S,isPropagationStopped:S,isImmediatePropagationStopped:S,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=k,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=k,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=k,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},ve.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){ve.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=this,r=e.relatedTarget,o=e.handleObj;return r&&(r===i||ve.contains(i,r))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),me.submit||(ve.event.special.submit={setup:function(){return ve.nodeName(this,"form")?!1:void ve.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=ve.nodeName(t,"input")||ve.nodeName(t,"button")?ve.prop(t,"form"):void 0;n&&!ve._data(n,"submit")&&(ve.event.add(n,"submit._submit",function(e){e._submitBubble=!0}),ve._data(n,"submit",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&ve.event.simulate("submit",this.parentNode,e))},teardown:function(){return ve.nodeName(this,"form")?!1:void ve.event.remove(this,"._submit")}}),me.change||(ve.event.special.change={setup:function(){return Ge.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(ve.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._justChanged=!0)}),ve.event.add(this,"click._change",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),ve.event.simulate("change",this,e)})),!1):void ve.event.add(this,"beforeactivate._change",function(e){var t=e.target;Ge.test(t.nodeName)&&!ve._data(t,"change")&&(ve.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||ve.event.simulate("change",this.parentNode,e)}),ve._data(t,"change",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ve.event.remove(this,"._change"),!Ge.test(this.nodeName)}}),me.focusin||ve.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){ve.event.simulate(t,e.target,ve.event.fix(e))};ve.event.special[t]={setup:function(){var i=this.ownerDocument||this,r=ve._data(i,t);r||i.addEventListener(e,n,!0),ve._data(i,t,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this,r=ve._data(i,t)-1;r?ve._data(i,t,r):(i.removeEventListener(e,n,!0),ve._removeData(i,t))}}}),ve.fn.extend({on:function(e,t,n,i){return C(this,e,t,n,i)},one:function(e,t,n,i){return C(this,e,t,n,i,1)},off:function(e,t,n){var i,r;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,ve(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=S),this.each(function(){ve.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){ve.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?ve.event.trigger(e,t,n,!0):void 0}});var it=/ jQuery\d+="(?:null|\d+)"/g,rt=new RegExp("<(?:"+Ke+")[\\s/>]","i"),ot=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,at=/<script|<style|<link/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,lt=/^true\/(.*)/,ct=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ut=v(se),pt=ut.appendChild(se.createElement("div"));ve.extend({htmlPrefilter:function(e){return e.replace(ot,"<$1></$2>")},clone:function(e,t,n){var i,r,o,a,s,l=ve.contains(e.ownerDocument,e);if(me.html5Clone||ve.isXMLDoc(e)||!rt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(pt.innerHTML=e.outerHTML,pt.removeChild(o=pt.firstChild)),!(me.noCloneEvent&&me.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ve.isXMLDoc(e)))for(i=y(o),s=y(e),a=0;null!=(r=s[a]);++a)i[a]&&P(r,i[a]);if(t)if(n)for(s=s||y(e),i=i||y(o),a=0;null!=(r=s[a]);a++)N(r,i[a]);else N(e,o);return i=y(o,"script"),i.length>0&&b(i,!l&&y(e,"script")),i=s=r=null,o},cleanData:function(e,t){for(var n,i,r,o,a=0,s=ve.expando,l=ve.cache,c=me.attributes,u=ve.event.special;null!=(n=e[a]);a++)if((t||je(n))&&(r=n[s],o=r&&l[r])){if(o.events)for(i in o.events)u[i]?ve.event.remove(n,i):ve.removeEvent(n,i,o.handle);l[r]&&(delete l[r],c||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ae.push(r))}}}),ve.fn.extend({domManip:L,detach:function(e){return D(this,e,!0)},remove:function(e){return D(this,e)},text:function(e){return We(this,function(e){return void 0===e?ve.text(this):this.empty().append((this[0]&&this[0].ownerDocument||se).createTextNode(e))},null,e,arguments.length)},append:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.appendChild(e)}})},prepend:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&ve.cleanData(y(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&ve.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return ve.clone(this,e,t)})},html:function(e){return We(this,function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(it,""):void 0;if("string"==typeof e&&!at.test(e)&&(me.htmlSerialize||!rt.test(e))&&(me.leadingWhitespace||!Xe.test(e))&&!Je[(Ue.exec(e)||["",""])[1].toLowerCase()]){e=ve.htmlPrefilter(e);try{for(;i>n;n++)t=this[n]||{},1===t.nodeType&&(ve.cleanData(y(t,!1)),t.innerHTML=e);t=0}catch(r){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return L(this,arguments,function(t){var n=this.parentNode;ve.inArray(this,e)<0&&(ve.cleanData(y(this)),n&&n.replaceChild(t,this))},e)}}),ve.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){ve.fn[e]=function(e){for(var n,i=0,r=[],o=ve(e),a=o.length-1;a>=i;i++)n=i===a?this:this.clone(!0),ve(o[i])[t](n),ue.apply(r,n.get());return this.pushStack(r)}});var ht,dt={HTML:"block",BODY:"block"},ft=/^margin/,mt=new RegExp("^("+$e+")(?!px)[a-z%]+$","i"),gt=function(e,t,n,i){var r,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];r=n.apply(e,i||[]);for(o in t)e.style[o]=a[o];return r},vt=se.documentElement;!function(){function e(){var e,u,p=se.documentElement;p.appendChild(l),c.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%",t=r=s=!1,i=a=!0,n.getComputedStyle&&(u=n.getComputedStyle(c),t="1%"!==(u||{}).top,s="2px"===(u||{}).marginLeft,r="4px"===(u||{width:"4px"}).width,c.style.marginRight="50%",i="4px"===(u||{marginRight:"4px"}).marginRight,e=c.appendChild(se.createElement("div")),e.style.cssText=c.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",c.style.width="1px",a=!parseFloat((n.getComputedStyle(e)||{}).marginRight),c.removeChild(e)),c.style.display="none",o=0===c.getClientRects().length,o&&(c.style.display="",c.innerHTML="<table><tr><td></td><td>t</td></tr></table>",c.childNodes[0].style.borderCollapse="separate",e=c.getElementsByTagName("td"),e[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===e[0].offsetHeight,o&&(e[0].style.display="",e[1].style.display="none",o=0===e[0].offsetHeight)),p.removeChild(l)}var t,i,r,o,a,s,l=se.createElement("div"),c=se.createElement("div");c.style&&(c.style.cssText="float:left;opacity:.5",me.opacity="0.5"===c.style.opacity,me.cssFloat=!!c.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",me.clearCloneStyle="content-box"===c.style.backgroundClip,l=se.createElement("div"),l.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",c.innerHTML="",l.appendChild(c),me.boxSizing=""===c.style.boxSizing||""===c.style.MozBoxSizing||""===c.style.WebkitBoxSizing,ve.extend(me,{reliableHiddenOffsets:function(){return null==t&&e(),o},boxSizingReliable:function(){return null==t&&e(),r},pixelMarginRight:function(){return null==t&&e(),i},pixelPosition:function(){return null==t&&e(),t},reliableMarginRight:function(){return null==t&&e(),a},reliableMarginLeft:function(){return null==t&&e(),s}}))}();var yt,bt,xt=/^(top|right|bottom|left)$/;n.getComputedStyle?(yt=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||ve.contains(e.ownerDocument,e)||(a=ve.style(e,t)),n&&!me.pixelMarginRight()&&mt.test(a)&&ft.test(t)&&(i=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=i,s.minWidth=r,s.maxWidth=o),void 0===a?a:a+""}):vt.currentStyle&&(yt=function(e){return e.currentStyle},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),mt.test(a)&&!xt.test(t)&&(i=s.left,r=e.runtimeStyle,o=r&&r.left,o&&(r.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=i,o&&(r.left=o)),void 0===a?a:a+""||"auto"});var wt=/alpha\([^)]*\)/i,kt=/opacity\s*=\s*([^)]*)/i,St=/^(none|table(?!-c[ea]).+)/,_t=new RegExp("^("+$e+")(.*)$","i"),Ct={position:"absolute",visibility:"hidden",display:"block"},Et={letterSpacing:"0",fontWeight:"400"},At=["Webkit","O","Moz","ms"],Tt=se.createElement("div").style;ve.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=bt(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:{"float":me.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,o,a,s=ve.camelCase(t),l=e.style;if(t=ve.cssProps[s]||(ve.cssProps[s]=j(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(r=a.get(e,!1,i))?r:l[t];if(o=typeof n,"string"===o&&(r=Re.exec(n))&&r[1]&&(n=g(e,t,r),o="number"),null!=n&&n===n&&("number"===o&&(n+=r&&r[3]||(ve.cssNumber[s]?"":"px")),me.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,i)))))try{l[t]=n}catch(c){}}},css:function(e,t,n,i){var r,o,a,s=ve.camelCase(t);return t=ve.cssProps[s]||(ve.cssProps[s]=j(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=bt(e,t,i)),"normal"===o&&t in Et&&(o=Et[t]),""===n||n?(r=parseFloat(o),n===!0||isFinite(r)?r||0:o):o}}),ve.each(["height","width"],function(e,t){ve.cssHooks[t]={get:function(e,n,i){return n?St.test(ve.css(e,"display"))&&0===e.offsetWidth?gt(e,Ct,function(){return R(e,t,i)}):R(e,t,i):void 0},set:function(e,n,i){var r=i&&yt(e);return M(e,n,i?$(e,t,i,me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,r),r):0)}}}),me.opacity||(ve.cssHooks.opacity={get:function(e,t){return kt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,i=e.currentStyle,r=ve.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=i&&i.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===ve.trim(o.replace(wt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||i&&!i.filter)||(n.filter=wt.test(o)?o.replace(wt,r):o+" "+r)}}),ve.cssHooks.marginRight=O(me.reliableMarginRight,function(e,t){return t?gt(e,{display:"inline-block"},bt,[e,"marginRight"]):void 0}),ve.cssHooks.marginLeft=O(me.reliableMarginLeft,function(e,t){return t?(parseFloat(bt(e,"marginLeft"))||(ve.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-gt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px":void 0}),ve.each({margin:"",padding:"",border:"Width"},function(e,t){ve.cssHooks[e+t]={expand:function(n){for(var i=0,r={},o="string"==typeof n?n.split(" "):[n];4>i;i++)r[e+qe[i]+t]=o[i]||o[i-2]||o[0];return r}},ft.test(e)||(ve.cssHooks[e+t].set=M)}),ve.fn.extend({css:function(e,t){return We(this,function(e,t,n){var i,r,o={},a=0;if(ve.isArray(t)){for(i=yt(e),r=t.length;r>a;a++)o[t[a]]=ve.css(e,t[a],!1,i);return o}return void 0!==n?ve.style(e,t,n):ve.css(e,t)},e,t,arguments.length>1)},show:function(){return B(this,!0)},hide:function(){return B(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Fe(this)?ve(this).show():ve(this).hide()})}}),ve.Tween=q,q.prototype={constructor:q,init:function(e,t,n,i,r,o){this.elem=e,this.prop=n,this.easing=r||ve.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(ve.cssNumber[n]?"":"px")},cur:function(){var e=q.propHooks[this.prop];return e&&e.get?e.get(this):q.propHooks._default.get(this)},run:function(e){var t,n=q.propHooks[this.prop];return this.options.duration?this.pos=t=ve.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):q.propHooks._default.set(this),this}},q.prototype.init.prototype=q.prototype,q.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=ve.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){ve.fx.step[e.prop]?ve.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[ve.cssProps[e.prop]]&&!ve.cssHooks[e.prop]?e.elem[e.prop]=e.now:ve.style(e.elem,e.prop,e.now+e.unit)}}},q.propHooks.scrollTop=q.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ve.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ve.fx=q.prototype.init,ve.fx.step={};var Nt,Pt,Lt=/^(?:toggle|show|hide)$/,Dt=/queueHooks$/;ve.Animation=ve.extend(X,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return g(n.elem,e,Re.exec(t),n),n}]},tweener:function(e,t){ve.isFunction(e)?(t=e,e=["*"]):e=e.match(Ie);for(var n,i=0,r=e.length;r>i;i++)n=e[i],X.tweeners[n]=X.tweeners[n]||[],X.tweeners[n].unshift(t)},prefilters:[U],prefilter:function(e,t){t?X.prefilters.unshift(e):X.prefilters.push(e)}}),ve.speed=function(e,t,n){var i=e&&"object"==typeof e?ve.extend({},e):{complete:n||!n&&t||ve.isFunction(e)&&e,duration:e,easing:n&&t||t&&!ve.isFunction(t)&&t};return i.duration=ve.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in ve.fx.speeds?ve.fx.speeds[i.duration]:ve.fx.speeds._default,null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){ve.isFunction(i.old)&&i.old.call(this),i.queue&&ve.dequeue(this,i.queue)},i},ve.fn.extend({fadeTo:function(e,t,n,i){return this.filter(Fe).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var r=ve.isEmptyObject(e),o=ve.speed(t,n,i),a=function(){var t=X(this,ve.extend({},e),o);(r||ve._data(this,"finish"))&&t.stop(!0)};return a.finish=a,r||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var i=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,r=null!=e&&e+"queueHooks",o=ve.timers,a=ve._data(this);if(r)a[r]&&a[r].stop&&i(a[r]);else for(r in a)a[r]&&a[r].stop&&Dt.test(r)&&i(a[r]);for(r=o.length;r--;)o[r].elem!==this||null!=e&&o[r].queue!==e||(o[r].anim.stop(n),t=!1,o.splice(r,1));!t&&n||ve.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=ve._data(this),i=n[e+"queue"],r=n[e+"queueHooks"],o=ve.timers,a=i?i.length:0;for(n.finish=!0,ve.queue(this,e,[]),r&&r.stop&&r.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;a>t;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish})}}),ve.each(["toggle","show","hide"],function(e,t){var n=ve.fn[t];ve.fn[t]=function(e,i,r){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(W(t,!0),e,i,r)}}),ve.each({slideDown:W("show"),slideUp:W("hide"),slideToggle:W("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){ve.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}}),ve.timers=[],ve.fx.tick=function(){var e,t=ve.timers,n=0;for(Nt=ve.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||ve.fx.stop(),Nt=void 0},ve.fx.timer=function(e){ve.timers.push(e),e()?ve.fx.start():ve.timers.pop()},ve.fx.interval=13,ve.fx.start=function(){Pt||(Pt=n.setInterval(ve.fx.tick,ve.fx.interval))},ve.fx.stop=function(){n.clearInterval(Pt),Pt=null},ve.fx.speeds={slow:600,fast:200,_default:400},ve.fn.delay=function(e,t){return e=ve.fx?ve.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,i){var r=n.setTimeout(t,e);i.stop=function(){n.clearTimeout(r)}})},function(){var e,t=se.createElement("input"),n=se.createElement("div"),i=se.createElement("select"),r=i.appendChild(se.createElement("option"));n=se.createElement("div"),n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",me.getSetAttribute="t"!==n.className,me.style=/top/.test(e.getAttribute("style")),me.hrefNormalized="/a"===e.getAttribute("href"),me.checkOn=!!t.value,me.optSelected=r.selected,me.enctype=!!se.createElement("form").enctype,i.disabled=!0,me.optDisabled=!r.disabled,t=se.createElement("input"),t.setAttribute("value",""),me.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),me.radioValue="t"===t.value}();var It=/\r/g,Ht=/[\x20\t\r\n\f]+/g;ve.fn.extend({val:function(e){var t,n,i,r=this[0];{if(arguments.length)return i=ve.isFunction(e),this.each(function(n){var r;1===this.nodeType&&(r=i?e.call(this,n,ve(this).val()):e,null==r?r="":"number"==typeof r?r+="":ve.isArray(r)&&(r=ve.map(r,function(e){return null==e?"":e+""})),t=ve.valHooks[this.type]||ve.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))});if(r)return t=ve.valHooks[r.type]||ve.valHooks[r.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:(n=r.value,"string"==typeof n?n.replace(It,""):null==n?"":n)}}}),ve.extend({valHooks:{option:{get:function(e){var t=ve.find.attr(e,"value");return null!=t?t:ve.trim(ve.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n,i=e.options,r=e.selectedIndex,o="select-one"===e.type||0>r,a=o?null:[],s=o?r+1:i.length,l=0>r?s:o?r:0;s>l;l++)if(n=i[l],(n.selected||l===r)&&(me.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!ve.nodeName(n.parentNode,"optgroup"))){if(t=ve(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,i,r=e.options,o=ve.makeArray(t),a=r.length;a--;)if(i=r[a],ve.inArray(ve.valHooks.option.get(i),o)>-1)try{i.selected=n=!0}catch(s){i.scrollHeight}else i.selected=!1;return n||(e.selectedIndex=-1),r}}}}),ve.each(["radio","checkbox"],function(){ve.valHooks[this]={set:function(e,t){return ve.isArray(t)?e.checked=ve.inArray(ve(e).val(),t)>-1:void 0}},me.checkOn||(ve.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Ot,jt,Bt=ve.expr.attrHandle,Mt=/^(?:checked|selected)$/i,$t=me.getSetAttribute,Rt=me.input;ve.fn.extend({attr:function(e,t){return We(this,ve.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){ve.removeAttr(this,e)})}}),ve.extend({attr:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ve.prop(e,t,n):(1===o&&ve.isXMLDoc(e)||(t=t.toLowerCase(),r=ve.attrHooks[t]||(ve.expr.match.bool.test(t)?jt:Ot)),void 0!==n?null===n?void ve.removeAttr(e,t):r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(i=r.get(e,t))?i:(i=ve.find.attr(e,t),null==i?void 0:i))},attrHooks:{type:{set:function(e,t){if(!me.radioValue&&"radio"===t&&ve.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i,r=0,o=t&&t.match(Ie);if(o&&1===e.nodeType)for(;n=o[r++];)i=ve.propFix[n]||n,ve.expr.match.bool.test(n)?Rt&&$t||!Mt.test(n)?e[i]=!1:e[ve.camelCase("default-"+n)]=e[i]=!1:ve.attr(e,n,""),e.removeAttribute($t?n:i)}}),jt={set:function(e,t,n){return t===!1?ve.removeAttr(e,n):Rt&&$t||!Mt.test(n)?e.setAttribute(!$t&&ve.propFix[n]||n,n):e[ve.camelCase("default-"+n)]=e[n]=!0,n}},ve.each(ve.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Bt[t]||ve.find.attr;Rt&&$t||!Mt.test(t)?Bt[t]=function(e,t,i){var r,o;return i||(o=Bt[t],Bt[t]=r,r=null!=n(e,t,i)?t.toLowerCase():null,Bt[t]=o),r}:Bt[t]=function(e,t,n){return n?void 0:e[ve.camelCase("default-"+t)]?t.toLowerCase():null}}),Rt&&$t||(ve.attrHooks.value={set:function(e,t,n){return ve.nodeName(e,"input")?void(e.defaultValue=t):Ot&&Ot.set(e,t,n)}}),$t||(Ot={set:function(e,t,n){var i=e.getAttributeNode(n);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(n)),i.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Bt.id=Bt.name=Bt.coords=function(e,t,n){var i;return n?void 0:(i=e.getAttributeNode(t))&&""!==i.value?i.value:null},ve.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:Ot.set},ve.attrHooks.contenteditable={set:function(e,t,n){Ot.set(e,""===t?!1:t,n)}},ve.each(["width","height"],function(e,t){ve.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),me.style||(ve.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var qt=/^(?:input|select|textarea|button|object)$/i,Ft=/^(?:a|area)$/i;ve.fn.extend({prop:function(e,t){return We(this,ve.prop,e,t,arguments.length>1)},removeProp:function(e){return e=ve.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),ve.extend({prop:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ve.isXMLDoc(e)||(t=ve.propFix[t]||t,r=ve.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:e[t]=n:r&&"get"in r&&null!==(i=r.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=ve.find.attr(e,"tabindex");return t?parseInt(t,10):qt.test(e.nodeName)||Ft.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),me.hrefNormalized||ve.each(["href","src"],function(e,t){ve.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),me.optSelected||(ve.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ve.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ve.propFix[this.toLowerCase()]=this}),me.enctype||(ve.propFix.enctype="encoding");var Wt=/[\t\r\n\f]/g;ve.fn.extend({addClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).addClass(e.call(this,t,K(this)))});if("string"==typeof e&&e)for(t=e.match(Ie)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(Wt," ")){for(a=0;o=t[a++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},removeClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).removeClass(e.call(this,t,K(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(Ie)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(Wt," ")){for(a=0;o=t[a++];)for(;i.indexOf(" "+o+" ")>-1;)i=i.replace(" "+o+" "," ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):ve.isFunction(e)?this.each(function(n){ve(this).toggleClass(e.call(this,n,K(this),t),t)}):this.each(function(){
-var t,i,r,o;if("string"===n)for(i=0,r=ve(this),o=e.match(Ie)||[];t=o[i++];)r.hasClass(t)?r.removeClass(t):r.addClass(t);else void 0!==e&&"boolean"!==n||(t=K(this),t&&ve._data(this,"__className__",t),ve.attr(this,"class",t||e===!1?"":ve._data(this,"__className__")||""))})},hasClass:function(e){var t,n,i=0;for(t=" "+e+" ";n=this[i++];)if(1===n.nodeType&&(" "+K(n)+" ").replace(Wt," ").indexOf(t)>-1)return!0;return!1}}),ve.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){ve.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),ve.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var zt=n.location,Ut=ve.now(),Vt=/\?/,Xt=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;ve.parseJSON=function(e){if(n.JSON&&n.JSON.parse)return n.JSON.parse(e+"");var t,i=null,r=ve.trim(e+"");return r&&!ve.trim(r.replace(Xt,function(e,n,r,o){return t&&n&&(i=0),0===i?e:(t=r||n,i+=!o-!r,"")}))?Function("return "+r)():ve.error("Invalid JSON: "+e)},ve.parseXML=function(e){var t,i;if(!e||"string"!=typeof e)return null;try{n.DOMParser?(i=new n.DOMParser,t=i.parseFromString(e,"text/xml")):(t=new n.ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e))}catch(r){t=void 0}return t&&t.documentElement&&!t.getElementsByTagName("parsererror").length||ve.error("Invalid XML: "+e),t};var Kt=/#.*$/,Jt=/([?&])_=[^&]*/,Yt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Qt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gt=/^(?:GET|HEAD)$/,Zt=/^\/\//,en=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,tn={},nn={},rn="*/".concat("*"),on=zt.href,an=en.exec(on.toLowerCase())||[];ve.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:on,type:"GET",isLocal:Qt.test(an[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":rn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":ve.parseJSON,"text xml":ve.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,ve.ajaxSettings),t):Q(ve.ajaxSettings,e)},ajaxPrefilter:J(tn),ajaxTransport:J(nn),ajax:function(e,t){function i(e,t,i,r){var o,p,y,b,w,S=t;2!==x&&(x=2,l&&n.clearTimeout(l),u=void 0,s=r||"",k.readyState=e>0?4:0,o=e>=200&&300>e||304===e,i&&(b=G(h,k,i)),b=Z(h,b,k,o),o?(h.ifModified&&(w=k.getResponseHeader("Last-Modified"),w&&(ve.lastModified[a]=w),w=k.getResponseHeader("etag"),w&&(ve.etag[a]=w)),204===e||"HEAD"===h.type?S="nocontent":304===e?S="notmodified":(S=b.state,p=b.data,y=b.error,o=!y)):(y=S,!e&&S||(S="error",0>e&&(e=0))),k.status=e,k.statusText=(t||S)+"",o?m.resolveWith(d,[p,S,k]):m.rejectWith(d,[k,S,y]),k.statusCode(v),v=void 0,c&&f.trigger(o?"ajaxSuccess":"ajaxError",[k,h,o?p:y]),g.fireWith(d,[k,S]),c&&(f.trigger("ajaxComplete",[k,h]),--ve.active||ve.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,o,a,s,l,c,u,p,h=ve.ajaxSetup({},t),d=h.context||h,f=h.context&&(d.nodeType||d.jquery)?ve(d):ve.event,m=ve.Deferred(),g=ve.Callbacks("once memory"),v=h.statusCode||{},y={},b={},x=0,w="canceled",k={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!p)for(p={};t=Yt.exec(s);)p[t[1].toLowerCase()]=t[2];t=p[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)v[t]=[v[t],e[t]];else k.always(e[k.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),i(0,t),this}};if(m.promise(k).complete=g.add,k.success=k.done,k.error=k.fail,h.url=((e||h.url||on)+"").replace(Kt,"").replace(Zt,an[1]+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=ve.trim(h.dataType||"*").toLowerCase().match(Ie)||[""],null==h.crossDomain&&(r=en.exec(h.url.toLowerCase()),h.crossDomain=!(!r||r[1]===an[1]&&r[2]===an[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(an[3]||("http:"===an[1]?"80":"443")))),h.data&&h.processData&&"string"!=typeof h.data&&(h.data=ve.param(h.data,h.traditional)),Y(tn,h,t,k),2===x)return k;c=ve.event&&h.global,c&&0===ve.active++&&ve.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Gt.test(h.type),a=h.url,h.hasContent||(h.data&&(a=h.url+=(Vt.test(a)?"&":"?")+h.data,delete h.data),h.cache===!1&&(h.url=Jt.test(a)?a.replace(Jt,"$1_="+Ut++):a+(Vt.test(a)?"&":"?")+"_="+Ut++)),h.ifModified&&(ve.lastModified[a]&&k.setRequestHeader("If-Modified-Since",ve.lastModified[a]),ve.etag[a]&&k.setRequestHeader("If-None-Match",ve.etag[a])),(h.data&&h.hasContent&&h.contentType!==!1||t.contentType)&&k.setRequestHeader("Content-Type",h.contentType),k.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+rn+"; q=0.01":""):h.accepts["*"]);for(o in h.headers)k.setRequestHeader(o,h.headers[o]);if(h.beforeSend&&(h.beforeSend.call(d,k,h)===!1||2===x))return k.abort();w="abort";for(o in{success:1,error:1,complete:1})k[o](h[o]);if(u=Y(nn,h,t,k)){if(k.readyState=1,c&&f.trigger("ajaxSend",[k,h]),2===x)return k;h.async&&h.timeout>0&&(l=n.setTimeout(function(){k.abort("timeout")},h.timeout));try{x=1,u.send(y,i)}catch(S){if(!(2>x))throw S;i(-1,S)}}else i(-1,"No Transport");return k},getJSON:function(e,t,n){return ve.get(e,t,n,"json")},getScript:function(e,t){return ve.get(e,void 0,t,"script")}}),ve.each(["get","post"],function(e,t){ve[t]=function(e,n,i,r){return ve.isFunction(n)&&(r=r||i,i=n,n=void 0),ve.ajax(ve.extend({url:e,type:t,dataType:r,data:n,success:i},ve.isPlainObject(e)&&e))}}),ve._evalUrl=function(e){return ve.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},ve.fn.extend({wrapAll:function(e){if(ve.isFunction(e))return this.each(function(t){ve(this).wrapAll(e.call(this,t))});if(this[0]){var t=ve(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return ve.isFunction(e)?this.each(function(t){ve(this).wrapInner(e.call(this,t))}):this.each(function(){var t=ve(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=ve.isFunction(e);return this.each(function(n){ve(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){ve.nodeName(this,"body")||ve(this).replaceWith(this.childNodes)}).end()}}),ve.expr.filters.hidden=function(e){return me.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:te(e)},ve.expr.filters.visible=function(e){return!ve.expr.filters.hidden(e)};var sn=/%20/g,ln=/\[\]$/,cn=/\r?\n/g,un=/^(?:submit|button|image|reset|file)$/i,pn=/^(?:input|select|textarea|keygen)/i;ve.param=function(e,t){var n,i=[],r=function(e,t){t=ve.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=ve.ajaxSettings&&ve.ajaxSettings.traditional),ve.isArray(e)||e.jquery&&!ve.isPlainObject(e))ve.each(e,function(){r(this.name,this.value)});else for(n in e)ne(n,e[n],t,r);return i.join("&").replace(sn,"+")},ve.fn.extend({serialize:function(){return ve.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ve.prop(this,"elements");return e?ve.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ve(this).is(":disabled")&&pn.test(this.nodeName)&&!un.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=ve(this).val();return null==n?null:ve.isArray(n)?ve.map(n,function(e){return{name:t.name,value:e.replace(cn,"\r\n")}}):{name:t.name,value:n.replace(cn,"\r\n")}}).get()}}),ve.ajaxSettings.xhr=void 0!==n.ActiveXObject?function(){return this.isLocal?re():se.documentMode>8?ie():/^(get|post|head|put|delete|options)$/i.test(this.type)&&ie()||re()}:ie;var hn=0,dn={},fn=ve.ajaxSettings.xhr();n.attachEvent&&n.attachEvent("onunload",function(){for(var e in dn)dn[e](void 0,!0)}),me.cors=!!fn&&"withCredentials"in fn,fn=me.ajax=!!fn,fn&&ve.ajaxTransport(function(e){if(!e.crossDomain||me.cors){var t;return{send:function(i,r){var o,a=e.xhr(),s=++hn;if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)a[o]=e.xhrFields[o];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(o in i)void 0!==i[o]&&a.setRequestHeader(o,i[o]+"");a.send(e.hasContent&&e.data||null),t=function(n,i){var o,l,c;if(t&&(i||4===a.readyState))if(delete dn[s],t=void 0,a.onreadystatechange=ve.noop,i)4!==a.readyState&&a.abort();else{c={},o=a.status,"string"==typeof a.responseText&&(c.text=a.responseText);try{l=a.statusText}catch(u){l=""}o||!e.isLocal||e.crossDomain?1223===o&&(o=204):o=c.text?200:404}c&&r(o,l,c,a.getAllResponseHeaders())},e.async?4===a.readyState?n.setTimeout(t):a.onreadystatechange=dn[s]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),ve.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 ve.globalEval(e),e}}}),ve.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),ve.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=se.head||ve("head")[0]||se.documentElement;return{send:function(i,r){t=se.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||r(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var mn=[],gn=/(=)\?(?=&|$)|\?\?/;ve.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=mn.pop()||ve.expando+"_"+Ut++;return this[e]=!0,e}}),ve.ajaxPrefilter("json jsonp",function(e,t,i){var r,o,a,s=e.jsonp!==!1&&(gn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&gn.test(e.data)&&"data");return s||"jsonp"===e.dataTypes[0]?(r=e.jsonpCallback=ve.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(gn,"$1"+r):e.jsonp!==!1&&(e.url+=(Vt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||ve.error(r+" was not called"),a[0]},e.dataTypes[0]="json",o=n[r],n[r]=function(){a=arguments},i.always(function(){void 0===o?ve(n).removeProp(r):n[r]=o,e[r]&&(e.jsonpCallback=t.jsonpCallback,mn.push(r)),a&&ve.isFunction(o)&&o(a[0]),a=o=void 0}),"script"):void 0}),ve.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||se;var i=Ee.exec(e),r=!n&&[];return i?[t.createElement(i[1])]:(i=w([e],t,r),r&&r.length&&ve(r).remove(),ve.merge([],i.childNodes))};var vn=ve.fn.load;ve.fn.load=function(e,t,n){if("string"!=typeof e&&vn)return vn.apply(this,arguments);var i,r,o,a=this,s=e.indexOf(" ");return s>-1&&(i=ve.trim(e.slice(s,e.length)),e=e.slice(0,s)),ve.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(r="POST"),a.length>0&&ve.ajax({url:e,type:r||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(i?ve("<div>").append(ve.parseHTML(e)).find(i):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ve.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ve.fn[t]=function(e){return this.on(t,e)}}),ve.expr.filters.animated=function(e){return ve.grep(ve.timers,function(t){return e===t.elem}).length},ve.offset={setOffset:function(e,t,n){var i,r,o,a,s,l,c,u=ve.css(e,"position"),p=ve(e),h={};"static"===u&&(e.style.position="relative"),s=p.offset(),o=ve.css(e,"top"),l=ve.css(e,"left"),c=("absolute"===u||"fixed"===u)&&ve.inArray("auto",[o,l])>-1,c?(i=p.position(),a=i.top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),ve.isFunction(t)&&(t=t.call(e,n,ve.extend({},s))),null!=t.top&&(h.top=t.top-s.top+a),null!=t.left&&(h.left=t.left-s.left+r),"using"in t?t.using.call(e,h):p.css(h)}},ve.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){ve.offset.setOffset(this,e,t)});var t,n,i={top:0,left:0},r=this[0],o=r&&r.ownerDocument;if(o)return t=o.documentElement,ve.contains(t,r)?("undefined"!=typeof r.getBoundingClientRect&&(i=r.getBoundingClientRect()),n=oe(o),{top:i.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):i},position:function(){if(this[0]){var e,t,n={top:0,left:0},i=this[0];return"fixed"===ve.css(i,"position")?t=i.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),ve.nodeName(e[0],"html")||(n=e.offset()),n.top+=ve.css(e[0],"borderTopWidth",!0),n.left+=ve.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-ve.css(i,"marginTop",!0),left:t.left-n.left-ve.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&!ve.nodeName(e,"html")&&"static"===ve.css(e,"position");)e=e.offsetParent;return e||vt})}}),ve.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);ve.fn[e]=function(i){return We(this,function(e,i,r){var o=oe(e);return void 0===r?o?t in o?o[t]:o.document.documentElement[i]:e[i]:void(o?o.scrollTo(n?ve(o).scrollLeft():r,n?r:ve(o).scrollTop()):e[i]=r)},e,i,arguments.length,null)}}),ve.each(["top","left"],function(e,t){ve.cssHooks[t]=O(me.pixelPosition,function(e,n){return n?(n=bt(e,t),mt.test(n)?ve(e).position()[t]+"px":n):void 0})}),ve.each({Height:"height",Width:"width"},function(e,t){ve.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,i){ve.fn[i]=function(i,r){var o=arguments.length&&(n||"boolean"!=typeof i),a=n||(i===!0||r===!0?"margin":"border");return We(this,function(t,n,i){var r;return ve.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(r=t.documentElement,Math.max(t.body["scroll"+e],r["scroll"+e],t.body["offset"+e],r["offset"+e],r["client"+e])):void 0===i?ve.css(t,n,a):ve.style(t,n,i,a)},t,o?i:void 0,o,null)}})}),ve.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,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),ve.fn.size=function(){return this.length},ve.fn.andSelf=ve.fn.addBack,i=[],r=function(){return ve}.apply(t,i),!(void 0!==r&&(e.exports=r));var yn=n.jQuery,bn=n.$;return ve.noConflict=function(e){return n.$===ve&&(n.$=bn),e&&n.jQuery===ve&&(n.jQuery=yn),ve},o||(n.jQuery=n.$=ve),ve})},function(e,t,n){function i(){L.each(function(){var e=b(this).find(".hide-list"),t=[],n=0;if(e.length){for(e.children().each(function(){n%D===0&&t.push(""),t[t.length-1]+=this.outerHTML+"",n++}),n=0;3>n;n++){if(!t[n])return;e.before('<dl class="category-list">'+t[n]+"</dl>")}e.remove()}})}function r(e){var t={usercenter:"http://www.yohobuy.com/home?t="+(new Date).getTime(),nickname:e.profile_name,signout:"http://www.yohobuy.com/logout_"+e.token};1*e.vip.curVipInfo.curLevel===3&&(e.vip3=!0),w.find(".simple-user-center").html(m(e)),S.html(g(t))}function o(){var e={return_type:"jsonp",method:"open.passport.get"};b.getJSON("http://www.yohobuy.com/common/passport/?callback=?",e,function(e){e&&e.data&&-1!==e.data.result?r(e.data.data):window.setCookie("_UID","",{domain:".yohobuy.com",expires:-1})})}function a(e){var t={return_type:"jsonp",query:e};b.getJSON("http://search.yohobuy.com/api/suggest?callback=?",t,function(e){200===e.code&&(e.data&&e.data.length?A.html(e.data).show():A.hide())})}function s(e){var t,n;e&&window.setCookie("_g",e,{path:"/",domain:".yohobuy.com"}),window.cookie("_g")&&(t=b.parseJSON(window.cookie("_g")),n=parseInt(t._nac,10)+parseInt(t._ac,10),n=n>0?n:0,T.data({key:t._k,num:n}),N.text(n))}function l(e){var t={return_type:"jsonp",method:"open.Shoppingcart.getCartData",shopping_key:e};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",t,function(e){var t,n;200===e.code&&(n=e.data,t=b.merge(n.main_goods,n.advance_goods),t=b.merge(t,n.outlet_goods),t=b.merge(t,n.gift_goods),t=b.merge(t,n.need_pay_gifts),t&&t.length?(n.totalGoods=t,P.html(v({carData:n}))):P.html('<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>'))})}function c(e,t){var n={return_type:"jsonp",method:"open.Shoppingcart.delone",shopping_key:e.key,id:e.id,isreduce:e.isreduce};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",n,function(n){var i="";return 200===n.code?(i='{"_k":"'+e.key+'","_nac":'+n.data.total_goods_num+',"_ac":0,"_r":0}',s(i),t()):void 0})}function u(){var e=["webkit","moz","ms"],t=e[0]+"RequestAnimationFrame",n=e[1]+"RequestAnimationFrame",i=e[2]+"RequestAnimationFrame";return window[t]?function(e){requestAnimationFrame(e)}:window[n]?function(e){window[n](e)}:window[i]?function(e){window[i](e)}:function(e){window.setTimeout(e,67)}}function p(){I+=10,E.css({transform:"rotateX("+I+"deg)","-webkit-transform":"rotateX("+I+"deg)","-moz-transform":"rotateX("+I+"deg)"}),I/90%2===1&&E.toggleClass("logo-cn"),I/90%2===0&&I%360!==0?window.setTimeout(p,3e3):I%360===0?window.setTimeout(p,6e4):y(function(){p()})}function h(){var e=3e3;E.hasClass("logo-cn")&&(e=6e4),E.fadeOut(H,function(){E.toggleClass("logo-cn"),E.fadeIn(H,function(){window.setTimeout(h,e)})})}function d(){var e,t,n=["webkit","moz","ms"];for(t=0;t<n.length;t++)return e=n[t]+"RequestAnimationFrame",!!window[e]}var f,m,g,v,y,b=n(2),x=n(4),w=b(".tool-wrapper"),k=w.find(".yoho-group"),S=b("#loginBox"),_=b(".head-wrapper"),C=b("#search-form"),E=_.find(".main-logo"),A=_.find(".search-suggest"),T=_.find(".go-cart"),N=T.find(".goods-num-tip"),P=_.find(".mini-cart-wrapper"),L=b(".sub-nav-list .contain-third"),D=9,I=0,H=500;m=x.compile(b("#simple-account-info-tpl").html()||""),g=x.compile(b("#header-login-info-tpl").html()||""),v=x.compile(b("#mini-cart-tpl").html()||""),x.registerHelper("notzero",function(e,t){return"0"!==e?t.fn(this):t.inverse(this)}),d()?(y=u(),window.setTimeout(p,3e3)):window.setTimeout(h,3e3),o(),i(),setInterval(s,2e3),k.hover(function(){var e=b(this).data();b(this).text(e.cn)},function(){var e=b(this).data();b(this).text(e.en)}),C.on("keyup",".search-key",function(e){var t,n=b.trim(b(this).val()),i=A.find("li"),r=A.find(".action");if(e.which>36&&e.which<41){if(38===e.which)t=r.prev(),r.length&&t.length||(t=i.eq(i.length-1));else{if(40!==e.which)return;t=r.next(),r.length&&t.length||(t=i.eq(0))}i.removeClass("action"),t.addClass("action"),b(this).val(t.find(".searchvalue").text())}else 13===e.which?""!==n&&C.submit():(n=n.replace(new RegExp("'","gm"),""),b(this).val(n),a(n))}).on("blur",".search-key",function(){setTimeout(function(){A.hide()},200)}),T.hover(function(){var e,t="";T.hasClass("on-hover")||(e=T.data(),e&&1*e.num?(t='<div class="loading-cart"><h3>加载中,请稍后</h3></div>',l(e.key)):t='<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>',P.html(t),T.addClass("on-hover"))},function(){T.removeClass("on-hover")}),T.on("click",".cart-goods-del",function(){var e,t=b(this),n=t.data();n&&(e=function(){t.closest(".goods-item").remove()},n.key=T.data().key,c(n,e))}),L.on({mouseenter:function(){var e=b(this).children(".third-nav-wrapper"),t=e.find(".show-detail"),n={};f=setTimeout(function(){e.show()},200),t.length&&!t.hasClass("show")&&(n.content_code=t.data().code,n.client_type="web",n.width=337,n.height=250,n._=new Date,b.getJSON("http://new.yohobuy.com/common/getbanner?callback=?",n,function(e){200===e.code&&(t.addClass("show"),t.find("img").attr("src",e.data.src),t.find("a").attr("href",e.data.url),t.find(".title").text(e.data.title))}))},mouseleave:function(){var e=b(this).children(".third-nav-wrapper");f&&clearTimeout(f),e.hide()}})},function(e,t,n){/*!
-	
-	 handlebars v4.0.5
-	
-	Copyright (C) 2011-2015 by Yehuda Katz
-	
-	Permission is hereby granted, free of charge, to any person obtaining a copy
-	of this software and associated documentation files (the "Software"), to deal
-	in the Software without restriction, including without limitation the rights
-	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-	copies of the Software, and to permit persons to whom the Software is
-	furnished to do so, subject to the following conditions:
-	
-	The above copyright notice and this permission notice shall be included in
-	all copies or substantial portions of the Software.
-	
-	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-	THE SOFTWARE.
-	
-	@license
-	*/
-!function(t,n){e.exports=n()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(){var e=v();return e.compile=function(t,n){return u.compile(t,n,e)},e.precompile=function(t,n){return u.precompile(t,n,e)},e.AST=l["default"],e.Compiler=u.Compiler,e.JavaScriptCompiler=h["default"],e.Parser=c.parser,e.parse=c.parse,e}var r=n(1)["default"];t.__esModule=!0;var o=n(2),a=r(o),s=n(21),l=r(s),c=n(22),u=n(27),p=n(28),h=r(p),d=n(25),f=r(d),m=n(20),g=r(m),v=a["default"].create,y=i();y.create=i,g["default"](y),y.Visitor=f["default"],y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){return e&&e.__esModule?e:{"default":e}},t.__esModule=!0},function(e,t,n){"use strict";function i(){var e=new s.HandlebarsEnvironment;return d.extend(e,s),e.SafeString=c["default"],e.Exception=p["default"],e.Utils=d,e.escapeExpression=d.escapeExpression,e.VM=m,e.template=function(t){return m.template(t,e)},e}var r=n(3)["default"],o=n(1)["default"];t.__esModule=!0;var a=n(4),s=r(a),l=n(18),c=o(l),u=n(6),p=o(u),h=n(5),d=r(h),f=n(19),m=r(f),g=n(20),v=o(g),y=i();y.create=i,v["default"](y),y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t},t.__esModule=!0},function(e,t,n){"use strict";function i(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},l.registerDefaultHelpers(this),c.registerDefaultDecorators(this)}var r=n(1)["default"];t.__esModule=!0,t.HandlebarsEnvironment=i;var o=n(5),a=n(6),s=r(a),l=n(7),c=n(15),u=n(17),p=r(u),h="4.0.5";t.VERSION=h;var d=7;t.COMPILER_REVISION=d;var f={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};t.REVISION_CHANGES=f;var m="[object Object]";i.prototype={constructor:i,logger:p["default"],log:p["default"].log,registerHelper:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(o.toString.call(e)===m)o.extend(this.partials,e);else{if("undefined"==typeof t)throw new s["default"]('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]}};var g=p["default"].log;t.log=g,t.createFrame=o.createFrame,t.logger=p["default"]},function(e,t){"use strict";function n(e){return u[e]}function i(e){for(var t=1;t<arguments.length;t++)for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e}function r(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1}function o(e){if("string"!=typeof e){if(e&&e.toHTML)return e.toHTML();if(null==e)return"";if(!e)return e+"";e=""+e}return h.test(e)?e.replace(p,n):e}function a(e){return e||0===e?!(!m(e)||0!==e.length):!0}function s(e){var t=i({},e);return t._parent=e,t}function l(e,t){return e.path=t,e}function c(e,t){return(e?e+".":"")+t}t.__esModule=!0,t.extend=i,t.indexOf=r,t.escapeExpression=o,t.isEmpty=a,t.createFrame=s,t.blockParams=l,t.appendContextPath=c;var u={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;","=":"&#x3D;"},p=/[&<>"'`=]/g,h=/[&<>"'`=]/,d=Object.prototype.toString;t.toString=d;var f=function(e){return"function"==typeof e};f(/x/)&&(t.isFunction=f=function(e){return"function"==typeof e&&"[object Function]"===d.call(e)}),t.isFunction=f;var m=Array.isArray||function(e){return e&&"object"==typeof e?"[object Array]"===d.call(e):!1};t.isArray=m},function(e,t){"use strict";function n(e,t){var r=t&&t.loc,o=void 0,a=void 0;r&&(o=r.start.line,a=r.start.column,e+=" - "+o+":"+a);for(var s=Error.prototype.constructor.call(this,e),l=0;l<i.length;l++)this[i[l]]=s[i[l]];Error.captureStackTrace&&Error.captureStackTrace(this,n),r&&(this.lineNumber=o,this.column=a)}t.__esModule=!0;var i=["description","fileName","lineNumber","message","name","number","stack"];n.prototype=new Error,t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e),l["default"](e),u["default"](e),h["default"](e),f["default"](e),g["default"](e),y["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultHelpers=i;var o=n(8),a=r(o),s=n(9),l=r(s),c=n(10),u=r(c),p=n(11),h=r(p),d=n(12),f=r(d),m=n(13),g=r(m),v=n(14),y=r(v)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("blockHelperMissing",function(t,n){var r=n.inverse,o=n.fn;if(t===!0)return o(this);if(t===!1||null==t)return r(this);if(i.isArray(t))return t.length>0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):r(this);if(n.data&&n.ids){var a=i.createFrame(n.data);a.contextPath=i.appendContextPath(n.data.contextPath,n.name),n={data:a}}return o(t,n)})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(5),o=n(6),a=i(o);t["default"]=function(e){e.registerHelper("each",function(e,t){function n(t,n,o){c&&(c.key=t,c.index=n,c.first=0===n,c.last=!!o,u&&(c.contextPath=u+t)),l+=i(e[t],{data:c,blockParams:r.blockParams([e[t],t],[u+t,null])})}if(!t)throw new a["default"]("Must pass iterator to #each");var i=t.fn,o=t.inverse,s=0,l="",c=void 0,u=void 0;if(t.data&&t.ids&&(u=r.appendContextPath(t.data.contextPath,t.ids[0])+"."),r.isFunction(e)&&(e=e.call(this)),t.data&&(c=r.createFrame(t.data)),e&&"object"==typeof e)if(r.isArray(e))for(var p=e.length;p>s;s++)s in e&&n(s,s,s===e.length-1);else{var h=void 0;for(var d in e)e.hasOwnProperty(d)&&(void 0!==h&&n(h,s-1),h=d,s++);void 0!==h&&n(h,s-1,!0)}return 0===s&&(l=o(this)),l})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(6),o=i(r);t["default"]=function(e){e.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new o["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("if",function(e,t){return i.isFunction(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||i.isEmpty(e)?t.inverse(this):t.fn(this)}),e.registerHelper("unless",function(t,n){return e.helpers["if"].call(this,t,{fn:n.inverse,inverse:n.fn,hash:n.hash})})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("log",function(){for(var t=[void 0],n=arguments[arguments.length-1],i=0;i<arguments.length-1;i++)t.push(arguments[i]);var r=1;null!=n.hash.level?r=n.hash.level:n.data&&null!=n.data.level&&(r=n.data.level),t[0]=r,e.log.apply(e,t)})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("lookup",function(e,t){return e&&e[t]})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("with",function(e,t){i.isFunction(e)&&(e=e.call(this));var n=t.fn;if(i.isEmpty(e))return t.inverse(this);var r=t.data;return t.data&&t.ids&&(r=i.createFrame(t.data),r.contextPath=i.appendContextPath(t.data.contextPath,t.ids[0])),n(e,{data:r,blockParams:i.blockParams([e],[r&&r.contextPath])})})},e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultDecorators=i;var o=n(16),a=r(o)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerDecorator("inline",function(e,t,n,r){var o=e;return t.partials||(t.partials={},o=function(r,o){var a=n.partials;n.partials=i.extend({},a,t.partials);var s=e(r,o);return n.partials=a,s}),t.partials[r.args[0]]=r.fn,o})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5),r={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=i.indexOf(r.methodMap,e.toLowerCase());e=t>=0?t:parseInt(e,10)}return e},log:function(e){if(e=r.lookupLevel(e),"undefined"!=typeof console&&r.lookupLevel(r.level)<=e){var t=r.methodMap[e];console[t]||(t="log");for(var n=arguments.length,i=Array(n>1?n-1:0),o=1;n>o;o++)i[o-1]=arguments[o];console[t].apply(console,i)}}};t["default"]=r,e.exports=t["default"]},function(e,t){"use strict";function n(e){this.string=e}t.__esModule=!0,n.prototype.toString=n.prototype.toHTML=function(){return""+this.string},t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){var t=e&&e[0]||1,n=v.COMPILER_REVISION;if(t!==n){if(n>t){var i=v.REVISION_CHANGES[n],r=v.REVISION_CHANGES[t];throw new g["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+i+") or downgrade your runtime to an older version ("+r+").")}throw new g["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")}}function r(e,t){function n(n,i,r){r.hash&&(i=f.extend({},i,r.hash),r.ids&&(r.ids[0]=!0)),n=t.VM.resolvePartial.call(this,n,i,r);var o=t.VM.invokePartial.call(this,n,i,r);if(null==o&&t.compile&&(r.partials[r.name]=t.compile(n,e.compilerOptions,t),o=r.partials[r.name](i,r)),null!=o){if(r.indent){for(var a=o.split("\n"),s=0,l=a.length;l>s&&(a[s]||s+1!==l);s++)a[s]=r.indent+a[s];o=a.join("\n")}return o}throw new g["default"]("The partial "+r.name+" could not be compiled when running in runtime-only mode")}function i(t){function n(t){return""+e.main(r,t,r.helpers,r.partials,a,l,s)}var o=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],a=o.data;i._setup(o),!o.partial&&e.useData&&(a=c(t,a));var s=void 0,l=e.useBlockParams?[]:void 0;return e.useDepths&&(s=o.depths?t!==o.depths[0]?[t].concat(o.depths):o.depths:[t]),(n=u(e.main,n,r,o.depths||[],a,l))(t,o)}if(!t)throw new g["default"]("No environment passed to template");if(!e||!e.main)throw new g["default"]("Unknown template object: "+typeof e);e.main.decorator=e.main_d,t.VM.checkRevision(e.compiler);var r={strict:function(e,t){if(!(t in e))throw new g["default"]('"'+t+'" not defined in '+e);return e[t]},lookup:function(e,t){for(var n=e.length,i=0;n>i;i++)if(e[i]&&null!=e[i][t])return e[i][t]},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:f.escapeExpression,invokePartial:n,fn:function(t){var n=e[t];return n.decorator=e[t+"_d"],n},programs:[],program:function(e,t,n,i,r){var a=this.programs[e],s=this.fn(e);return t||r||i||n?a=o(this,e,s,t,n,i,r):a||(a=this.programs[e]=o(this,e,s)),a},data:function(e,t){for(;e&&t--;)e=e._parent;return e},merge:function(e,t){var n=e||t;return e&&t&&e!==t&&(n=f.extend({},t,e)),n},noop:t.VM.noop,compilerInfo:e.compiler};return i.isTop=!0,i._setup=function(n){n.partial?(r.helpers=n.helpers,r.partials=n.partials,r.decorators=n.decorators):(r.helpers=r.merge(n.helpers,t.helpers),e.usePartial&&(r.partials=r.merge(n.partials,t.partials)),(e.usePartial||e.useDecorators)&&(r.decorators=r.merge(n.decorators,t.decorators)))},i._child=function(t,n,i,a){if(e.useBlockParams&&!i)throw new g["default"]("must pass block params");if(e.useDepths&&!a)throw new g["default"]("must pass parent depths");return o(r,t,e[t],n,0,i,a)},i}function o(e,t,n,i,r,o,a){function s(t){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],s=a;return a&&t!==a[0]&&(s=[t].concat(a)),n(e,t,e.helpers,e.partials,r.data||i,o&&[r.blockParams].concat(o),s)}return s=u(n,s,e,a,i,o),s.program=t,s.depth=a?a.length:0,s.blockParams=r||0,s}function a(e,t,n){return e?e.call||n.name||(n.name=e,e=n.partials[e]):e="@partial-block"===n.name?n.data["partial-block"]:n.partials[n.name],e}function s(e,t,n){n.partial=!0,n.ids&&(n.data.contextPath=n.ids[0]||n.data.contextPath);var i=void 0;if(n.fn&&n.fn!==l&&(n.data=v.createFrame(n.data),i=n.data["partial-block"]=n.fn,i.partials&&(n.partials=f.extend({},n.partials,i.partials))),void 0===e&&i&&(e=i),void 0===e)throw new g["default"]("The partial "+n.name+" could not be found");return e instanceof Function?e(t,n):void 0}function l(){return""}function c(e,t){return t&&"root"in t||(t=t?v.createFrame(t):{},t.root=e),t}function u(e,t,n,i,r,o){if(e.decorator){var a={};t=e.decorator(t,a,n,i&&i[0],r,o,i),f.extend(t,a)}return t}var p=n(3)["default"],h=n(1)["default"];t.__esModule=!0,t.checkRevision=i,t.template=r,t.wrapProgram=o,t.resolvePartial=a,t.invokePartial=s,t.noop=l;var d=n(5),f=p(d),m=n(6),g=h(m),v=n(4)},function(e,t){(function(n){"use strict";t.__esModule=!0,t["default"]=function(e){var t="undefined"!=typeof n?n:window,i=t.Handlebars;e.noConflict=function(){return t.Handlebars===e&&(t.Handlebars=i),e}},e.exports=t["default"]}).call(t,function(){return this}())},function(e,t){"use strict";t.__esModule=!0;var n={helpers:{helperExpression:function(e){return"SubExpression"===e.type||("MustacheStatement"===e.type||"BlockStatement"===e.type)&&!!(e.params&&e.params.length||e.hash)},scopedId:function(e){return/^\.|this\b/.test(e.original)},simpleId:function(e){return 1===e.parts.length&&!n.helpers.scopedId(e)&&!e.depth}}};t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if("Program"===e.type)return e;s["default"].yy=d,d.locInfo=function(e){return new d.SourceLocation(t&&t.srcName,e)};var n=new c["default"](t);return n.accept(s["default"].parse(e))}var r=n(1)["default"],o=n(3)["default"];t.__esModule=!0,t.parse=i;var a=n(23),s=r(a),l=n(24),c=r(l),u=n(26),p=o(u),h=n(5);t.parser=s["default"];var d={};h.extend(d,p)},function(e,t){"use strict";var n=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(e,t,n,i,r,o,a){var s=o.length-1;switch(r){case 1:return o[s-1];case 2:this.$=i.prepareProgram(o[s]);break;case 3:this.$=o[s];break;case 4:this.$=o[s];break;case 5:this.$=o[s];break;case 6:this.$=o[s];break;case 7:this.$=o[s];break;case 8:this.$=o[s];break;case 9:this.$={type:"CommentStatement",value:i.stripComment(o[s]),strip:i.stripFlags(o[s],o[s]),loc:i.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:o[s],value:o[s],loc:i.locInfo(this._$)};break;case 11:this.$=i.prepareRawBlock(o[s-2],o[s-1],o[s],this._$);break;case 12:this.$={path:o[s-3],params:o[s-2],hash:o[s-1]};break;case 13:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!1,this._$);break;case 14:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!0,this._$);break;case 15:this.$={open:o[s-5],path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 16:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 17:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 18:this.$={strip:i.stripFlags(o[s-1],o[s-1]),program:o[s]};break;case 19:var l=i.prepareBlock(o[s-2],o[s-1],o[s],o[s],!1,this._$),c=i.prepareProgram([l],o[s-1].loc);c.chained=!0,this.$={strip:o[s-2].strip,program:c,chain:!0};break;case 20:this.$=o[s];break;case 21:this.$={path:o[s-1],strip:i.stripFlags(o[s-2],o[s])};break;case 22:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 23:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 24:this.$={type:"PartialStatement",name:o[s-3],params:o[s-2],hash:o[s-1],indent:"",strip:i.stripFlags(o[s-4],o[s]),loc:i.locInfo(this._$)};break;case 25:this.$=i.preparePartialBlock(o[s-2],o[s-1],o[s],this._$);break;case 26:this.$={path:o[s-3],params:o[s-2],hash:o[s-1],strip:i.stripFlags(o[s-4],o[s])};break;case 27:this.$=o[s];break;case 28:this.$=o[s];break;case 29:this.$={type:"SubExpression",path:o[s-3],params:o[s-2],hash:o[s-1],loc:i.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:o[s],loc:i.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:i.id(o[s-2]),value:o[s],loc:i.locInfo(this._$)};break;case 32:this.$=i.id(o[s-1]);break;case 33:this.$=o[s];break;case 34:this.$=o[s];break;case 35:this.$={type:"StringLiteral",value:o[s],original:o[s],loc:i.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(o[s]),original:Number(o[s]),loc:i.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===o[s],original:"true"===o[s],loc:i.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:i.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:i.locInfo(this._$)};break;case 40:this.$=o[s];break;case 41:this.$=o[s];break;case 42:this.$=i.preparePath(!0,o[s],this._$);break;case 43:this.$=i.preparePath(!1,o[s],this._$);break;case 44:o[s-2].push({part:i.id(o[s]),original:o[s],separator:o[s-1]}),this.$=o[s-2];break;case 45:this.$=[{part:i.id(o[s]),original:o[s]}];break;case 46:this.$=[];break;case 47:o[s-1].push(o[s]);break;case 48:this.$=[o[s]];break;case 49:o[s-1].push(o[s]);break;case 50:this.$=[];break;case 51:o[s-1].push(o[s]);break;case 58:this.$=[];break;case 59:o[s-1].push(o[s]);break;case 64:this.$=[];break;case 65:o[s-1].push(o[s]);break;case 70:this.$=[];break;case 71:o[s-1].push(o[s]);break;case 78:this.$=[];break;case 79:o[s-1].push(o[s]);break;case 82:this.$=[];break;case 83:o[s-1].push(o[s]);break;case 86:this.$=[];break;case 87:o[s-1].push(o[s]);break;case 90:this.$=[];break;case 91:o[s-1].push(o[s]);break;case 94:this.$=[];break;case 95:o[s-1].push(o[s]);break;case 98:this.$=[o[s]];break;case 99:o[s-1].push(o[s]);break;case 100:this.$=[o[s]];break;case 101:o[s-1].push(o[s])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],
-47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,i=[0],r=[null],o=[],a=this.table,s="",l=0,c=0,u=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;o.push(p);var h=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var d,f,m,g,v,y,b,x,w,k={};;){if(m=i[i.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null!==d&&"undefined"!=typeof d||(d=t()),g=a[m]&&a[m][d]),"undefined"==typeof g||!g.length||!g[0]){var S="";if(!u){w=[];for(y in a[m])this.terminals_[y]&&y>2&&w.push("'"+this.terminals_[y]+"'");S=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[d]||d)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==d?"end of input":"'"+(this.terminals_[d]||d)+"'"),this.parseError(S,{text:this.lexer.match,token:this.terminals_[d]||d,line:this.lexer.yylineno,loc:p,expected:w})}}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+d);switch(g[0]){case 1:i.push(d),r.push(this.lexer.yytext),o.push(this.lexer.yylloc),i.push(g[1]),d=null,f?(d=f,f=null):(c=this.lexer.yyleng,s=this.lexer.yytext,l=this.lexer.yylineno,p=this.lexer.yylloc,u>0&&u--);break;case 2:if(b=this.productions_[g[1]][1],k.$=r[r.length-b],k._$={first_line:o[o.length-(b||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(b||1)].first_column,last_column:o[o.length-1].last_column},h&&(k._$.range=[o[o.length-(b||1)].range[0],o[o.length-1].range[1]]),v=this.performAction.call(k,s,c,l,this.yy,g[1],r,o),"undefined"!=typeof v)return v;b&&(i=i.slice(0,-1*b*2),r=r.slice(0,-1*b),o=o.slice(0,-1*b)),i.push(this.productions_[g[1]][0]),r.push(k.$),o.push(k._$),x=a[i[i.length-2]][i[i.length-1]],i.push(x);break;case 3:return!0}}return!0}},n=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this},more:function(){return this._more=!0,this},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),a=0;a<o.length&&(n=this._input.match(this.rules[o[a]]),!n||t&&!(n[0].length>t[0].length)||(t=n,i=a,this.options.flex));a++);return t?(r=t[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){function r(e,n){return t.yytext=t.yytext.substr(e,t.yyleng-n)}switch(n){case 0:if("\\\\"===t.yytext.slice(-2)?(r(0,1),this.begin("mu")):"\\"===t.yytext.slice(-1)?(r(0,1),this.begin("emu")):this.begin("mu"),t.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(t.yytext=t.yytext.substr(5,t.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(t.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return t.yytext=r(1,2).replace(/\\"/g,'"'),80;case 32:return t.yytext=r(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return t.yytext=t.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},e.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],e.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},e}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();t.__esModule=!0,t["default"]=n},function(e,t,n){"use strict";function i(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=e}function r(e,t,n){void 0===t&&(t=e.length);var i=e[t-1],r=e[t-2];return i?"ContentStatement"===i.type?(r||!n?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(i.original):void 0:n}function o(e,t,n){void 0===t&&(t=-1);var i=e[t+1],r=e[t+2];return i?"ContentStatement"===i.type?(r||!n?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(i.original):void 0:n}function a(e,t,n){var i=e[null==t?0:t+1];if(i&&"ContentStatement"===i.type&&(n||!i.rightStripped)){var r=i.value;i.value=i.value.replace(n?/^\s+/:/^[ \t]*\r?\n?/,""),i.rightStripped=i.value!==r}}function s(e,t,n){var i=e[null==t?e.length-1:t-1];if(i&&"ContentStatement"===i.type&&(n||!i.leftStripped)){var r=i.value;return i.value=i.value.replace(n?/\s+$/:/[ \t]+$/,""),i.leftStripped=i.value!==r,i.leftStripped}}var l=n(1)["default"];t.__esModule=!0;var c=n(25),u=l(c);i.prototype=new u["default"],i.prototype.Program=function(e){var t=!this.options.ignoreStandalone,n=!this.isRootSeen;this.isRootSeen=!0;for(var i=e.body,l=0,c=i.length;c>l;l++){var u=i[l],p=this.accept(u);if(p){var h=r(i,l,n),d=o(i,l,n),f=p.openStandalone&&h,m=p.closeStandalone&&d,g=p.inlineStandalone&&h&&d;p.close&&a(i,l,!0),p.open&&s(i,l,!0),t&&g&&(a(i,l),s(i,l)&&"PartialStatement"===u.type&&(u.indent=/([ \t]+$)/.exec(i[l-1].original)[1])),t&&f&&(a((u.program||u.inverse).body),s(i,l)),t&&m&&(a(i,l),s((u.inverse||u.program).body))}}return e},i.prototype.BlockStatement=i.prototype.DecoratorBlock=i.prototype.PartialBlockStatement=function(e){this.accept(e.program),this.accept(e.inverse);var t=e.program||e.inverse,n=e.program&&e.inverse,i=n,l=n;if(n&&n.chained)for(i=n.body[0].program;l.chained;)l=l.body[l.body.length-1].program;var c={open:e.openStrip.open,close:e.closeStrip.close,openStandalone:o(t.body),closeStandalone:r((i||t).body)};if(e.openStrip.close&&a(t.body,null,!0),n){var u=e.inverseStrip;u.open&&s(t.body,null,!0),u.close&&a(i.body,null,!0),e.closeStrip.open&&s(l.body,null,!0),!this.options.ignoreStandalone&&r(t.body)&&o(i.body)&&(s(t.body),a(i.body))}else e.closeStrip.open&&s(t.body,null,!0);return c},i.prototype.Decorator=i.prototype.MustacheStatement=function(e){return e.strip},i.prototype.PartialStatement=i.prototype.CommentStatement=function(e){var t=e.strip||{};return{inlineStandalone:!0,open:t.open,close:t.close}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(){this.parents=[]}function r(e){this.acceptRequired(e,"path"),this.acceptArray(e.params),this.acceptKey(e,"hash")}function o(e){r.call(this,e),this.acceptKey(e,"program"),this.acceptKey(e,"inverse")}function a(e){this.acceptRequired(e,"name"),this.acceptArray(e.params),this.acceptKey(e,"hash")}var s=n(1)["default"];t.__esModule=!0;var l=n(6),c=s(l);i.prototype={constructor:i,mutating:!1,acceptKey:function(e,t){var n=this.accept(e[t]);if(this.mutating){if(n&&!i.prototype[n.type])throw new c["default"]('Unexpected node type "'+n.type+'" found when accepting '+t+" on "+e.type);e[t]=n}},acceptRequired:function(e,t){if(this.acceptKey(e,t),!e[t])throw new c["default"](e.type+" requires "+t)},acceptArray:function(e){for(var t=0,n=e.length;n>t;t++)this.acceptKey(e,t),e[t]||(e.splice(t,1),t--,n--)},accept:function(e){if(e){if(!this[e.type])throw new c["default"]("Unknown type: "+e.type,e);this.current&&this.parents.unshift(this.current),this.current=e;var t=this[e.type](e);return this.current=this.parents.shift(),!this.mutating||t?t:t!==!1?e:void 0}},Program:function(e){this.acceptArray(e.body)},MustacheStatement:r,Decorator:r,BlockStatement:o,DecoratorBlock:o,PartialStatement:a,PartialBlockStatement:function(e){a.call(this,e),this.acceptKey(e,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:r,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(e){this.acceptArray(e.pairs)},HashPair:function(e){this.acceptRequired(e,"value")}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if(t=t.path?t.path.original:t,e.path.original!==t){var n={loc:e.path.loc};throw new g["default"](e.path.original+" doesn't match "+t,n)}}function r(e,t){this.source=e,this.start={line:t.first_line,column:t.first_column},this.end={line:t.last_line,column:t.last_column}}function o(e){return/^\[.*\]$/.test(e)?e.substr(1,e.length-2):e}function a(e,t){return{open:"~"===e.charAt(2),close:"~"===t.charAt(t.length-3)}}function s(e){return e.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function l(e,t,n){n=this.locInfo(n);for(var i=e?"@":"",r=[],o=0,a="",s=0,l=t.length;l>s;s++){var c=t[s].part,u=t[s].original!==c;if(i+=(t[s].separator||"")+c,u||".."!==c&&"."!==c&&"this"!==c)r.push(c);else{if(r.length>0)throw new g["default"]("Invalid path: "+i,{loc:n});".."===c&&(o++,a+="../")}}return{type:"PathExpression",data:e,depth:o,parts:r,original:i,loc:n}}function c(e,t,n,i,r,o){var a=i.charAt(3)||i.charAt(2),s="{"!==a&&"&"!==a,l=/\*/.test(i);return{type:l?"Decorator":"MustacheStatement",path:e,params:t,hash:n,escaped:s,strip:r,loc:this.locInfo(o)}}function u(e,t,n,r){i(e,n),r=this.locInfo(r);var o={type:"Program",body:t,strip:{},loc:r};return{type:"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:o,openStrip:{},inverseStrip:{},closeStrip:{},loc:r}}function p(e,t,n,r,o,a){r&&r.path&&i(e,r);var s=/\*/.test(e.open);t.blockParams=e.blockParams;var l=void 0,c=void 0;if(n){if(s)throw new g["default"]("Unexpected inverse block on decorator",n);n.chain&&(n.program.body[0].closeStrip=r.strip),c=n.strip,l=n.program}return o&&(o=l,l=t,t=o),{type:s?"DecoratorBlock":"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:t,inverse:l,openStrip:e.strip,inverseStrip:c,closeStrip:r&&r.strip,loc:this.locInfo(a)}}function h(e,t){if(!t&&e.length){var n=e[0].loc,i=e[e.length-1].loc;n&&i&&(t={source:n.source,start:{line:n.start.line,column:n.start.column},end:{line:i.end.line,column:i.end.column}})}return{type:"Program",body:e,strip:{},loc:t}}function d(e,t,n,r){return i(e,n),{type:"PartialBlockStatement",name:e.path,params:e.params,hash:e.hash,program:t,openStrip:e.strip,closeStrip:n&&n.strip,loc:this.locInfo(r)}}var f=n(1)["default"];t.__esModule=!0,t.SourceLocation=r,t.id=o,t.stripFlags=a,t.stripComment=s,t.preparePath=l,t.prepareMustache=c,t.prepareRawBlock=u,t.prepareBlock=p,t.prepareProgram=h,t.preparePartialBlock=d;var m=n(6),g=f(m)},function(e,t,n){"use strict";function i(){}function r(e,t,n){if(null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+e);t=t||{},"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var i=n.parse(e,t),r=(new n.Compiler).compile(i,t);return(new n.JavaScriptCompiler).compile(r,t)}function o(e,t,n){function i(){var i=n.parse(e,t),r=(new n.Compiler).compile(i,t),o=(new n.JavaScriptCompiler).compile(r,t,void 0,!0);return n.template(o)}function r(e,t){return o||(o=i()),o.call(this,e,t)}if(void 0===t&&(t={}),null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+e);"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var o=void 0;return r._setup=function(e){return o||(o=i()),o._setup(e)},r._child=function(e,t,n,r){return o||(o=i()),o._child(e,t,n,r)},r}function a(e,t){if(e===t)return!0;if(p.isArray(e)&&p.isArray(t)&&e.length===t.length){for(var n=0;n<e.length;n++)if(!a(e[n],t[n]))return!1;return!0}}function s(e){if(!e.path.parts){var t=e.path;e.path={type:"PathExpression",data:!1,depth:0,parts:[t.original+""],original:t.original+"",loc:t.loc}}}var l=n(1)["default"];t.__esModule=!0,t.Compiler=i,t.precompile=r,t.compile=o;var c=n(6),u=l(c),p=n(5),h=n(21),d=l(h),f=[].slice;i.prototype={compiler:i,equals:function(e){var t=this.opcodes.length;if(e.opcodes.length!==t)return!1;for(var n=0;t>n;n++){var i=this.opcodes[n],r=e.opcodes[n];if(i.opcode!==r.opcode||!a(i.args,r.args))return!1}t=this.children.length;for(var n=0;t>n;n++)if(!this.children[n].equals(e.children[n]))return!1;return!0},guid:0,compile:function(e,t){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=t,this.stringParams=t.stringParams,this.trackIds=t.trackIds,t.blockParams=t.blockParams||[];var n=t.knownHelpers;if(t.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},n)for(var i in n)i in n&&(t.knownHelpers[i]=n[i]);return this.accept(e)},compileProgram:function(e){var t=new this.compiler,n=t.compile(e,this.options),i=this.guid++;return this.usePartial=this.usePartial||n.usePartial,this.children[i]=n,this.useDepths=this.useDepths||n.useDepths,i},accept:function(e){if(!this[e.type])throw new u["default"]("Unknown type: "+e.type,e);this.sourceNode.unshift(e);var t=this[e.type](e);return this.sourceNode.shift(),t},Program:function(e){this.options.blockParams.unshift(e.blockParams);for(var t=e.body,n=t.length,i=0;n>i;i++)this.accept(t[i]);return this.options.blockParams.shift(),this.isSimple=1===n,this.blockParams=e.blockParams?e.blockParams.length:0,this},BlockStatement:function(e){s(e);var t=e.program,n=e.inverse;t=t&&this.compileProgram(t),n=n&&this.compileProgram(n);var i=this.classifySexpr(e);"helper"===i?this.helperSexpr(e,t,n):"simple"===i?(this.simpleSexpr(e),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("blockValue",e.path.original)):(this.ambiguousSexpr(e,t,n),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(e){var t=e.program&&this.compileProgram(e.program),n=this.setupFullMustacheParams(e,t,void 0),i=e.path;this.useDecorators=!0,this.opcode("registerDecorator",n.length,i.original)},PartialStatement:function(e){this.usePartial=!0;var t=e.program;t&&(t=this.compileProgram(e.program));var n=e.params;if(n.length>1)throw new u["default"]("Unsupported number of partial arguments: "+n.length,e);n.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):n.push({type:"PathExpression",parts:[],depth:0}));var i=e.name.original,r="SubExpression"===e.name.type;r&&this.accept(e.name),this.setupFullMustacheParams(e,t,void 0,!0);var o=e.indent||"";this.options.preventIndent&&o&&(this.opcode("appendContent",o),o=""),this.opcode("invokePartial",r,i,o),this.opcode("append")},PartialBlockStatement:function(e){this.PartialStatement(e)},MustacheStatement:function(e){this.SubExpression(e),e.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(e){this.DecoratorBlock(e)},ContentStatement:function(e){e.value&&this.opcode("appendContent",e.value)},CommentStatement:function(){},SubExpression:function(e){s(e);var t=this.classifySexpr(e);"simple"===t?this.simpleSexpr(e):"helper"===t?this.helperSexpr(e):this.ambiguousSexpr(e)},ambiguousSexpr:function(e,t,n){var i=e.path,r=i.parts[0],o=null!=t||null!=n;this.opcode("getContext",i.depth),this.opcode("pushProgram",t),this.opcode("pushProgram",n),i.strict=!0,this.accept(i),this.opcode("invokeAmbiguous",r,o)},simpleSexpr:function(e){var t=e.path;t.strict=!0,this.accept(t),this.opcode("resolvePossibleLambda")},helperSexpr:function(e,t,n){var i=this.setupFullMustacheParams(e,t,n),r=e.path,o=r.parts[0];if(this.options.knownHelpers[o])this.opcode("invokeKnownHelper",i.length,o);else{if(this.options.knownHelpersOnly)throw new u["default"]("You specified knownHelpersOnly, but used the unknown helper "+o,e);r.strict=!0,r.falsy=!0,this.accept(r),this.opcode("invokeHelper",i.length,r.original,d["default"].helpers.simpleId(r))}},PathExpression:function(e){this.addDepth(e.depth),this.opcode("getContext",e.depth);var t=e.parts[0],n=d["default"].helpers.scopedId(e),i=!e.depth&&!n&&this.blockParamIndex(t);i?this.opcode("lookupBlockParam",i,e.parts):t?e.data?(this.options.data=!0,this.opcode("lookupData",e.depth,e.parts,e.strict)):this.opcode("lookupOnContext",e.parts,e.falsy,e.strict,n):this.opcode("pushContext")},StringLiteral:function(e){this.opcode("pushString",e.value)},NumberLiteral:function(e){this.opcode("pushLiteral",e.value)},BooleanLiteral:function(e){this.opcode("pushLiteral",e.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(e){var t=e.pairs,n=0,i=t.length;for(this.opcode("pushHash");i>n;n++)this.pushParam(t[n].value);for(;n--;)this.opcode("assignToHash",t[n].key);this.opcode("popHash")},opcode:function(e){this.opcodes.push({opcode:e,args:f.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(e){e&&(this.useDepths=!0)},classifySexpr:function(e){var t=d["default"].helpers.simpleId(e.path),n=t&&!!this.blockParamIndex(e.path.parts[0]),i=!n&&d["default"].helpers.helperExpression(e),r=!n&&(i||t);if(r&&!i){var o=e.path.parts[0],a=this.options;a.knownHelpers[o]?i=!0:a.knownHelpersOnly&&(r=!1)}return i?"helper":r?"ambiguous":"simple"},pushParams:function(e){for(var t=0,n=e.length;n>t;t++)this.pushParam(e[t])},pushParam:function(e){var t=null!=e.value?e.value:e.original||"";if(this.stringParams)t.replace&&(t=t.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),e.depth&&this.addDepth(e.depth),this.opcode("getContext",e.depth||0),this.opcode("pushStringParam",t,e.type),"SubExpression"===e.type&&this.accept(e);else{if(this.trackIds){var n=void 0;if(!e.parts||d["default"].helpers.scopedId(e)||e.depth||(n=this.blockParamIndex(e.parts[0])),n){var i=e.parts.slice(1).join(".");this.opcode("pushId","BlockParam",n,i)}else t=e.original||t,t.replace&&(t=t.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",e.type,t)}this.accept(e)}},setupFullMustacheParams:function(e,t,n,i){var r=e.params;return this.pushParams(r),this.opcode("pushProgram",t),this.opcode("pushProgram",n),e.hash?this.accept(e.hash):this.opcode("emptyHash",i),r},blockParamIndex:function(e){for(var t=0,n=this.options.blockParams.length;n>t;t++){var i=this.options.blockParams[t],r=i&&p.indexOf(i,e);if(i&&r>=0)return[t,r]}}}},function(e,t,n){"use strict";function i(e){this.value=e}function r(){}function o(e,t,n,i){var r=t.popStack(),o=0,a=n.length;for(e&&a--;a>o;o++)r=t.nameLookup(r,n[o],i);return e?[t.aliasable("container.strict"),"(",r,", ",t.quotedString(n[o]),")"]:r}var a=n(1)["default"];t.__esModule=!0;var s=n(4),l=n(6),c=a(l),u=n(5),p=n(29),h=a(p);r.prototype={nameLookup:function(e,t){return r.isValidJavaScriptVariableName(t)?[e,".",t]:[e,"[",JSON.stringify(t),"]"]},depthedLookup:function(e){return[this.aliasable("container.lookup"),'(depths, "',e,'")']},compilerInfo:function(){var e=s.COMPILER_REVISION,t=s.REVISION_CHANGES[e];return[e,t]},appendToBuffer:function(e,t,n){return u.isArray(e)||(e=[e]),e=this.source.wrap(e,t),this.environment.isSimple?["return ",e,";"]:n?["buffer += ",e,";"]:(e.appendToBuffer=!0,e)},initializeBuffer:function(){return this.quotedString("")},compile:function(e,t,n,i){this.environment=e,this.options=t,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!i,this.name=this.environment.name,this.isChild=!!n,this.context=n||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(e,t),this.useDepths=this.useDepths||e.useDepths||e.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||e.useBlockParams;var r=e.opcodes,o=void 0,a=void 0,s=void 0,l=void 0;for(s=0,l=r.length;l>s;s++)o=r[s],this.source.currentLocation=o.loc,a=a||o.loc,this[o.opcode].apply(this,o.args);if(this.source.currentLocation=a,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new c["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),i?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var u=this.createFunctionContext(i);if(this.isChild)return u;var p={compiler:this.compilerInfo(),main:u};this.decorators&&(p.main_d=this.decorators,p.useDecorators=!0);var h=this.context,d=h.programs,f=h.decorators;for(s=0,l=d.length;l>s;s++)d[s]&&(p[s]=d[s],f[s]&&(p[s+"_d"]=f[s],p.useDecorators=!0));return this.environment.usePartial&&(p.usePartial=!0),this.options.data&&(p.useData=!0),this.useDepths&&(p.useDepths=!0),this.useBlockParams&&(p.useBlockParams=!0),this.options.compat&&(p.compat=!0),i?p.compilerOptions=this.options:(p.compiler=JSON.stringify(p.compiler),this.source.currentLocation={start:{line:1,column:0}},p=this.objectLiteral(p),t.srcName?(p=p.toStringWithSourceMap({file:t.destName}),p.map=p.map&&p.map.toString()):p=p.toString()),p},preamble:function(){this.lastContext=0,this.source=new h["default"](this.options.srcName),this.decorators=new h["default"](this.options.srcName)},createFunctionContext:function(e){var t="",n=this.stackVars.concat(this.registers.list);n.length>0&&(t+=", "+n.join(", "));var i=0;for(var r in this.aliases){var o=this.aliases[r];this.aliases.hasOwnProperty(r)&&o.children&&o.referenceCount>1&&(t+=", alias"+ ++i+"="+r,o.children[0]="alias"+i)}var a=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&a.push("blockParams"),this.useDepths&&a.push("depths");var s=this.mergeSource(t);return e?(a.push(s),Function.apply(this,a)):this.source.wrap(["function(",a.join(","),") {\n  ",s,"}"])},mergeSource:function(e){var t=this.environment.isSimple,n=!this.forceBuffer,i=void 0,r=void 0,o=void 0,a=void 0;return this.source.each(function(e){e.appendToBuffer?(o?e.prepend("  + "):o=e,a=e):(o&&(r?o.prepend("buffer += "):i=!0,a.add(";"),o=a=void 0),r=!0,t||(n=!1))}),n?o?(o.prepend("return "),a.add(";")):r||this.source.push('return "";'):(e+=", buffer = "+(i?"":this.initializeBuffer()),o?(o.prepend("return buffer + "),a.add(";")):this.source.push("return buffer;")),e&&this.source.prepend("var "+e.substring(2)+(i?"":";\n")),this.source.merge()},blockValue:function(e){var t=this.aliasable("helpers.blockHelperMissing"),n=[this.contextName(0)];this.setupHelperArgs(e,0,n);var i=this.popStack();n.splice(1,0,i),this.push(this.source.functionCall(t,"call",n))},ambiguousBlockValue:function(){var e=this.aliasable("helpers.blockHelperMissing"),t=[this.contextName(0)];this.setupHelperArgs("",0,t,!0),this.flushInline();var n=this.topStack();t.splice(1,0,n),this.pushSource(["if (!",this.lastHelper,") { ",n," = ",this.source.functionCall(e,"call",t),"}"])},appendContent:function(e){this.pendingContent?e=this.pendingContent+e:this.pendingLocation=this.source.currentLocation,this.pendingContent=e},append:function(){if(this.isInline())this.replaceStack(function(e){return[" != null ? ",e,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var e=this.popStack();this.pushSource(["if (",e," != null) { ",this.appendToBuffer(e,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(e){this.lastContext=e},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(e,t,n,i){var r=0;i||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(e[r++])),this.resolvePath("context",e,r,t,n)},lookupBlockParam:function(e,t){this.useBlockParams=!0,this.push(["blockParams[",e[0],"][",e[1],"]"]),this.resolvePath("context",t,1)},lookupData:function(e,t,n){e?this.pushStackLiteral("container.data(data, "+e+")"):this.pushStackLiteral("data"),this.resolvePath("data",t,0,!0,n)},resolvePath:function(e,t,n,i,r){var a=this;if(this.options.strict||this.options.assumeObjects)return void this.push(o(this.options.strict&&r,this,t,e));for(var s=t.length;s>n;n++)this.replaceStack(function(r){var o=a.nameLookup(r,t[n],e);return i?[" && ",o]:[" != null ? ",o," : ",r]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(e,t){this.pushContext(),this.pushString(t),"SubExpression"!==t&&("string"==typeof e?this.pushString(e):this.pushStackLiteral(e))},emptyHash:function(e){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(e?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var e=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(e.ids)),this.stringParams&&(this.push(this.objectLiteral(e.contexts)),this.push(this.objectLiteral(e.types))),this.push(this.objectLiteral(e.values))},pushString:function(e){this.pushStackLiteral(this.quotedString(e))},pushLiteral:function(e){this.pushStackLiteral(e)},pushProgram:function(e){null!=e?this.pushStackLiteral(this.programExpression(e)):this.pushStackLiteral(null)},registerDecorator:function(e,t){var n=this.nameLookup("decorators",t,"decorator"),i=this.setupHelperArgs(t,e);this.decorators.push(["fn = ",this.decorators.functionCall(n,"",["fn","props","container",i])," || fn;"])},invokeHelper:function(e,t,n){var i=this.popStack(),r=this.setupHelper(e,t),o=n?[r.name," || "]:"",a=["("].concat(o,i);this.options.strict||a.push(" || ",this.aliasable("helpers.helperMissing")),a.push(")"),this.push(this.source.functionCall(a,"call",r.callParams))},invokeKnownHelper:function(e,t){var n=this.setupHelper(e,t);this.push(this.source.functionCall(n.name,"call",n.callParams))},invokeAmbiguous:function(e,t){this.useRegister("helper");var n=this.popStack();this.emptyHash();var i=this.setupHelper(0,e,t),r=this.lastHelper=this.nameLookup("helpers",e,"helper"),o=["(","(helper = ",r," || ",n,")"];this.options.strict||(o[0]="(helper = ",o.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",o,i.paramsInit?["),(",i.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",i.callParams)," : helper))"])},invokePartial:function(e,t,n){var i=[],r=this.setupParams(t,1,i);e&&(t=this.popStack(),delete r.name),n&&(r.indent=JSON.stringify(n)),r.helpers="helpers",r.partials="partials",r.decorators="container.decorators",e?i.unshift(t):i.unshift(this.nameLookup("partials",t,"partial")),this.options.compat&&(r.depths="depths"),r=this.objectLiteral(r),i.push(r),this.push(this.source.functionCall("container.invokePartial","",i))},assignToHash:function(e){var t=this.popStack(),n=void 0,i=void 0,r=void 0;this.trackIds&&(r=this.popStack()),
-this.stringParams&&(i=this.popStack(),n=this.popStack());var o=this.hash;n&&(o.contexts[e]=n),i&&(o.types[e]=i),r&&(o.ids[e]=r),o.values[e]=t},pushId:function(e,t,n){"BlockParam"===e?this.pushStackLiteral("blockParams["+t[0]+"].path["+t[1]+"]"+(n?" + "+JSON.stringify("."+n):"")):"PathExpression"===e?this.pushString(t):"SubExpression"===e?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:r,compileChildren:function(e,t){for(var n=e.children,i=void 0,r=void 0,o=0,a=n.length;a>o;o++){i=n[o],r=new this.compiler;var s=this.matchExistingProgram(i);null==s?(this.context.programs.push(""),s=this.context.programs.length,i.index=s,i.name="program"+s,this.context.programs[s]=r.compile(i,t,this.context,!this.precompile),this.context.decorators[s]=r.decorators,this.context.environments[s]=i,this.useDepths=this.useDepths||r.useDepths,this.useBlockParams=this.useBlockParams||r.useBlockParams):(i.index=s,i.name="program"+s,this.useDepths=this.useDepths||i.useDepths,this.useBlockParams=this.useBlockParams||i.useBlockParams)}},matchExistingProgram:function(e){for(var t=0,n=this.context.environments.length;n>t;t++){var i=this.context.environments[t];if(i&&i.equals(e))return t}},programExpression:function(e){var t=this.environment.children[e],n=[t.index,"data",t.blockParams];return(this.useBlockParams||this.useDepths)&&n.push("blockParams"),this.useDepths&&n.push("depths"),"container.program("+n.join(", ")+")"},useRegister:function(e){this.registers[e]||(this.registers[e]=!0,this.registers.list.push(e))},push:function(e){return e instanceof i||(e=this.source.wrap(e)),this.inlineStack.push(e),e},pushStackLiteral:function(e){this.push(new i(e))},pushSource:function(e){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),e&&this.source.push(e)},replaceStack:function(e){var t=["("],n=void 0,r=void 0,o=void 0;if(!this.isInline())throw new c["default"]("replaceStack on non-inline");var a=this.popStack(!0);if(a instanceof i)n=[a.value],t=["(",n],o=!0;else{r=!0;var s=this.incrStack();t=["((",this.push(s)," = ",a,")"],n=this.topStack()}var l=e.call(this,n);o||this.popStack(),r&&this.stackSlot--,this.push(t.concat(l,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var e=this.inlineStack;this.inlineStack=[];for(var t=0,n=e.length;n>t;t++){var r=e[t];if(r instanceof i)this.compileStack.push(r);else{var o=this.incrStack();this.pushSource([o," = ",r,";"]),this.compileStack.push(o)}}},isInline:function(){return this.inlineStack.length},popStack:function(e){var t=this.isInline(),n=(t?this.inlineStack:this.compileStack).pop();if(!e&&n instanceof i)return n.value;if(!t){if(!this.stackSlot)throw new c["default"]("Invalid stack pop");this.stackSlot--}return n},topStack:function(){var e=this.isInline()?this.inlineStack:this.compileStack,t=e[e.length-1];return t instanceof i?t.value:t},contextName:function(e){return this.useDepths&&e?"depths["+e+"]":"depth"+e},quotedString:function(e){return this.source.quotedString(e)},objectLiteral:function(e){return this.source.objectLiteral(e)},aliasable:function(e){var t=this.aliases[e];return t?(t.referenceCount++,t):(t=this.aliases[e]=this.source.wrap(e),t.aliasable=!0,t.referenceCount=1,t)},setupHelper:function(e,t,n){var i=[],r=this.setupHelperArgs(t,e,i,n),o=this.nameLookup("helpers",t,"helper"),a=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : {}");return{params:i,paramsInit:r,name:o,callParams:[a].concat(i)}},setupParams:function(e,t,n){var i={},r=[],o=[],a=[],s=!n,l=void 0;s&&(n=[]),i.name=this.quotedString(e),i.hash=this.popStack(),this.trackIds&&(i.hashIds=this.popStack()),this.stringParams&&(i.hashTypes=this.popStack(),i.hashContexts=this.popStack());var c=this.popStack(),u=this.popStack();(u||c)&&(i.fn=u||"container.noop",i.inverse=c||"container.noop");for(var p=t;p--;)l=this.popStack(),n[p]=l,this.trackIds&&(a[p]=this.popStack()),this.stringParams&&(o[p]=this.popStack(),r[p]=this.popStack());return s&&(i.args=this.source.generateArray(n)),this.trackIds&&(i.ids=this.source.generateArray(a)),this.stringParams&&(i.types=this.source.generateArray(o),i.contexts=this.source.generateArray(r)),this.options.data&&(i.data="data"),this.useBlockParams&&(i.blockParams="blockParams"),i},setupHelperArgs:function(e,t,n,i){var r=this.setupParams(e,t,n);return r=this.objectLiteral(r),i?(this.useRegister("options"),n.push("options"),["options=",r]):n?(n.push(r),""):r}},function(){for(var e="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),t=r.RESERVED_WORDS={},n=0,i=e.length;i>n;n++)t[e[n]]=!0}(),r.isValidJavaScriptVariableName=function(e){return!r.RESERVED_WORDS[e]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e)},t["default"]=r,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t,n){if(o.isArray(e)){for(var i=[],r=0,a=e.length;a>r;r++)i.push(t.wrap(e[r],n));return i}return"boolean"==typeof e||"number"==typeof e?e+"":e}function r(e){this.srcFile=e,this.source=[]}t.__esModule=!0;var o=n(5),a=void 0;try{}catch(s){}a||(a=function(e,t,n,i){this.src="",i&&this.add(i)},a.prototype={add:function(e){o.isArray(e)&&(e=e.join("")),this.src+=e},prepend:function(e){o.isArray(e)&&(e=e.join("")),this.src=e+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),r.prototype={isEmpty:function(){return!this.source.length},prepend:function(e,t){this.source.unshift(this.wrap(e,t))},push:function(e,t){this.source.push(this.wrap(e,t))},merge:function(){var e=this.empty();return this.each(function(t){e.add(["  ",t,"\n"])}),e},each:function(e){for(var t=0,n=this.source.length;n>t;t++)e(this.source[t])},empty:function(){var e=this.currentLocation||{start:{}};return new a(e.start.line,e.start.column,this.srcFile)},wrap:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return e instanceof a?e:(e=i(e,this,t),new a(t.start.line,t.start.column,this.srcFile,e))},functionCall:function(e,t,n){return n=this.generateList(n),this.wrap([e,t?"."+t+"(":"(",n,")"])},quotedString:function(e){return'"'+(e+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(e){var t=[];for(var n in e)if(e.hasOwnProperty(n)){var r=i(e[n],this);"undefined"!==r&&t.push([this.quotedString(n),":",r])}var o=this.generateList(t);return o.prepend("{"),o.add("}"),o},generateList:function(e){for(var t=this.empty(),n=0,r=e.length;r>n;n++)n&&t.add(","),t.add(i(e[n],this));return t},generateArray:function(e){var t=this.generateList(e);return t.prepend("["),t.add("]"),t}},t["default"]=r,e.exports=t["default"]}])})},function(e,t,n){function i(){var e=a("#subscriber-box"),t=a("#subscriber-btn"),n=/^[.\-_a-zA-Z0-9]+@[\-_a-zA-Z0-9]+\.[a-zA-Z0-9]/,i={mail:"&#xe601;",tick:"&#xe605;"};e.focus(function(){a(this).val("").css("color",""),t.removeClass("done").html(i.mail)}),t.click(function(){var r=a.trim(e.val());if(""!==r&&n.test(r))try{a.ajax({url:"http://new.yohobuy.com/common/emailsubscriber",dataType:"jsonp",data:{email:r,tmp:Math.random(),uid:window.getUid()},success:function(n){1===n.data.result?(e.val("已订阅到:"+r),t.addClass("done").html(i.tick)):e.css("color","red")}})}catch(o){console.log(o.message)}else e.css("color","red")})}function r(){var e=a(".vote"),t=a("#feed-back-page"),n=e.children("li").length;t.on("click","span",function(){var t=a(this);t.hasClass("cur")||(t.siblings(".cur").removeClass("cur"),t.addClass("cur"),e.children().not(".hide").addClass("hide").end().eq(t.index()).removeClass("hide"))}),e.on("click",".feed-back-btn",function(){var i=a(this),r=i.closest("li"),o=r.index(),s=[],l=r.find(".feedback-answer").val(),c=r.find(".feedback-id").val(),u=r.find(".question-id").val();r.find(":checked").each(function(){s.push(a(this).val())}),a.ajax({url:"http://new.yohobuy.com/common/suggestfeedback",dataType:"jsonp",data:{feedback_id:c||0,question_id:u||0,answer:l||"",solution:s.join(",")},success:function(i){var a=o+1;if(1===~~i.data.result){if(o===n-1)return void alert("感谢您的参与!");r.addClass("hide"),e.children(":eq("+(o+1)+")").removeClass("hide"),t.children(".cur").removeClass("cur"),t.children(":eq("+a+")").addClass("cur")}}})})}function o(){a(window).height()>a(document).height()&&l.addClass("hide")}var a=n(2),s=n(6),l=a(".return-top");s(a("img.lazy")),l.click(function(){a("html,body").animate({scrollTop:0},500)}),a(window).scroll(function(){0===a(window).scrollTop()?l.addClass("hide"):l.removeClass("hide")}),l.hasClass("hide")&&a("img").load(o),i(),r(),window.rePosReturnTop=o},function(e,t,n){var i=n(2);n(7),e.exports=function(e,t){var n,r={effect:"fadeIn",effect_speed:10,placeholder:"data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==",skip_invisible:!1},o=arguments.length;!function(){switch(o){case 0:n=i("img.lazy");break;case 1:e instanceof i?n=e:(n=i("img.lazy"),i.extend(r,e));break;case 2:n=e,r=i.extend(r,t)}}(),n.lazyload(r)}},function(e,t,n){var i=n(2);!function(e,t,n,i){var r=e(t);e.fn.lazyload=function(o){function a(){var t=0;l.each(function(){var n=e(this);if(!c.skip_invisible||n.is(":visible"))if(e.abovethetop(this,c)||e.leftofbegin(this,c));else if(e.belowthefold(this,c)||e.rightoffold(this,c)){if(++t>c.failure_limit)return!1}else n.trigger("appear"),t=0})}var s,l=this,c={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:t,data_attribute:"original",skip_invisible:!0,appear:null,load:null,yasPath:"/web/",yasImgDomain:"http://analytics.yhurl.com/yas.gif",placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC",try_again_css:null};return o&&(i!==o.failurelimit&&(o.failure_limit=o.failurelimit,delete o.failurelimit),i!==o.effectspeed&&(o.effect_speed=o.effectspeed,delete o.effectspeed),e.extend(c,o)),s=c.container===i||c.container===t?r:e(c.container),0===c.event.indexOf("scroll")&&s.bind(c.event,function(){return a()}),this.each(function(){var t=this,n=e(t);t.loaded=!1,n.attr("src")!==i&&n.attr("src")!==!1&&""!==n.attr("src")||n.is("img")&&n.attr("src",c.placeholder),n.one("appear",function(){if(n.timerid&&clearTimeout(n.timerid),!this.loaded){if(c.appear){var i=l.length;c.appear.call(t,i,c)}e("<img />").bind("error abort",function(){n.attr("src",c.placeholder),o({info:"error"})}).bind("load",function(){if(!n.loadtimeout){clearTimeout(n.timerid),n.attr("pfmrpt");var i=n.attr("data-"+c.data_attribute);n.hide(),n.is("img")?n.attr("src",i):n.css("background-image","url('"+i+"')"),n[c.effect](c.effect_speed),t.loaded=!0;var r=e.grep(l,function(e){return!e.loaded});if(l=e(r),c.load){var o=l.length;c.load.call(t,o,c)}}}).attr("src",n.attr("data-"+c.data_attribute)),n.src=n.attr("data-"+c.data_attribute),n.attr("pfmrpt")&&_yas&&_yas.add;var r=function(e){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&e.info,n.attr("src",""),setTimeout(function(){n.attr("src",n.src)},50)},o=function(t){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&t.info;var i=n.width(),o=n.height();if(c.try_again_css)var a=e("<div class="+c.try_again_css+" style='width:"+i+"px;height:"+o+"px;'></div>");else var a=e("<div style='background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC) ;text-align: center;position:relative;width:"+i+"px;height:"+o+"px;background-size:100%;'>加载失败</div>");a.addClass(n.attr("class")),n.replaceWith(a),n.timerid=setTimeout(r,5e3)}}}),0!==c.event.indexOf("scroll")&&n.bind(c.event,function(){t.loaded||n.trigger("appear")})}),r.bind("resize",function(){a()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&r.bind("pageshow",function(t){t.originalEvent&&t.originalEvent.persisted&&l.each(function(){e(this).trigger("appear")})}),e(n).ready(function(){a()}),this},e.belowthefold=function(n,o){var a;return a=o.container===i||o.container===t?(t.innerHeight?t.innerHeight:r.height())+r.scrollTop():e(o.container).offset().top+e(o.container).height(),a<=e(n).offset().top-o.threshold},e.rightoffold=function(n,o){var a;return a=o.container===i||o.container===t?r.width()+r.scrollLeft():e(o.container).offset().left+e(o.container).width(),a<=e(n).offset().left-o.threshold},e.abovethetop=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollTop():e(o.container).offset().top,a>=e(n).offset().top+o.threshold+e(n).height()},e.leftofbegin=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollLeft():e(o.container).offset().left,a>=e(n).offset().left+o.threshold+e(n).width()},e.inviewport=function(t,n){return!(e.rightoffold(t,n)||e.leftofbegin(t,n)||e.belowthefold(t,n)||e.abovethetop(t,n))}}(i,window,document)},,,function(e,t,n){var i=n(2),r=n(6);!function(){var e=function(e,t){this.$element=i(e),this.options=i.extend({},i.fn.slider.defaults,t),this.bigItem=this.$element.find(".slide-wrapper").find("li"),this.smallItem=null,this.len=this.bigItem.size(),this.index=0,this.timer=null,this.init()};e.prototype={init:function(){if(this.$element){if(this.len<=1)return void r(this.$element.find("img.lazy"));this.options.pagination?this.smallItem=i(this.options.pagination).find("li"):this._createPage(),this.options.orient&&this._createOrient(),this._slideShow(),this._bindEvent(),this._autoplay()}},_createOrient:function(){var e='<div class="slide-switch"><a class="prev" href="javascript:;"><span class="iconfont">&#xe609;</span></a><a class="next" href="javascript:;"><span class="iconfont">&#xe608;</span></a></div>';this.$element.find(".slide-switch").length>0||this.$element.append(e)},_createPage:function(){var e='<div class="slide-pagination"><div class="slide-pagination-inner"><div class="slide-shade"></div><div class="slide-pagination-last">',t=0;if(!(this.len<=1)){for(t=0;t<this.len;t++)e+="<span></span>";e+="</div></div></div>",this.$element.append(i(e)),this.smallItem=this.$element.find(".slide-pagination-inner span")}},_bindEvent:function(){var e=this;this.$element.find(".slide-switch").on("click",".next",function(){e._nextSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}).on("click",".prev",function(){e._prevSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}),this.smallItem.on("mouseenter",function(){e.index=i(this).index(),clearInterval(e.timer),e._slideShow()}).on("mouseleave",function(){e._autoplay()}),this.$element.on("mouseenter",function(){i(this).find(".slide-switch").addClass("show")}).on("mouseleave",function(){i(this).find(".slide-switch").removeClass("show")})},_nextSlide:function(){this.index===this.len-1?this.index=0:this.index++,this._slideShow()},_prevSlide:function(){0===this.index?this.index=this.len-1:this.index--,this._slideShow()},_slideShow:function(){var e=this.bigItem.eq(this.index).find("img.lazy");e.attr("src")!==e.data("original")&&(r(e,{event:"sporty"}),e.trigger("sporty")),this.smallItem.eq(this.index).addClass("focus").siblings().removeClass("focus"),this.bigItem.eq(this.index).show().stop().animate({opacity:1},function(){i(this).find(".slide-tips > p").removeClass("hide")}).siblings().stop().animate({opacity:0},function(){i(this).hide().find(".slide-tips > p").addClass("hide")})},_autoplay:function(){var e=this;clearInterval(this.timer),this.timer=setInterval(function(){e._nextSlide()},this.options.time)}},i.fn.slider=function(t){return this.each(function(){var n=i(this),r=n.data("Slider"),o="object"==typeof t&&t;r||n.data("Slider",r=new e(this,o)),"string"==typeof t&&r[t]()})},i.fn.slider.Constructor=e,i.fn.slider.defaults={time:5e3,orient:!0,pagination:null}}(i)},,,,,,function(e,t){}]);
\ No newline at end of file
diff --git a/public/dist/yohobuy-node/0.0.1/product.sale.js b/public/dist/yohobuy-node/0.0.1/product.sale.js
deleted file mode 100644
index 0282993..0000000
--- a/public/dist/yohobuy-node/0.0.1/product.sale.js
+++ /dev/null
@@ -1,55 +0,0 @@
-!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){function i(e){var t,n,i,r;r=e.attr("urlLocation"),t="/product/sale/goods",i=e.parent().parent(".sale-box").find(".goods"),n=t+r,a.ajax({type:"GET",url:n,data:""}).then(function(e){i.html(""),i.append(e),s(a("img.lazy"))})}function r(e){var t=36e5,n=6e4,i=1e3,r="",o=0,a=0,s=0,l=0;return e>1e3&&(o=Math.floor(e/t/24),a=Math.floor(e/t%24),s=Math.floor(e/n%60),l=Math.floor(e/i%60),r+=o>0?o+"天":"",r+=a>0?a+"小时":"",r+=s>0?s+"分钟":"",r+=l>0?l+"秒":""),r}function o(){var e,t;for(e=0;e<c.length;e++)c[e].time-=1e3,t=r(c[e].time),a(".time-calculate").removeClass("hidden"),a(".time-calculate").text(t)}var a=n(2),s=n(6),l=n(17),c=[],u=a(".sale-box"),p=a(".sale-nav li");n(1),n(19),n(10),n(20),n(21),l.init(4),s(a("img.lazy")),a(".slide-container").slider(),p.on("click",function(){a(this).siblings(".active").removeClass("active"),a(this).addClass("active"),i(a(this))}),function(){u.each(function(){var e=a(this).find(p).eq(0);i(e)})}(),".sale-discount-page".length>0&&(a(".time-calculate").each(function(){var e=a(this).attr("data");e&&c.push({dom:a(this),time:e})}),setInterval(o,1e3))},function(e,t,n){function i(e){var t=new RegExp(e+"=([^;$]*)","i"),n="$1";return t.test(decodeURIComponent(document.cookie))?RegExp[n]:""}function r(e,t,n){var i,r,o,a,s="";"undefined"!=typeof t&&(n=n||{},null===t&&(t="",n.expires=-1),n.expires&&("number"==typeof n.expires||n.expires.toUTCString)&&("number"==typeof n.expires?(a=new Date,a.setTime(a.getTime()+24*n.expires*60*60*1e3)):a=n.expires,s="; expires="+a.toUTCString()),i=n.path?"; path="+n.path:"",r=n.domain?"; domain="+n.domain:"",o=n.secure?"; secure":"",document.cookie=[e,"=",encodeURIComponent(t),s,i,r,o].join(""))}function o(){var e,t=i("_UID");return"undefined"==typeof t?0:(e=t.split("::"),"undefined"==typeof e||e.length<4?0:e)}function a(){var e=o();return 0===e?0:e[1]}function s(){var e=i("_g");return"undefined"==typeof e?"":JSON.parse(e).k}function l(){var e,t,n={},i=window.location.search,r=i?decodeURIComponent(i).slice(1).split("&"):[];for(t=0;t<r.length;t++)e=r[t].split("="),n[e[0]]=e[1];return n}var c=n(2),u=c("body");!function(e,t,n,i,r){var o=t.createElement(n),a=t.getElementsByTagName(n)[0];e.YohoAcquisitionObject=r,e[r]=function(){e[r].p=arguments},o.async=1,o.src=i,a.parentNode.insertBefore(o,a)}(window,document,"script","http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js","_yas"),function(){var e=a();e=0===e?"":e,window._ozuid=e,window._yas&&window._yas(1*new Date,"1.0.14","yohobuy_web",e,"","")}(),c(window).on("resize",function(){var e=c(this).width();1360>e?c(".return-top").addClass("min"):c(".return-top").removeClass("min"),1180>e?u.addClass("min-screen"):u.removeClass("min-screen")}).trigger("resize"),function(){c(window).load(function(){var e,t=document.getElementById("user-thumb");t&&(e=new Image,e.src=t.src,e.onerror=function(){c(t).parent().append('<div class="default-user-thumb"></div>').end().remove()})})}(),window.cookie=i,window.setCookie=r,window.getUser=o,window.getUid=a,window.getShoppingKey=s,window.queryString=l,n(3),n(5)},function(e,t,n){var i,r;/*!
-	 * jQuery JavaScript Library v1.12.4
-	 * http://jquery.com/
-	 *
-	 * Includes Sizzle.js
-	 * http://sizzlejs.com/
-	 *
-	 * Copyright jQuery Foundation and other contributors
-	 * Released under the MIT license
-	 * http://jquery.org/license
-	 *
-	 * Date: 2016-05-20T17:17Z
-	 */
-!function(t,n){"object"==typeof e&&"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,o){function a(e){var t=!!e&&"length"in e&&e.length,n=ve.type(e);return"function"===n||ve.isWindow(e)?!1:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function s(e,t,n){if(ve.isFunction(t))return ve.grep(e,function(e,i){return!!t.call(e,i,e)!==n});if(t.nodeType)return ve.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ae.test(t))return ve.filter(t,e,n);t=ve.filter(t,e)}return ve.grep(e,function(e){return ve.inArray(e,t)>-1!==n})}function l(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function c(e){var t={};return ve.each(e.match(Ie)||[],function(e,n){t[n]=!0}),t}function u(){se.addEventListener?(se.removeEventListener("DOMContentLoaded",p),n.removeEventListener("load",p)):(se.detachEvent("onreadystatechange",p),n.detachEvent("onload",p))}function p(){(se.addEventListener||"load"===n.event.type||"complete"===se.readyState)&&(u(),ve.ready())}function h(e,t,n){if(void 0===n&&1===e.nodeType){var i="data-"+t.replace(Me,"-$1").toLowerCase();if(n=e.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:Be.test(n)?ve.parseJSON(n):n}catch(r){}ve.data(e,t,n)}else n=void 0}return n}function d(e){var t;for(t in e)if(("data"!==t||!ve.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function f(e,t,n,i){if(He(e)){var r,o,a=ve.expando,s=e.nodeType,l=s?ve.cache:e,c=s?e[a]:e[a]&&a;if(c&&l[c]&&(i||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=s?e[a]=ae.pop()||ve.guid++:a),l[c]||(l[c]=s?{}:{toJSON:ve.noop}),"object"!=typeof t&&"function"!=typeof t||(i?l[c]=ve.extend(l[c],t):l[c].data=ve.extend(l[c].data,t)),o=l[c],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[ve.camelCase(t)]=n),"string"==typeof t?(r=o[t],null==r&&(r=o[ve.camelCase(t)])):r=o,r}}function m(e,t,n){if(He(e)){var i,r,o=e.nodeType,a=o?ve.cache:e,s=o?e[ve.expando]:ve.expando;if(a[s]){if(t&&(i=n?a[s]:a[s].data)){ve.isArray(t)?t=t.concat(ve.map(t,ve.camelCase)):t in i?t=[t]:(t=ve.camelCase(t),t=t in i?[t]:t.split(" ")),r=t.length;for(;r--;)delete i[t[r]];if(n?!d(i):!ve.isEmptyObject(i))return}(n||(delete a[s].data,d(a[s])))&&(o?ve.cleanData([e],!0):me.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function g(e,t,n,i){var r,o=1,a=20,s=i?function(){return i.cur()}:function(){return ve.css(e,t,"")},l=s(),c=n&&n[3]||(ve.cssNumber[t]?"":"px"),u=(ve.cssNumber[t]||"px"!==c&&+l)&&Re.exec(ve.css(e,t));if(u&&u[3]!==c){c=c||u[3],n=n||[],u=+l||1;do o=o||".5",u/=o,ve.style(e,t,u+c);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(u=+u||+l||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],i&&(i.unit=c,i.start=u,i.end=r)),r}function v(e){var t=Ke.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function y(e,t){var n,i,r=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(i=n[r]);r++)!t||ve.nodeName(i,t)?o.push(i):ve.merge(o,y(i,t));return void 0===t||t&&ve.nodeName(e,t)?ve.merge([e],o):o}function b(e,t){for(var n,i=0;null!=(n=e[i]);i++)ve._data(n,"globalEval",!t||ve._data(t[i],"globalEval"))}function x(e){We.test(e.type)&&(e.defaultChecked=e.checked)}function w(e,t,n,i,r){for(var o,a,s,l,c,u,p,h=e.length,d=v(t),f=[],m=0;h>m;m++)if(a=e[m],a||0===a)if("object"===ve.type(a))ve.merge(f,a.nodeType?[a]:a);else if(Ye.test(a)){for(l=l||d.appendChild(t.createElement("div")),c=(Ue.exec(a)||["",""])[1].toLowerCase(),p=Je[c]||Je._default,l.innerHTML=p[1]+ve.htmlPrefilter(a)+p[2],o=p[0];o--;)l=l.lastChild;if(!me.leadingWhitespace&&Xe.test(a)&&f.push(t.createTextNode(Xe.exec(a)[0])),!me.tbody)for(a="table"!==c||Ge.test(a)?"<table>"!==p[1]||Ge.test(a)?0:l:l.firstChild,o=a&&a.childNodes.length;o--;)ve.nodeName(u=a.childNodes[o],"tbody")&&!u.childNodes.length&&a.removeChild(u);for(ve.merge(f,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=d.lastChild}else f.push(t.createTextNode(a));for(l&&d.removeChild(l),me.appendChecked||ve.grep(y(f,"input"),x),m=0;a=f[m++];)if(i&&ve.inArray(a,i)>-1)r&&r.push(a);else if(s=ve.contains(a.ownerDocument,a),l=y(d.appendChild(a),"script"),s&&b(l),n)for(o=0;a=l[o++];)Ve.test(a.type||"")&&n.push(a);return l=null,d}function k(){return!0}function S(){return!1}function _(){try{return se.activeElement}catch(e){}}function C(e,t,n,i,r,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(i=i||n,n=void 0);for(s in t)C(e,s,n,i,t[s],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),r===!1)r=S;else if(!r)return e;return 1===o&&(a=r,r=function(e){return ve().off(e),a.apply(this,arguments)},r.guid=a.guid||(a.guid=ve.guid++)),e.each(function(){ve.event.add(this,t,r,i,n)})}function E(e,t){return ve.nodeName(e,"table")&&ve.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function A(e){return e.type=(null!==ve.find.attr(e,"type"))+"/"+e.type,e}function T(e){var t=lt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&ve.hasData(e)){var n,i,r,o=ve._data(e),a=ve._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(i=0,r=s[n].length;r>i;i++)ve.event.add(t,n,s[n][i])}a.data&&(a.data=ve.extend({},a.data))}}function P(e,t){var n,i,r;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!me.noCloneEvent&&t[ve.expando]){r=ve._data(t);for(i in r.events)ve.removeEvent(t,i,r.handle);t.removeAttribute(ve.expando)}"script"===n&&t.text!==e.text?(A(t).text=e.text,T(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),me.html5Clone&&e.innerHTML&&!ve.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&We.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}}function L(e,t,n,i){t=ce.apply([],t);var r,o,a,s,l,c,u=0,p=e.length,h=p-1,d=t[0],f=ve.isFunction(d);if(f||p>1&&"string"==typeof d&&!me.checkClone&&st.test(d))return e.each(function(r){var o=e.eq(r);f&&(t[0]=d.call(this,r,o.html())),L(o,t,n,i)});if(p&&(c=w(t,e[0].ownerDocument,!1,e,i),r=c.firstChild,1===c.childNodes.length&&(c=r),r||i)){for(s=ve.map(y(c,"script"),A),a=s.length;p>u;u++)o=c,u!==h&&(o=ve.clone(o,!0,!0),a&&ve.merge(s,y(o,"script"))),n.call(e[u],o,u);if(a)for(l=s[s.length-1].ownerDocument,ve.map(s,T),u=0;a>u;u++)o=s[u],Ve.test(o.type||"")&&!ve._data(o,"globalEval")&&ve.contains(l,o)&&(o.src?ve._evalUrl&&ve._evalUrl(o.src):ve.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ct,"")));c=r=null}return e}function D(e,t,n){for(var i,r=t?ve.filter(t,e):e,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||ve.cleanData(y(i)),i.parentNode&&(n&&ve.contains(i.ownerDocument,i)&&b(y(i,"script")),i.parentNode.removeChild(i));return e}function I(e,t){var n=ve(t.createElement(e)).appendTo(t.body),i=ve.css(n[0],"display");return n.detach(),i}function O(e){var t=se,n=dt[e];return n||(n=I(e,t),"none"!==n&&n||(ht=(ht||ve("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(ht[0].contentWindow||ht[0].contentDocument).document,t.write(),t.close(),n=I(e,t),ht.detach()),dt[e]=n),n}function j(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Tt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=At.length;n--;)if(e=At[n]+t,e in Tt)return e}function B(e,t){for(var n,i,r,o=[],a=0,s=e.length;s>a;a++)i=e[a],i.style&&(o[a]=ve._data(i,"olddisplay"),n=i.style.display,t?(o[a]||"none"!==n||(i.style.display=""),""===i.style.display&&Fe(i)&&(o[a]=ve._data(i,"olddisplay",O(i.nodeName)))):(r=Fe(i),(n&&"none"!==n||!r)&&ve._data(i,"olddisplay",r?n:ve.css(i,"display"))));for(a=0;s>a;a++)i=e[a],i.style&&(t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?o[a]||"":"none"));return e}function M(e,t,n){var i=_t.exec(t);return i?Math.max(0,i[1]-(n||0))+(i[2]||"px"):t}function $(e,t,n,i,r){for(var o=n===(i?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=ve.css(e,n+qe[o],!0,r)),i?("content"===n&&(a-=ve.css(e,"padding"+qe[o],!0,r)),"margin"!==n&&(a-=ve.css(e,"border"+qe[o]+"Width",!0,r))):(a+=ve.css(e,"padding"+qe[o],!0,r),"padding"!==n&&(a+=ve.css(e,"border"+qe[o]+"Width",!0,r)));return a}function R(e,t,n){var i=!0,r="width"===t?e.offsetWidth:e.offsetHeight,o=yt(e),a=me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,o);if(0>=r||null==r){if(r=bt(e,t,o),(0>r||null==r)&&(r=e.style[t]),mt.test(r))return r;i=a&&(me.boxSizingReliable()||r===e.style[t]),r=parseFloat(r)||0}return r+$(e,t,n||(a?"border":"content"),i,o)+"px"}function q(e,t,n,i,r){return new q.prototype.init(e,t,n,i,r)}function F(){return n.setTimeout(function(){Nt=void 0}),Nt=ve.now()}function z(e,t){var n,i={height:e},r=0;for(t=t?1:0;4>r;r+=2-t)n=qe[r],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function W(e,t,n){for(var i,r=(X.tweeners[t]||[]).concat(X.tweeners["*"]),o=0,a=r.length;a>o;o++)if(i=r[o].call(n,t,e))return i}function U(e,t,n){var i,r,o,a,s,l,c,u,p=this,h={},d=e.style,f=e.nodeType&&Fe(e),m=ve._data(e,"fxshow");n.queue||(s=ve._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,p.always(function(){p.always(function(){s.unqueued--,ve.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],c=ve.css(e,"display"),u="none"===c?ve._data(e,"olddisplay")||O(e.nodeName):c,"inline"===u&&"none"===ve.css(e,"float")&&(me.inlineBlockNeedsLayout&&"inline"!==O(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",me.shrinkWrapBlocks()||p.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(r=t[i],Lt.exec(r)){if(delete t[i],o=o||"toggle"===r,r===(f?"hide":"show")){if("show"!==r||!m||void 0===m[i])continue;f=!0}h[i]=m&&m[i]||ve.style(e,i)}else c=void 0;if(ve.isEmptyObject(h))"inline"===("none"===c?O(e.nodeName):c)&&(d.display=c);else{m?"hidden"in m&&(f=m.hidden):m=ve._data(e,"fxshow",{}),o&&(m.hidden=!f),f?ve(e).show():p.done(function(){ve(e).hide()}),p.done(function(){var t;ve._removeData(e,"fxshow");for(t in h)ve.style(e,t,h[t])});for(i in h)a=W(f?m[i]:0,i,p),i in m||(m[i]=a.start,f&&(a.end=a.start,a.start="width"===i||"height"===i?1:0))}}function V(e,t){var n,i,r,o,a;for(n in e)if(i=ve.camelCase(n),r=t[i],o=e[n],ve.isArray(o)&&(r=o[1],o=e[n]=o[0]),n!==i&&(e[i]=o,delete e[n]),a=ve.cssHooks[i],a&&"expand"in a){o=a.expand(o),delete e[i];for(n in o)n in e||(e[n]=o[n],t[n]=r)}else t[i]=r}function X(e,t,n){var i,r,o=0,a=X.prefilters.length,s=ve.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var t=Nt||F(),n=Math.max(0,c.startTime+c.duration-t),i=n/c.duration||0,o=1-i,a=0,l=c.tweens.length;l>a;a++)c.tweens[a].run(o);return s.notifyWith(e,[c,o,n]),1>o&&l?n:(s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:ve.extend({},t),opts:ve.extend(!0,{specialEasing:{},easing:ve.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||F(),duration:n.duration,tweens:[],createTween:function(t,n){var i=ve.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(i),i},stop:function(t){var n=0,i=t?c.tweens.length:0;if(r)return this;for(r=!0;i>n;n++)c.tweens[n].run(1);return t?(s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c,t])):s.rejectWith(e,[c,t]),this}}),u=c.props;for(V(u,c.opts.specialEasing);a>o;o++)if(i=X.prefilters[o].call(c,e,u,c.opts))return ve.isFunction(i.stop)&&(ve._queueHooks(c.elem,c.opts.queue).stop=ve.proxy(i.stop,i)),i;return ve.map(u,W,c),ve.isFunction(c.opts.start)&&c.opts.start.call(e,c),ve.fx.timer(ve.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function K(e){return ve.attr(e,"class")||""}function J(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,r=0,o=t.toLowerCase().match(Ie)||[];if(ve.isFunction(n))for(;i=o[r++];)"+"===i.charAt(0)?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function Y(e,t,n,i){function r(s){var l;return o[s]=!0,ve.each(e[s]||[],function(e,s){var c=s(t,n,i);return"string"!=typeof c||a||o[c]?a?!(l=c):void 0:(t.dataTypes.unshift(c),r(c),!1)}),l}var o={},a=e===nn;return r(t.dataTypes[0])||!o["*"]&&r("*")}function G(e,t){var n,i,r=ve.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((r[i]?e:n||(n={}))[i]=t[i]);return n&&ve.extend(!0,e,n),e}function Q(e,t,n){for(var i,r,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(a in s)if(s[a]&&s[a].test(r)){l.unshift(a);break}if(l[0]in n)o=l[0];else{for(a in n){if(!l[0]||e.converters[a+" "+l[0]]){o=a;break}i||(i=a)}o=o||i}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function Z(e,t,n,i){var r,o,a,s,l,c={},u=e.dataTypes.slice();if(u[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(o=u.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=c[l+" "+o]||c["* "+o],!a)for(r in c)if(s=r.split(" "),s[1]===o&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[r]:c[r]!==!0&&(o=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}function ee(e){return e.style&&e.style.display||ve.css(e,"display")}function te(e){if(!ve.contains(e.ownerDocument||se,e))return!0;for(;e&&1===e.nodeType;){if("none"===ee(e)||"hidden"===e.type)return!0;e=e.parentNode}return!1}function ne(e,t,n,i){var r;if(ve.isArray(t))ve.each(t,function(t,r){n||ln.test(e)?i(e,r):ne(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,i)});else if(n||"object"!==ve.type(t))i(e,t);else for(r in t)ne(e+"["+r+"]",t[r],n,i)}function ie(){try{return new n.XMLHttpRequest}catch(e){}}function re(){try{return new n.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}function oe(e){return ve.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var ae=[],se=n.document,le=ae.slice,ce=ae.concat,ue=ae.push,pe=ae.indexOf,he={},de=he.toString,fe=he.hasOwnProperty,me={},ge="1.12.4",ve=function(e,t){return new ve.fn.init(e,t)},ye=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,be=/^-ms-/,xe=/-([\da-z])/gi,we=function(e,t){return t.toUpperCase()};ve.fn=ve.prototype={jquery:ge,constructor:ve,selector:"",length:0,toArray:function(){return le.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:le.call(this)},pushStack:function(e){var t=ve.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return ve.each(this,e)},map:function(e){return this.pushStack(ve.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(le.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:ae.sort,splice:ae.splice},ve.extend=ve.fn.extend=function(){var e,t,n,i,r,o,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||ve.isFunction(a)||(a={}),s===l&&(a=this,s--);l>s;s++)if(null!=(r=arguments[s]))for(i in r)e=a[i],n=r[i],a!==n&&(c&&n&&(ve.isPlainObject(n)||(t=ve.isArray(n)))?(t?(t=!1,o=e&&ve.isArray(e)?e:[]):o=e&&ve.isPlainObject(e)?e:{},a[i]=ve.extend(c,o,n)):void 0!==n&&(a[i]=n));return a},ve.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===ve.type(e)},isArray:Array.isArray||function(e){return"array"===ve.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!ve.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==ve.type(e)||e.nodeType||ve.isWindow(e))return!1;try{if(e.constructor&&!fe.call(e,"constructor")&&!fe.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!me.ownFirst)for(t in e)return fe.call(e,t);for(t in e);return void 0===t||fe.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?he[de.call(e)]||"object":typeof e},globalEval:function(e){e&&ve.trim(e)&&(n.execScript||function(e){n.eval.call(n,e)})(e)},camelCase:function(e){return e.replace(be,"ms-").replace(xe,we)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,i=0;if(a(e))for(n=e.length;n>i&&t.call(e[i],i,e[i])!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ye,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(a(Object(e))?ve.merge(n,"string"==typeof e?[e]:e):ue.call(n,e)),n},inArray:function(e,t,n){var i;if(t){if(pe)return pe.call(t,e,n);for(i=t.length,n=n?0>n?Math.max(0,i+n):n:0;i>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,i=0,r=e.length;n>i;)e[r++]=t[i++];if(n!==n)for(;void 0!==t[i];)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){for(var i,r=[],o=0,a=e.length,s=!n;a>o;o++)i=!t(e[o],o),i!==s&&r.push(e[o]);return r},map:function(e,t,n){var i,r,o=0,s=[];if(a(e))for(i=e.length;i>o;o++)r=t(e[o],o,n),null!=r&&s.push(r);else for(o in e)r=t(e[o],o,n),null!=r&&s.push(r);return ce.apply([],s)},guid:1,proxy:function(e,t){var n,i,r;return"string"==typeof t&&(r=e[t],t=e,e=r),ve.isFunction(e)?(n=le.call(arguments,2),i=function(){return e.apply(t||this,n.concat(le.call(arguments)))},i.guid=e.guid=e.guid||ve.guid++,i):void 0},now:function(){return+new Date},support:me}),"function"==typeof Symbol&&(ve.fn[Symbol.iterator]=ae[Symbol.iterator]),ve.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){he["[object "+t+"]"]=t.toLowerCase()});var ke=/*!
-	 * Sizzle CSS Selector Engine v2.2.1
-	 * http://sizzlejs.com/
-	 *
-	 * Copyright jQuery Foundation and other contributors
-	 * Released under the MIT license
-	 * http://jquery.org/license
-	 *
-	 * Date: 2015-10-17
-	 */
-function(e){function t(e,t,n,i){var r,o,a,s,l,c,p,d,f=t&&t.ownerDocument,m=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==m&&9!==m&&11!==m)return n;if(!i&&((t?t.ownerDocument||t:R)!==D&&L(t),t=t||D,O)){if(11!==m&&(c=ve.exec(e)))if(r=c[1]){if(9===m){if(!(a=t.getElementById(r)))return n;if(a.id===r)return n.push(a),n}else if(f&&(a=f.getElementById(r))&&M(t,a)&&a.id===r)return n.push(a),n}else{if(c[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((r=c[3])&&w.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(r)),n}if(w.qsa&&!U[e+" "]&&(!j||!j.test(e))){if(1!==m)f=t,d=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(be,"\\$&"):t.setAttribute("id",s=$),p=C(e),o=p.length,l=he.test(s)?"#"+s:"[id='"+s+"']";o--;)p[o]=l+" "+h(p[o]);d=p.join(","),f=ye.test(e)&&u(t.parentNode)||t}if(d)try{return Q.apply(n,f.querySelectorAll(d)),n}catch(g){}finally{s===$&&t.removeAttribute("id")}}}return A(e.replace(se,"$1"),t,n,i)}function n(){function e(n,i){return t.push(n+" ")>k.cacheLength&&delete e[t.shift()],e[n+" "]=i}var t=[];return e}function i(e){return e[$]=!0,e}function r(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),i=n.length;i--;)k.attrHandle[n[i]]=t}function a(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,i){for(var r,o=e([],n.length,t),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function u(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,i="";n>t;t++)i+=e[t].value;return i}function d(e,t,n){var i=t.dir,r=n&&"parentNode"===i,o=F++;return t.first?function(t,n,o){for(;t=t[i];)if(1===t.nodeType||r)return e(t,n,o)}:function(t,n,a){var s,l,c,u=[q,o];if(a){for(;t=t[i];)if((1===t.nodeType||r)&&e(t,n,a))return!0}else for(;t=t[i];)if(1===t.nodeType||r){if(c=t[$]||(t[$]={}),l=c[t.uniqueID]||(c[t.uniqueID]={}),(s=l[i])&&s[0]===q&&s[1]===o)return u[2]=s[2];if(l[i]=u,u[2]=e(t,n,a))return!0}}}function f(e){return e.length>1?function(t,n,i){for(var r=e.length;r--;)if(!e[r](t,n,i))return!1;return!0}:e[0]}function m(e,n,i){for(var r=0,o=n.length;o>r;r++)t(e,n[r],i);return i}function g(e,t,n,i,r){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,i,r)||(a.push(o),c&&t.push(s)));return a}function v(e,t,n,r,o,a){return r&&!r[$]&&(r=v(r)),o&&!o[$]&&(o=v(o,a)),i(function(i,a,s,l){var c,u,p,h=[],d=[],f=a.length,v=i||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!i&&t?v:g(v,h,e,s,l),b=n?o||(i?e:f||r)?[]:a:y;if(n&&n(y,b,s,l),r)for(c=g(b,d),r(c,[],s,l),u=c.length;u--;)(p=c[u])&&(b[d[u]]=!(y[d[u]]=p));if(i){if(o||e){if(o){for(c=[],u=b.length;u--;)(p=b[u])&&c.push(y[u]=p);o(null,b=[],c,l)}for(u=b.length;u--;)(p=b[u])&&(c=o?ee(i,p):h[u])>-1&&(i[c]=!(a[c]=p))}}else b=g(b===a?b.splice(f,b.length):b),o?o(null,a,b,l):Q.apply(a,b)})}function y(e){for(var t,n,i,r=e.length,o=k.relative[e[0].type],a=o||k.relative[" "],s=o?1:0,l=d(function(e){return e===t},a,!0),c=d(function(e){return ee(t,e)>-1},a,!0),u=[function(e,n,i){var r=!o&&(i||n!==T)||((t=n).nodeType?l(e,n,i):c(e,n,i));return t=null,r}];r>s;s++)if(n=k.relative[e[s].type])u=[d(f(u),n)];else{if(n=k.filter[e[s].type].apply(null,e[s].matches),n[$]){for(i=++s;r>i&&!k.relative[e[i].type];i++);return v(s>1&&f(u),s>1&&h(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,i>s&&y(e.slice(s,i)),r>i&&y(e=e.slice(i)),r>i&&h(e))}u.push(n)}return f(u)}function b(e,n){var r=n.length>0,o=e.length>0,a=function(i,a,s,l,c){var u,p,h,d=0,f="0",m=i&&[],v=[],y=T,b=i||o&&k.find.TAG("*",c),x=q+=null==y?1:Math.random()||.1,w=b.length;for(c&&(T=a===D||a||c);f!==w&&null!=(u=b[f]);f++){if(o&&u){for(p=0,a||u.ownerDocument===D||(L(u),s=!O);h=e[p++];)if(h(u,a||D,s)){l.push(u);break}c&&(q=x)}r&&((u=!h&&u)&&d--,i&&m.push(u))}if(d+=f,r&&f!==d){for(p=0;h=n[p++];)h(m,v,a,s);if(i){if(d>0)for(;f--;)m[f]||v[f]||(v[f]=Y.call(l));v=g(v)}Q.apply(l,v),c&&!i&&v.length>0&&d+n.length>1&&t.uniqueSort(l)}return c&&(q=x,T=y),m};return r?i(a):a}var x,w,k,S,_,C,E,A,T,N,P,L,D,I,O,j,H,B,M,$="sizzle"+1*new Date,R=e.document,q=0,F=0,z=n(),W=n(),U=n(),V=function(e,t){return e===t&&(P=!0),0},X=1<<31,K={}.hasOwnProperty,J=[],Y=J.pop,G=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",re="\\["+ne+"*("+ie+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+ne+"*\\]",oe=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+re+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),le=new RegExp("^"+ne+"*,"+ne+"*"),ce=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ue=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),pe=new RegExp(oe),he=new RegExp("^"+ie+"$"),de={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+re),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},fe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var i="0x"+t-65536;return i!==i||n?t:0>i?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},ke=function(){L()};try{Q.apply(J=Z.call(R.childNodes),R.childNodes),J[R.childNodes.length].nodeType}catch(Se){Q={apply:J.length?function(e,t){G.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}w=t.support={},_=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},L=t.setDocument=function(e){var t,n,i=e?e.ownerDocument||e:R;return i!==D&&9===i.nodeType&&i.documentElement?(D=i,I=D.documentElement,O=!_(D),(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",ke,!1):n.attachEvent&&n.attachEvent("onunload",ke)),w.attributes=r(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=r(function(e){return e.appendChild(D.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=ge.test(D.getElementsByClassName),w.getById=r(function(e){return I.appendChild(e).id=$,!D.getElementsByName||!D.getElementsByName($).length}),w.getById?(k.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&O){var n=t.getElementById(e);return n?[n]:[]}},k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){return e.getAttribute("id")===t}}):(delete k.find.ID,k.filter.ID=function(e){var t=e.replace(xe,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),k.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},k.find.CLASS=w.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&O?t.getElementsByClassName(e):void 0},H=[],j=[],(w.qsa=ge.test(D.querySelectorAll))&&(r(function(e){I.appendChild(e).innerHTML="<a id='"+$+"'></a><select id='"+$+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&j.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||j.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||j.push("~="),e.querySelectorAll(":checked").length||j.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||j.push(".#.+[+~]")}),r(function(e){var t=D.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&j.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||j.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),j.push(",.*:")})),(w.matchesSelector=ge.test(B=I.matches||I.webkitMatchesSelector||I.mozMatchesSelector||I.oMatchesSelector||I.msMatchesSelector))&&r(function(e){w.disconnectedMatch=B.call(e,"div"),B.call(e,"[s!='']:x"),H.push("!=",oe)}),j=j.length&&new RegExp(j.join("|")),H=H.length&&new RegExp(H.join("|")),t=ge.test(I.compareDocumentPosition),M=t||ge.test(I.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return P=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===D||e.ownerDocument===R&&M(R,e)?-1:t===D||t.ownerDocument===R&&M(R,t)?1:N?ee(N,e)-ee(N,t):0:4&n?-1:1)}:function(e,t){if(e===t)return P=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,s=[e],l=[t];if(!r||!o)return e===D?-1:t===D?1:r?-1:o?1:N?ee(N,e)-ee(N,t):0;if(r===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[i]===l[i];)i++;return i?a(s[i],l[i]):s[i]===R?-1:l[i]===R?1:0},D):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&L(e),n=n.replace(ue,"='$1']"),w.matchesSelector&&O&&!U[n+" "]&&(!H||!H.test(n))&&(!j||!j.test(n)))try{var i=B.call(e,n);if(i||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(r){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&L(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&L(e);var n=k.attrHandle[t.toLowerCase()],i=n&&K.call(k.attrHandle,t.toLowerCase())?n(e,t,!O):void 0;return void 0!==i?i:w.attributes||!O?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],i=0,r=0;if(P=!w.detectDuplicates,N=!w.sortStable&&e.slice(0),e.sort(V),P){for(;t=e[r++];)t===e[r]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return N=null,e},S=t.getText=function(e){var t,n="",i=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=S(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[i++];)n+=S(t);return n},k=t.selectors={cacheLength:50,createPseudo:i,match:de,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(xe,we),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,we),"~="===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]||t.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]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return de.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pe.test(n)&&(t=C(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(xe,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=z[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&z(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,i){return function(r){var o=t.attr(r,e);return null==o?"!="===n:n?(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(i)>-1:"|="===n?o===i||o.slice(0,i.length+1)===i+"-":!1):!0}},CHILD:function(e,t,n,i,r){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===i&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var c,u,p,h,d,f,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(o){for(;m;){for(h=t;h=h[m];)if(s?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&y){for(h=g,p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d&&c[2],h=d&&g.childNodes[d];h=++d&&h&&h[m]||(b=d=0)||f.pop();)if(1===h.nodeType&&++b&&h===t){u[e]=[q,d,b];break}}else if(y&&(h=t,p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),c=u[e]||[],d=c[0]===q&&c[1],b=d),b===!1)for(;(h=++d&&h&&h[m]||(b=d=0)||f.pop())&&((s?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(y&&(p=h[$]||(h[$]={}),u=p[h.uniqueID]||(p[h.uniqueID]={}),u[e]=[q,b]),h!==t)););return b-=r,b===i||b%i===0&&b/i>=0}}},PSEUDO:function(e,n){var r,o=k.pseudos[e]||k.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[$]?o(n):o.length>1?(r=[e,e,"",n],k.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,t){for(var i,r=o(e,n),a=r.length;a--;)i=ee(e,r[a]),e[i]=!(t[i]=r[a])}):function(e){return o(e,0,r)}):o}},pseudos:{not:i(function(e){var t=[],n=[],r=E(e.replace(se,"$1"));return r[$]?i(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;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:i(function(e){return function(n){return t(e,n).length>0}}),contains:i(function(e){return e=e.replace(xe,we),function(t){return(t.textContent||t.innerText||S(t)).indexOf(e)>-1}}),lang:i(function(e){return he.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,we).toLowerCase(),function(t){var n;do if(n=O?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===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===I},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!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,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!k.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return fe.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:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var i=0>n?n+t:n;--i>=0;)e.push(i);return e}),gt:c(function(e,t,n){for(var i=0>n?n+t:n;++i<t;)e.push(i);return e})}},k.pseudos.nth=k.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})k.pseudos[x]=s(x);for(x in{submit:!0,reset:!0})k.pseudos[x]=l(x);return p.prototype=k.filters=k.pseudos,k.setFilters=new p,C=t.tokenize=function(e,n){var i,r,o,a,s,l,c,u=W[e+" "];if(u)return n?0:u.slice(0);for(s=e,l=[],c=k.preFilter;s;){i&&!(r=le.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),i=!1,(r=ce.exec(s))&&(i=r.shift(),o.push({value:i,type:r[0].replace(se," ")}),s=s.slice(i.length));for(a in k.filter)!(r=de[a].exec(s))||c[a]&&!(r=c[a](r))||(i=r.shift(),o.push({value:i,type:a,matches:r}),s=s.slice(i.length));if(!i)break}return n?s.length:s?t.error(e):W(e,l).slice(0)},E=t.compile=function(e,t){var n,i=[],r=[],o=U[e+" "];if(!o){for(t||(t=C(e)),n=t.length;n--;)o=y(t[n]),o[$]?i.push(o):r.push(o);o=U(e,b(r,i)),o.selector=e}return o},A=t.select=function(e,t,n,i){var r,o,a,s,l,c="function"==typeof e&&e,p=!i&&C(e=c.selector||e);if(n=n||[],1===p.length){if(o=p[0]=p[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&O&&k.relative[o[1].type]){if(t=(k.find.ID(a.matches[0].replace(xe,we),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(r=de.needsContext.test(e)?0:o.length;r--&&(a=o[r],!k.relative[s=a.type]);)if((l=k.find[s])&&(i=l(a.matches[0].replace(xe,we),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(r,1),e=i.length&&h(o),!e)return Q.apply(n,i),n;break}}return(c||E(e,p))(i,t,!O,n,!t||ye.test(e)&&u(t.parentNode)||t),n},w.sortStable=$.split("").sort(V).join("")===$,w.detectDuplicates=!!P,L(),w.sortDetached=r(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),r(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&r(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),r(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var i;return n?void 0:e[t]===!0?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}),t}(n);ve.find=ke,ve.expr=ke.selectors,ve.expr[":"]=ve.expr.pseudos,ve.uniqueSort=ve.unique=ke.uniqueSort,ve.text=ke.getText,ve.isXMLDoc=ke.isXML,ve.contains=ke.contains;var Se=function(e,t,n){for(var i=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&ve(e).is(n))break;i.push(e)}return i},_e=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Ce=ve.expr.match.needsContext,Ee=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ae=/^.[^:#\[\.,]*$/;ve.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?ve.find.matchesSelector(i,e)?[i]:[]:ve.find.matches(e,ve.grep(t,function(e){return 1===e.nodeType}))},ve.fn.extend({find:function(e){var t,n=[],i=this,r=i.length;if("string"!=typeof e)return this.pushStack(ve(e).filter(function(){for(t=0;r>t;t++)if(ve.contains(i[t],this))return!0}));for(t=0;r>t;t++)ve.find(e,i[t],n);return n=this.pushStack(r>1?ve.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(s(this,e||[],!1))},not:function(e){return this.pushStack(s(this,e||[],!0))},is:function(e){return!!s(this,"string"==typeof e&&Ce.test(e)?ve(e):e||[],!1).length}});var Te,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,Pe=ve.fn.init=function(e,t,n){var i,r;if(!e)return this;if(n=n||Te,"string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!i||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof ve?t[0]:t,ve.merge(this,ve.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:se,!0)),Ee.test(i[1])&&ve.isPlainObject(t))for(i in t)ve.isFunction(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}if(r=se.getElementById(i[2]),r&&r.parentNode){if(r.id!==i[2])return Te.find(e);this.length=1,this[0]=r}return this.context=se,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):ve.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(ve):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),ve.makeArray(e,this))};Pe.prototype=ve.fn,Te=ve(se);var Le=/^(?:parents|prev(?:Until|All))/,De={children:!0,contents:!0,next:!0,prev:!0};ve.fn.extend({has:function(e){var t,n=ve(e,this),i=n.length;return this.filter(function(){for(t=0;i>t;t++)if(ve.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,i=0,r=this.length,o=[],a=Ce.test(e)||"string"!=typeof e?ve(e,t||this.context):0;r>i;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&ve.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?ve.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?ve.inArray(this[0],ve(e)):ve.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ve.uniqueSort(ve.merge(this.get(),ve(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ve.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Se(e,"parentNode")},parentsUntil:function(e,t,n){return Se(e,"parentNode",n)},next:function(e){return l(e,"nextSibling")},prev:function(e){return l(e,"previousSibling")},nextAll:function(e){return Se(e,"nextSibling")},prevAll:function(e){return Se(e,"previousSibling")},nextUntil:function(e,t,n){return Se(e,"nextSibling",n)},prevUntil:function(e,t,n){return Se(e,"previousSibling",n)},siblings:function(e){return _e((e.parentNode||{}).firstChild,e)},children:function(e){return _e(e.firstChild)},contents:function(e){return ve.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:ve.merge([],e.childNodes)}},function(e,t){ve.fn[e]=function(n,i){var r=ve.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(r=ve.filter(i,r)),this.length>1&&(De[e]||(r=ve.uniqueSort(r)),Le.test(e)&&(r=r.reverse())),this.pushStack(r)}});var Ie=/\S+/g;ve.Callbacks=function(e){e="string"==typeof e?c(e):ve.extend({},e);var t,n,i,r,o=[],a=[],s=-1,l=function(){for(r=e.once,i=t=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)o[s].apply(n[0],n[1])===!1&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,r&&(o=n?[]:"")},u={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function i(t){ve.each(t,function(t,n){ve.isFunction(n)?e.unique&&u.has(n)||o.push(n):n&&n.length&&"string"!==ve.type(n)&&i(n)})}(arguments),n&&!t&&l()),this},remove:function(){return ve.each(arguments,function(e,t){for(var n;(n=ve.inArray(t,o,n))>-1;)o.splice(n,1),s>=n&&s--}),this},has:function(e){return e?ve.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return r=!0,n||u.disable(),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},ve.extend({Deferred:function(e){var t=[["resolve","done",ve.Callbacks("once memory"),"resolved"],["reject","fail",ve.Callbacks("once memory"),"rejected"],["notify","progress",ve.Callbacks("memory")]],n="pending",i={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},then:function(){var e=arguments;return ve.Deferred(function(n){ve.each(t,function(t,o){var a=ve.isFunction(e[t])&&e[t];r[o[1]](function(){var e=a&&a.apply(this,arguments);e&&ve.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===i?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?ve.extend(e,i):i}},r={};return i.pipe=i.then,ve.each(t,function(e,o){var a=o[2],s=o[3];i[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),r[o[0]]=function(){return r[o[0]+"With"](this===r?i:this,arguments),this},r[o[0]+"With"]=a.fireWith}),i.promise(r),e&&e.call(r,r),r},when:function(e){var t,n,i,r=0,o=le.call(arguments),a=o.length,s=1!==a||e&&ve.isFunction(e.promise)?a:0,l=1===s?e:ve.Deferred(),c=function(e,n,i){return function(r){n[e]=this,i[e]=arguments.length>1?le.call(arguments):r,i===t?l.notifyWith(n,i):--s||l.resolveWith(n,i)}};if(a>1)for(t=new Array(a),n=new Array(a),i=new Array(a);a>r;r++)o[r]&&ve.isFunction(o[r].promise)?o[r].promise().progress(c(r,n,t)).done(c(r,i,o)).fail(l.reject):--s;return s||l.resolveWith(i,o),l.promise()}});var Oe;ve.fn.ready=function(e){return ve.ready.promise().done(e),this},ve.extend({isReady:!1,readyWait:1,holdReady:function(e){e?ve.readyWait++:ve.ready(!0)},ready:function(e){(e===!0?--ve.readyWait:ve.isReady)||(ve.isReady=!0,e!==!0&&--ve.readyWait>0||(Oe.resolveWith(se,[ve]),ve.fn.triggerHandler&&(ve(se).triggerHandler("ready"),ve(se).off("ready"))))}}),ve.ready.promise=function(e){if(!Oe)if(Oe=ve.Deferred(),"complete"===se.readyState||"loading"!==se.readyState&&!se.documentElement.doScroll)n.setTimeout(ve.ready);else if(se.addEventListener)se.addEventListener("DOMContentLoaded",p),n.addEventListener("load",p);else{se.attachEvent("onreadystatechange",p),n.attachEvent("onload",p);var t=!1;try{t=null==n.frameElement&&se.documentElement}catch(i){}t&&t.doScroll&&!function r(){if(!ve.isReady){try{t.doScroll("left")}catch(e){return n.setTimeout(r,50)}u(),ve.ready()}}()}return Oe.promise(e)},ve.ready.promise();var je;for(je in ve(me))break;me.ownFirst="0"===je,me.inlineBlockNeedsLayout=!1,ve(function(){var e,t,n,i;n=se.getElementsByTagName("body")[0],n&&n.style&&(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",me.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(i))}),function(){var e=se.createElement("div");me.deleteExpando=!0;try{delete e.test}catch(t){me.deleteExpando=!1}e=null}();var He=function(e){var t=ve.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t},Be=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Me=/([A-Z])/g;ve.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?ve.cache[e[ve.expando]]:e[ve.expando],!!e&&!d(e)},data:function(e,t,n){return f(e,t,n)},removeData:function(e,t){return m(e,t)},_data:function(e,t,n){return f(e,t,n,!0)},_removeData:function(e,t){return m(e,t,!0)}}),ve.fn.extend({data:function(e,t){var n,i,r,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(r=ve.data(o),1===o.nodeType&&!ve._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(i=a[n].name,0===i.indexOf("data-")&&(i=ve.camelCase(i.slice(5)),h(o,i,r[i])));ve._data(o,"parsedAttrs",!0)}return r}return"object"==typeof e?this.each(function(){ve.data(this,e)}):arguments.length>1?this.each(function(){ve.data(this,e,t)}):o?h(o,e,ve.data(o,e)):void 0},removeData:function(e){return this.each(function(){ve.removeData(this,e)})}}),ve.extend({queue:function(e,t,n){var i;return e?(t=(t||"fx")+"queue",i=ve._data(e,t),n&&(!i||ve.isArray(n)?i=ve._data(e,t,ve.makeArray(n)):i.push(n)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=ve.queue(e,t),i=n.length,r=n.shift(),o=ve._queueHooks(e,t),a=function(){ve.dequeue(e,t)};"inprogress"===r&&(r=n.shift(),i--),r&&("fx"===t&&n.unshift("inprogress"),delete o.stop,r.call(e,a,o)),!i&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return ve._data(e,n)||ve._data(e,n,{empty:ve.Callbacks("once memory").add(function(){ve._removeData(e,t+"queue"),ve._removeData(e,n)})})}}),ve.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?ve.queue(this[0],e):void 0===t?this:this.each(function(){var n=ve.queue(this,e,t);ve._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&ve.dequeue(this,e)})},dequeue:function(e){return this.each(function(){ve.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,i=1,r=ve.Deferred(),o=this,a=this.length,s=function(){--i||r.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=ve._data(o[a],e+"queueHooks"),n&&n.empty&&(i++,n.empty.add(s));return s(),r.promise(t)}}),function(){var e;me.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,i;return n=se.getElementsByTagName("body")[0],n&&n.style?(t=se.createElement("div"),i=se.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.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",t.appendChild(se.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(i),e):void 0}}();var $e=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Re=new RegExp("^(?:([+-])=|)("+$e+")([a-z%]*)$","i"),qe=["Top","Right","Bottom","Left"],Fe=function(e,t){return e=t||e,"none"===ve.css(e,"display")||!ve.contains(e.ownerDocument,e)},ze=function(e,t,n,i,r,o,a){var s=0,l=e.length,c=null==n;if("object"===ve.type(n)){r=!0;for(s in n)ze(e,t,s,n[s],!0,o,a)}else if(void 0!==i&&(r=!0,ve.isFunction(i)||(a=!0),c&&(a?(t.call(e,i),t=null):(c=t,t=function(e,t,n){return c.call(ve(e),n)})),t))for(;l>s;s++)t(e[s],n,a?i:i.call(e[s],s,t(e[s],n)));return r?e:c?t.call(e):l?t(e[0],n):o},We=/^(?:checkbox|radio)$/i,Ue=/<([\w:-]+)/,Ve=/^$|\/(?:java|ecma)script/i,Xe=/^\s+/,Ke="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(){var e=se.createElement("div"),t=se.createDocumentFragment(),n=se.createElement("input");e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",me.leadingWhitespace=3===e.firstChild.nodeType,me.tbody=!e.getElementsByTagName("tbody").length,me.htmlSerialize=!!e.getElementsByTagName("link").length,me.html5Clone="<:nav></:nav>"!==se.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),me.appendChecked=n.checked,e.innerHTML="<textarea>x</textarea>",me.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=se.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),me.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,me.noCloneEvent=!!e.addEventListener,e[ve.expando]=1,me.attributes=!e.getAttribute(ve.expando)}();var Je={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:me.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};Je.optgroup=Je.option,Je.tbody=Je.tfoot=Je.colgroup=Je.caption=Je.thead,Je.th=Je.td;var Ye=/<|&#?\w+;/,Ge=/<tbody/i;!function(){var e,t,i=se.createElement("div");for(e in{submit:!0,change:!0,focusin:!0})t="on"+e,(me[e]=t in n)||(i.setAttribute(t,"t"),me[e]=i.attributes[t].expando===!1);i=null}();
-var Qe=/^(?:input|select|textarea)$/i,Ze=/^key/,et=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,tt=/^(?:focusinfocus|focusoutblur)$/,nt=/^([^.]*)(?:\.(.+)|)/;ve.event={global:{},add:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve._data(e);if(g){for(n.handler&&(l=n,n=l.handler,r=l.selector),n.guid||(n.guid=ve.guid++),(a=g.events)||(a=g.events={}),(u=g.handle)||(u=g.handle=function(e){return"undefined"==typeof ve||e&&ve.event.triggered===e.type?void 0:ve.event.dispatch.apply(u.elem,arguments)},u.elem=e),t=(t||"").match(Ie)||[""],s=t.length;s--;)o=nt.exec(t[s])||[],d=m=o[1],f=(o[2]||"").split(".").sort(),d&&(c=ve.event.special[d]||{},d=(r?c.delegateType:c.bindType)||d,c=ve.event.special[d]||{},p=ve.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&ve.expr.match.needsContext.test(r),namespace:f.join(".")},l),(h=a[d])||(h=a[d]=[],h.delegateCount=0,c.setup&&c.setup.call(e,i,f,u)!==!1||(e.addEventListener?e.addEventListener(d,u,!1):e.attachEvent&&e.attachEvent("on"+d,u))),c.add&&(c.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),r?h.splice(h.delegateCount++,0,p):h.push(p),ve.event.global[d]=!0);e=null}},remove:function(e,t,n,i,r){var o,a,s,l,c,u,p,h,d,f,m,g=ve.hasData(e)&&ve._data(e);if(g&&(u=g.events)){for(t=(t||"").match(Ie)||[""],c=t.length;c--;)if(s=nt.exec(t[c])||[],d=m=s[1],f=(s[2]||"").split(".").sort(),d){for(p=ve.event.special[d]||{},d=(i?p.delegateType:p.bindType)||d,h=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=h.length;o--;)a=h[o],!r&&m!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||i&&i!==a.selector&&("**"!==i||!a.selector)||(h.splice(o,1),a.selector&&h.delegateCount--,p.remove&&p.remove.call(e,a));l&&!h.length&&(p.teardown&&p.teardown.call(e,f,g.handle)!==!1||ve.removeEvent(e,d,g.handle),delete u[d])}else for(d in u)ve.event.remove(e,d+t[c],n,i,!0);ve.isEmptyObject(u)&&(delete g.handle,ve._removeData(e,"events"))}},trigger:function(e,t,i,r){var o,a,s,l,c,u,p,h=[i||se],d=fe.call(e,"type")?e.type:e,f=fe.call(e,"namespace")?e.namespace.split("."):[];if(s=u=i=i||se,3!==i.nodeType&&8!==i.nodeType&&!tt.test(d+ve.event.triggered)&&(d.indexOf(".")>-1&&(f=d.split("."),d=f.shift(),f.sort()),a=d.indexOf(":")<0&&"on"+d,e=e[ve.expando]?e:new ve.Event(d,"object"==typeof e&&e),e.isTrigger=r?2:3,e.namespace=f.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),t=null==t?[e]:ve.makeArray(t,[e]),c=ve.event.special[d]||{},r||!c.trigger||c.trigger.apply(i,t)!==!1)){if(!r&&!c.noBubble&&!ve.isWindow(i)){for(l=c.delegateType||d,tt.test(l+d)||(s=s.parentNode);s;s=s.parentNode)h.push(s),u=s;u===(i.ownerDocument||se)&&h.push(u.defaultView||u.parentWindow||n)}for(p=0;(s=h[p++])&&!e.isPropagationStopped();)e.type=p>1?l:c.bindType||d,o=(ve._data(s,"events")||{})[e.type]&&ve._data(s,"handle"),o&&o.apply(s,t),o=a&&s[a],o&&o.apply&&He(s)&&(e.result=o.apply(s,t),e.result===!1&&e.preventDefault());if(e.type=d,!r&&!e.isDefaultPrevented()&&(!c._default||c._default.apply(h.pop(),t)===!1)&&He(i)&&a&&i[d]&&!ve.isWindow(i)){u=i[a],u&&(i[a]=null),ve.event.triggered=d;try{i[d]()}catch(m){}ve.event.triggered=void 0,u&&(i[a]=u)}return e.result}},dispatch:function(e){e=ve.event.fix(e);var t,n,i,r,o,a=[],s=le.call(arguments),l=(ve._data(this,"events")||{})[e.type]||[],c=ve.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(a=ve.event.handlers.call(this,e,l),t=0;(r=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,i=((ve.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,s),void 0!==i&&(e.result=i)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,i,r,o,a=[],s=t.delegateCount,l=e.target;if(s&&l.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(i=[],n=0;s>n;n++)o=t[n],r=o.selector+" ",void 0===i[r]&&(i[r]=o.needsContext?ve(r,this).index(l)>-1:ve.find(r,this,null,[l]).length),i[r]&&i.push(o);i.length&&a.push({elem:l,handlers:i})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[ve.expando])return e;var t,n,i,r=e.type,o=e,a=this.fixHooks[r];for(a||(this.fixHooks[r]=a=et.test(r)?this.mouseHooks:Ze.test(r)?this.keyHooks:{}),i=a.props?this.props.concat(a.props):this.props,e=new ve.Event(o),t=i.length;t--;)n=i[t],e[n]=o[n];return e.target||(e.target=o.srcElement||se),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},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(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,i,r,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(i=e.target.ownerDocument||se,r=i.documentElement,n=i.body,e.pageX=t.clientX+(r&&r.scrollLeft||n&&n.scrollLeft||0)-(r&&r.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||n&&n.scrollTop||0)-(r&&r.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==_()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return ve.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return ve.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var i=ve.extend(new ve.Event,n,{type:e,isSimulated:!0});ve.event.trigger(i,null,t),i.isDefaultPrevented()&&n.preventDefault()}},ve.removeEvent=se.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var i="on"+t;e.detachEvent&&("undefined"==typeof e[i]&&(e[i]=null),e.detachEvent(i,n))},ve.Event=function(e,t){return this instanceof ve.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?k:S):this.type=e,t&&ve.extend(this,t),this.timeStamp=e&&e.timeStamp||ve.now(),void(this[ve.expando]=!0)):new ve.Event(e,t)},ve.Event.prototype={constructor:ve.Event,isDefaultPrevented:S,isPropagationStopped:S,isImmediatePropagationStopped:S,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=k,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=k,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=k,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},ve.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){ve.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=this,r=e.relatedTarget,o=e.handleObj;return r&&(r===i||ve.contains(i,r))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),me.submit||(ve.event.special.submit={setup:function(){return ve.nodeName(this,"form")?!1:void ve.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=ve.nodeName(t,"input")||ve.nodeName(t,"button")?ve.prop(t,"form"):void 0;n&&!ve._data(n,"submit")&&(ve.event.add(n,"submit._submit",function(e){e._submitBubble=!0}),ve._data(n,"submit",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&ve.event.simulate("submit",this.parentNode,e))},teardown:function(){return ve.nodeName(this,"form")?!1:void ve.event.remove(this,"._submit")}}),me.change||(ve.event.special.change={setup:function(){return Qe.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(ve.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._justChanged=!0)}),ve.event.add(this,"click._change",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),ve.event.simulate("change",this,e)})),!1):void ve.event.add(this,"beforeactivate._change",function(e){var t=e.target;Qe.test(t.nodeName)&&!ve._data(t,"change")&&(ve.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||ve.event.simulate("change",this.parentNode,e)}),ve._data(t,"change",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ve.event.remove(this,"._change"),!Qe.test(this.nodeName)}}),me.focusin||ve.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){ve.event.simulate(t,e.target,ve.event.fix(e))};ve.event.special[t]={setup:function(){var i=this.ownerDocument||this,r=ve._data(i,t);r||i.addEventListener(e,n,!0),ve._data(i,t,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this,r=ve._data(i,t)-1;r?ve._data(i,t,r):(i.removeEventListener(e,n,!0),ve._removeData(i,t))}}}),ve.fn.extend({on:function(e,t,n,i){return C(this,e,t,n,i)},one:function(e,t,n,i){return C(this,e,t,n,i,1)},off:function(e,t,n){var i,r;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,ve(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=S),this.each(function(){ve.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){ve.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?ve.event.trigger(e,t,n,!0):void 0}});var it=/ jQuery\d+="(?:null|\d+)"/g,rt=new RegExp("<(?:"+Ke+")[\\s/>]","i"),ot=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,at=/<script|<style|<link/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,lt=/^true\/(.*)/,ct=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ut=v(se),pt=ut.appendChild(se.createElement("div"));ve.extend({htmlPrefilter:function(e){return e.replace(ot,"<$1></$2>")},clone:function(e,t,n){var i,r,o,a,s,l=ve.contains(e.ownerDocument,e);if(me.html5Clone||ve.isXMLDoc(e)||!rt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(pt.innerHTML=e.outerHTML,pt.removeChild(o=pt.firstChild)),!(me.noCloneEvent&&me.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ve.isXMLDoc(e)))for(i=y(o),s=y(e),a=0;null!=(r=s[a]);++a)i[a]&&P(r,i[a]);if(t)if(n)for(s=s||y(e),i=i||y(o),a=0;null!=(r=s[a]);a++)N(r,i[a]);else N(e,o);return i=y(o,"script"),i.length>0&&b(i,!l&&y(e,"script")),i=s=r=null,o},cleanData:function(e,t){for(var n,i,r,o,a=0,s=ve.expando,l=ve.cache,c=me.attributes,u=ve.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(r=n[s],o=r&&l[r])){if(o.events)for(i in o.events)u[i]?ve.event.remove(n,i):ve.removeEvent(n,i,o.handle);l[r]&&(delete l[r],c||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ae.push(r))}}}),ve.fn.extend({domManip:L,detach:function(e){return D(this,e,!0)},remove:function(e){return D(this,e)},text:function(e){return ze(this,function(e){return void 0===e?ve.text(this):this.empty().append((this[0]&&this[0].ownerDocument||se).createTextNode(e))},null,e,arguments.length)},append:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.appendChild(e)}})},prepend:function(){return L(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=E(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return L(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&ve.cleanData(y(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&ve.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return ve.clone(this,e,t)})},html:function(e){return ze(this,function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(it,""):void 0;if("string"==typeof e&&!at.test(e)&&(me.htmlSerialize||!rt.test(e))&&(me.leadingWhitespace||!Xe.test(e))&&!Je[(Ue.exec(e)||["",""])[1].toLowerCase()]){e=ve.htmlPrefilter(e);try{for(;i>n;n++)t=this[n]||{},1===t.nodeType&&(ve.cleanData(y(t,!1)),t.innerHTML=e);t=0}catch(r){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return L(this,arguments,function(t){var n=this.parentNode;ve.inArray(this,e)<0&&(ve.cleanData(y(this)),n&&n.replaceChild(t,this))},e)}}),ve.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){ve.fn[e]=function(e){for(var n,i=0,r=[],o=ve(e),a=o.length-1;a>=i;i++)n=i===a?this:this.clone(!0),ve(o[i])[t](n),ue.apply(r,n.get());return this.pushStack(r)}});var ht,dt={HTML:"block",BODY:"block"},ft=/^margin/,mt=new RegExp("^("+$e+")(?!px)[a-z%]+$","i"),gt=function(e,t,n,i){var r,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];r=n.apply(e,i||[]);for(o in t)e.style[o]=a[o];return r},vt=se.documentElement;!function(){function e(){var e,u,p=se.documentElement;p.appendChild(l),c.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%",t=r=s=!1,i=a=!0,n.getComputedStyle&&(u=n.getComputedStyle(c),t="1%"!==(u||{}).top,s="2px"===(u||{}).marginLeft,r="4px"===(u||{width:"4px"}).width,c.style.marginRight="50%",i="4px"===(u||{marginRight:"4px"}).marginRight,e=c.appendChild(se.createElement("div")),e.style.cssText=c.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",c.style.width="1px",a=!parseFloat((n.getComputedStyle(e)||{}).marginRight),c.removeChild(e)),c.style.display="none",o=0===c.getClientRects().length,o&&(c.style.display="",c.innerHTML="<table><tr><td></td><td>t</td></tr></table>",c.childNodes[0].style.borderCollapse="separate",e=c.getElementsByTagName("td"),e[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===e[0].offsetHeight,o&&(e[0].style.display="",e[1].style.display="none",o=0===e[0].offsetHeight)),p.removeChild(l)}var t,i,r,o,a,s,l=se.createElement("div"),c=se.createElement("div");c.style&&(c.style.cssText="float:left;opacity:.5",me.opacity="0.5"===c.style.opacity,me.cssFloat=!!c.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",me.clearCloneStyle="content-box"===c.style.backgroundClip,l=se.createElement("div"),l.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",c.innerHTML="",l.appendChild(c),me.boxSizing=""===c.style.boxSizing||""===c.style.MozBoxSizing||""===c.style.WebkitBoxSizing,ve.extend(me,{reliableHiddenOffsets:function(){return null==t&&e(),o},boxSizingReliable:function(){return null==t&&e(),r},pixelMarginRight:function(){return null==t&&e(),i},pixelPosition:function(){return null==t&&e(),t},reliableMarginRight:function(){return null==t&&e(),a},reliableMarginLeft:function(){return null==t&&e(),s}}))}();var yt,bt,xt=/^(top|right|bottom|left)$/;n.getComputedStyle?(yt=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||ve.contains(e.ownerDocument,e)||(a=ve.style(e,t)),n&&!me.pixelMarginRight()&&mt.test(a)&&ft.test(t)&&(i=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=i,s.minWidth=r,s.maxWidth=o),void 0===a?a:a+""}):vt.currentStyle&&(yt=function(e){return e.currentStyle},bt=function(e,t,n){var i,r,o,a,s=e.style;return n=n||yt(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),mt.test(a)&&!xt.test(t)&&(i=s.left,r=e.runtimeStyle,o=r&&r.left,o&&(r.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=i,o&&(r.left=o)),void 0===a?a:a+""||"auto"});var wt=/alpha\([^)]*\)/i,kt=/opacity\s*=\s*([^)]*)/i,St=/^(none|table(?!-c[ea]).+)/,_t=new RegExp("^("+$e+")(.*)$","i"),Ct={position:"absolute",visibility:"hidden",display:"block"},Et={letterSpacing:"0",fontWeight:"400"},At=["Webkit","O","Moz","ms"],Tt=se.createElement("div").style;ve.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=bt(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:{"float":me.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,o,a,s=ve.camelCase(t),l=e.style;if(t=ve.cssProps[s]||(ve.cssProps[s]=H(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(r=a.get(e,!1,i))?r:l[t];if(o=typeof n,"string"===o&&(r=Re.exec(n))&&r[1]&&(n=g(e,t,r),o="number"),null!=n&&n===n&&("number"===o&&(n+=r&&r[3]||(ve.cssNumber[s]?"":"px")),me.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,i)))))try{l[t]=n}catch(c){}}},css:function(e,t,n,i){var r,o,a,s=ve.camelCase(t);return t=ve.cssProps[s]||(ve.cssProps[s]=H(s)||s),a=ve.cssHooks[t]||ve.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=bt(e,t,i)),"normal"===o&&t in Et&&(o=Et[t]),""===n||n?(r=parseFloat(o),n===!0||isFinite(r)?r||0:o):o}}),ve.each(["height","width"],function(e,t){ve.cssHooks[t]={get:function(e,n,i){return n?St.test(ve.css(e,"display"))&&0===e.offsetWidth?gt(e,Ct,function(){return R(e,t,i)}):R(e,t,i):void 0},set:function(e,n,i){var r=i&&yt(e);return M(e,n,i?$(e,t,i,me.boxSizing&&"border-box"===ve.css(e,"boxSizing",!1,r),r):0)}}}),me.opacity||(ve.cssHooks.opacity={get:function(e,t){return kt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,i=e.currentStyle,r=ve.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=i&&i.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===ve.trim(o.replace(wt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||i&&!i.filter)||(n.filter=wt.test(o)?o.replace(wt,r):o+" "+r)}}),ve.cssHooks.marginRight=j(me.reliableMarginRight,function(e,t){return t?gt(e,{display:"inline-block"},bt,[e,"marginRight"]):void 0}),ve.cssHooks.marginLeft=j(me.reliableMarginLeft,function(e,t){return t?(parseFloat(bt(e,"marginLeft"))||(ve.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-gt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px":void 0}),ve.each({margin:"",padding:"",border:"Width"},function(e,t){ve.cssHooks[e+t]={expand:function(n){for(var i=0,r={},o="string"==typeof n?n.split(" "):[n];4>i;i++)r[e+qe[i]+t]=o[i]||o[i-2]||o[0];return r}},ft.test(e)||(ve.cssHooks[e+t].set=M)}),ve.fn.extend({css:function(e,t){return ze(this,function(e,t,n){var i,r,o={},a=0;if(ve.isArray(t)){for(i=yt(e),r=t.length;r>a;a++)o[t[a]]=ve.css(e,t[a],!1,i);return o}return void 0!==n?ve.style(e,t,n):ve.css(e,t)},e,t,arguments.length>1)},show:function(){return B(this,!0)},hide:function(){return B(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Fe(this)?ve(this).show():ve(this).hide()})}}),ve.Tween=q,q.prototype={constructor:q,init:function(e,t,n,i,r,o){this.elem=e,this.prop=n,this.easing=r||ve.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(ve.cssNumber[n]?"":"px")},cur:function(){var e=q.propHooks[this.prop];return e&&e.get?e.get(this):q.propHooks._default.get(this)},run:function(e){var t,n=q.propHooks[this.prop];return this.options.duration?this.pos=t=ve.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):q.propHooks._default.set(this),this}},q.prototype.init.prototype=q.prototype,q.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=ve.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){ve.fx.step[e.prop]?ve.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[ve.cssProps[e.prop]]&&!ve.cssHooks[e.prop]?e.elem[e.prop]=e.now:ve.style(e.elem,e.prop,e.now+e.unit)}}},q.propHooks.scrollTop=q.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ve.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ve.fx=q.prototype.init,ve.fx.step={};var Nt,Pt,Lt=/^(?:toggle|show|hide)$/,Dt=/queueHooks$/;ve.Animation=ve.extend(X,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return g(n.elem,e,Re.exec(t),n),n}]},tweener:function(e,t){ve.isFunction(e)?(t=e,e=["*"]):e=e.match(Ie);for(var n,i=0,r=e.length;r>i;i++)n=e[i],X.tweeners[n]=X.tweeners[n]||[],X.tweeners[n].unshift(t)},prefilters:[U],prefilter:function(e,t){t?X.prefilters.unshift(e):X.prefilters.push(e)}}),ve.speed=function(e,t,n){var i=e&&"object"==typeof e?ve.extend({},e):{complete:n||!n&&t||ve.isFunction(e)&&e,duration:e,easing:n&&t||t&&!ve.isFunction(t)&&t};return i.duration=ve.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in ve.fx.speeds?ve.fx.speeds[i.duration]:ve.fx.speeds._default,null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){ve.isFunction(i.old)&&i.old.call(this),i.queue&&ve.dequeue(this,i.queue)},i},ve.fn.extend({fadeTo:function(e,t,n,i){return this.filter(Fe).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var r=ve.isEmptyObject(e),o=ve.speed(t,n,i),a=function(){var t=X(this,ve.extend({},e),o);(r||ve._data(this,"finish"))&&t.stop(!0)};return a.finish=a,r||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var i=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,r=null!=e&&e+"queueHooks",o=ve.timers,a=ve._data(this);if(r)a[r]&&a[r].stop&&i(a[r]);else for(r in a)a[r]&&a[r].stop&&Dt.test(r)&&i(a[r]);for(r=o.length;r--;)o[r].elem!==this||null!=e&&o[r].queue!==e||(o[r].anim.stop(n),t=!1,o.splice(r,1));!t&&n||ve.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=ve._data(this),i=n[e+"queue"],r=n[e+"queueHooks"],o=ve.timers,a=i?i.length:0;for(n.finish=!0,ve.queue(this,e,[]),r&&r.stop&&r.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;a>t;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish})}}),ve.each(["toggle","show","hide"],function(e,t){var n=ve.fn[t];ve.fn[t]=function(e,i,r){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(z(t,!0),e,i,r)}}),ve.each({slideDown:z("show"),slideUp:z("hide"),slideToggle:z("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){ve.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}}),ve.timers=[],ve.fx.tick=function(){var e,t=ve.timers,n=0;for(Nt=ve.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||ve.fx.stop(),Nt=void 0},ve.fx.timer=function(e){ve.timers.push(e),e()?ve.fx.start():ve.timers.pop()},ve.fx.interval=13,ve.fx.start=function(){Pt||(Pt=n.setInterval(ve.fx.tick,ve.fx.interval))},ve.fx.stop=function(){n.clearInterval(Pt),Pt=null},ve.fx.speeds={slow:600,fast:200,_default:400},ve.fn.delay=function(e,t){return e=ve.fx?ve.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,i){var r=n.setTimeout(t,e);i.stop=function(){n.clearTimeout(r)}})},function(){var e,t=se.createElement("input"),n=se.createElement("div"),i=se.createElement("select"),r=i.appendChild(se.createElement("option"));n=se.createElement("div"),n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",me.getSetAttribute="t"!==n.className,me.style=/top/.test(e.getAttribute("style")),me.hrefNormalized="/a"===e.getAttribute("href"),me.checkOn=!!t.value,me.optSelected=r.selected,me.enctype=!!se.createElement("form").enctype,i.disabled=!0,me.optDisabled=!r.disabled,t=se.createElement("input"),t.setAttribute("value",""),me.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),me.radioValue="t"===t.value}();var It=/\r/g,Ot=/[\x20\t\r\n\f]+/g;ve.fn.extend({val:function(e){var t,n,i,r=this[0];{if(arguments.length)return i=ve.isFunction(e),this.each(function(n){var r;1===this.nodeType&&(r=i?e.call(this,n,ve(this).val()):e,null==r?r="":"number"==typeof r?r+="":ve.isArray(r)&&(r=ve.map(r,function(e){return null==e?"":e+""})),t=ve.valHooks[this.type]||ve.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))});if(r)return t=ve.valHooks[r.type]||ve.valHooks[r.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:(n=r.value,"string"==typeof n?n.replace(It,""):null==n?"":n)}}}),ve.extend({valHooks:{option:{get:function(e){var t=ve.find.attr(e,"value");return null!=t?t:ve.trim(ve.text(e)).replace(Ot," ")}},select:{get:function(e){for(var t,n,i=e.options,r=e.selectedIndex,o="select-one"===e.type||0>r,a=o?null:[],s=o?r+1:i.length,l=0>r?s:o?r:0;s>l;l++)if(n=i[l],(n.selected||l===r)&&(me.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!ve.nodeName(n.parentNode,"optgroup"))){if(t=ve(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,i,r=e.options,o=ve.makeArray(t),a=r.length;a--;)if(i=r[a],ve.inArray(ve.valHooks.option.get(i),o)>-1)try{i.selected=n=!0}catch(s){i.scrollHeight}else i.selected=!1;return n||(e.selectedIndex=-1),r}}}}),ve.each(["radio","checkbox"],function(){ve.valHooks[this]={set:function(e,t){return ve.isArray(t)?e.checked=ve.inArray(ve(e).val(),t)>-1:void 0}},me.checkOn||(ve.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var jt,Ht,Bt=ve.expr.attrHandle,Mt=/^(?:checked|selected)$/i,$t=me.getSetAttribute,Rt=me.input;ve.fn.extend({attr:function(e,t){return ze(this,ve.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){ve.removeAttr(this,e)})}}),ve.extend({attr:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ve.prop(e,t,n):(1===o&&ve.isXMLDoc(e)||(t=t.toLowerCase(),r=ve.attrHooks[t]||(ve.expr.match.bool.test(t)?Ht:jt)),void 0!==n?null===n?void ve.removeAttr(e,t):r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(i=r.get(e,t))?i:(i=ve.find.attr(e,t),null==i?void 0:i))},attrHooks:{type:{set:function(e,t){if(!me.radioValue&&"radio"===t&&ve.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i,r=0,o=t&&t.match(Ie);if(o&&1===e.nodeType)for(;n=o[r++];)i=ve.propFix[n]||n,ve.expr.match.bool.test(n)?Rt&&$t||!Mt.test(n)?e[i]=!1:e[ve.camelCase("default-"+n)]=e[i]=!1:ve.attr(e,n,""),e.removeAttribute($t?n:i)}}),Ht={set:function(e,t,n){return t===!1?ve.removeAttr(e,n):Rt&&$t||!Mt.test(n)?e.setAttribute(!$t&&ve.propFix[n]||n,n):e[ve.camelCase("default-"+n)]=e[n]=!0,n}},ve.each(ve.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Bt[t]||ve.find.attr;Rt&&$t||!Mt.test(t)?Bt[t]=function(e,t,i){var r,o;return i||(o=Bt[t],Bt[t]=r,r=null!=n(e,t,i)?t.toLowerCase():null,Bt[t]=o),r}:Bt[t]=function(e,t,n){return n?void 0:e[ve.camelCase("default-"+t)]?t.toLowerCase():null}}),Rt&&$t||(ve.attrHooks.value={set:function(e,t,n){return ve.nodeName(e,"input")?void(e.defaultValue=t):jt&&jt.set(e,t,n)}}),$t||(jt={set:function(e,t,n){var i=e.getAttributeNode(n);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(n)),i.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Bt.id=Bt.name=Bt.coords=function(e,t,n){var i;return n?void 0:(i=e.getAttributeNode(t))&&""!==i.value?i.value:null},ve.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:jt.set},ve.attrHooks.contenteditable={set:function(e,t,n){jt.set(e,""===t?!1:t,n)}},ve.each(["width","height"],function(e,t){ve.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),me.style||(ve.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var qt=/^(?:input|select|textarea|button|object)$/i,Ft=/^(?:a|area)$/i;ve.fn.extend({prop:function(e,t){return ze(this,ve.prop,e,t,arguments.length>1)},removeProp:function(e){return e=ve.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),ve.extend({prop:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ve.isXMLDoc(e)||(t=ve.propFix[t]||t,r=ve.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(i=r.set(e,n,t))?i:e[t]=n:r&&"get"in r&&null!==(i=r.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=ve.find.attr(e,"tabindex");return t?parseInt(t,10):qt.test(e.nodeName)||Ft.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),me.hrefNormalized||ve.each(["href","src"],function(e,t){ve.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),me.optSelected||(ve.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ve.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ve.propFix[this.toLowerCase()]=this}),me.enctype||(ve.propFix.enctype="encoding");var zt=/[\t\r\n\f]/g;ve.fn.extend({addClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).addClass(e.call(this,t,K(this)))});if("string"==typeof e&&e)for(t=e.match(Ie)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(zt," ")){for(a=0;o=t[a++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},removeClass:function(e){var t,n,i,r,o,a,s,l=0;if(ve.isFunction(e))return this.each(function(t){ve(this).removeClass(e.call(this,t,K(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(Ie)||[];n=this[l++];)if(r=K(n),i=1===n.nodeType&&(" "+r+" ").replace(zt," ")){for(a=0;o=t[a++];)for(;i.indexOf(" "+o+" ")>-1;)i=i.replace(" "+o+" "," ");s=ve.trim(i),r!==s&&ve.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):ve.isFunction(e)?this.each(function(n){ve(this).toggleClass(e.call(this,n,K(this),t),t)}):this.each(function(){
-var t,i,r,o;if("string"===n)for(i=0,r=ve(this),o=e.match(Ie)||[];t=o[i++];)r.hasClass(t)?r.removeClass(t):r.addClass(t);else void 0!==e&&"boolean"!==n||(t=K(this),t&&ve._data(this,"__className__",t),ve.attr(this,"class",t||e===!1?"":ve._data(this,"__className__")||""))})},hasClass:function(e){var t,n,i=0;for(t=" "+e+" ";n=this[i++];)if(1===n.nodeType&&(" "+K(n)+" ").replace(zt," ").indexOf(t)>-1)return!0;return!1}}),ve.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){ve.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),ve.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Wt=n.location,Ut=ve.now(),Vt=/\?/,Xt=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;ve.parseJSON=function(e){if(n.JSON&&n.JSON.parse)return n.JSON.parse(e+"");var t,i=null,r=ve.trim(e+"");return r&&!ve.trim(r.replace(Xt,function(e,n,r,o){return t&&n&&(i=0),0===i?e:(t=r||n,i+=!o-!r,"")}))?Function("return "+r)():ve.error("Invalid JSON: "+e)},ve.parseXML=function(e){var t,i;if(!e||"string"!=typeof e)return null;try{n.DOMParser?(i=new n.DOMParser,t=i.parseFromString(e,"text/xml")):(t=new n.ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e))}catch(r){t=void 0}return t&&t.documentElement&&!t.getElementsByTagName("parsererror").length||ve.error("Invalid XML: "+e),t};var Kt=/#.*$/,Jt=/([?&])_=[^&]*/,Yt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Gt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Qt=/^(?:GET|HEAD)$/,Zt=/^\/\//,en=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,tn={},nn={},rn="*/".concat("*"),on=Wt.href,an=en.exec(on.toLowerCase())||[];ve.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:on,type:"GET",isLocal:Gt.test(an[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":rn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":ve.parseJSON,"text xml":ve.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?G(G(e,ve.ajaxSettings),t):G(ve.ajaxSettings,e)},ajaxPrefilter:J(tn),ajaxTransport:J(nn),ajax:function(e,t){function i(e,t,i,r){var o,p,y,b,w,S=t;2!==x&&(x=2,l&&n.clearTimeout(l),u=void 0,s=r||"",k.readyState=e>0?4:0,o=e>=200&&300>e||304===e,i&&(b=Q(h,k,i)),b=Z(h,b,k,o),o?(h.ifModified&&(w=k.getResponseHeader("Last-Modified"),w&&(ve.lastModified[a]=w),w=k.getResponseHeader("etag"),w&&(ve.etag[a]=w)),204===e||"HEAD"===h.type?S="nocontent":304===e?S="notmodified":(S=b.state,p=b.data,y=b.error,o=!y)):(y=S,!e&&S||(S="error",0>e&&(e=0))),k.status=e,k.statusText=(t||S)+"",o?m.resolveWith(d,[p,S,k]):m.rejectWith(d,[k,S,y]),k.statusCode(v),v=void 0,c&&f.trigger(o?"ajaxSuccess":"ajaxError",[k,h,o?p:y]),g.fireWith(d,[k,S]),c&&(f.trigger("ajaxComplete",[k,h]),--ve.active||ve.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,o,a,s,l,c,u,p,h=ve.ajaxSetup({},t),d=h.context||h,f=h.context&&(d.nodeType||d.jquery)?ve(d):ve.event,m=ve.Deferred(),g=ve.Callbacks("once memory"),v=h.statusCode||{},y={},b={},x=0,w="canceled",k={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!p)for(p={};t=Yt.exec(s);)p[t[1].toLowerCase()]=t[2];t=p[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)v[t]=[v[t],e[t]];else k.always(e[k.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),i(0,t),this}};if(m.promise(k).complete=g.add,k.success=k.done,k.error=k.fail,h.url=((e||h.url||on)+"").replace(Kt,"").replace(Zt,an[1]+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=ve.trim(h.dataType||"*").toLowerCase().match(Ie)||[""],null==h.crossDomain&&(r=en.exec(h.url.toLowerCase()),h.crossDomain=!(!r||r[1]===an[1]&&r[2]===an[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(an[3]||("http:"===an[1]?"80":"443")))),h.data&&h.processData&&"string"!=typeof h.data&&(h.data=ve.param(h.data,h.traditional)),Y(tn,h,t,k),2===x)return k;c=ve.event&&h.global,c&&0===ve.active++&&ve.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Qt.test(h.type),a=h.url,h.hasContent||(h.data&&(a=h.url+=(Vt.test(a)?"&":"?")+h.data,delete h.data),h.cache===!1&&(h.url=Jt.test(a)?a.replace(Jt,"$1_="+Ut++):a+(Vt.test(a)?"&":"?")+"_="+Ut++)),h.ifModified&&(ve.lastModified[a]&&k.setRequestHeader("If-Modified-Since",ve.lastModified[a]),ve.etag[a]&&k.setRequestHeader("If-None-Match",ve.etag[a])),(h.data&&h.hasContent&&h.contentType!==!1||t.contentType)&&k.setRequestHeader("Content-Type",h.contentType),k.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+rn+"; q=0.01":""):h.accepts["*"]);for(o in h.headers)k.setRequestHeader(o,h.headers[o]);if(h.beforeSend&&(h.beforeSend.call(d,k,h)===!1||2===x))return k.abort();w="abort";for(o in{success:1,error:1,complete:1})k[o](h[o]);if(u=Y(nn,h,t,k)){if(k.readyState=1,c&&f.trigger("ajaxSend",[k,h]),2===x)return k;h.async&&h.timeout>0&&(l=n.setTimeout(function(){k.abort("timeout")},h.timeout));try{x=1,u.send(y,i)}catch(S){if(!(2>x))throw S;i(-1,S)}}else i(-1,"No Transport");return k},getJSON:function(e,t,n){return ve.get(e,t,n,"json")},getScript:function(e,t){return ve.get(e,void 0,t,"script")}}),ve.each(["get","post"],function(e,t){ve[t]=function(e,n,i,r){return ve.isFunction(n)&&(r=r||i,i=n,n=void 0),ve.ajax(ve.extend({url:e,type:t,dataType:r,data:n,success:i},ve.isPlainObject(e)&&e))}}),ve._evalUrl=function(e){return ve.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},ve.fn.extend({wrapAll:function(e){if(ve.isFunction(e))return this.each(function(t){ve(this).wrapAll(e.call(this,t))});if(this[0]){var t=ve(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return ve.isFunction(e)?this.each(function(t){ve(this).wrapInner(e.call(this,t))}):this.each(function(){var t=ve(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=ve.isFunction(e);return this.each(function(n){ve(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){ve.nodeName(this,"body")||ve(this).replaceWith(this.childNodes)}).end()}}),ve.expr.filters.hidden=function(e){return me.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:te(e)},ve.expr.filters.visible=function(e){return!ve.expr.filters.hidden(e)};var sn=/%20/g,ln=/\[\]$/,cn=/\r?\n/g,un=/^(?:submit|button|image|reset|file)$/i,pn=/^(?:input|select|textarea|keygen)/i;ve.param=function(e,t){var n,i=[],r=function(e,t){t=ve.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=ve.ajaxSettings&&ve.ajaxSettings.traditional),ve.isArray(e)||e.jquery&&!ve.isPlainObject(e))ve.each(e,function(){r(this.name,this.value)});else for(n in e)ne(n,e[n],t,r);return i.join("&").replace(sn,"+")},ve.fn.extend({serialize:function(){return ve.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ve.prop(this,"elements");return e?ve.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ve(this).is(":disabled")&&pn.test(this.nodeName)&&!un.test(e)&&(this.checked||!We.test(e))}).map(function(e,t){var n=ve(this).val();return null==n?null:ve.isArray(n)?ve.map(n,function(e){return{name:t.name,value:e.replace(cn,"\r\n")}}):{name:t.name,value:n.replace(cn,"\r\n")}}).get()}}),ve.ajaxSettings.xhr=void 0!==n.ActiveXObject?function(){return this.isLocal?re():se.documentMode>8?ie():/^(get|post|head|put|delete|options)$/i.test(this.type)&&ie()||re()}:ie;var hn=0,dn={},fn=ve.ajaxSettings.xhr();n.attachEvent&&n.attachEvent("onunload",function(){for(var e in dn)dn[e](void 0,!0)}),me.cors=!!fn&&"withCredentials"in fn,fn=me.ajax=!!fn,fn&&ve.ajaxTransport(function(e){if(!e.crossDomain||me.cors){var t;return{send:function(i,r){var o,a=e.xhr(),s=++hn;if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)a[o]=e.xhrFields[o];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(o in i)void 0!==i[o]&&a.setRequestHeader(o,i[o]+"");a.send(e.hasContent&&e.data||null),t=function(n,i){var o,l,c;if(t&&(i||4===a.readyState))if(delete dn[s],t=void 0,a.onreadystatechange=ve.noop,i)4!==a.readyState&&a.abort();else{c={},o=a.status,"string"==typeof a.responseText&&(c.text=a.responseText);try{l=a.statusText}catch(u){l=""}o||!e.isLocal||e.crossDomain?1223===o&&(o=204):o=c.text?200:404}c&&r(o,l,c,a.getAllResponseHeaders())},e.async?4===a.readyState?n.setTimeout(t):a.onreadystatechange=dn[s]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),ve.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 ve.globalEval(e),e}}}),ve.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),ve.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=se.head||ve("head")[0]||se.documentElement;return{send:function(i,r){t=se.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||r(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var mn=[],gn=/(=)\?(?=&|$)|\?\?/;ve.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=mn.pop()||ve.expando+"_"+Ut++;return this[e]=!0,e}}),ve.ajaxPrefilter("json jsonp",function(e,t,i){var r,o,a,s=e.jsonp!==!1&&(gn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&gn.test(e.data)&&"data");return s||"jsonp"===e.dataTypes[0]?(r=e.jsonpCallback=ve.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(gn,"$1"+r):e.jsonp!==!1&&(e.url+=(Vt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return a||ve.error(r+" was not called"),a[0]},e.dataTypes[0]="json",o=n[r],n[r]=function(){a=arguments},i.always(function(){void 0===o?ve(n).removeProp(r):n[r]=o,e[r]&&(e.jsonpCallback=t.jsonpCallback,mn.push(r)),a&&ve.isFunction(o)&&o(a[0]),a=o=void 0}),"script"):void 0}),ve.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||se;var i=Ee.exec(e),r=!n&&[];return i?[t.createElement(i[1])]:(i=w([e],t,r),r&&r.length&&ve(r).remove(),ve.merge([],i.childNodes))};var vn=ve.fn.load;ve.fn.load=function(e,t,n){if("string"!=typeof e&&vn)return vn.apply(this,arguments);var i,r,o,a=this,s=e.indexOf(" ");return s>-1&&(i=ve.trim(e.slice(s,e.length)),e=e.slice(0,s)),ve.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(r="POST"),a.length>0&&ve.ajax({url:e,type:r||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(i?ve("<div>").append(ve.parseHTML(e)).find(i):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ve.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ve.fn[t]=function(e){return this.on(t,e)}}),ve.expr.filters.animated=function(e){return ve.grep(ve.timers,function(t){return e===t.elem}).length},ve.offset={setOffset:function(e,t,n){var i,r,o,a,s,l,c,u=ve.css(e,"position"),p=ve(e),h={};"static"===u&&(e.style.position="relative"),s=p.offset(),o=ve.css(e,"top"),l=ve.css(e,"left"),c=("absolute"===u||"fixed"===u)&&ve.inArray("auto",[o,l])>-1,c?(i=p.position(),a=i.top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),ve.isFunction(t)&&(t=t.call(e,n,ve.extend({},s))),null!=t.top&&(h.top=t.top-s.top+a),null!=t.left&&(h.left=t.left-s.left+r),"using"in t?t.using.call(e,h):p.css(h)}},ve.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){ve.offset.setOffset(this,e,t)});var t,n,i={top:0,left:0},r=this[0],o=r&&r.ownerDocument;if(o)return t=o.documentElement,ve.contains(t,r)?("undefined"!=typeof r.getBoundingClientRect&&(i=r.getBoundingClientRect()),n=oe(o),{top:i.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):i},position:function(){if(this[0]){var e,t,n={top:0,left:0},i=this[0];return"fixed"===ve.css(i,"position")?t=i.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),ve.nodeName(e[0],"html")||(n=e.offset()),n.top+=ve.css(e[0],"borderTopWidth",!0),n.left+=ve.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-ve.css(i,"marginTop",!0),left:t.left-n.left-ve.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&!ve.nodeName(e,"html")&&"static"===ve.css(e,"position");)e=e.offsetParent;return e||vt})}}),ve.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);ve.fn[e]=function(i){return ze(this,function(e,i,r){var o=oe(e);return void 0===r?o?t in o?o[t]:o.document.documentElement[i]:e[i]:void(o?o.scrollTo(n?ve(o).scrollLeft():r,n?r:ve(o).scrollTop()):e[i]=r)},e,i,arguments.length,null)}}),ve.each(["top","left"],function(e,t){ve.cssHooks[t]=j(me.pixelPosition,function(e,n){return n?(n=bt(e,t),mt.test(n)?ve(e).position()[t]+"px":n):void 0})}),ve.each({Height:"height",Width:"width"},function(e,t){ve.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,i){ve.fn[i]=function(i,r){var o=arguments.length&&(n||"boolean"!=typeof i),a=n||(i===!0||r===!0?"margin":"border");return ze(this,function(t,n,i){var r;return ve.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(r=t.documentElement,Math.max(t.body["scroll"+e],r["scroll"+e],t.body["offset"+e],r["offset"+e],r["client"+e])):void 0===i?ve.css(t,n,a):ve.style(t,n,i,a)},t,o?i:void 0,o,null)}})}),ve.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,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),ve.fn.size=function(){return this.length},ve.fn.andSelf=ve.fn.addBack,i=[],r=function(){return ve}.apply(t,i),!(void 0!==r&&(e.exports=r));var yn=n.jQuery,bn=n.$;return ve.noConflict=function(e){return n.$===ve&&(n.$=bn),e&&n.jQuery===ve&&(n.jQuery=yn),ve},o||(n.jQuery=n.$=ve),ve})},function(e,t,n){function i(){L.each(function(){var e=b(this).find(".hide-list"),t=[],n=0;if(e.length){for(e.children().each(function(){n%D===0&&t.push(""),t[t.length-1]+=this.outerHTML+"",n++}),n=0;3>n;n++){if(!t[n])return;e.before('<dl class="category-list">'+t[n]+"</dl>")}e.remove()}})}function r(e){var t={usercenter:"http://www.yohobuy.com/home?t="+(new Date).getTime(),nickname:e.profile_name,signout:"http://www.yohobuy.com/logout_"+e.token};1*e.vip.curVipInfo.curLevel===3&&(e.vip3=!0),w.find(".simple-user-center").html(m(e)),S.html(g(t))}function o(){var e={return_type:"jsonp",method:"open.passport.get"};b.getJSON("http://www.yohobuy.com/common/passport/?callback=?",e,function(e){e&&e.data&&-1!==e.data.result?r(e.data.data):window.setCookie("_UID","",{domain:".yohobuy.com",expires:-1})})}function a(e){var t={return_type:"jsonp",query:e};b.getJSON("http://search.yohobuy.com/api/suggest?callback=?",t,function(e){200===e.code&&(e.data&&e.data.length?A.html(e.data).show():A.hide())})}function s(e){var t,n;e&&window.setCookie("_g",e,{path:"/",domain:".yohobuy.com"}),window.cookie("_g")&&(t=b.parseJSON(window.cookie("_g")),n=parseInt(t._nac,10)+parseInt(t._ac,10),n=n>0?n:0,T.data({key:t._k,num:n}),N.text(n))}function l(e){var t={return_type:"jsonp",method:"open.Shoppingcart.getCartData",shopping_key:e};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",t,function(e){var t,n;200===e.code&&(n=e.data,t=b.merge(n.main_goods,n.advance_goods),t=b.merge(t,n.outlet_goods),t=b.merge(t,n.gift_goods),t=b.merge(t,n.need_pay_gifts),t&&t.length?(n.totalGoods=t,P.html(v({carData:n}))):P.html('<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>'))})}function c(e,t){var n={return_type:"jsonp",method:"open.Shoppingcart.delone",shopping_key:e.key,id:e.id,isreduce:e.isreduce};b.getJSON("http://www.yohobuy.com/common/shoppingCart/?callback=?",n,function(n){var i="";return 200===n.code?(i='{"_k":"'+e.key+'","_nac":'+n.data.total_goods_num+',"_ac":0,"_r":0}',s(i),t()):void 0})}function u(){var e=["webkit","moz","ms"],t=e[0]+"RequestAnimationFrame",n=e[1]+"RequestAnimationFrame",i=e[2]+"RequestAnimationFrame";return window[t]?function(e){requestAnimationFrame(e)}:window[n]?function(e){window[n](e)}:window[i]?function(e){window[i](e)}:function(e){window.setTimeout(e,67)}}function p(){I+=10,E.css({transform:"rotateX("+I+"deg)","-webkit-transform":"rotateX("+I+"deg)","-moz-transform":"rotateX("+I+"deg)"}),I/90%2===1&&E.toggleClass("logo-cn"),I/90%2===0&&I%360!==0?window.setTimeout(p,3e3):I%360===0?window.setTimeout(p,6e4):y(function(){p()})}function h(){var e=3e3;E.hasClass("logo-cn")&&(e=6e4),E.fadeOut(O,function(){E.toggleClass("logo-cn"),E.fadeIn(O,function(){window.setTimeout(h,e)})})}function d(){var e,t,n=["webkit","moz","ms"];for(t=0;t<n.length;t++)return e=n[t]+"RequestAnimationFrame",!!window[e]}var f,m,g,v,y,b=n(2),x=n(4),w=b(".tool-wrapper"),k=w.find(".yoho-group"),S=b("#loginBox"),_=b(".head-wrapper"),C=b("#search-form"),E=_.find(".main-logo"),A=_.find(".search-suggest"),T=_.find(".go-cart"),N=T.find(".goods-num-tip"),P=_.find(".mini-cart-wrapper"),L=b(".sub-nav-list .contain-third"),D=9,I=0,O=500;m=x.compile(b("#simple-account-info-tpl").html()||""),g=x.compile(b("#header-login-info-tpl").html()||""),v=x.compile(b("#mini-cart-tpl").html()||""),x.registerHelper("notzero",function(e,t){return"0"!==e?t.fn(this):t.inverse(this)}),d()?(y=u(),window.setTimeout(p,3e3)):window.setTimeout(h,3e3),o(),i(),setInterval(s,2e3),k.hover(function(){var e=b(this).data();b(this).text(e.cn)},function(){var e=b(this).data();b(this).text(e.en)}),C.on("keyup",".search-key",function(e){var t,n=b.trim(b(this).val()),i=A.find("li"),r=A.find(".action");if(e.which>36&&e.which<41){if(38===e.which)t=r.prev(),r.length&&t.length||(t=i.eq(i.length-1));else{if(40!==e.which)return;t=r.next(),r.length&&t.length||(t=i.eq(0))}i.removeClass("action"),t.addClass("action"),b(this).val(t.find(".searchvalue").text())}else 13===e.which?""!==n&&C.submit():(n=n.replace(new RegExp("'","gm"),""),b(this).val(n),a(n))}).on("blur",".search-key",function(){setTimeout(function(){A.hide()},200)}),T.hover(function(){var e,t="";T.hasClass("on-hover")||(e=T.data(),e&&1*e.num?(t='<div class="loading-cart"><h3>加载中,请稍后</h3></div>',l(e.key)):t='<div class="empty-cart"><h3>您的购物车暂无商品</h3></div>',P.html(t),T.addClass("on-hover"))},function(){T.removeClass("on-hover")}),T.on("click",".cart-goods-del",function(){var e,t=b(this),n=t.data();n&&(e=function(){t.closest(".goods-item").remove()},n.key=T.data().key,c(n,e))}),L.on({mouseenter:function(){var e=b(this).children(".third-nav-wrapper"),t=e.find(".show-detail"),n={};f=setTimeout(function(){e.show()},200),t.length&&!t.hasClass("show")&&(n.content_code=t.data().code,n.client_type="web",n.width=337,n.height=250,n._=new Date,b.getJSON("http://new.yohobuy.com/common/getbanner?callback=?",n,function(e){200===e.code&&(t.addClass("show"),t.find("img").attr("src",e.data.src),t.find("a").attr("href",e.data.url),t.find(".title").text(e.data.title))}))},mouseleave:function(){var e=b(this).children(".third-nav-wrapper");f&&clearTimeout(f),e.hide()}})},function(e,t,n){/*!
-	
-	 handlebars v4.0.5
-	
-	Copyright (C) 2011-2015 by Yehuda Katz
-	
-	Permission is hereby granted, free of charge, to any person obtaining a copy
-	of this software and associated documentation files (the "Software"), to deal
-	in the Software without restriction, including without limitation the rights
-	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-	copies of the Software, and to permit persons to whom the Software is
-	furnished to do so, subject to the following conditions:
-	
-	The above copyright notice and this permission notice shall be included in
-	all copies or substantial portions of the Software.
-	
-	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-	THE SOFTWARE.
-	
-	@license
-	*/
-!function(t,n){e.exports=n()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(){var e=v();return e.compile=function(t,n){return u.compile(t,n,e)},e.precompile=function(t,n){return u.precompile(t,n,e)},e.AST=l["default"],e.Compiler=u.Compiler,e.JavaScriptCompiler=h["default"],e.Parser=c.parser,e.parse=c.parse,e}var r=n(1)["default"];t.__esModule=!0;var o=n(2),a=r(o),s=n(21),l=r(s),c=n(22),u=n(27),p=n(28),h=r(p),d=n(25),f=r(d),m=n(20),g=r(m),v=a["default"].create,y=i();y.create=i,g["default"](y),y.Visitor=f["default"],y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){return e&&e.__esModule?e:{"default":e}},t.__esModule=!0},function(e,t,n){"use strict";function i(){var e=new s.HandlebarsEnvironment;return d.extend(e,s),e.SafeString=c["default"],e.Exception=p["default"],e.Utils=d,e.escapeExpression=d.escapeExpression,e.VM=m,e.template=function(t){return m.template(t,e)},e}var r=n(3)["default"],o=n(1)["default"];t.__esModule=!0;var a=n(4),s=r(a),l=n(18),c=o(l),u=n(6),p=o(u),h=n(5),d=r(h),f=n(19),m=r(f),g=n(20),v=o(g),y=i();y.create=i,v["default"](y),y["default"]=y,t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";t["default"]=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t["default"]=e,t},t.__esModule=!0},function(e,t,n){"use strict";function i(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},l.registerDefaultHelpers(this),c.registerDefaultDecorators(this)}var r=n(1)["default"];t.__esModule=!0,t.HandlebarsEnvironment=i;var o=n(5),a=n(6),s=r(a),l=n(7),c=n(15),u=n(17),p=r(u),h="4.0.5";t.VERSION=h;var d=7;t.COMPILER_REVISION=d;var f={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};t.REVISION_CHANGES=f;var m="[object Object]";i.prototype={constructor:i,logger:p["default"],log:p["default"].log,registerHelper:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(o.toString.call(e)===m)o.extend(this.partials,e);else{if("undefined"==typeof t)throw new s["default"]('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if(o.toString.call(e)===m){if(t)throw new s["default"]("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]}};var g=p["default"].log;t.log=g,t.createFrame=o.createFrame,t.logger=p["default"]},function(e,t){"use strict";function n(e){return u[e]}function i(e){for(var t=1;t<arguments.length;t++)for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e}function r(e,t){for(var n=0,i=e.length;i>n;n++)if(e[n]===t)return n;return-1}function o(e){if("string"!=typeof e){if(e&&e.toHTML)return e.toHTML();if(null==e)return"";if(!e)return e+"";e=""+e}return h.test(e)?e.replace(p,n):e}function a(e){return e||0===e?!(!m(e)||0!==e.length):!0}function s(e){var t=i({},e);return t._parent=e,t}function l(e,t){return e.path=t,e}function c(e,t){return(e?e+".":"")+t}t.__esModule=!0,t.extend=i,t.indexOf=r,t.escapeExpression=o,t.isEmpty=a,t.createFrame=s,t.blockParams=l,t.appendContextPath=c;var u={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;","=":"&#x3D;"},p=/[&<>"'`=]/g,h=/[&<>"'`=]/,d=Object.prototype.toString;t.toString=d;var f=function(e){return"function"==typeof e};f(/x/)&&(t.isFunction=f=function(e){return"function"==typeof e&&"[object Function]"===d.call(e)}),t.isFunction=f;var m=Array.isArray||function(e){return e&&"object"==typeof e?"[object Array]"===d.call(e):!1};t.isArray=m},function(e,t){"use strict";function n(e,t){var r=t&&t.loc,o=void 0,a=void 0;r&&(o=r.start.line,a=r.start.column,e+=" - "+o+":"+a);for(var s=Error.prototype.constructor.call(this,e),l=0;l<i.length;l++)this[i[l]]=s[i[l]];Error.captureStackTrace&&Error.captureStackTrace(this,n),r&&(this.lineNumber=o,this.column=a)}t.__esModule=!0;var i=["description","fileName","lineNumber","message","name","number","stack"];n.prototype=new Error,t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e),l["default"](e),u["default"](e),h["default"](e),f["default"](e),g["default"](e),y["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultHelpers=i;var o=n(8),a=r(o),s=n(9),l=r(s),c=n(10),u=r(c),p=n(11),h=r(p),d=n(12),f=r(d),m=n(13),g=r(m),v=n(14),y=r(v)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("blockHelperMissing",function(t,n){var r=n.inverse,o=n.fn;if(t===!0)return o(this);if(t===!1||null==t)return r(this);if(i.isArray(t))return t.length>0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):r(this);if(n.data&&n.ids){var a=i.createFrame(n.data);a.contextPath=i.appendContextPath(n.data.contextPath,n.name),n={data:a}}return o(t,n)})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(5),o=n(6),a=i(o);t["default"]=function(e){e.registerHelper("each",function(e,t){function n(t,n,o){c&&(c.key=t,c.index=n,c.first=0===n,c.last=!!o,u&&(c.contextPath=u+t)),l+=i(e[t],{data:c,blockParams:r.blockParams([e[t],t],[u+t,null])})}if(!t)throw new a["default"]("Must pass iterator to #each");var i=t.fn,o=t.inverse,s=0,l="",c=void 0,u=void 0;if(t.data&&t.ids&&(u=r.appendContextPath(t.data.contextPath,t.ids[0])+"."),r.isFunction(e)&&(e=e.call(this)),t.data&&(c=r.createFrame(t.data)),e&&"object"==typeof e)if(r.isArray(e))for(var p=e.length;p>s;s++)s in e&&n(s,s,s===e.length-1);else{var h=void 0;for(var d in e)e.hasOwnProperty(d)&&(void 0!==h&&n(h,s-1),h=d,s++);void 0!==h&&n(h,s-1,!0)}return 0===s&&(l=o(this)),l})},e.exports=t["default"]},function(e,t,n){"use strict";var i=n(1)["default"];t.__esModule=!0;var r=n(6),o=i(r);t["default"]=function(e){e.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new o["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("if",function(e,t){return i.isFunction(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||i.isEmpty(e)?t.inverse(this):t.fn(this)}),e.registerHelper("unless",function(t,n){return e.helpers["if"].call(this,t,{fn:n.inverse,inverse:n.fn,hash:n.hash})})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("log",function(){for(var t=[void 0],n=arguments[arguments.length-1],i=0;i<arguments.length-1;i++)t.push(arguments[i]);var r=1;null!=n.hash.level?r=n.hash.level:n.data&&null!=n.data.level&&(r=n.data.level),t[0]=r,e.log.apply(e,t)})},e.exports=t["default"]},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){e.registerHelper("lookup",function(e,t){return e&&e[t]})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerHelper("with",function(e,t){i.isFunction(e)&&(e=e.call(this));var n=t.fn;if(i.isEmpty(e))return t.inverse(this);var r=t.data;return t.data&&t.ids&&(r=i.createFrame(t.data),r.contextPath=i.appendContextPath(t.data.contextPath,t.ids[0])),n(e,{data:r,blockParams:i.blockParams([e],[r&&r.contextPath])})})},e.exports=t["default"]},function(e,t,n){"use strict";function i(e){a["default"](e)}var r=n(1)["default"];t.__esModule=!0,t.registerDefaultDecorators=i;var o=n(16),a=r(o)},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5);t["default"]=function(e){e.registerDecorator("inline",function(e,t,n,r){var o=e;return t.partials||(t.partials={},o=function(r,o){var a=n.partials;n.partials=i.extend({},a,t.partials);var s=e(r,o);return n.partials=a,s}),t.partials[r.args[0]]=r.fn,o})},e.exports=t["default"]},function(e,t,n){"use strict";t.__esModule=!0;var i=n(5),r={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=i.indexOf(r.methodMap,e.toLowerCase());e=t>=0?t:parseInt(e,10)}return e},log:function(e){if(e=r.lookupLevel(e),"undefined"!=typeof console&&r.lookupLevel(r.level)<=e){var t=r.methodMap[e];console[t]||(t="log");for(var n=arguments.length,i=Array(n>1?n-1:0),o=1;n>o;o++)i[o-1]=arguments[o];console[t].apply(console,i)}}};t["default"]=r,e.exports=t["default"]},function(e,t){"use strict";function n(e){this.string=e}t.__esModule=!0,n.prototype.toString=n.prototype.toHTML=function(){return""+this.string},t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e){var t=e&&e[0]||1,n=v.COMPILER_REVISION;if(t!==n){if(n>t){var i=v.REVISION_CHANGES[n],r=v.REVISION_CHANGES[t];throw new g["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+i+") or downgrade your runtime to an older version ("+r+").")}throw new g["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")}}function r(e,t){function n(n,i,r){r.hash&&(i=f.extend({},i,r.hash),r.ids&&(r.ids[0]=!0)),n=t.VM.resolvePartial.call(this,n,i,r);var o=t.VM.invokePartial.call(this,n,i,r);if(null==o&&t.compile&&(r.partials[r.name]=t.compile(n,e.compilerOptions,t),o=r.partials[r.name](i,r)),null!=o){if(r.indent){for(var a=o.split("\n"),s=0,l=a.length;l>s&&(a[s]||s+1!==l);s++)a[s]=r.indent+a[s];o=a.join("\n")}return o}throw new g["default"]("The partial "+r.name+" could not be compiled when running in runtime-only mode")}function i(t){function n(t){return""+e.main(r,t,r.helpers,r.partials,a,l,s)}var o=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],a=o.data;i._setup(o),!o.partial&&e.useData&&(a=c(t,a));var s=void 0,l=e.useBlockParams?[]:void 0;return e.useDepths&&(s=o.depths?t!==o.depths[0]?[t].concat(o.depths):o.depths:[t]),(n=u(e.main,n,r,o.depths||[],a,l))(t,o)}if(!t)throw new g["default"]("No environment passed to template");if(!e||!e.main)throw new g["default"]("Unknown template object: "+typeof e);e.main.decorator=e.main_d,t.VM.checkRevision(e.compiler);var r={strict:function(e,t){if(!(t in e))throw new g["default"]('"'+t+'" not defined in '+e);return e[t]},lookup:function(e,t){for(var n=e.length,i=0;n>i;i++)if(e[i]&&null!=e[i][t])return e[i][t]},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:f.escapeExpression,invokePartial:n,fn:function(t){var n=e[t];return n.decorator=e[t+"_d"],n},programs:[],program:function(e,t,n,i,r){var a=this.programs[e],s=this.fn(e);return t||r||i||n?a=o(this,e,s,t,n,i,r):a||(a=this.programs[e]=o(this,e,s)),a},data:function(e,t){for(;e&&t--;)e=e._parent;return e},merge:function(e,t){var n=e||t;return e&&t&&e!==t&&(n=f.extend({},t,e)),n},noop:t.VM.noop,compilerInfo:e.compiler};return i.isTop=!0,i._setup=function(n){n.partial?(r.helpers=n.helpers,r.partials=n.partials,r.decorators=n.decorators):(r.helpers=r.merge(n.helpers,t.helpers),e.usePartial&&(r.partials=r.merge(n.partials,t.partials)),(e.usePartial||e.useDecorators)&&(r.decorators=r.merge(n.decorators,t.decorators)))},i._child=function(t,n,i,a){if(e.useBlockParams&&!i)throw new g["default"]("must pass block params");if(e.useDepths&&!a)throw new g["default"]("must pass parent depths");return o(r,t,e[t],n,0,i,a)},i}function o(e,t,n,i,r,o,a){function s(t){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],s=a;return a&&t!==a[0]&&(s=[t].concat(a)),n(e,t,e.helpers,e.partials,r.data||i,o&&[r.blockParams].concat(o),s)}return s=u(n,s,e,a,i,o),s.program=t,s.depth=a?a.length:0,s.blockParams=r||0,s}function a(e,t,n){return e?e.call||n.name||(n.name=e,e=n.partials[e]):e="@partial-block"===n.name?n.data["partial-block"]:n.partials[n.name],e}function s(e,t,n){n.partial=!0,n.ids&&(n.data.contextPath=n.ids[0]||n.data.contextPath);var i=void 0;if(n.fn&&n.fn!==l&&(n.data=v.createFrame(n.data),i=n.data["partial-block"]=n.fn,i.partials&&(n.partials=f.extend({},n.partials,i.partials))),void 0===e&&i&&(e=i),void 0===e)throw new g["default"]("The partial "+n.name+" could not be found");return e instanceof Function?e(t,n):void 0}function l(){return""}function c(e,t){return t&&"root"in t||(t=t?v.createFrame(t):{},t.root=e),t}function u(e,t,n,i,r,o){if(e.decorator){var a={};t=e.decorator(t,a,n,i&&i[0],r,o,i),f.extend(t,a)}return t}var p=n(3)["default"],h=n(1)["default"];t.__esModule=!0,t.checkRevision=i,t.template=r,t.wrapProgram=o,t.resolvePartial=a,t.invokePartial=s,t.noop=l;var d=n(5),f=p(d),m=n(6),g=h(m),v=n(4)},function(e,t){(function(n){"use strict";t.__esModule=!0,t["default"]=function(e){var t="undefined"!=typeof n?n:window,i=t.Handlebars;e.noConflict=function(){return t.Handlebars===e&&(t.Handlebars=i),e}},e.exports=t["default"]}).call(t,function(){return this}())},function(e,t){"use strict";t.__esModule=!0;var n={helpers:{helperExpression:function(e){return"SubExpression"===e.type||("MustacheStatement"===e.type||"BlockStatement"===e.type)&&!!(e.params&&e.params.length||e.hash)},scopedId:function(e){return/^\.|this\b/.test(e.original)},simpleId:function(e){return 1===e.parts.length&&!n.helpers.scopedId(e)&&!e.depth}}};t["default"]=n,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if("Program"===e.type)return e;s["default"].yy=d,d.locInfo=function(e){return new d.SourceLocation(t&&t.srcName,e)};var n=new c["default"](t);return n.accept(s["default"].parse(e))}var r=n(1)["default"],o=n(3)["default"];t.__esModule=!0,t.parse=i;var a=n(23),s=r(a),l=n(24),c=r(l),u=n(26),p=o(u),h=n(5);t.parser=s["default"];var d={};h.extend(d,p)},function(e,t){"use strict";var n=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(e,t,n,i,r,o,a){var s=o.length-1;switch(r){case 1:return o[s-1];case 2:this.$=i.prepareProgram(o[s]);break;case 3:this.$=o[s];break;case 4:this.$=o[s];break;case 5:this.$=o[s];break;case 6:this.$=o[s];break;case 7:this.$=o[s];break;case 8:this.$=o[s];break;case 9:this.$={type:"CommentStatement",value:i.stripComment(o[s]),strip:i.stripFlags(o[s],o[s]),loc:i.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:o[s],value:o[s],loc:i.locInfo(this._$)};break;case 11:this.$=i.prepareRawBlock(o[s-2],o[s-1],o[s],this._$);break;case 12:this.$={path:o[s-3],params:o[s-2],hash:o[s-1]};break;case 13:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!1,this._$);break;case 14:this.$=i.prepareBlock(o[s-3],o[s-2],o[s-1],o[s],!0,this._$);break;case 15:this.$={open:o[s-5],path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 16:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 17:this.$={path:o[s-4],params:o[s-3],hash:o[s-2],blockParams:o[s-1],strip:i.stripFlags(o[s-5],o[s])};break;case 18:this.$={strip:i.stripFlags(o[s-1],o[s-1]),program:o[s]};break;case 19:var l=i.prepareBlock(o[s-2],o[s-1],o[s],o[s],!1,this._$),c=i.prepareProgram([l],o[s-1].loc);c.chained=!0,this.$={strip:o[s-2].strip,program:c,chain:!0};break;case 20:this.$=o[s];break;case 21:this.$={path:o[s-1],strip:i.stripFlags(o[s-2],o[s])};break;case 22:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 23:this.$=i.prepareMustache(o[s-3],o[s-2],o[s-1],o[s-4],i.stripFlags(o[s-4],o[s]),this._$);break;case 24:this.$={type:"PartialStatement",name:o[s-3],params:o[s-2],hash:o[s-1],indent:"",strip:i.stripFlags(o[s-4],o[s]),loc:i.locInfo(this._$)};break;case 25:this.$=i.preparePartialBlock(o[s-2],o[s-1],o[s],this._$);break;case 26:this.$={path:o[s-3],params:o[s-2],hash:o[s-1],strip:i.stripFlags(o[s-4],o[s])};break;case 27:this.$=o[s];break;case 28:this.$=o[s];break;case 29:this.$={type:"SubExpression",path:o[s-3],params:o[s-2],hash:o[s-1],loc:i.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:o[s],loc:i.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:i.id(o[s-2]),value:o[s],loc:i.locInfo(this._$)};break;case 32:this.$=i.id(o[s-1]);break;case 33:this.$=o[s];break;case 34:this.$=o[s];break;case 35:this.$={type:"StringLiteral",value:o[s],original:o[s],loc:i.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(o[s]),original:Number(o[s]),loc:i.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===o[s],original:"true"===o[s],loc:i.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:i.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:i.locInfo(this._$)};break;case 40:this.$=o[s];break;case 41:this.$=o[s];break;case 42:this.$=i.preparePath(!0,o[s],this._$);break;case 43:this.$=i.preparePath(!1,o[s],this._$);break;case 44:o[s-2].push({part:i.id(o[s]),original:o[s],separator:o[s-1]}),this.$=o[s-2];break;case 45:this.$=[{part:i.id(o[s]),original:o[s]}];break;case 46:this.$=[];break;case 47:o[s-1].push(o[s]);break;case 48:this.$=[o[s]];break;case 49:o[s-1].push(o[s]);break;case 50:this.$=[];break;case 51:o[s-1].push(o[s]);break;case 58:this.$=[];break;case 59:o[s-1].push(o[s]);break;case 64:this.$=[];break;case 65:o[s-1].push(o[s]);break;case 70:this.$=[];break;case 71:o[s-1].push(o[s]);break;case 78:this.$=[];break;case 79:o[s-1].push(o[s]);break;case 82:this.$=[];break;case 83:o[s-1].push(o[s]);break;case 86:this.$=[];break;case 87:o[s-1].push(o[s]);break;case 90:this.$=[];break;case 91:o[s-1].push(o[s]);break;case 94:this.$=[];break;case 95:o[s-1].push(o[s]);break;case 98:this.$=[o[s]];break;case 99:o[s-1].push(o[s]);break;case 100:this.$=[o[s]];break;case 101:o[s-1].push(o[s])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],
-47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,i=[0],r=[null],o=[],a=this.table,s="",l=0,c=0,u=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;o.push(p);var h=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var d,f,m,g,v,y,b,x,w,k={};;){if(m=i[i.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null!==d&&"undefined"!=typeof d||(d=t()),g=a[m]&&a[m][d]),"undefined"==typeof g||!g.length||!g[0]){var S="";if(!u){w=[];for(y in a[m])this.terminals_[y]&&y>2&&w.push("'"+this.terminals_[y]+"'");S=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[d]||d)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==d?"end of input":"'"+(this.terminals_[d]||d)+"'"),this.parseError(S,{text:this.lexer.match,token:this.terminals_[d]||d,line:this.lexer.yylineno,loc:p,expected:w})}}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+d);switch(g[0]){case 1:i.push(d),r.push(this.lexer.yytext),o.push(this.lexer.yylloc),i.push(g[1]),d=null,f?(d=f,f=null):(c=this.lexer.yyleng,s=this.lexer.yytext,l=this.lexer.yylineno,p=this.lexer.yylloc,u>0&&u--);break;case 2:if(b=this.productions_[g[1]][1],k.$=r[r.length-b],k._$={first_line:o[o.length-(b||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(b||1)].first_column,last_column:o[o.length-1].last_column},h&&(k._$.range=[o[o.length-(b||1)].range[0],o[o.length-1].range[1]]),v=this.performAction.call(k,s,c,l,this.yy,g[1],r,o),"undefined"!=typeof v)return v;b&&(i=i.slice(0,-1*b*2),r=r.slice(0,-1*b),o=o.slice(0,-1*b)),i.push(this.productions_[g[1]][0]),r.push(k.$),o.push(k._$),x=a[i[i.length-2]][i[i.length-1]],i.push(x);break;case 3:return!0}}return!0}},n=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this},more:function(){return this._more=!0,this},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),a=0;a<o.length&&(n=this._input.match(this.rules[o[a]]),!n||t&&!(n[0].length>t[0].length)||(t=n,i=a,this.options.flex));a++);return t?(r=t[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){function r(e,n){return t.yytext=t.yytext.substr(e,t.yyleng-n)}switch(n){case 0:if("\\\\"===t.yytext.slice(-2)?(r(0,1),this.begin("mu")):"\\"===t.yytext.slice(-1)?(r(0,1),this.begin("emu")):this.begin("mu"),t.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(t.yytext=t.yytext.substr(5,t.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(t.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return t.yytext=r(1,2).replace(/\\"/g,'"'),80;case 32:return t.yytext=r(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return t.yytext=t.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},e.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],e.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},e}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();t.__esModule=!0,t["default"]=n},function(e,t,n){"use strict";function i(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=e}function r(e,t,n){void 0===t&&(t=e.length);var i=e[t-1],r=e[t-2];return i?"ContentStatement"===i.type?(r||!n?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(i.original):void 0:n}function o(e,t,n){void 0===t&&(t=-1);var i=e[t+1],r=e[t+2];return i?"ContentStatement"===i.type?(r||!n?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(i.original):void 0:n}function a(e,t,n){var i=e[null==t?0:t+1];if(i&&"ContentStatement"===i.type&&(n||!i.rightStripped)){var r=i.value;i.value=i.value.replace(n?/^\s+/:/^[ \t]*\r?\n?/,""),i.rightStripped=i.value!==r}}function s(e,t,n){var i=e[null==t?e.length-1:t-1];if(i&&"ContentStatement"===i.type&&(n||!i.leftStripped)){var r=i.value;return i.value=i.value.replace(n?/\s+$/:/[ \t]+$/,""),i.leftStripped=i.value!==r,i.leftStripped}}var l=n(1)["default"];t.__esModule=!0;var c=n(25),u=l(c);i.prototype=new u["default"],i.prototype.Program=function(e){var t=!this.options.ignoreStandalone,n=!this.isRootSeen;this.isRootSeen=!0;for(var i=e.body,l=0,c=i.length;c>l;l++){var u=i[l],p=this.accept(u);if(p){var h=r(i,l,n),d=o(i,l,n),f=p.openStandalone&&h,m=p.closeStandalone&&d,g=p.inlineStandalone&&h&&d;p.close&&a(i,l,!0),p.open&&s(i,l,!0),t&&g&&(a(i,l),s(i,l)&&"PartialStatement"===u.type&&(u.indent=/([ \t]+$)/.exec(i[l-1].original)[1])),t&&f&&(a((u.program||u.inverse).body),s(i,l)),t&&m&&(a(i,l),s((u.inverse||u.program).body))}}return e},i.prototype.BlockStatement=i.prototype.DecoratorBlock=i.prototype.PartialBlockStatement=function(e){this.accept(e.program),this.accept(e.inverse);var t=e.program||e.inverse,n=e.program&&e.inverse,i=n,l=n;if(n&&n.chained)for(i=n.body[0].program;l.chained;)l=l.body[l.body.length-1].program;var c={open:e.openStrip.open,close:e.closeStrip.close,openStandalone:o(t.body),closeStandalone:r((i||t).body)};if(e.openStrip.close&&a(t.body,null,!0),n){var u=e.inverseStrip;u.open&&s(t.body,null,!0),u.close&&a(i.body,null,!0),e.closeStrip.open&&s(l.body,null,!0),!this.options.ignoreStandalone&&r(t.body)&&o(i.body)&&(s(t.body),a(i.body))}else e.closeStrip.open&&s(t.body,null,!0);return c},i.prototype.Decorator=i.prototype.MustacheStatement=function(e){return e.strip},i.prototype.PartialStatement=i.prototype.CommentStatement=function(e){var t=e.strip||{};return{inlineStandalone:!0,open:t.open,close:t.close}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(){this.parents=[]}function r(e){this.acceptRequired(e,"path"),this.acceptArray(e.params),this.acceptKey(e,"hash")}function o(e){r.call(this,e),this.acceptKey(e,"program"),this.acceptKey(e,"inverse")}function a(e){this.acceptRequired(e,"name"),this.acceptArray(e.params),this.acceptKey(e,"hash")}var s=n(1)["default"];t.__esModule=!0;var l=n(6),c=s(l);i.prototype={constructor:i,mutating:!1,acceptKey:function(e,t){var n=this.accept(e[t]);if(this.mutating){if(n&&!i.prototype[n.type])throw new c["default"]('Unexpected node type "'+n.type+'" found when accepting '+t+" on "+e.type);e[t]=n}},acceptRequired:function(e,t){if(this.acceptKey(e,t),!e[t])throw new c["default"](e.type+" requires "+t)},acceptArray:function(e){for(var t=0,n=e.length;n>t;t++)this.acceptKey(e,t),e[t]||(e.splice(t,1),t--,n--)},accept:function(e){if(e){if(!this[e.type])throw new c["default"]("Unknown type: "+e.type,e);this.current&&this.parents.unshift(this.current),this.current=e;var t=this[e.type](e);return this.current=this.parents.shift(),!this.mutating||t?t:t!==!1?e:void 0}},Program:function(e){this.acceptArray(e.body)},MustacheStatement:r,Decorator:r,BlockStatement:o,DecoratorBlock:o,PartialStatement:a,PartialBlockStatement:function(e){a.call(this,e),this.acceptKey(e,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:r,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(e){this.acceptArray(e.pairs)},HashPair:function(e){this.acceptRequired(e,"value")}},t["default"]=i,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t){if(t=t.path?t.path.original:t,e.path.original!==t){var n={loc:e.path.loc};throw new g["default"](e.path.original+" doesn't match "+t,n)}}function r(e,t){this.source=e,this.start={line:t.first_line,column:t.first_column},this.end={line:t.last_line,column:t.last_column}}function o(e){return/^\[.*\]$/.test(e)?e.substr(1,e.length-2):e}function a(e,t){return{open:"~"===e.charAt(2),close:"~"===t.charAt(t.length-3)}}function s(e){return e.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function l(e,t,n){n=this.locInfo(n);for(var i=e?"@":"",r=[],o=0,a="",s=0,l=t.length;l>s;s++){var c=t[s].part,u=t[s].original!==c;if(i+=(t[s].separator||"")+c,u||".."!==c&&"."!==c&&"this"!==c)r.push(c);else{if(r.length>0)throw new g["default"]("Invalid path: "+i,{loc:n});".."===c&&(o++,a+="../")}}return{type:"PathExpression",data:e,depth:o,parts:r,original:i,loc:n}}function c(e,t,n,i,r,o){var a=i.charAt(3)||i.charAt(2),s="{"!==a&&"&"!==a,l=/\*/.test(i);return{type:l?"Decorator":"MustacheStatement",path:e,params:t,hash:n,escaped:s,strip:r,loc:this.locInfo(o)}}function u(e,t,n,r){i(e,n),r=this.locInfo(r);var o={type:"Program",body:t,strip:{},loc:r};return{type:"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:o,openStrip:{},inverseStrip:{},closeStrip:{},loc:r}}function p(e,t,n,r,o,a){r&&r.path&&i(e,r);var s=/\*/.test(e.open);t.blockParams=e.blockParams;var l=void 0,c=void 0;if(n){if(s)throw new g["default"]("Unexpected inverse block on decorator",n);n.chain&&(n.program.body[0].closeStrip=r.strip),c=n.strip,l=n.program}return o&&(o=l,l=t,t=o),{type:s?"DecoratorBlock":"BlockStatement",path:e.path,params:e.params,hash:e.hash,program:t,inverse:l,openStrip:e.strip,inverseStrip:c,closeStrip:r&&r.strip,loc:this.locInfo(a)}}function h(e,t){if(!t&&e.length){var n=e[0].loc,i=e[e.length-1].loc;n&&i&&(t={source:n.source,start:{line:n.start.line,column:n.start.column},end:{line:i.end.line,column:i.end.column}})}return{type:"Program",body:e,strip:{},loc:t}}function d(e,t,n,r){return i(e,n),{type:"PartialBlockStatement",name:e.path,params:e.params,hash:e.hash,program:t,openStrip:e.strip,closeStrip:n&&n.strip,loc:this.locInfo(r)}}var f=n(1)["default"];t.__esModule=!0,t.SourceLocation=r,t.id=o,t.stripFlags=a,t.stripComment=s,t.preparePath=l,t.prepareMustache=c,t.prepareRawBlock=u,t.prepareBlock=p,t.prepareProgram=h,t.preparePartialBlock=d;var m=n(6),g=f(m)},function(e,t,n){"use strict";function i(){}function r(e,t,n){if(null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+e);t=t||{},"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var i=n.parse(e,t),r=(new n.Compiler).compile(i,t);return(new n.JavaScriptCompiler).compile(r,t)}function o(e,t,n){function i(){var i=n.parse(e,t),r=(new n.Compiler).compile(i,t),o=(new n.JavaScriptCompiler).compile(r,t,void 0,!0);return n.template(o)}function r(e,t){return o||(o=i()),o.call(this,e,t)}if(void 0===t&&(t={}),null==e||"string"!=typeof e&&"Program"!==e.type)throw new u["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+e);"data"in t||(t.data=!0),t.compat&&(t.useDepths=!0);var o=void 0;return r._setup=function(e){return o||(o=i()),o._setup(e)},r._child=function(e,t,n,r){return o||(o=i()),o._child(e,t,n,r)},r}function a(e,t){if(e===t)return!0;if(p.isArray(e)&&p.isArray(t)&&e.length===t.length){for(var n=0;n<e.length;n++)if(!a(e[n],t[n]))return!1;return!0}}function s(e){if(!e.path.parts){var t=e.path;e.path={type:"PathExpression",data:!1,depth:0,parts:[t.original+""],original:t.original+"",loc:t.loc}}}var l=n(1)["default"];t.__esModule=!0,t.Compiler=i,t.precompile=r,t.compile=o;var c=n(6),u=l(c),p=n(5),h=n(21),d=l(h),f=[].slice;i.prototype={compiler:i,equals:function(e){var t=this.opcodes.length;if(e.opcodes.length!==t)return!1;for(var n=0;t>n;n++){var i=this.opcodes[n],r=e.opcodes[n];if(i.opcode!==r.opcode||!a(i.args,r.args))return!1}t=this.children.length;for(var n=0;t>n;n++)if(!this.children[n].equals(e.children[n]))return!1;return!0},guid:0,compile:function(e,t){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=t,this.stringParams=t.stringParams,this.trackIds=t.trackIds,t.blockParams=t.blockParams||[];var n=t.knownHelpers;if(t.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},n)for(var i in n)i in n&&(t.knownHelpers[i]=n[i]);return this.accept(e)},compileProgram:function(e){var t=new this.compiler,n=t.compile(e,this.options),i=this.guid++;return this.usePartial=this.usePartial||n.usePartial,this.children[i]=n,this.useDepths=this.useDepths||n.useDepths,i},accept:function(e){if(!this[e.type])throw new u["default"]("Unknown type: "+e.type,e);this.sourceNode.unshift(e);var t=this[e.type](e);return this.sourceNode.shift(),t},Program:function(e){this.options.blockParams.unshift(e.blockParams);for(var t=e.body,n=t.length,i=0;n>i;i++)this.accept(t[i]);return this.options.blockParams.shift(),this.isSimple=1===n,this.blockParams=e.blockParams?e.blockParams.length:0,this},BlockStatement:function(e){s(e);var t=e.program,n=e.inverse;t=t&&this.compileProgram(t),n=n&&this.compileProgram(n);var i=this.classifySexpr(e);"helper"===i?this.helperSexpr(e,t,n):"simple"===i?(this.simpleSexpr(e),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("blockValue",e.path.original)):(this.ambiguousSexpr(e,t,n),this.opcode("pushProgram",t),this.opcode("pushProgram",n),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(e){var t=e.program&&this.compileProgram(e.program),n=this.setupFullMustacheParams(e,t,void 0),i=e.path;this.useDecorators=!0,this.opcode("registerDecorator",n.length,i.original)},PartialStatement:function(e){this.usePartial=!0;var t=e.program;t&&(t=this.compileProgram(e.program));var n=e.params;if(n.length>1)throw new u["default"]("Unsupported number of partial arguments: "+n.length,e);n.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):n.push({type:"PathExpression",parts:[],depth:0}));var i=e.name.original,r="SubExpression"===e.name.type;r&&this.accept(e.name),this.setupFullMustacheParams(e,t,void 0,!0);var o=e.indent||"";this.options.preventIndent&&o&&(this.opcode("appendContent",o),o=""),this.opcode("invokePartial",r,i,o),this.opcode("append")},PartialBlockStatement:function(e){this.PartialStatement(e)},MustacheStatement:function(e){this.SubExpression(e),e.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(e){this.DecoratorBlock(e)},ContentStatement:function(e){e.value&&this.opcode("appendContent",e.value)},CommentStatement:function(){},SubExpression:function(e){s(e);var t=this.classifySexpr(e);"simple"===t?this.simpleSexpr(e):"helper"===t?this.helperSexpr(e):this.ambiguousSexpr(e)},ambiguousSexpr:function(e,t,n){var i=e.path,r=i.parts[0],o=null!=t||null!=n;this.opcode("getContext",i.depth),this.opcode("pushProgram",t),this.opcode("pushProgram",n),i.strict=!0,this.accept(i),this.opcode("invokeAmbiguous",r,o)},simpleSexpr:function(e){var t=e.path;t.strict=!0,this.accept(t),this.opcode("resolvePossibleLambda")},helperSexpr:function(e,t,n){var i=this.setupFullMustacheParams(e,t,n),r=e.path,o=r.parts[0];if(this.options.knownHelpers[o])this.opcode("invokeKnownHelper",i.length,o);else{if(this.options.knownHelpersOnly)throw new u["default"]("You specified knownHelpersOnly, but used the unknown helper "+o,e);r.strict=!0,r.falsy=!0,this.accept(r),this.opcode("invokeHelper",i.length,r.original,d["default"].helpers.simpleId(r))}},PathExpression:function(e){this.addDepth(e.depth),this.opcode("getContext",e.depth);var t=e.parts[0],n=d["default"].helpers.scopedId(e),i=!e.depth&&!n&&this.blockParamIndex(t);i?this.opcode("lookupBlockParam",i,e.parts):t?e.data?(this.options.data=!0,this.opcode("lookupData",e.depth,e.parts,e.strict)):this.opcode("lookupOnContext",e.parts,e.falsy,e.strict,n):this.opcode("pushContext")},StringLiteral:function(e){this.opcode("pushString",e.value)},NumberLiteral:function(e){this.opcode("pushLiteral",e.value)},BooleanLiteral:function(e){this.opcode("pushLiteral",e.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(e){var t=e.pairs,n=0,i=t.length;for(this.opcode("pushHash");i>n;n++)this.pushParam(t[n].value);for(;n--;)this.opcode("assignToHash",t[n].key);this.opcode("popHash")},opcode:function(e){this.opcodes.push({opcode:e,args:f.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(e){e&&(this.useDepths=!0)},classifySexpr:function(e){var t=d["default"].helpers.simpleId(e.path),n=t&&!!this.blockParamIndex(e.path.parts[0]),i=!n&&d["default"].helpers.helperExpression(e),r=!n&&(i||t);if(r&&!i){var o=e.path.parts[0],a=this.options;a.knownHelpers[o]?i=!0:a.knownHelpersOnly&&(r=!1)}return i?"helper":r?"ambiguous":"simple"},pushParams:function(e){for(var t=0,n=e.length;n>t;t++)this.pushParam(e[t])},pushParam:function(e){var t=null!=e.value?e.value:e.original||"";if(this.stringParams)t.replace&&(t=t.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),e.depth&&this.addDepth(e.depth),this.opcode("getContext",e.depth||0),this.opcode("pushStringParam",t,e.type),"SubExpression"===e.type&&this.accept(e);else{if(this.trackIds){var n=void 0;if(!e.parts||d["default"].helpers.scopedId(e)||e.depth||(n=this.blockParamIndex(e.parts[0])),n){var i=e.parts.slice(1).join(".");this.opcode("pushId","BlockParam",n,i)}else t=e.original||t,t.replace&&(t=t.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",e.type,t)}this.accept(e)}},setupFullMustacheParams:function(e,t,n,i){var r=e.params;return this.pushParams(r),this.opcode("pushProgram",t),this.opcode("pushProgram",n),e.hash?this.accept(e.hash):this.opcode("emptyHash",i),r},blockParamIndex:function(e){for(var t=0,n=this.options.blockParams.length;n>t;t++){var i=this.options.blockParams[t],r=i&&p.indexOf(i,e);if(i&&r>=0)return[t,r]}}}},function(e,t,n){"use strict";function i(e){this.value=e}function r(){}function o(e,t,n,i){var r=t.popStack(),o=0,a=n.length;for(e&&a--;a>o;o++)r=t.nameLookup(r,n[o],i);return e?[t.aliasable("container.strict"),"(",r,", ",t.quotedString(n[o]),")"]:r}var a=n(1)["default"];t.__esModule=!0;var s=n(4),l=n(6),c=a(l),u=n(5),p=n(29),h=a(p);r.prototype={nameLookup:function(e,t){return r.isValidJavaScriptVariableName(t)?[e,".",t]:[e,"[",JSON.stringify(t),"]"]},depthedLookup:function(e){return[this.aliasable("container.lookup"),'(depths, "',e,'")']},compilerInfo:function(){var e=s.COMPILER_REVISION,t=s.REVISION_CHANGES[e];return[e,t]},appendToBuffer:function(e,t,n){return u.isArray(e)||(e=[e]),e=this.source.wrap(e,t),this.environment.isSimple?["return ",e,";"]:n?["buffer += ",e,";"]:(e.appendToBuffer=!0,e)},initializeBuffer:function(){return this.quotedString("")},compile:function(e,t,n,i){this.environment=e,this.options=t,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!i,this.name=this.environment.name,this.isChild=!!n,this.context=n||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(e,t),this.useDepths=this.useDepths||e.useDepths||e.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||e.useBlockParams;var r=e.opcodes,o=void 0,a=void 0,s=void 0,l=void 0;for(s=0,l=r.length;l>s;s++)o=r[s],this.source.currentLocation=o.loc,a=a||o.loc,this[o.opcode].apply(this,o.args);if(this.source.currentLocation=a,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new c["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),i?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var u=this.createFunctionContext(i);if(this.isChild)return u;var p={compiler:this.compilerInfo(),main:u};this.decorators&&(p.main_d=this.decorators,p.useDecorators=!0);var h=this.context,d=h.programs,f=h.decorators;for(s=0,l=d.length;l>s;s++)d[s]&&(p[s]=d[s],f[s]&&(p[s+"_d"]=f[s],p.useDecorators=!0));return this.environment.usePartial&&(p.usePartial=!0),this.options.data&&(p.useData=!0),this.useDepths&&(p.useDepths=!0),this.useBlockParams&&(p.useBlockParams=!0),this.options.compat&&(p.compat=!0),i?p.compilerOptions=this.options:(p.compiler=JSON.stringify(p.compiler),this.source.currentLocation={start:{line:1,column:0}},p=this.objectLiteral(p),t.srcName?(p=p.toStringWithSourceMap({file:t.destName}),p.map=p.map&&p.map.toString()):p=p.toString()),p},preamble:function(){this.lastContext=0,this.source=new h["default"](this.options.srcName),this.decorators=new h["default"](this.options.srcName)},createFunctionContext:function(e){var t="",n=this.stackVars.concat(this.registers.list);n.length>0&&(t+=", "+n.join(", "));var i=0;for(var r in this.aliases){var o=this.aliases[r];this.aliases.hasOwnProperty(r)&&o.children&&o.referenceCount>1&&(t+=", alias"+ ++i+"="+r,o.children[0]="alias"+i)}var a=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&a.push("blockParams"),this.useDepths&&a.push("depths");var s=this.mergeSource(t);return e?(a.push(s),Function.apply(this,a)):this.source.wrap(["function(",a.join(","),") {\n  ",s,"}"])},mergeSource:function(e){var t=this.environment.isSimple,n=!this.forceBuffer,i=void 0,r=void 0,o=void 0,a=void 0;return this.source.each(function(e){e.appendToBuffer?(o?e.prepend("  + "):o=e,a=e):(o&&(r?o.prepend("buffer += "):i=!0,a.add(";"),o=a=void 0),r=!0,t||(n=!1))}),n?o?(o.prepend("return "),a.add(";")):r||this.source.push('return "";'):(e+=", buffer = "+(i?"":this.initializeBuffer()),o?(o.prepend("return buffer + "),a.add(";")):this.source.push("return buffer;")),e&&this.source.prepend("var "+e.substring(2)+(i?"":";\n")),this.source.merge()},blockValue:function(e){var t=this.aliasable("helpers.blockHelperMissing"),n=[this.contextName(0)];this.setupHelperArgs(e,0,n);var i=this.popStack();n.splice(1,0,i),this.push(this.source.functionCall(t,"call",n))},ambiguousBlockValue:function(){var e=this.aliasable("helpers.blockHelperMissing"),t=[this.contextName(0)];this.setupHelperArgs("",0,t,!0),this.flushInline();var n=this.topStack();t.splice(1,0,n),this.pushSource(["if (!",this.lastHelper,") { ",n," = ",this.source.functionCall(e,"call",t),"}"])},appendContent:function(e){this.pendingContent?e=this.pendingContent+e:this.pendingLocation=this.source.currentLocation,this.pendingContent=e},append:function(){if(this.isInline())this.replaceStack(function(e){return[" != null ? ",e,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var e=this.popStack();this.pushSource(["if (",e," != null) { ",this.appendToBuffer(e,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(e){this.lastContext=e},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(e,t,n,i){var r=0;i||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(e[r++])),this.resolvePath("context",e,r,t,n)},lookupBlockParam:function(e,t){this.useBlockParams=!0,this.push(["blockParams[",e[0],"][",e[1],"]"]),this.resolvePath("context",t,1)},lookupData:function(e,t,n){e?this.pushStackLiteral("container.data(data, "+e+")"):this.pushStackLiteral("data"),this.resolvePath("data",t,0,!0,n)},resolvePath:function(e,t,n,i,r){var a=this;if(this.options.strict||this.options.assumeObjects)return void this.push(o(this.options.strict&&r,this,t,e));for(var s=t.length;s>n;n++)this.replaceStack(function(r){var o=a.nameLookup(r,t[n],e);return i?[" && ",o]:[" != null ? ",o," : ",r]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(e,t){this.pushContext(),this.pushString(t),"SubExpression"!==t&&("string"==typeof e?this.pushString(e):this.pushStackLiteral(e))},emptyHash:function(e){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(e?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var e=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(e.ids)),this.stringParams&&(this.push(this.objectLiteral(e.contexts)),this.push(this.objectLiteral(e.types))),this.push(this.objectLiteral(e.values))},pushString:function(e){this.pushStackLiteral(this.quotedString(e))},pushLiteral:function(e){this.pushStackLiteral(e)},pushProgram:function(e){null!=e?this.pushStackLiteral(this.programExpression(e)):this.pushStackLiteral(null)},registerDecorator:function(e,t){var n=this.nameLookup("decorators",t,"decorator"),i=this.setupHelperArgs(t,e);this.decorators.push(["fn = ",this.decorators.functionCall(n,"",["fn","props","container",i])," || fn;"])},invokeHelper:function(e,t,n){var i=this.popStack(),r=this.setupHelper(e,t),o=n?[r.name," || "]:"",a=["("].concat(o,i);this.options.strict||a.push(" || ",this.aliasable("helpers.helperMissing")),a.push(")"),this.push(this.source.functionCall(a,"call",r.callParams))},invokeKnownHelper:function(e,t){var n=this.setupHelper(e,t);this.push(this.source.functionCall(n.name,"call",n.callParams))},invokeAmbiguous:function(e,t){this.useRegister("helper");var n=this.popStack();this.emptyHash();var i=this.setupHelper(0,e,t),r=this.lastHelper=this.nameLookup("helpers",e,"helper"),o=["(","(helper = ",r," || ",n,")"];this.options.strict||(o[0]="(helper = ",o.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",o,i.paramsInit?["),(",i.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",i.callParams)," : helper))"])},invokePartial:function(e,t,n){var i=[],r=this.setupParams(t,1,i);e&&(t=this.popStack(),delete r.name),n&&(r.indent=JSON.stringify(n)),r.helpers="helpers",r.partials="partials",r.decorators="container.decorators",e?i.unshift(t):i.unshift(this.nameLookup("partials",t,"partial")),this.options.compat&&(r.depths="depths"),r=this.objectLiteral(r),i.push(r),this.push(this.source.functionCall("container.invokePartial","",i))},assignToHash:function(e){var t=this.popStack(),n=void 0,i=void 0,r=void 0;this.trackIds&&(r=this.popStack()),
-this.stringParams&&(i=this.popStack(),n=this.popStack());var o=this.hash;n&&(o.contexts[e]=n),i&&(o.types[e]=i),r&&(o.ids[e]=r),o.values[e]=t},pushId:function(e,t,n){"BlockParam"===e?this.pushStackLiteral("blockParams["+t[0]+"].path["+t[1]+"]"+(n?" + "+JSON.stringify("."+n):"")):"PathExpression"===e?this.pushString(t):"SubExpression"===e?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:r,compileChildren:function(e,t){for(var n=e.children,i=void 0,r=void 0,o=0,a=n.length;a>o;o++){i=n[o],r=new this.compiler;var s=this.matchExistingProgram(i);null==s?(this.context.programs.push(""),s=this.context.programs.length,i.index=s,i.name="program"+s,this.context.programs[s]=r.compile(i,t,this.context,!this.precompile),this.context.decorators[s]=r.decorators,this.context.environments[s]=i,this.useDepths=this.useDepths||r.useDepths,this.useBlockParams=this.useBlockParams||r.useBlockParams):(i.index=s,i.name="program"+s,this.useDepths=this.useDepths||i.useDepths,this.useBlockParams=this.useBlockParams||i.useBlockParams)}},matchExistingProgram:function(e){for(var t=0,n=this.context.environments.length;n>t;t++){var i=this.context.environments[t];if(i&&i.equals(e))return t}},programExpression:function(e){var t=this.environment.children[e],n=[t.index,"data",t.blockParams];return(this.useBlockParams||this.useDepths)&&n.push("blockParams"),this.useDepths&&n.push("depths"),"container.program("+n.join(", ")+")"},useRegister:function(e){this.registers[e]||(this.registers[e]=!0,this.registers.list.push(e))},push:function(e){return e instanceof i||(e=this.source.wrap(e)),this.inlineStack.push(e),e},pushStackLiteral:function(e){this.push(new i(e))},pushSource:function(e){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),e&&this.source.push(e)},replaceStack:function(e){var t=["("],n=void 0,r=void 0,o=void 0;if(!this.isInline())throw new c["default"]("replaceStack on non-inline");var a=this.popStack(!0);if(a instanceof i)n=[a.value],t=["(",n],o=!0;else{r=!0;var s=this.incrStack();t=["((",this.push(s)," = ",a,")"],n=this.topStack()}var l=e.call(this,n);o||this.popStack(),r&&this.stackSlot--,this.push(t.concat(l,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var e=this.inlineStack;this.inlineStack=[];for(var t=0,n=e.length;n>t;t++){var r=e[t];if(r instanceof i)this.compileStack.push(r);else{var o=this.incrStack();this.pushSource([o," = ",r,";"]),this.compileStack.push(o)}}},isInline:function(){return this.inlineStack.length},popStack:function(e){var t=this.isInline(),n=(t?this.inlineStack:this.compileStack).pop();if(!e&&n instanceof i)return n.value;if(!t){if(!this.stackSlot)throw new c["default"]("Invalid stack pop");this.stackSlot--}return n},topStack:function(){var e=this.isInline()?this.inlineStack:this.compileStack,t=e[e.length-1];return t instanceof i?t.value:t},contextName:function(e){return this.useDepths&&e?"depths["+e+"]":"depth"+e},quotedString:function(e){return this.source.quotedString(e)},objectLiteral:function(e){return this.source.objectLiteral(e)},aliasable:function(e){var t=this.aliases[e];return t?(t.referenceCount++,t):(t=this.aliases[e]=this.source.wrap(e),t.aliasable=!0,t.referenceCount=1,t)},setupHelper:function(e,t,n){var i=[],r=this.setupHelperArgs(t,e,i,n),o=this.nameLookup("helpers",t,"helper"),a=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : {}");return{params:i,paramsInit:r,name:o,callParams:[a].concat(i)}},setupParams:function(e,t,n){var i={},r=[],o=[],a=[],s=!n,l=void 0;s&&(n=[]),i.name=this.quotedString(e),i.hash=this.popStack(),this.trackIds&&(i.hashIds=this.popStack()),this.stringParams&&(i.hashTypes=this.popStack(),i.hashContexts=this.popStack());var c=this.popStack(),u=this.popStack();(u||c)&&(i.fn=u||"container.noop",i.inverse=c||"container.noop");for(var p=t;p--;)l=this.popStack(),n[p]=l,this.trackIds&&(a[p]=this.popStack()),this.stringParams&&(o[p]=this.popStack(),r[p]=this.popStack());return s&&(i.args=this.source.generateArray(n)),this.trackIds&&(i.ids=this.source.generateArray(a)),this.stringParams&&(i.types=this.source.generateArray(o),i.contexts=this.source.generateArray(r)),this.options.data&&(i.data="data"),this.useBlockParams&&(i.blockParams="blockParams"),i},setupHelperArgs:function(e,t,n,i){var r=this.setupParams(e,t,n);return r=this.objectLiteral(r),i?(this.useRegister("options"),n.push("options"),["options=",r]):n?(n.push(r),""):r}},function(){for(var e="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),t=r.RESERVED_WORDS={},n=0,i=e.length;i>n;n++)t[e[n]]=!0}(),r.isValidJavaScriptVariableName=function(e){return!r.RESERVED_WORDS[e]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e)},t["default"]=r,e.exports=t["default"]},function(e,t,n){"use strict";function i(e,t,n){if(o.isArray(e)){for(var i=[],r=0,a=e.length;a>r;r++)i.push(t.wrap(e[r],n));return i}return"boolean"==typeof e||"number"==typeof e?e+"":e}function r(e){this.srcFile=e,this.source=[]}t.__esModule=!0;var o=n(5),a=void 0;try{}catch(s){}a||(a=function(e,t,n,i){this.src="",i&&this.add(i)},a.prototype={add:function(e){o.isArray(e)&&(e=e.join("")),this.src+=e},prepend:function(e){o.isArray(e)&&(e=e.join("")),this.src=e+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),r.prototype={isEmpty:function(){return!this.source.length},prepend:function(e,t){this.source.unshift(this.wrap(e,t))},push:function(e,t){this.source.push(this.wrap(e,t))},merge:function(){var e=this.empty();return this.each(function(t){e.add(["  ",t,"\n"])}),e},each:function(e){for(var t=0,n=this.source.length;n>t;t++)e(this.source[t])},empty:function(){var e=this.currentLocation||{start:{}};return new a(e.start.line,e.start.column,this.srcFile)},wrap:function(e){var t=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return e instanceof a?e:(e=i(e,this,t),new a(t.start.line,t.start.column,this.srcFile,e))},functionCall:function(e,t,n){return n=this.generateList(n),this.wrap([e,t?"."+t+"(":"(",n,")"])},quotedString:function(e){return'"'+(e+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(e){var t=[];for(var n in e)if(e.hasOwnProperty(n)){var r=i(e[n],this);"undefined"!==r&&t.push([this.quotedString(n),":",r])}var o=this.generateList(t);return o.prepend("{"),o.add("}"),o},generateList:function(e){for(var t=this.empty(),n=0,r=e.length;r>n;n++)n&&t.add(","),t.add(i(e[n],this));return t},generateArray:function(e){var t=this.generateList(e);return t.prepend("["),t.add("]"),t}},t["default"]=r,e.exports=t["default"]}])})},function(e,t,n){function i(){var e=a("#subscriber-box"),t=a("#subscriber-btn"),n=/^[.\-_a-zA-Z0-9]+@[\-_a-zA-Z0-9]+\.[a-zA-Z0-9]/,i={mail:"&#xe601;",tick:"&#xe605;"};e.focus(function(){a(this).val("").css("color",""),t.removeClass("done").html(i.mail)}),t.click(function(){var r=a.trim(e.val());if(""!==r&&n.test(r))try{a.ajax({url:"http://new.yohobuy.com/common/emailsubscriber",dataType:"jsonp",data:{email:r,tmp:Math.random(),uid:window.getUid()},success:function(n){1===n.data.result?(e.val("已订阅到:"+r),t.addClass("done").html(i.tick)):e.css("color","red")}})}catch(o){console.log(o.message)}else e.css("color","red")})}function r(){var e=a(".vote"),t=a("#feed-back-page"),n=e.children("li").length;t.on("click","span",function(){var t=a(this);t.hasClass("cur")||(t.siblings(".cur").removeClass("cur"),t.addClass("cur"),e.children().not(".hide").addClass("hide").end().eq(t.index()).removeClass("hide"))}),e.on("click",".feed-back-btn",function(){var i=a(this),r=i.closest("li"),o=r.index(),s=[],l=r.find(".feedback-answer").val(),c=r.find(".feedback-id").val(),u=r.find(".question-id").val();r.find(":checked").each(function(){s.push(a(this).val())}),a.ajax({url:"http://new.yohobuy.com/common/suggestfeedback",dataType:"jsonp",data:{feedback_id:c||0,question_id:u||0,answer:l||"",solution:s.join(",")},success:function(i){var a=o+1;if(1===~~i.data.result){if(o===n-1)return void alert("感谢您的参与!");r.addClass("hide"),e.children(":eq("+(o+1)+")").removeClass("hide"),t.children(".cur").removeClass("cur"),t.children(":eq("+a+")").addClass("cur")}}})})}function o(){a(window).height()>a(document).height()&&l.addClass("hide")}var a=n(2),s=n(6),l=a(".return-top");s(a("img.lazy")),l.click(function(){a("html,body").animate({scrollTop:0},500)}),a(window).scroll(function(){0===a(window).scrollTop()?l.addClass("hide"):l.removeClass("hide")}),l.hasClass("hide")&&a("img").load(o),i(),r(),window.rePosReturnTop=o},function(e,t,n){var i=n(2);n(7),e.exports=function(e,t){var n,r={effect:"fadeIn",effect_speed:10,placeholder:"data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==",skip_invisible:!1},o=arguments.length;!function(){switch(o){case 0:n=i("img.lazy");break;case 1:e instanceof i?n=e:(n=i("img.lazy"),i.extend(r,e));break;case 2:n=e,r=i.extend(r,t)}}(),n.lazyload(r)}},function(e,t,n){var i=n(2);!function(e,t,n,i){var r=e(t);e.fn.lazyload=function(o){function a(){var t=0;l.each(function(){var n=e(this);if(!c.skip_invisible||n.is(":visible"))if(e.abovethetop(this,c)||e.leftofbegin(this,c));else if(e.belowthefold(this,c)||e.rightoffold(this,c)){if(++t>c.failure_limit)return!1}else n.trigger("appear"),t=0})}var s,l=this,c={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:t,data_attribute:"original",skip_invisible:!0,appear:null,load:null,yasPath:"/web/",yasImgDomain:"http://analytics.yhurl.com/yas.gif",placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC",try_again_css:null};return o&&(i!==o.failurelimit&&(o.failure_limit=o.failurelimit,delete o.failurelimit),i!==o.effectspeed&&(o.effect_speed=o.effectspeed,delete o.effectspeed),e.extend(c,o)),s=c.container===i||c.container===t?r:e(c.container),0===c.event.indexOf("scroll")&&s.bind(c.event,function(){return a()}),this.each(function(){var t=this,n=e(t);t.loaded=!1,n.attr("src")!==i&&n.attr("src")!==!1&&""!==n.attr("src")||n.is("img")&&n.attr("src",c.placeholder),n.one("appear",function(){if(n.timerid&&clearTimeout(n.timerid),!this.loaded){if(c.appear){var i=l.length;c.appear.call(t,i,c)}e("<img />").bind("error abort",function(){n.attr("src",c.placeholder),o({info:"error"})}).bind("load",function(){if(!n.loadtimeout){clearTimeout(n.timerid),n.attr("pfmrpt");var i=n.attr("data-"+c.data_attribute);n.hide(),n.is("img")?n.attr("src",i):n.css("background-image","url('"+i+"')"),n[c.effect](c.effect_speed),t.loaded=!0;var r=e.grep(l,function(e){return!e.loaded});if(l=e(r),c.load){var o=l.length;c.load.call(t,o,c)}}}).attr("src",n.attr("data-"+c.data_attribute)),n.src=n.attr("data-"+c.data_attribute),n.attr("pfmrpt")&&_yas&&_yas.add;var r=function(e){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&e.info,n.attr("src",""),setTimeout(function(){n.attr("src",n.src)},50)},o=function(t){n.loadtimeout=!0,n.attr("pfmrpt")&&_yas&&_yas.add&&t.info;var i=n.width(),o=n.height();if(c.try_again_css)var a=e("<div class="+c.try_again_css+" style='width:"+i+"px;height:"+o+"px;'></div>");else var a=e("<div style='background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC) ;text-align: center;position:relative;width:"+i+"px;height:"+o+"px;background-size:100%;'>加载失败</div>");a.addClass(n.attr("class")),n.replaceWith(a),n.timerid=setTimeout(r,5e3)}}}),0!==c.event.indexOf("scroll")&&n.bind(c.event,function(){t.loaded||n.trigger("appear")})}),r.bind("resize",function(){a()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&r.bind("pageshow",function(t){t.originalEvent&&t.originalEvent.persisted&&l.each(function(){e(this).trigger("appear")})}),e(n).ready(function(){a()}),this},e.belowthefold=function(n,o){var a;return a=o.container===i||o.container===t?(t.innerHeight?t.innerHeight:r.height())+r.scrollTop():e(o.container).offset().top+e(o.container).height(),a<=e(n).offset().top-o.threshold},e.rightoffold=function(n,o){var a;return a=o.container===i||o.container===t?r.width()+r.scrollLeft():e(o.container).offset().left+e(o.container).width(),a<=e(n).offset().left-o.threshold},e.abovethetop=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollTop():e(o.container).offset().top,a>=e(n).offset().top+o.threshold+e(n).height()},e.leftofbegin=function(n,o){var a;return a=o.container===i||o.container===t?r.scrollLeft():e(o.container).offset().left,a>=e(n).offset().left+o.threshold+e(n).width()},e.inviewport=function(t,n){return!(e.rightoffold(t,n)||e.leftofbegin(t,n)||e.belowthefold(t,n)||e.abovethetop(t,n))}}(i,window,document)},,,function(e,t,n){var i=n(2),r=n(6);!function(){var e=function(e,t){this.$element=i(e),this.options=i.extend({},i.fn.slider.defaults,t),this.bigItem=this.$element.find(".slide-wrapper").find("li"),this.smallItem=null,this.len=this.bigItem.size(),this.index=0,this.timer=null,this.init()};e.prototype={init:function(){if(this.$element){if(this.len<=1)return void r(this.$element.find("img.lazy"));this.options.pagination?this.smallItem=i(this.options.pagination).find("li"):this._createPage(),this.options.orient&&this._createOrient(),this._slideShow(),this._bindEvent(),this._autoplay()}},_createOrient:function(){var e='<div class="slide-switch"><a class="prev" href="javascript:;"><span class="iconfont">&#xe609;</span></a><a class="next" href="javascript:;"><span class="iconfont">&#xe608;</span></a></div>';this.$element.find(".slide-switch").length>0||this.$element.append(e)},_createPage:function(){var e='<div class="slide-pagination"><div class="slide-pagination-inner"><div class="slide-shade"></div><div class="slide-pagination-last">',t=0;if(!(this.len<=1)){for(t=0;t<this.len;t++)e+="<span></span>";e+="</div></div></div>",this.$element.append(i(e)),this.smallItem=this.$element.find(".slide-pagination-inner span")}},_bindEvent:function(){var e=this;this.$element.find(".slide-switch").on("click",".next",function(){e._nextSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}).on("click",".prev",function(){e._prevSlide(),clearInterval(e.timer),e.timer=setInterval(function(){e._nextSlide()},e.options.time)}),this.smallItem.on("mouseenter",function(){e.index=i(this).index(),clearInterval(e.timer),e._slideShow()}).on("mouseleave",function(){e._autoplay()}),this.$element.on("mouseenter",function(){i(this).find(".slide-switch").addClass("show")}).on("mouseleave",function(){i(this).find(".slide-switch").removeClass("show")})},_nextSlide:function(){this.index===this.len-1?this.index=0:this.index++,this._slideShow()},_prevSlide:function(){0===this.index?this.index=this.len-1:this.index--,this._slideShow()},_slideShow:function(){var e=this.bigItem.eq(this.index).find("img.lazy");e.attr("src")!==e.data("original")&&(r(e,{event:"sporty"}),e.trigger("sporty")),this.smallItem.eq(this.index).addClass("focus").siblings().removeClass("focus"),this.bigItem.eq(this.index).show().stop().animate({opacity:1},function(){i(this).find(".slide-tips > p").removeClass("hide")}).siblings().stop().animate({opacity:0},function(){i(this).hide().find(".slide-tips > p").addClass("hide")})},_autoplay:function(){var e=this;clearInterval(this.timer),this.timer=setInterval(function(){e._nextSlide()},this.options.time)}},i.fn.slider=function(t){return this.each(function(){var n=i(this),r=n.data("Slider"),o="object"==typeof t&&t;r||n.data("Slider",r=new e(this,o)),"string"==typeof t&&r[t]()})},i.fn.slider.Constructor=e,i.fn.slider.defaults={time:5e3,orient:!0,pagination:null}}(i)},,,function(e,t,n){var i=n(14),r=function(e){this.__lastTime=null,this.__isStop=!1,e=i.extend(this.defaults,e),r.superclass.constructor.call(this,e)};i.inherit(r,i.assembly),r.prototype.oninit=function(){var e=this,t=e.options;return t.auto&&e.play(),e.go(t.index),this},r.prototype.go=function(e,t){var n,i,r,o,a,s,l,c,u=this,p=u.options;u.__lastTime&&(clearTimeout(u.__lastTime),u.__lastTime=null),t="undefined"==typeof t?p.index:t,n=e===t?0:e>t?1:-1,i=p.loop,o=p.length-1,a=e,e=i?e>o?e-o-1:0>e?e+o+1:e:e>o?o:0>e?0:e,r=p.index=e,s={from:t,to:e,originalto:a,direction:n};for(l in u.registerEvent)if(u.registerEvent[l].length>0)for(c in u.registerEvent[l])u.registerEvent[l].hasOwnProperty(c)&&u.registerEvent[l][c](s);r!==o||e?!u.__isStop&&p.auto&&u.play():u.__lastTime&&clearTimeout(u.__lastTime)},r.prototype.play=function(){var e=this,t=e.options;return e.__lastTime=setTimeout(function(){e.next()},1e3*t.timeout),this},r.prototype.next=function(){var e=this,t=e.options,n=t.index,i=n+t.step;e.go(i,n)},r.prototype.prev=function(){var e=this,t=e.options,n=t.index,i=n-t.step;e.go(i,n)},r.prototype.pause=function(){var e=this;e.__lastTime&&clearTimeout(e.__lastTime),e.__isStop=!0},r.prototype.resume=function(){var e=this;e.__isStop=!1,e.play()},r.prototype.defaults={index:0,timeout:5,step:1,per:1,auto:!1,loop:!1},e.exports=r},function(e,t){var n,i={"[object Array]":"array","[object Boolean]":"boolean","[object Date]":"date","[object Function]":"function","[object Number]":"number","[object Object]":"object","[object RegExp]":"regexp","[object String]":"string"},r={__Index:0,list:[],get:function(e){return void 0===e?this.list:this.list[e]},fn:function(){},inherit:function(e,t){var n=r.fn;n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e,e.superclass=t.prototype,e.prototype.constructor===Object.prototype.constructor&&(e.prototype.constructor=t)},extend:function(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},copy:function(e,t,n){var i,o,a;if("object"!=typeof t)return t;if(i=t.valueOf(),t!==i)return new t.constructor(i);if(t instanceof t.constructor&&t.constructor!==Object){o=e?new e:r.clone(t.constructor.prototype);for(a in t)(e||t.hasOwnProperty(a))&&(o[a]=t[a])}else{o={};for(a in t)o.hasOwnProperty(a)&&(o[a]=t[a])}if(n)for(a in n)o.hasOwnProperty(a)&&(o[a]=n[a]);return o},clone:function(e){return r.__cloneFunc.prototype=e,new r.__cloneFunc},__cloneFunc:function(){},delegate:function(e,t){var n;return t=t||window,arguments.length>2?(n=Array.prototype.slice.call(arguments,2),function(){return e.apply(t,n)}):function(){return e.call(t)}},dom:function(e,t){var n,i,r=e,o={wrap:r},a=r[0].getElementsByTagName("*"),s=a.length;for(i=0;s>i;i++)n=a[i].className,n.indexOf(t)>-1&&(n=n.split(t)[1]),n&&(o[n]=r.find(a[i]));return o},template:function(){var e,t,n,i,o=arguments;if(o.length>0&&r.isString(o[0]))if(e=o[0],2===o.length&&r.isObject(o[1]))for(t in o[1])void 0!==o[1][t]&&(n=new RegExp("({"+t+"})","g"),e=e.replace(n,o[1][t]));else for(i=1;i<o.length;i++)void 0!==o[i]&&(n=new RegExp("({["+(i-1)+"]})","g"),e=e.replace(n,o[i]));return e},__type:function(e){return null==e?String(e):i[Object.prototype.toString.call(e)]||"object"},isObject:function(e){return this.isFunction(e)||!(!e||"object"!=typeof e)},isFunction:function(e){return"function"===this.__type(e)},isArray:Array.isArray||function(e){return"array"===this.__type(e)},isNum:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},isString:function(e){return"string"===this.__type(e)},each:function(e,t,n){var i,o;if(r.isArray(e))for(i=0,o=e.length;o>i&&t.call(e[i],i,e[i],n)!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i],n)===!1)break},funManager:{__loadList:{},__loadFun:function(e,t,n){e.methord&&r.isFunction(e.methord())&&(n=n||window,e.methord()(e,function(){t()},n))},load:function(e,t,n,i){i=i||0,e[i]&&r.funManager.__loadFun(e[i],function(){r.funManager.load(e,t,n,i+1)},n),t(i,n)},get:function(e){return this.__loadList[e]}},log:function(e){var t=window.console||{log:function(){}};t.log(e)},Event:{mousewheel:function(e){var t=e.originalEvent,n=t.detail?-1*t.detail:t.wheelDelta/40,i=0>n?-1:1;return{direction:i,unit:n}},__:function(e,t,n,i){var r;for(r in e)if(window[e[r].validator]){t[e[r].validator](e[r].prefix+n,i,!1);break}},add:function(e,t,n){var i=[{validator:"addEventListener",prefix:""},{validator:"attachEvent",prefix:"on"}];this.__(i,e,t,n)},remove:function(e,t,n){var i=[{validator:"removeEventListener",prefix:""},{validator:"detachEvent",prefix:"on"}];this.__(i,e,t,n)}},getUid:function(e){return r.template("me-{0}{1}-{2}",e,(new Date).getTime(),r.__Index++)},Browser:{isTouch:function(){var e=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture;return!!("ontouchstart"in window||e||window.DocumentTouch)},Prefix:function(){var e,t=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"],n=document.createElement("div");for(e in t)if(void 0!==n.style[t[e]])return r.template("-{0}-",t[e].replace("Perspective","").toLowerCase())},parseURL:function(e){var t,n,i,r,o,a=document.createElement("a");return a.href=e,{source:e,protocol:a.protocol.replace(":",""),host:a.hostname,port:a.port,query:a.search,params:function(){for(t={},n=a.search.replace(/^\?/,"").split("&"),i=n.length,r=0,o;i>r;r++)n[r]&&(o=n[r].split("="),t[o[0]]=o[1]);return t}(),file:(a.pathname.match(/\/([^\/?#]+)$/i)||[null,""])[1],hash:a.hash.replace("#",""),path:a.pathname.replace(/^([^\/])/,"/$1"),relative:(a.href.match(/tps?:\/\/[^\/]+(.+)/)||[null,""])[1],segments:a.pathname.replace(/^\//,"").split("/")}}},Array:{indexOf:function(e,t){var n;for(n=0;n<e.length;n++)if(this[n]===t)return n;return-1},remove:function(e,t){var n=this.indexOf(e,t);return n>-1&&e.splice(n,1),e}}};n=function(e){this.initialized=!1,this.registerEvent={before:[],change:[],after:[]},this.options=e,this.init(e)},n.output=function(){r.log(r.list)},n.prototype.oninit=r.fn,n.prototype.init=function(e){this.initialized=!0,this.__Uid=r.getUid("me"),this.oninit(e),r.list[this.__Uid]=this},n.prototype.destory=function(){this.initialized=!1,delete r.list[this.__Uid]},n.prototype.getUid=function(){return this.__Uid},n.prototype.getOptions=function(){return this.options},n.prototype.config=function(){if(!(arguments.length>0))return this.options;if("string"==typeof arguments[0]){if(!(arguments.length>1))return this.options[name];this.options[arguments[0]]=arguments[1]}},n.prototype.on=function(e,t){var n=this,i=n.registerEvent[e];return i&&i.push(t),i},n.prototype.off=function(e,t){var n=this,i=n.registerEvent[e],o=[];r.each(i,function(e,n){n===t&&o.push(e)}),r.each(o.reverse(),function(e,t){i.splice(t,1)})},r.assembly=n,e.exports=r},,,function(e,t,n){var i,r=n(2),o=n(6),a=n(4),s=n(18),l=r(".goods-container"),c=l.find(".good-info"),u=l.find(".good-item-wrapper"),p=l.find(".good-info-main"),h=l.find(".good-select-color"),d=r(".product-list-nav");o(r("img.lazy")),t.init=function(e){function t(e,t){var n,i,r,o="",a=e.length,s=4,l=Math.ceil(a/s),c=0;for(n=0;l>n;n++)for(o+="<ul>",i=0;s>i&&(r=n*s+i,r!==a);i++)o+='<li><a target="_blank" href="'+e[n*s+i].url+t+'"><img src="'+e[n*s+i].src+'" data-cover="'+e[n*s+i].coverImg+'" /></a></li>',i===s-1&&(o+="</ul>",c++);return l>c&&(o+="</ul>"),{colorListStr:o,ulNum:l}}function n(){p.html(""),h.html(""),u.css({display:"none"})}i=null,c.unbind(),i=s(c,e),i.addHandler("MouseEnter",function(e){var i,o,a,s,c,d,f,m,g,v,y,b,x,w=10,k=35,S=e.target.attr("data-from")||"";s=[],e.target.find(".goodsList").find(".list").each(function(){a={url:r(this).attr("url"),src:r(this).attr("imgUrl"),coverImg:r(this).attr("cover")},s.push(a)}),i={pics:s},o=t(i.pics,S),n(),d=o.colorListStr,c=o.ulNum,p.append(e.targetDuplicate),h.append(r(d)),y=u.css("paddingLeft"),b=u.css("paddingTop"),x=l.css("paddingTop"),f=10+65*c+e.targetWidth,g=(e.targetX-1)*(e.targetWidth+w)-(parseInt(y,10)+1),v=(e.targetY-1)*(e.targetHeight+k)+parseInt(x,10)-(parseInt(b,10)+1),m=e.offsetR-(65*c+25),0>=m&&(g=g+m-25),u.css({width:f,left:g,top:v,display:"inline-block"}),i.pics[0]&&i.pics[0].src&&p.find(".good-thumb img").attr("src",i.pics[0].src)}),i.addHandler("MouseLeave",function(){n()}),u.mouseleave(function(){n()})},r(document).on("hover",".good-select-color li",function(){var e=r(this).find("img").attr("data-cover"),t=r(this).closest(".good-item-wrapper").find(".good-detail-img").find("img");t.attr("src",e)}),d.find("h3").click(function(){var e=r(this).closest(".product-list-nav");e.hasClass("active")?e.find(".sort-child-list").stop(!0,!0).slideUp():e.find(".sort-child-list").stop(!0,!0).slideDown(),e.toggleClass("active")}),function(){var e,t=r("#brand-card"),n=r("#brand-favor");t.length&&r.ajax({type:"POST",url:"/product/index/getNodeContent",data:{node:t.data("node")}}).then(function(e){t.html(e)}),n.length&&(e=r("#pic-link-tpl").html(),r.ajax({type:"POST",url:"/product/index/getAdnav",data:{brandId:n.data("id")}}).then(function(t){t&&r("#brand-ad").html(a.compile(e)({picLink:t}))}))}()},function(e,t,n){function i(){this.handlers={}}var r=n(2);i.prototype={constructor:i,addHandler:function(e,t){"undefined"==typeof this.handlers[e]&&(this.handlers[e]=[]),this.handlers[e].push(t)},fire:function(e){var t,n;if(e.target||(e.target=this),this.handlers[e.type]instanceof Array)for(t=this.handlers[e.type],n=0;n<t.length;n++)t[n](e)},removeHandler:function(e,t){var n,i;if(this.handlers[e]instanceof Array){for(n=this.handlers[e],i=0;i<n.length&&n[i]!==t;i++);n.splice(i,1)}}},e.exports=function(e,t){function n(e){var n,i=0,p=0,h=t,d=0,f="",m=0,g=0;switch(e.type){case"mouseenter":n=r(this),o=setTimeout(function(){a=!0,f=n.clone(),d=n.index()+1,i=d%h===0?h:d%h,p=Math.ceil(d/h),m=n.offset().left,g=u-(m+l),s.fire({type:"MouseEnter",target:n,targetWidth:l,targetHeight:c,targetX:i,targetY:p,rowWidth:h,activeIndex:d,targetDuplicate:f,offsetL:m,offsetR:g})},150);break;case"mouseleave":a||(o&&clearTimeout(o),s.fire({type:"MouseLeave"})),a=!1}}var o,a,s=new i,l=e.eq(0).width(),c=e.eq(0).height(),u=r(window).width();return e.bind({mouseenter:n,mouseleave:n}),s}},function(e,t,n){var i,r,o=n(13),a=n(2),s=a(".sale-list-banner"),l=s.find("li"),c=0,u="",p="",h=!0;for(i=0;i<l.length;i++)u+=0===i?'<span class="active"></span>':"<span></span>";p='<div class="sale-list-pagation"><div>'+u+"</div></div>",l.length>1&&s.append(a(p)),r=new o({length:l.length,loop:!0,auto:!0,timeout:2,index:0}),r.on("change",function(e){h&&(h=!1,c++,a(".sale-list-pagation").find("span").removeClass("active"),l.eq(e.from).animate({opacity:0},300),l.eq(e.to).css({zIndex:c}).animate({opacity:1},300,function(){h=!0}),a(".sale-list-pagation").find("span").eq(e.to).addClass("active"))}),s.hover(function(){h&&r.pause()},function(){r.resume()}),a(".sale-list-pagation span").click(function(){var e=a(this).index();h&&r.go(e)}),r.init()},function(e,t,n){function i(e,t){e.each(function(){g(this).closest(".attr").hasClass("checked")||g(this).removeClass("checked").html(y.unchecked)}),t.find(".checkbox").addClass("checked").html(y.checked)}function r(){x.addClass("hide"),k.removeClass("hide")}function o(){k.addClass("hide"),x.removeClass("hide"),E.children("span").removeClass("hover")}function a(e,t){var n,i=window.queryString();i[e]=t,delete i.page,n="?"+decodeURIComponent(g.param(i)),window.location.href=n}function s(){P.children(".senior-sub:eq("+m+")").addClass("hide"),L.children(".attr:eq("+m+")").removeClass("hover"),m=-1}var l,c,u,p,h,d,f,m,g=n(2),v=n(4),y={unchecked:"&#xe612;",checked:"&#xe613;"},b={up:"&#xe610;",down:"&#xe600;"},x=g(".brand .default"),w=g("#brand-search-input"),k=g(".brand .brand-panel"),S=k.find(".attr"),_=g("#brand-more"),C=g("#brand-multi"),E=g(".brands-index"),A=g(".ud-price-range"),T=/^\d+$/,N=g(".sort-sub-wrap"),P=g(".senior-sub-wrap"),L=g(".senior-attr-wrap"),D='{{# size}}<a class="attr {{#if checked}}checked{{/if}}" href="{{href}}">{{name}}</a>{{/ size}}',I={},O=g(".filter-box .size");D=v.compile(D),g(".filter-box").on("selectstart",".attr, .brands-index span",function(){return!1}),g(".sort-pre").on("click","li",function(){var e=g(this),t=e.index(),n=e.data("id");return e.hasClass("active")?(e.removeClass("active"),N.children(":eq("+t+")").addClass("hide"),void O.addClass("hide")):(e.siblings(".active").removeClass("active"),e.addClass("active"),N.children(":not(.hide)").addClass("hide"),N.children(":eq("+t+")").removeClass("hide"),void(O.data("load")||(I[n]?(O.find(".attr-content").html(I[n]),O.removeClass("hide")):g.ajax({url:"/product/search/sortSize",data:{msort:n}}).then(function(e){"array"===g.type(e)&&e.length?(I[n]=D({size:e}),O.find(".attr-content").html(I[n]),O.removeClass("hide")):O.addClass("hide")}))))}),_.length>0&&(l=_.children("em"),c=_.children(".iconfont")),C.click(function(){"none"===k.css("display")&&_.trigger("click"),r(),k.removeClass("hide").addClass("multi"),g(this).addClass("hide"),_.addClass("hide")}),_.click(function(){var e=g(this);e.hasClass("more")?(o(),l.text("更多"),c.html(b.down),w.val("").trigger("keyup")):(r(),l.text("收起"),c.html(b.up)),g(this).toggleClass("more")}),E.on("mouseenter","span",function(){var e=g(this),t=e.data("index");e.hasClass("hover")||setTimeout(function(){e.siblings("span.hover").removeClass("hover"),e.addClass("hover"),0===e.index()?S.removeClass("hide"):S.addClass("hide").filter("[data-index="+t+"]").removeClass("hide")},120)}),w.keyup(function(){var e=g(this).val().toLowerCase();""===e?S.removeClass("hide"):S.addClass("hide").filter('[data-key*="'+e+'"]').removeClass("hide")}),g("#brand-multi-ok").click(function(){var e=[];g(this).hasClass("dis")||(k.find("span.checked").each(function(){e.push(g(this).data("id"))}),a("brand",e.join(",")))}),g(".multi-select-cancel").click(function(){var e=g(this).closest(".multi");e.hasClass("brand-panel")&&(C.removeClass("hide"),_.trigger("click"),_.removeClass("hide"),w.val("").trigger("keyup"),o()),e.addClass("hide").removeClass("multi"),i(e.find(".checkbox.checked"),e.find(".attr.checked")),g(this).siblings(".multi-select-ok").addClass("dis")}),g(".check-container").on("click",".attr",function(){var e=g(this),t=e.find(".checkbox"),n=e.closest(".brand-panel, .senior-sub").find(".multi-select-ok");t.toggleClass("checked"),t.hasClass("checked")?t.html(y.checked):t.html(y.unchecked),t.hasClass("checked")||e.siblings(".attr").find(".checked").length>0?n.removeClass("dis"):n.addClass("dis")}),g(".brand, .senior").on("click",".attr > a",function(e){g(this).closest(".multi").length>0&&e.preventDefault()}),g(".filter-box").on("click","li.checked, a.checked",function(e){e.preventDefault()}),A.length>0&&(u=A.find(".limit"),p=u.filter(".min"),h=u.filter(".max"),d=A.find(".price-sure"),u.keyup(function(){var e,t,n,i=g.trim(g(this).val()),r=T.test(i);r||(e=parseInt(i,10),g(this).val(isNaN(e)?"":e)),t=g.trim(p.val()),n=g.trim(h.val()),""!==t||""!==n?d.removeClass("hide"):d.addClass("hide")}),d.click(function(){var e,t=g.trim(p.val()),n=g.trim(h.val());""!==t&&""!==n&&+t>+n&&(e=n,n=t,t=e),a("price",t+","+n)})),L.on("mouseenter",".attr",function(){var e=g(this),t=e.index();e.hasClass("no-sub")||(e.addClass("hover").siblings().removeClass("hover"),P.children(".senior-sub:eq("+t+")").removeClass("hide").siblings().addClass("hide"))}).on("mouseleave",".attr",function(){var e=g(this),t=e.index();e.hasClass("no-sub")||(m=t,f=setTimeout(function(){s()},100))}),g(".senior-sub").on("click",".multi-select",function(){g(this).closest(".senior-sub").addClass("multi")}).on("click",".multi-select-ok",function(){var e=g(this),t=e.closest(".senior-sub"),n=[];e.hasClass("dis")||(t.find("span.checked").each(function(){n.push(g(this).data("id"));
-}),a(t.data("attr"),n.join(",")))}).on("mouseenter",function(){clearTimeout(f)}).on("mouseleave",function(){s()})},function(e,t,n){var i=n(2),r=i("#count-per-page"),o=r.next("ul"),a=200;i(document).click(function(e){i(e.target).closest(".page-count").length>0||o&&o.slideUp(a)}),r.click(function(){"none"===o.css("display")?o.slideDown(a):o.slideUp(a)})}]);
\ No newline at end of file
diff --git a/public/dist/yohobuy-node/assets/font/iconfont.eot b/public/dist/yohobuy-node/assets/font/iconfont.eot
deleted file mode 100644
index 3be1ea2..0000000
Binary files a/public/dist/yohobuy-node/assets/font/iconfont.eot and /dev/null differ
diff --git a/public/dist/yohobuy-node/assets/font/iconfont.svg b/public/dist/yohobuy-node/assets/font/iconfont.svg
deleted file mode 100644
index 9469326..0000000
--- a/public/dist/yohobuy-node/assets/font/iconfont.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-Created by FontForge 20120731 at Tue Jun  7 15:10:09 2016
- By admin
-</metadata>
-<defs>
-<font id="iconfont" horiz-adv-x="1024" >
-  <font-face 
-    font-family="iconfont"
-    font-weight="500"
-    font-stretch="normal"
-    units-per-em="1024"
-    panose-1="2 0 6 3 0 0 0 0 0 0"
-    ascent="896"
-    descent="-128"
-    x-height="792"
-    bbox="0 -212 1158 896"
-    underline-thickness="50"
-    underline-position="-100"
-    unicode-range="U+0078-E619"
-  />
-<missing-glyph horiz-adv-x="374" 
-d="M34 0v682h272v-682h-272zM68 34h204v614h-204v-614z" />
-    <glyph glyph-name=".notdef" horiz-adv-x="374" 
-d="M34 0v682h272v-682h-272zM68 34h204v614h-204v-614z" />
-    <glyph glyph-name=".null" horiz-adv-x="0" 
- />
-    <glyph glyph-name="nonmarkingreturn" horiz-adv-x="341" 
- />
-    <glyph glyph-name="x" unicode="x" horiz-adv-x="1001" 
-d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
-t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
-t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
-    <glyph glyph-name="uniE600" unicode="&#xe600;" horiz-adv-x="1048" 
-d="M832 -126.5q0 -35.5 -25 -60.5t-60.5 -25t-60.5 25t-25 60.5t25 60.5t60.5 25t60.5 -25t25 -60.5zM533 -126.5q0 -35.5 -25 -60.5t-60 -25t-60 25t-25 60.5t25 60.5t60 25t60 -25t25 -60.5zM277 620l-35 159q-3 14 -15 23.5t-27 9.5h-147q-22 0 -37.5 -15.5t-15.5 -37.5
-t15.5 -38t37.5 -16h54l157 -627q6 -25 25.5 -40t44.5 -15h527q25 0 44.5 15t25.5 40l113 452q9 34 -13 62t-57 28h-697z" />
-    <glyph glyph-name="uniE601" unicode="&#xe601;" 
-d="M505 337l2 -2q2 -1 3.5 -1t3.5 1l430 364q2 2 1 5.5t-5 3.5h-435h-424q-4 0 -5 -3.5t1 -5.5zM72 669q-3 2 -6 0.5t-3 -4.5v-584q0 -4 3.5 -5t5.5 1l288 346zM953 669.5q-3 1.5 -5 -0.5l-288 -246l287 -346q3 -2 6 -1t3 5v584q0 3 -3 4.5zM641 406l-131 -111l-5 5
-l-125 103l-275 -328q-2 -3 -1 -6t5 -3h396h407q4 0 5 3t-1 6z" />
-    <glyph glyph-name="uniE602" unicode="&#xe602;" horiz-adv-x="1048" 
-d="M297.5 528q-20.5 0 -35 -14.5t-14.5 -35t14.5 -35.5t35 -15t35.5 15t15 35.5t-15 35t-35.5 14.5zM381 251q0 96 84 164t202 68t202 -68t84 -163.5t-84 -163.5t-202 -68t-202 68t-84 163zM286 251q0 -17 2 -35v1q-88 42 -140.5 114t-52.5 157t51.5 157t139.5 114t192 42
-q142 0 249.5 -76.5t128.5 -189.5q-88 43 -189 43q-104 0 -191.5 -43.5t-138.5 -119t-51 -164.5zM953 36q95 93 95 215t-94 214q2 20 2 23q0 111 -64 205t-174.5 148.5t-240 54.5t-239.5 -54.5t-174 -148.5t-64 -205q0 -78 33 -148.5t93 -125.5l-77 -123q-8 -12 -6.5 -26
-t10.5 -25q13 -15 32 -15q9 0 18 4l180 80q4 2 7 4q20 -7 39 -12q48 -80 138.5 -128t199.5 -48q75 0 145 25q1 -1 2 -1l140 -62q8 -4 17 -4q20 0 32 15q10 10 11 24t-7 26zM527 282q-16 0 -27.5 -11t-11.5 -27t11.5 -27.5t27.5 -11.5t27.5 11.5t11.5 27.5t-11.5 27t-27.5 11z
-M667 282q-16 0 -27.5 -11t-11.5 -27t11.5 -27.5t27.5 -11.5t27.5 11.5t11.5 27.5t-11.5 27t-27.5 11zM806 282q-16 0 -27 -11t-11 -27t11 -27.5t27 -11.5t27.5 11.5t11.5 27.5t-11.5 27t-27.5 11z" />
-    <glyph glyph-name="uniE603" unicode="&#xe603;" horiz-adv-x="1158" 
-d="M1069 181h-245v378h132l113 -169v-209zM1158 417l-155 231h-268v-467h-45v508q0 20 -14 34t-34 14h-63l-67 -89h89v-467h-512v467h45l22 89h-108q-20 0 -34 -14t-14 -34v-549q0 -20 14 -34t34 -14h139q-33 -37 -33 -87q0 -53 37.5 -91t91 -38t91.5 38t38 91q0 50 -34 87
-h264h191q-34 -37 -34 -87q0 -53 38 -91t91.5 -38t91 38t37.5 91q0 50 -33 87h134v325zM326 668q-89 -153 -94 -296v-12h129v12q0 43 17 112q17 68 39 116q27 61 67.5 118t62.5 79l4 3v96h-390l-2 -114h245q-33 -40 -78 -114z" />
-    <glyph glyph-name="uniE604" unicode="&#xe604;" 
-d="M875 126l-363 -164l-363 164v610q247 75 363 75t363 -75v-610zM930 808q-34 11 -84.5 26t-159.5 38.5t-174 23.5t-174 -23.5t-159.5 -38.5t-84.5 -26q-14 -4 -22 -15.5t-8 -25.5v-669q0 -27 25 -39l405 -183q9 -3 18 -3t18 3l405 183q25 12 25 39v669q0 14 -8 25.5
-t-22 15.5zM751 552v83h-473v-83h206v-298h-72v237h-87v-237h-66v-84h506v84h-193v119h151v83h-151v96h179z" />
-    <glyph glyph-name="uniE605" unicode="&#xe605;" 
-d="M903 577l-68 69l-388 -388l-231 230l-68 -68l299 -298l65 65z" />
-    <glyph glyph-name="uniE606" unicode="&#xe606;" 
-d="M512 599q47 0 88 -18t72 -49t49 -72t18 -89q0 -46 -18 -87t-49 -72t-72 -49t-88 -18t-88 18t-72 49t-49 72t-18 87q0 48 18 89t49 72t72 49t88 18v0zM512 599z" />
-    <glyph glyph-name="uniE607" unicode="&#xe607;" 
-d="M797 219.5q0 -7.5 -5 -13.5l-29 -28q-6 -6 -13.5 -6t-12.5 6l-225 224l-224 -224q-6 -6 -13.5 -6t-13.5 6l-28 28q-6 6 -6 13.5t6 13.5l266 266q6 6 13.5 6t12.5 -6l267 -266q5 -6 5 -13.5z" />
-    <glyph glyph-name="uniE608" unicode="&#xe608;" 
-d="M284 15q-14 -14 -14 -33t13.5 -32.5t32.5 -13.5t32 14l397 401q13 14 13 33t-13 33l-397 401q-13 14 -32 14t-32.5 -13.5t-13.5 -32.5t13 -33l351 -369l-350 -369v0zM284 15z" />
-    <glyph glyph-name="uniE609" unicode="&#xe609;" 
-d="M745 753q13 14 13 33t-13.5 32.5t-32.5 13.5t-32 -14l-396 -401q-14 -14 -14 -33t14 -33l396 -401q14 -14 32.5 -14t32 13.5t13.5 32.5t-13 33l-351 369l351 369v0zM745 753z" />
-    <glyph glyph-name="uniE60A" unicode="&#xe60a;" 
-d="M512.5 750q-12.5 0 -21.5 -9t-9 -22v-311h-249q-12 0 -21.5 -9t-9.5 -22t9.5 -22t21.5 -9h280q12 0 21.5 9t9.5 22v342q0 13 -9.5 22t-22 9zM513 874q-101 0 -193 -39.5t-158.5 -105.5t-106 -158t-39.5 -193t39.5 -193t106 -158.5t158.5 -105.5t193 -39t192.5 39
-t158 105.5t106 158.5t39.5 193t-39.5 193t-106 158t-158 105.5t-192.5 39.5zM513 -56q-118 0 -218 58t-158.5 158t-58.5 218t58.5 218t158.5 158t218 58t218 -58t158 -158t58 -218t-58 -218t-158 -158t-218 -58z" />
-    <glyph glyph-name="uniE60B" unicode="&#xe60b;" 
-d="M286 509l-46 -45l272 -272l272 272l-46 45l-226 -226z" />
-    <glyph glyph-name="uniE60C" unicode="&#xe60c;" 
-d="M387 158l45 -46l272 272l-272 272l-45 -46l226 -226z" />
-    <glyph glyph-name="uniE60D" unicode="&#xe60d;" 
-d="M766 193l-196 192l196 192l-61 60l-196 -193l-196 193l-60 -60l196 -192l-196 -192l60 -59l196 192l196 -192z" />
-    <glyph glyph-name="uniE60E" unicode="&#xe60e;" 
-d="M704 665l-41 39l-343 -320l343 -320l41 39l-301 281z" />
-    <glyph glyph-name="uniE60F" unicode="&#xe60f;" 
-d="M892 125l-236 236q54 77 54 172q0 124 -87 211t-210.5 87t-211 -87t-87.5 -211t87.5 -211t210.5 -87q95 0 173 55l236 -236q16 -17 38 -18t37 14t14 37t-18 38zM213 533q0 82 58.5 140.5t140.5 58.5t140.5 -58.5t58.5 -140.5t-58.5 -140.5t-140.5 -58.5t-140.5 58.5
-t-58.5 140.5z" />
-    <glyph glyph-name="uniE610" unicode="&#xe610;" 
-d="M512 77l-439 614h878z" />
-    <glyph glyph-name="uniE611" unicode="&#xe611;" horiz-adv-x="1173" 
-d="M569 607q-28 66 -74 108.5t-95 56.5t-100 2.5t-91.5 -45t-66 -94t-26.5 -137.5q0 -36 8.5 -67.5t26 -58t35.5 -47t46.5 -41t49 -34t52.5 -32.5t48 -30q71 -47 124.5 -106.5t63.5 -93.5q7 31 62.5 92t124.5 110q19 14 55.5 36.5t61 38.5t55 42.5t49 52t31.5 62.5t13 79
-q0 76 -26.5 136t-67 92t-92 42.5t-101 -4t-94.5 -56t-72 -104.5z" />
-    <glyph glyph-name="uniE612" unicode="&#xe612;" 
-d="M0 896h1024v-1024h-1024v1024zM85 -43h854v854h-854v-854z" />
-    <glyph glyph-name="uniE613" unicode="&#xe613;" 
-d="M1024 -128h-1024v1024h1024v-1024zM947 674l-34 34q-13 13 -30 13t-30 -13l-486 -495l-196 205q-13 13 -30 13t-30 -13l-34 -34q-13 -13 -13 -30t13 -30l256 -256q23 -22 51 -8q9 0 9 8l546 546q18 13 20 30.5t-12 29.5z" />
-    <glyph glyph-name="uniE614" unicode="&#xe614;" 
-d="M160 996zM865 247q0 -18 -13 -31l-308 -308q-13 -13 -31 -13t-31 13l-309 308q-13 13 -13 31t13.5 31t30.5 13h617q18 0 31 -13t13 -31zM865 511q0 -18 -13 -31t-31 -13h-617q-18 0 -31 13t-13 31t13 31l309 309q13 13 31 13t31 -13l308 -309q13 -13 13 -31z" />
-    <glyph glyph-name="uniE615" unicode="&#xe615;" 
-d="M951 77h-878l439 614z" />
-    <glyph glyph-name="uniE616" unicode="&#xe616;" 
-d="M877 896h-730q-61 0 -104 -43t-43 -104v-730q0 -61 43 -104t104 -43h730q61 0 104 43t43 104v730q0 61 -43 104t-104 43zM939 19q0 -26 -18 -44t-44 -18h-730q-26 0 -44 18t-18 44v730q0 26 18 44t44 18h730q26 0 44 -18t18 -44v-730z" />
-    <glyph glyph-name="uniE617" unicode="&#xe617;" 
-d="M939 -128h-854q-35 0 -60 25t-25 60v854q0 35 25 60t60 25h854q35 0 60 -25t25 -60v-854q0 -35 -25 -60t-60 -25zM939 789q0 10 -6 16t-16 6h-810q-10 0 -16 -6t-6 -16v-810q0 -10 6 -16t16 -6h810q10 0 16 6t6 16v810zM457 183q-10 -12 -30.5 -12t-29.5 12l-171 171
-q-13 10 -13 30q0 18 12.5 30.5t30.5 12.5q20 0 30 -13l141 -141l311 312q13 12 30 12q18 0 30.5 -12.5t12.5 -29.5q0 -21 -13 -30z" />
-    <glyph glyph-name="uniE618" unicode="&#xe618;" horiz-adv-x="1000" 
-d="M662 662v-499l-299 250zM662 662z" />
-    <glyph glyph-name="uniE619" unicode="&#xe619;" 
-d="M384 640v-513l321 257z" />
-  </font>
-</defs></svg>
diff --git a/public/dist/yohobuy-node/assets/font/iconfont.ttf b/public/dist/yohobuy-node/assets/font/iconfont.ttf
deleted file mode 100644
index eafa37f..0000000
Binary files a/public/dist/yohobuy-node/assets/font/iconfont.ttf and /dev/null differ
diff --git a/public/dist/yohobuy-node/assets/font/iconfont.woff b/public/dist/yohobuy-node/assets/font/iconfont.woff
deleted file mode 100644
index 310bced..0000000
Binary files a/public/dist/yohobuy-node/assets/font/iconfont.woff and /dev/null differ
diff --git a/public/dist/yohobuy-node/assets/img/product/golden-small.png b/public/dist/yohobuy-node/assets/img/product/golden-small.png
deleted file mode 100644
index 024e7d5..0000000
Binary files a/public/dist/yohobuy-node/assets/img/product/golden-small.png and /dev/null differ
diff --git a/public/dist/yohobuy-node/assets/img/product/platinum-small.png b/public/dist/yohobuy-node/assets/img/product/platinum-small.png
deleted file mode 100644
index ad31efd..0000000
Binary files a/public/dist/yohobuy-node/assets/img/product/platinum-small.png and /dev/null differ
diff --git a/public/dist/yohobuy-node/assets/img/product/silver-small.png b/public/dist/yohobuy-node/assets/img/product/silver-small.png
deleted file mode 100644
index f41d04b..0000000
Binary files a/public/dist/yohobuy-node/assets/img/product/silver-small.png and /dev/null differ
diff --git a/public/gulpfile.js b/public/gulpfile.js
index b04f255..8d775d7 100644
--- a/public/gulpfile.js
+++ b/public/gulpfile.js
@@ -185,15 +185,20 @@ gulp.task('webpack-dev-server', () => {
 });
 
 // webpack compile in pro
-gulp.task('webpack', () => {
+gulp.task('webpack', (done) => {
     var proConfig = Object.assign({}, webpackConfig);
 
     proConfig.output.path = dist.js;
-    proConfig.plugins = [new webpack.optimize.UglifyJsPlugin()];
+    proConfig.plugins.push(new webpack.optimize.UglifyJsPlugin({
+        compress: {
+            warnings: false
+        }
+    }));
     webpack(proConfig, (err, stats) => {
         if (err) {
             throw new gutil.PluginError('webpack', err);
         }
         gutil.log('[webpack compile]:', stats.endTime - stats.startTime, 'ms');
+        done();
     });
 });
diff --git a/public/img/layout/outlets.png b/public/img/layout/outlets.png
index 8f43ee7..30e4d98 100644
Binary files a/public/img/layout/outlets.png and b/public/img/layout/outlets.png differ
diff --git a/public/img/passport/alertclose.png b/public/img/passport/alertclose.png
new file mode 100644
index 0000000..d46a01d
Binary files /dev/null and b/public/img/passport/alertclose.png differ
diff --git a/public/img/passport/angle.png b/public/img/passport/angle.png
new file mode 100644
index 0000000..1fa7f3b
Binary files /dev/null and b/public/img/passport/angle.png differ
diff --git a/public/img/passport/arrowbottom.png b/public/img/passport/arrowbottom.png
new file mode 100644
index 0000000..a214d28
Binary files /dev/null and b/public/img/passport/arrowbottom.png differ
diff --git a/public/img/passport/bindsuccess.png b/public/img/passport/bindsuccess.png
new file mode 100644
index 0000000..51ded6e
Binary files /dev/null and b/public/img/passport/bindsuccess.png differ
diff --git a/public/img/passport/btnbackground.png b/public/img/passport/btnbackground.png
new file mode 100644
index 0000000..747e144
Binary files /dev/null and b/public/img/passport/btnbackground.png differ
diff --git a/public/img/passport/choosed.png b/public/img/passport/choosed.png
new file mode 100644
index 0000000..d914962
Binary files /dev/null and b/public/img/passport/choosed.png differ
diff --git a/public/img/passport/edit-info.png b/public/img/passport/edit-info.png
new file mode 100644
index 0000000..a40e44e
Binary files /dev/null and b/public/img/passport/edit-info.png differ
diff --git a/public/img/passport/go-shopping.png b/public/img/passport/go-shopping.png
new file mode 100644
index 0000000..f98c11e
Binary files /dev/null and b/public/img/passport/go-shopping.png differ
diff --git a/public/img/passport/third-sbf9e987704.png b/public/img/passport/third-sbf9e987704.png
new file mode 100644
index 0000000..9606a67
Binary files /dev/null and b/public/img/passport/third-sbf9e987704.png differ
diff --git a/public/img/passport/third/alipay.png b/public/img/passport/third/alipay.png
new file mode 100644
index 0000000..49c0c97
Binary files /dev/null and b/public/img/passport/third/alipay.png differ
diff --git a/public/img/passport/third/douban.png b/public/img/passport/third/douban.png
new file mode 100644
index 0000000..c5b80de
Binary files /dev/null and b/public/img/passport/third/douban.png differ
diff --git a/public/img/passport/third/qq.png b/public/img/passport/third/qq.png
new file mode 100644
index 0000000..675d53f
Binary files /dev/null and b/public/img/passport/third/qq.png differ
diff --git a/public/img/passport/third/renren.png b/public/img/passport/third/renren.png
new file mode 100644
index 0000000..c85dc59
Binary files /dev/null and b/public/img/passport/third/renren.png differ
diff --git a/public/img/passport/third/weibo.png b/public/img/passport/third/weibo.png
new file mode 100644
index 0000000..fc6a7e8
Binary files /dev/null and b/public/img/passport/third/weibo.png differ
diff --git a/public/img/passport/third/weixin.png b/public/img/passport/third/weixin.png
new file mode 100644
index 0000000..59b41b3
Binary files /dev/null and b/public/img/passport/third/weixin.png differ
diff --git a/public/img/passport/tip-sf68385e157.png b/public/img/passport/tip-sf68385e157.png
new file mode 100644
index 0000000..bb8b05e
Binary files /dev/null and b/public/img/passport/tip-sf68385e157.png differ
diff --git a/public/img/passport/tip/angle.png b/public/img/passport/tip/angle.png
new file mode 100644
index 0000000..1fa7f3b
Binary files /dev/null and b/public/img/passport/tip/angle.png differ
diff --git a/public/img/passport/tip/block.png b/public/img/passport/tip/block.png
new file mode 100644
index 0000000..418a662
Binary files /dev/null and b/public/img/passport/tip/block.png differ
diff --git a/public/img/passport/tip/error.png b/public/img/passport/tip/error.png
new file mode 100644
index 0000000..48768b7
Binary files /dev/null and b/public/img/passport/tip/error.png differ
diff --git a/public/img/passport/tip/info.png b/public/img/passport/tip/info.png
new file mode 100644
index 0000000..75a8b15
Binary files /dev/null and b/public/img/passport/tip/info.png differ
diff --git a/public/img/passport/tip/succ-info.png b/public/img/passport/tip/succ-info.png
new file mode 100644
index 0000000..55656e2
Binary files /dev/null and b/public/img/passport/tip/succ-info.png differ
diff --git a/public/img/passport/tip/success-icon.png b/public/img/passport/tip/success-icon.png
new file mode 100644
index 0000000..a0acd70
Binary files /dev/null and b/public/img/passport/tip/success-icon.png differ
diff --git a/public/img/passport/tip/success.png b/public/img/passport/tip/success.png
new file mode 100644
index 0000000..5a11647
Binary files /dev/null and b/public/img/passport/tip/success.png differ
diff --git a/public/img/passport/tip/warn.png b/public/img/passport/tip/warn.png
new file mode 100644
index 0000000..3f0506b
Binary files /dev/null and b/public/img/passport/tip/warn.png differ
diff --git a/public/img/passport/warn.png b/public/img/passport/warn.png
new file mode 100644
index 0000000..a452a0c
Binary files /dev/null and b/public/img/passport/warn.png differ
diff --git a/public/img/passport/yohofamily.png b/public/img/passport/yohofamily.png
new file mode 100644
index 0000000..94be0ce
Binary files /dev/null and b/public/img/passport/yohofamily.png differ
diff --git a/public/img/product/sale-out-bg.png b/public/img/product/sale-out-bg.png
new file mode 100644
index 0000000..980d9a1
Binary files /dev/null and b/public/img/product/sale-out-bg.png differ
diff --git a/public/img/product/sale-out-tip.png b/public/img/product/sale-out-tip.png
new file mode 100644
index 0000000..7689fce
Binary files /dev/null and b/public/img/product/sale-out-tip.png differ
diff --git a/public/img/sprite.passport.png b/public/img/sprite.passport.png
new file mode 100644
index 0000000..7d76982
Binary files /dev/null and b/public/img/sprite.passport.png differ
diff --git a/public/js/channel/channel.page.js b/public/js/channel/channel.page.js
index 8a53041..a19d884 100644
--- a/public/js/channel/channel.page.js
+++ b/public/js/channel/channel.page.js
@@ -15,7 +15,7 @@ var homePage = $('.home-page').data('page'),
 require('../common');
 
 require('../plugins/slider');
-require('../plugins/logo-brand');
+require('../product/index/logo-brand');
 
 require('../plugins/accordion');
 
@@ -27,7 +27,7 @@ $(document).on('mouseout', '.imgopacity a img', function() {
 });
 
 if ($.inArray(homePage, ['boys', 'girls', 'kids', 'lifestyle']) > -1) {
-    require('../plugins/new-arrivls')({
+    require('../product/index/new-arrivls')({
         type: homePage,
         url: '/common/getNewArrival',
         count: (homePage === 'boys') || (homePage === 'lifestyle') ? 5 : 4,
diff --git a/public/js/channel/img-brand.js b/public/js/channel/img-brand.js
index 12cf3ad..3f7b35a 100644
--- a/public/js/channel/img-brand.js
+++ b/public/js/channel/img-brand.js
@@ -1,6 +1,5 @@
 var $ = require('yoho-jquery');
 
-window.jQuery = $;
 require('yoho-slider');
 
 exports.init = function(selector) {
diff --git a/public/js/common.js b/public/js/common.js
index 020bb24..a958e2e 100644
--- a/public/js/common.js
+++ b/public/js/common.js
@@ -98,7 +98,7 @@ function getShoppingKey() {
     a.async = 1;
     a.src = j;
     m.parentNode.insertBefore(a, m);
-}(window, document, 'script', 'http://cdn.yoho.cn/yas-jssdk/1.0.14/yas.js', '_yas'));
+}(window, document, 'script', 'http://cdn.yoho.cn/yas-jssdk/1.0.17/yas.js', '_yas'));
 
 (function() {
     var uid = getUid();
@@ -108,7 +108,7 @@ function getShoppingKey() {
     window._ozuid = uid; // 暴露ozuid
 
     if (window._yas) {
-        window._yas(1 * new Date(), '1.0.14', 'yohobuy_web', uid, '', '');
+        window._yas(1 * new Date(), '1.0.17', 'yohobuy_web', uid, '', '');
     }
 }());
 
diff --git a/public/js/common/error.page.js b/public/js/common/error.page.js
new file mode 100644
index 0000000..27d3575
--- /dev/null
+++ b/public/js/common/error.page.js
@@ -0,0 +1 @@
+require('../common');
diff --git a/public/js/common/top-slider.js b/public/js/common/top-slider.js
index a0c41e8..e6a8075 100644
--- a/public/js/common/top-slider.js
+++ b/public/js/common/top-slider.js
@@ -1,6 +1,5 @@
 var $ = require('yoho-jquery');
 
-window.jQuery = $;
 require('yoho-slider');
 
 $(function() {
diff --git a/public/js/header.js b/public/js/header.js
index 935bd9f..b70733e 100644
--- a/public/js/header.js
+++ b/public/js/header.js
@@ -75,7 +75,7 @@ function updateLoginInfo(data) {
     var info = {
         usercenter: 'http://www.yohobuy.com/home?t=' + new Date().getTime(),
         nickname: data.profile_name,
-        signout: 'http://www.yohobuy.com/logout_' + data.token
+        signout: 'http://www.yohobuy.com/logout.html'
     };
 
     if (data.vip.curVipInfo.curLevel * 1 === 3) {
@@ -153,14 +153,24 @@ function loadCartDetail(key) {
     };
 
     $.getJSON('http://www.yohobuy.com/common/shoppingCart/?callback=?', param, function(jsonData) {
-        var totalGoods, data;
+        var totalGoods = [],
+            infoArr = [
+                'main_goods',
+                'advance_goods',
+                'outlet_goods',
+                'gift_goods',
+                'need_pay_gifts'
+            ],
+            data;
 
         if (jsonData.code === 200) {
             data = jsonData.data;
-            totalGoods = $.merge(data.main_goods, data.advance_goods);
-            totalGoods = $.merge(totalGoods, data.outlet_goods);
-            totalGoods = $.merge(totalGoods, data.gift_goods);
-            totalGoods = $.merge(totalGoods, data.need_pay_gifts);
+            $.each(infoArr, function(k, v) {
+                if (data[v]) {
+                    totalGoods = $.merge(totalGoods, data[v]);
+                }
+            });
+
             if (totalGoods && totalGoods.length) {
                 data.totalGoods = totalGoods;
                 $miniCart.html(cartFn({
diff --git a/public/js/passport/back-index.page.js b/public/js/passport/back-index.page.js
new file mode 100644
index 0000000..ad52ef8
--- /dev/null
+++ b/public/js/passport/back-index.page.js
@@ -0,0 +1,5 @@
+/**
+ * Created by TaoHuang on 2016/6/21.
+ */
+
+require('./back/back');
diff --git a/public/js/passport/back-reset-pwd.page.js b/public/js/passport/back-reset-pwd.page.js
new file mode 100644
index 0000000..9eb28de
--- /dev/null
+++ b/public/js/passport/back-reset-pwd.page.js
@@ -0,0 +1,5 @@
+/**
+ * Created by TaoHuang on 2016/6/21.
+ */
+
+require('./back/reset');
diff --git a/public/js/passport/back-reset-success.js b/public/js/passport/back-reset-success.js
new file mode 100644
index 0000000..fb5a4cb
--- /dev/null
+++ b/public/js/passport/back-reset-success.js
@@ -0,0 +1,3 @@
+/**
+ * Created by TaoHuang on 2016/6/21.
+ */
diff --git a/public/js/passport/back-send-email-ok.page.js b/public/js/passport/back-send-email-ok.page.js
new file mode 100644
index 0000000..fb5a4cb
--- /dev/null
+++ b/public/js/passport/back-send-email-ok.page.js
@@ -0,0 +1,3 @@
+/**
+ * Created by TaoHuang on 2016/6/21.
+ */
diff --git a/public/js/passport/back-verify-mobile-code.page.js b/public/js/passport/back-verify-mobile-code.page.js
new file mode 100644
index 0000000..fff44a1
--- /dev/null
+++ b/public/js/passport/back-verify-mobile-code.page.js
@@ -0,0 +1,5 @@
+/**
+ * Created by TaoHuang on 2016/6/21.
+ */
+
+require('./back/verification');
diff --git a/public/js/passport/back/ac-email.js b/public/js/passport/back/ac-email.js
new file mode 100644
index 0000000..b42b759
--- /dev/null
+++ b/public/js/passport/back/ac-email.js
@@ -0,0 +1,85 @@
+/**
+ * 邮箱自动补全
+ * @author:xuqi<qi.xu@yoho.cn>
+ * @date: 2016/2/22
+ */
+var $ = require('yoho-jquery');
+
+var mailPostfix = {
+    num: ['qq.com', '163.com', '126.com', 'sina.com', 'gmail.com', 'sohu.com', 'hotmail.com', '139.com', '189.com'],
+    other: ['gmail.com', 'qq.com', '163.com', '126.com', 'sina.com', 'sohu.com', 'hotmail.com', '139.com', '189.com']
+};
+
+var emailAcTime;
+
+/**
+ * @param $input 需要自动完成的$对象
+ * @param cb 鼠标移开/点击自动完成项后需要执行的操作(验证等)
+ */
+module.exports = function($input, cb) {
+    var ulHtml = '<ul id="email-autocomplete" class="email-autocomplete hide"></ul>';
+
+    var $emailAutoComplete;
+
+    $input.parent().append(ulHtml);
+
+    $emailAutoComplete = $('#email-autocomplete');
+
+    $input.on('keyup', function() {
+        var account = $.trim($(this).val()),
+            html = '',
+            accountMatch,
+            matchStr,
+            postfix,
+            i;
+
+        // 输入@时自动补全邮箱后缀
+        // 此处>0非错误,用于避免输入的第一个字符为@被识别为邮箱
+        if (account.indexOf('@') > 0) {
+            accountMatch = account.match(/^[0-9]+@(.*)/);
+            if (accountMatch) {
+
+                // 数字邮箱补全
+                postfix = mailPostfix.num;
+                matchStr = accountMatch[1];
+            } else {
+                postfix = mailPostfix.other;
+                matchStr = account.match(/@(.*)/)[1];
+            }
+
+            for (i = 0; i < postfix.length; i++) {
+                if (postfix[i].indexOf(matchStr) > -1) {
+                    html += '<li>' + account.slice(0, account.indexOf('@')) + '@' + postfix[i] + '</li>';
+                }
+            }
+
+            if (html !== '' && /.com$/.test(account) === false) {
+                $emailAutoComplete.html(html).removeClass('hide');
+            } else {
+
+                // 隐藏autocomplete
+                $emailAutoComplete.html('').addClass('hide');
+            }
+        }
+    }).on('blur', function() {
+        emailAcTime = setTimeout(function() {
+
+            // 未点击自动完成项
+            $emailAutoComplete.addClass('hide');
+
+            cb && cb();
+        }, 200);
+    });
+
+    // 邮箱自动完成列表项点击
+    $emailAutoComplete.on('click', 'li', function() {
+        clearTimeout(emailAcTime); // 清空默认关闭
+
+        // 点击自动完成项后进行验证
+        $input.val($(this).text()).focus();
+
+        $emailAutoComplete.addClass('hide');
+
+        cb && cb();
+    });
+};
diff --git a/public/js/passport/back/back.js b/public/js/passport/back/back.js
new file mode 100644
index 0000000..ae2df11
--- /dev/null
+++ b/public/js/passport/back/back.js
@@ -0,0 +1,233 @@
+/**
+ * 找回密码
+ * @author: xuqi<qi.xu@yoho.cn>
+ * @date: 2015/12/14
+ */
+
+var $ = require('yoho-jquery'),
+    regx = require('./mail-phone-regx'),
+    emailReg = regx.emailRegx,
+    phoneRegx = regx.phoneRegx;
+
+var emailAc = require('./ac-email'); // 邮箱自动完成
+
+var $cr = $('#country-code-hide'),
+    $phoneNum = $('#phone-num'),
+    $ca = $('#captcha'),
+    $ccList = $('#country-code-list'),
+    $cc = $('#country-code'),
+    $btn = $('#find-btn'),
+    $accErr = $('#account-err'),
+    $caErr = $('#captcha-err'),
+    caCount = 4, // 验证码位数
+    hasPh = false,
+    hasCa = false;
+
+
+require('yoho-jquery-placeholder');
+
+function imgcode() {
+    var time = new Date(),
+        $captchaImg = $('#captcha-img'),
+        captchaImgSrc = $captchaImg.attr('src').split('?')[0];
+
+    $('#captcha-img').attr('src', captchaImgSrc + '?t=' + time.getTime());
+}
+
+function enableBtn() {
+    if (hasPh && hasCa) {
+        $btn.removeClass('disable').prop('disabled', false);
+    } else {
+        $btn.addClass('disable').prop('disabled', true);
+    }
+}
+
+function authcode() {
+    if (!hasPh || !hasCa) {
+        enableBtn();
+        return;
+    }
+
+    $.ajax({
+        type: 'POST',
+        url: '/passport/back/authcode',
+        data: {
+            verifyCode: $.trim($ca.val()),
+            phoneNum: $phoneNum.val(),
+            area: $cr.val()
+        }
+
+    }).then(function(data) {
+        if (data.code === 200) {
+            hasCa = true;
+        } else if (data.code === 402) {
+            hasPh = false;
+            hasCa = true;
+            $accErr.removeClass('hide').find('em').text('该账号不存在');
+            $phoneNum.addClass('error');
+        } else if (data.code === 400) {
+            hasCa = false;
+            imgcode();
+        }
+        enableBtn();
+    });
+}
+
+function vaPn(v) {
+    var pass = true,
+        errTxt = '';
+
+    v = $.trim(v);
+    if (v !== '') {
+        if (/^[0-9]+$/.test(v)) {
+            if (phoneRegx[$cr.val()].test(v)) {
+                pass = true;
+            } else {
+                errTxt = '手机号码格式不正确, 请重新输入';
+                pass = false;
+            }
+        } else {
+            if (emailReg.test(v)) {
+                pass = true;
+            } else {
+                errTxt = '邮箱格式不正确, 请重新输入';
+                pass = false;
+            }
+        }
+    } else {
+        errTxt = '账户名不能为空';
+        pass = false;
+    }
+    hasPh = pass;
+    authcode();
+
+    return {
+        pass: pass,
+        errTxt: errTxt
+    };
+}
+
+function vaCa() {
+    var v = $.trim($ca.val());
+
+    if (v === '' || v.length < caCount) {
+        hasCa = false;
+        enableBtn();
+        return;
+    }
+
+    hasCa = true;
+
+    authcode();
+}
+
+emailAc($phoneNum, function() {
+    var pnVa = vaPn($phoneNum.val());
+
+    if (pnVa.pass) {
+        $accErr.addClass('hide');
+        $phoneNum.removeClass('error');
+    } else {
+        $accErr.removeClass('hide').find('em').text(pnVa.errTxt);
+        $phoneNum.addClass('error');
+    }
+}
+);
+
+$ca.attr('maxlength', caCount);
+
+// IE8 placeholder
+$('input').placeholder();
+
+$('#change-captcha, #captcha-img').on('click', function() {
+    imgcode();
+});
+
+$cc.on('click', function(e) {
+    e.stopPropagation();
+    if ($ccList.css('style') === 'block') {
+        $ccList.slideUp('fast');
+    } else {
+        $ccList.slideDown('fast');
+    }
+});
+
+$ccList.delegate('li', 'click', function(e) {
+    var $cur = $(this),
+        code = $cur.data('cc'),
+        pnVa;
+
+    e.stopPropagation();
+    $cr.val(code);
+    $cc.find('em').html($cur.text());
+
+    // 切换后验证手机号码
+    if ($.trim($phoneNum.val()) !== '') {
+        pnVa = vaPn($phoneNum.val());
+        enableBtn();
+        if (hasPh) {
+            $accErr.addClass('hide');
+            $phoneNum.removeClass('error');
+        } else {
+            $accErr.removeClass('hide').text(pnVa.errTxt);
+            $phoneNum.addClass('error');
+        }
+    }
+    $ccList.slideUp('fast');
+});
+
+$(document).click(function() {
+    if ($ccList.css('display') === 'block') {
+        $ccList.slideUp();
+    }
+});
+
+$phoneNum.keyup(function() {
+    vaPn($.trim($(this).val()));
+}).focus(function() {
+    $(this).removeClass('error');
+
+    // focus隐藏错误提示
+    $accErr.addClass('hide');
+});
+
+// 验证码在鼠标移开后验证, keyup时不再验证
+$ca.blur(function() {
+    var errTxt = $.trim($ca.val()) === '' ? '验证码不能为空' : '验证码不正确';
+
+    if (hasCa) {
+        $caErr.addClass('hide');
+        $ca.removeClass('error');
+    } else {
+        $caErr.removeClass('hide').find('em').text(errTxt);
+        $ca.addClass('error');
+
+        // 验证码错误则刷新验证码
+        if ($ca.val() < caCount) {
+
+            // 防止重复刷新验证码
+            imgcode();
+        }
+    }
+}).focus(function() {
+    $(this).removeClass('error');
+
+    // focus隐藏错误提示
+    $caErr.addClass('hide');
+}).keyup(function() {
+    vaCa();
+});
+
+$('#find-btn').click(function(e) {
+
+    if (/^[0-9]+$/.test($.trim($phoneNum.val()))) {
+        $('#find-form').attr('action', '/passport/back/mobile');
+    }
+    if ($(this).hasClass('disable')) {
+        return;
+    }
+    if (!hasCa || !hasPh) {
+        e.preventDefault();
+        return true;
+    }
+});
diff --git a/public/js/passport/back/mail-phone-regx.js b/public/js/passport/back/mail-phone-regx.js
new file mode 100644
index 0000000..2296b48
--- /dev/null
+++ b/public/js/passport/back/mail-phone-regx.js
@@ -0,0 +1,29 @@
+/**
+ * 国家区号Map手机号码以及邮箱验证正则
+ * @author: xuqi<qi.xu@yoho.cn>
+ * @date: 2015/12/11
+ */
+
+var countryPhoneRegx = {
+    '+86': /^1[35847]{1}[0-9]{9}$/,
+    '+852': /^[965]{1}[0-9]{7}$/,
+    '+853': /^[0-9]{8}$/,
+    '+886': /^[0-9]{10}$/,
+    '+65': /^[98]{1}[0-9]{7}$/,
+    '+60': /^1[1234679]{1}[0-9]{8}$/,
+    '+1': /^[0-9]{10}$/,
+    '+82': /^01[0-9]{9}$/,
+    '+44': /^7[789]{1}[0-9]{8}$/,
+    '+81': /^0[9|8|7][0-9]{9}$/,
+    '+61': /^[0-9]{11}$/
+};
+
+var emailRegx = /^[.\-_a-zA-Z0-9]+@[\-_a-zA-Z0-9]+\.[a-zA-Z0-9]/;
+
+var pwdValidateRegx = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/;
+
+exports.phoneRegx = countryPhoneRegx;
+
+exports.emailRegx = emailRegx;
+
+exports.pwdValidateRegx = pwdValidateRegx;
diff --git a/public/js/passport/back/pwd-strength.js b/public/js/passport/back/pwd-strength.js
new file mode 100644
index 0000000..fbf827c
--- /dev/null
+++ b/public/js/passport/back/pwd-strength.js
@@ -0,0 +1,67 @@
+/*
+ * 计算密码复杂度
+ */
+
+function gettype(str, i) {
+    if (str.charCodeAt(i) >= 48 && str.charCodeAt(i) <= 57) {
+        return 1;
+    } else if (str.charCodeAt(i) >= 97 && str.charCodeAt(i) <= 122) {
+        return 2;
+    } else if (str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 90) {
+        return 3;
+    }
+
+    return 4;
+}
+
+function isregular(cur, pre, type) {
+    var curCode = cur.charCodeAt(0);
+    var preCode = pre.charCodeAt(0);
+
+    if (curCode - preCode === 0) {
+        return true;
+    }
+
+    if (type !== 4 && (curCode - preCode === 1 || curCode - preCode === -1)) {
+        return true;
+    }
+
+    return false;
+}
+
+function getcomplex(curType, preType) {
+    if (preType === 0 || curType === preType) {
+        return 0;
+    } else if (curType === 4 || preType === 4) {
+        return 2;
+    } else {
+        return 1;
+    }
+}
+
+function computeComplex(password) {
+    var complex = 0,
+        length = password.length,
+        pre = '',
+        preType = 0,
+        i = 0,
+        cur,
+        curType;
+
+
+    for (i = 0; i < length; i++) {
+        cur = password.charAt(i);
+        curType = gettype(password, i);
+
+        if (preType !== curType || !isregular(cur, pre, curType)) {
+            complex += curType + getcomplex(curType, preType);
+        }
+
+        pre = cur;
+        preType = curType;
+    }
+
+    return complex;
+}
+
+module.exports = computeComplex;
diff --git a/public/js/passport/back/reset.js b/public/js/passport/back/reset.js
new file mode 100644
index 0000000..405ccf3
--- /dev/null
+++ b/public/js/passport/back/reset.js
@@ -0,0 +1,234 @@
+/**
+ * 找回密码
+ * @author: xuqi<qi.xu@yoho.cn>
+ * @date: 2015/12/14
+ */
+
+var $ = require('yoho-jquery');
+
+var $pwd = $('#pwd'),
+    $repwd = $('#re-input'),
+    $next = $('#reset-pwd-btn'),
+    $pwdErr = $('#pwd-err'),
+    $repwdErr = $('#repwd-err'),
+    $pwdTips = $('#pwd-tips');
+
+var hasNoErrPw = false;
+
+var $pwdIntensity = $('.pwd-intensity'),
+    $pwdParent = $pwdIntensity.closest('.pwd-intensity-container'),
+    $pwdTip1 = $('#pwd-tip1');
+
+var pwdRegx = require('./mail-phone-regx').pwdValidateRegx;
+
+require('yoho-jquery-placeholder');
+
+
+/*
+ * 计算密码复杂度
+ */
+
+function gettype(str, i) {
+    if (str.charCodeAt(i) >= 48 && str.charCodeAt(i) <= 57) {
+        return 1;
+    } else if (str.charCodeAt(i) >= 97 && str.charCodeAt(i) <= 122) {
+        return 2;
+    } else if (str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 90) {
+        return 3;
+    }
+
+    return 4;
+}
+
+function isregular(cur, pre, type) {
+    var curCode = cur.charCodeAt(0);
+    var preCode = pre.charCodeAt(0);
+
+    if (curCode - preCode === 0) {
+        return true;
+    }
+
+    if (type !== 4 && (curCode - preCode === 1 || curCode - preCode === -1)) {
+        return true;
+    }
+
+    return false;
+}
+
+function getcomplex(curType, preType) {
+    if (preType === 0 || curType === preType) {
+        return 0;
+    } else if (curType === 4 || preType === 4) {
+        return 2;
+    } else {
+        return 1;
+    }
+}
+
+function computeComplex(password) {
+    var complex = 0,
+        length = password.length,
+        pre = '',
+        preType = 0,
+        i = 0,
+        cur,
+        curType;
+
+
+    for (i = 0; i < length; i++) {
+        cur = password.charAt(i);
+        curType = gettype(password, i);
+
+        if (preType !== curType || !isregular(cur, pre, curType)) {
+            complex += curType + getcomplex(curType, preType);
+        }
+
+        pre = cur;
+        preType = curType;
+    }
+
+    return complex;
+}
+
+function pwdKeyupEvt() {
+    var pwd = $pwd.val(),
+        pwdStrength = computeComplex(pwd),
+        level = 0;
+
+    // TODO:自定义密码强度规则,需要修正
+    if (pwdStrength === 0) {
+        level = 0;
+    } else if (pwdStrength <= 10) {
+        level = 1;
+    } else if (pwdStrength <= 20) {
+        level = 2;
+    } else {
+        level = 3;
+    }
+    switch (level) {
+        case 0:
+            $pwdParent.removeClass('red yellow green');
+            $pwdIntensity.removeClass('color');
+            break;
+        case 1:
+            $pwdParent.addClass('red').removeClass('yellow green');
+            $pwdIntensity.filter('.low').addClass('color');
+            $pwdIntensity.filter('.mid,.high').removeClass('color');
+            break;
+        case 2:
+            $pwdParent.addClass('yellow').removeClass('red green');
+            $pwdIntensity.filter('.low,.mid').addClass('color');
+            $pwdIntensity.filter('.high').removeClass('color');
+            break;
+        case 3:
+            $pwdParent.addClass('green').removeClass('yellow red');
+            $pwdIntensity.addClass('color');
+            break;
+    }
+
+    // 提示框
+    if (pwd === '') {
+        $pwdTip1.removeClass('red yes no').addClass('default');
+    } else if (pwd.length < 6 || pwd.length > 20) {
+        $pwdTip1.removeClass('default yes').addClass('no red');
+    } else {
+        $pwdTip1.removeClass('default no red').addClass('yes');
+    }
+
+    if (pwdRegx.test(pwd)) {
+        hasNoErrPw = true;
+    } else {
+        hasNoErrPw = false;
+    }
+}
+
+// IE8 placeholder
+$('input').placeholder();
+
+$('.va').keyup(function() {
+    var pass = true;
+
+    if ($(this).hasClass('pwd')) {
+        pwdKeyupEvt();
+    } else {
+        if ($(this).val() === '') {
+            pass = false;
+        }
+    }
+    if (pass && hasNoErrPw && $pwd.val() === $repwd.val()) {
+        pass = true;
+    } else {
+        pass = false;
+    }
+    if (pass) {
+        $next.removeClass('disable').prop('disabled', false);
+    } else {
+        $next.addClass('disable').prop('disabled', true);
+    }
+}).blur(function() {
+    var $this = $(this),
+        v = $this.val();
+
+    if ($this.hasClass('pwd')) {
+        if (v === '') {
+            $this.addClass('error');
+            $pwdErr.removeClass('hide').find('em').text('请输入密码');
+        } else if (v.length < 6 || v.length > 20) {
+            $this.addClass('error');
+            $pwdErr.removeClass('hide').find('em').text('密码只支持6-20位');
+        } else if (!pwdRegx.test(v)) {
+            $this.addClass('error');
+            $pwdErr.removeClass('hide').find('em').text('密码须字母和数字组合');
+        } else {
+            $pwdErr.addClass('hide');
+            if ($repwd.val() !== '') {
+                if (v !== $repwd.val()) {
+                    $repwd.addClass('error');
+                    $repwdErr.removeClass('hide').find('em').text('两次密码输入不一致,请重新输入');
+                } else {
+                    $repwd.removeClass('error');
+                    $repwdErr.addClass('hide');
+                }
+            }
+        }
+    } else {
+        if (v === '') {
+            $this.addClass('error');
+            $repwdErr.removeClass('hide').find('em').text('请输入密码确认');
+        } else {
+            if ($pwd.val() !== '' && v !== $pwd.val()) {
+                $this.addClass('error');
+                $repwdErr.removeClass('hide').find('em').text('两次密码输入不一致,请重新输入');
+            } else {
+                $this.removeClass('error');
+                $repwdErr.addClass('hide');
+            }
+        }
+    }
+}).focus(function() {
+    $(this).removeClass('error');
+
+    // focus后错误提示隐藏
+    if ($(this).hasClass('pwd')) {
+        $pwdErr.addClass('hide');
+    } else {
+        $repwdErr.addClass('hide');
+    }
+});
+
+$pwd.focus(function() {
+    $pwdErr.addClass('hide');
+    $pwdTips.removeClass('hide');
+}).blur(function() {
+    $pwdTips.addClass('hide');
+});
+
+$('#pwd, #repwd').keydown(function(e) {
+    var code = e.keyCode || e.which;
+
+    // 空格输入过滤
+    if (code === 32) {
+        e.preventDefault();
+        return;
+    }
+});
diff --git a/public/js/passport/back/verification.js b/public/js/passport/back/verification.js
new file mode 100644
index 0000000..1068446
--- /dev/null
+++ b/public/js/passport/back/verification.js
@@ -0,0 +1,116 @@
+/**
+ * 验证手机
+ * @author: xuqi<qi.xu@yoho.cn>
+ * @date: 2015/12/14
+ */
+
+var $ = require('yoho-jquery');
+
+var $sc = $('#send-captcha'),
+    $msgTip = $('#captcha-tip'),
+    $errTip = $('#err-tip'),
+    $next = $('#next-step'),
+    seconds,
+    itime;
+
+$sc.click(function() {
+    $.post('/passport/back/sendbackmobile', {
+        mobile: $('#mobile').val(),
+        area: $('#area').val(),
+        verifyCode: $('#captchaPic').val()
+    }, function(jsonData) {
+        if (jsonData.code === 200) {
+            $errTip.hide();
+            if ($(this).hasClass('disable')) {
+                return;
+            }
+            seconds = 60;
+
+            // $sc.addClass('disable').prop('disabled', true);
+            $sc.addClass('disable').attr('disabled', true);
+            $msgTip.removeClass('hide');
+
+            $sc.val(seconds-- + '秒后可重新操作');
+            itime = setInterval(function() {
+                if (seconds === 0) {
+                    clearInterval(itime);
+
+                    // $sc.val('发送验证码').removeClass('disable').prop('disabled', false);
+                    $sc.val('发送验证码').removeClass('disable').removeAttr('disabled');
+                } else {
+                    $sc.val(seconds-- + '秒后可重新操作');
+                }
+            }, 1000);
+
+        } else {
+            $(this).addClass('error');
+            $errTip.removeClass('hide').text('发送失败');
+        }
+    });
+});
+
+seconds = 60;
+
+// $sc.addClass('disable').prop('disabled', true);
+$sc.addClass('disable').attr('disabled', true);
+$msgTip.removeClass('hide');
+
+$sc.val(seconds-- + '秒后可重新操作');
+itime = setInterval(function() {
+    if (seconds === 0) {
+        clearInterval(itime);
+
+        // $sc.val('发送验证码').removeClass('disable').prop('disabled', false);
+        $sc.val('发送验证码').removeClass('disable').removeAttr('disabled');
+    } else {
+        $sc.val(seconds-- + '秒后可重新操作');
+    }
+}, 1000);
+
+
+$('#captcha').keyup(function() {
+    var v = $.trim($(this).val()),
+        that = this;
+
+    if (v.length === 4) {
+        $.ajax({
+            type: 'POST',
+            url: '/passport/back/backmobile',
+            dataType: 'json',
+            data: {
+                code: $('#captcha').val(),
+                verifyCode: $('#captchaPic').val(),
+                area: $('#area').val(),
+                mobile: $('#mobile').val()
+            },
+            success: function(res) {
+                if (res.code === 200) {
+
+                    console.log(res.data);
+
+                    // 添加验证码正确验证
+                    $next.removeClass('disable').attr('href', res.data);
+                    $errTip.addClass('hide');
+                    $(that).removeClass('error');
+                } else {
+                    $next.addClass('disable');
+                    $errTip.removeClass('hide').find('em').text('验证码输入错误');
+                    $(that).addClass('error');
+                }
+            }
+        });
+    } else {
+        $next.addClass('disable').attr('href', 'javascript:;');
+    }
+}).blur(function() {
+    var v = $.trim($(this).val());
+
+    if (v === '') {
+
+        // 添加验证码正确验证
+        $(this).addClass('error');
+        $errTip.removeClass('hide').text('请输入验证码');
+    }
+}).focus(function() {
+    $(this).removeClass('error');
+});
diff --git a/public/js/plugins/dialog.js b/public/js/plugins/dialog.js
index 2c5ff47..dabc9fc 100644
--- a/public/js/plugins/dialog.js
+++ b/public/js/plugins/dialog.js
@@ -78,7 +78,7 @@ function Dialog(options) {
     }
 
     // 绑定按钮事件
-    if (!!opt.btns) {
+    if (opt.btns) {
         for (i = 0; i < opt.btns.length; i++) {
             bindBtnEvt(i);
         }
diff --git a/public/js/plugins/filter.js b/public/js/plugins/filter.js
index 7cd8baf..39cf022 100644
--- a/public/js/plugins/filter.js
+++ b/public/js/plugins/filter.js
@@ -12,8 +12,8 @@ var checkUnicode = {
         checked: '&#xe613;'
     },
     moreUnicode = {
-        up: '&#xe610;',
-        down: '&#xe600;'
+        up: '&#xe607;',
+        down: '&#xe60b;'
     };
 
 // 品牌相关变量
diff --git a/public/js/plugins/slider.js b/public/js/plugins/slider.js
index 795dfbb..b9b9bac 100644
--- a/public/js/plugins/slider.js
+++ b/public/js/plugins/slider.js
@@ -29,7 +29,7 @@ var $ = require('yoho-jquery'),
                 lazyLoad(this.$element.find('img.lazy'));
                 return;
             }
-            if (!!this.options.pagination) {
+            if (this.options.pagination) {
                 this.smallItem = $(this.options.pagination).find('li');
             } else {
                 this._createPage();
@@ -170,4 +170,4 @@ var $ = require('yoho-jquery'),
         orient: true, // 左右切换箭头的显示
         pagination: null
     };
-})($);
+}($));
diff --git a/public/js/plugins/logo-brand.js b/public/js/product/index/logo-brand.js
index 6ce0c55..0e952ef 100644
--- a/public/js/plugins/logo-brand.js
+++ b/public/js/product/index/logo-brand.js
@@ -8,7 +8,7 @@ var $ = require('yoho-jquery'),
     Handlebars = require('yoho-handlebars'),
     lazyLoad = require('yoho-jquery-lazyload');
 
-(function($) {
+(function() {
     var LogoBrand = function(element, options) {
         this.$element = $(element);
         this.options = $.extend({}, $.fn.logoBrand.defaults, options);
@@ -48,8 +48,8 @@ var $ = require('yoho-jquery'),
 
                         // 插入切换按钮的位置
                         out = out + '<li class="logo-brand-switch" data-page="' + Math.floor(i / showNum) + '">' +
-                                    '<a class="prev iconfont" href="javascript:;">&#xe60f;</a>' +
-                                    '<a class="next iconfont" href="javascript:;">&#xe60e;</a></li>' +
+                                    '<a class="prev iconfont" href="javascript:;">&#xe609;</a>' +
+                                    '<a class="next iconfont" href="javascript:;">&#xe608;</a></li>' +
                                     '<li data-page="' + Math.floor(i / showNum) + '">' + item + '</li>';
                     } else if (i !== 0 && i % showNum === 0) {
 
@@ -153,4 +153,4 @@ var $ = require('yoho-jquery'),
         showNum: 16,
         url: '/boys/getBrand'
     };
-})($);
+}());
diff --git a/public/js/plugins/new-arrivls.js b/public/js/product/index/new-arrivls.js
index f241338..aaa6b59 100644
--- a/public/js/plugins/new-arrivls.js
+++ b/public/js/product/index/new-arrivls.js
@@ -112,7 +112,7 @@ module.exports = function(data) {
     delete data.count;
     delete data.rows;
 
-    loadAjax = function(url, data, count) {
+    loadAjax = function() {
 
         var options = {
             type: 'POST',
@@ -154,14 +154,14 @@ module.exports = function(data) {
     };
 
 
-    load.on('after', function(p) {
+    load.on('after', function() {
 
         data.pageCount = count * rows[1];
 
         loadAjax(url, data);
     });
 
-    load.on('before', function(p) {
+    load.on('before', function() {
 
 
         load.tpl = '{{#each this}}';
diff --git a/public/js/plugins/product-event.js b/public/js/product/index/product-event.js
index 7101892..7101892 100644
--- a/public/js/plugins/product-event.js
+++ b/public/js/product/index/product-event.js
diff --git a/public/js/plugins/product.js b/public/js/product/index/product.js
index 2a83778..d977888 100644
--- a/public/js/plugins/product.js
+++ b/public/js/product/index/product.js
@@ -83,88 +83,12 @@ exports.init = function(num) {
         });
     }
 
-    // 原来的
-    // productList.addHandler('MouseEnter', function(event) {
-    //    var itemMr = 10, // list的右边距
-    //        itemMb = 35, // list的下边距
-    //        ulStr = '',
-    //        ulNum,
-    //        wrapperWidth,
-    //        diffWidth,
-    //        wrapperX,
-    //        wrapperY,
-    //        wrapperPl, // 鼠标移入时弹层的左内边距
-    //        wrapperPt, // 鼠标移入时弹层的上内边距
-    //        containerPt, // 商品列表容器的上内边距
-    //        _from = event.target.attr('data-from') || '';
-    //
-    //    $.ajax({
-    //        type: 'POST',
-    //        url: '/product/list/getProductPic',
-    //        dataType: 'jsonp',
-    //        jsonp: 'callback',
-    //        data: {
-    //            skn: event.target.attr('data-skn'),
-    //            skc: event.target.attr('data-skc')
-    //        }
-    //    }).then(function(res) {
-    //        var data = res.data,
-    //            colorList = createColorList(data.pics, _from);
-    //
-    //        removeHtmlFn();
-    //
-    //        ulStr = colorList.colorListStr; // ajax请求的颜色列表
-    //        ulNum = colorList.ulNum;// ajax请求的颜色的数量
-    //
-    //        $goodInfoMain.append(event.targetDuplicate);
-    //        $goodSelectColor.append($(ulStr));
-    //
-    //        // 点击收藏商品不需要了
-    //        // if (data.isFavorite) {
-    //        //     $goodInfoMain.find('.col-btn').addClass('coled');
-    //        // } else {
-    //        //     $goodInfoMain.find('.col-btn').removeClass('coled');
-    //        // }
-    //
-    //        wrapperPl = $goodItemWrapper.css('paddingLeft');
-    //        wrapperPt = $goodItemWrapper.css('paddingTop');
-    //        containerPt = $goodsContainer.css('paddingTop');
-    //
-    //        wrapperWidth = 10 + (15 + 50) * ulNum + event.targetWidth;
-    //
-    //        // wrapperWidth = $goodItemWrapper.width();
-    //
-    //        wrapperX = (event.targetX - 1) * (event.targetWidth + itemMr) - (parseInt(wrapperPl) + 1);
-    //        wrapperY = (event.targetY - 1) *
-    //        (event.targetHeight + itemMb) + parseInt(containerPt) - (parseInt(wrapperPt) + 1);
-    //
-    //        // todo
-    //        // event.offsetR表示当前列表距离浏览器右侧边缘的距离
-    //        diffWidth = event.offsetR - ((15 + 50) * ulNum + 25);
-    //
-    //        if (diffWidth <= 0) {
-    //            wrapperX = wrapperX + diffWidth - 25;
-    //        }
-    //        $goodItemWrapper.css({
-    //            width: wrapperWidth,
-    //            left: wrapperX,
-    //            top: wrapperY,
-    //            display: 'inline-block'
-    //        });
-    //
-    //        // 鼠标悬浮获取到商品信息后显示第一张图片
-    //        if (data.pics[0] && data.pics[0].src) {
-    //            $goodInfoMain.find('.good-thumb img').attr('src', data.pics[0].src);
-    //        }
-    //    });
-    // });
-
     productList.addHandler('MouseEnter', function(event) {
         var itemMr = 10, // list的右边距
             itemMb = 35, // list的下边距
-            imageList,
             colorList,
-            pic, pics,
+            pic,
+            pics,
             ulNum, ulStr,
             wrapperWidth,
             diffWidth,
@@ -177,21 +101,13 @@ exports.init = function(num) {
 
 
         pics = [];
-        event.target.find('.goodsList').find('.list').each(function() {
-            pic = {
-                url: $(this).attr('url'),
-                src: $(this).attr('imgUrl'),
-                coverImg: $(this).attr('cover')
-            };
+        event.target.find('.hideList > li').each(function() {
+            pic = $(this).data();
+            pic.coverImg = pic.src;
             pics.push(pic);
         });
 
-
-        imageList = {
-            pics: pics
-        };
-
-        colorList = createColorList(imageList.pics, _from);
+        colorList = createColorList(pics, _from);
 
         removeHtmlFn();
 
@@ -227,8 +143,8 @@ exports.init = function(num) {
         });
 
         // 鼠标悬浮获取到商品信息后显示第一张图片
-        if (imageList.pics[0] && imageList.pics[0].src) {
-            $goodInfoMain.find('.good-thumb img').attr('src', imageList.pics[0].src);
+        if (pics[0] && pics[0].src) {
+            $goodInfoMain.find('.good-thumb img').attr('src', pics[0].src);
         }
     });
 
@@ -244,9 +160,9 @@ exports.init = function(num) {
 };
 
 // 鼠标放在颜色列表上效果
-$(document).on('hover', '.good-select-color li', function() {
+$(document).on('mouseenter', '.good-select-color li', function() {
     var coverImg = $(this).find('img').attr('data-cover'),
-        $coverImg = $(this).closest('.good-item-wrapper').find('.good-detail-img').find('img');
+        $coverImg = $(this).closest('.good-item-wrapper').find('.good-detail-img img');
 
     $coverImg.attr('src', coverImg);
 });
diff --git a/public/js/product/outlets.page.js b/public/js/product/outlets.page.js
index 34ddb9b..d523fcb 100644
--- a/public/js/product/outlets.page.js
+++ b/public/js/product/outlets.page.js
@@ -8,9 +8,9 @@ var $ = require('yoho-jquery'),
     lazyLoad = require('yoho-jquery-lazyload');
 
 var $limitList = $('.limit-main .good-list'),
+    $limitBrand = $('.limit-main .brand-list'),
     $fixNav = $('.sort-layer .full-line'),
-    $navPar,
-    homePage = $('.outlets-page').data('page');
+    $navPar;
 
 var limitTime = [];
 
@@ -35,8 +35,8 @@ function convertTime(time) {
         s = Math.floor(time / aSecond % 60);
 
         showTime += d > 0 ? d + '天' : '';
-        showTime += h > 0 ? h + '小时' : '';
-        showTime += m > 0 ? m + '分钟' : '';
+        showTime += h > 0 ? h + '时' : '';
+        showTime += m > 0 ? m + '分' : '';
         showTime += s > 0 ? s + '秒' : '';
     }
 
@@ -44,54 +44,84 @@ function convertTime(time) {
 }
 
 function setPageTime() {
-    var i, showTime;
+    var i, text, showTime, $par;
 
     for (i = 0; i < limitTime.length; i++) {
+        if (limitTime[i].time < 0) {
+            return;
+        }
+
         limitTime[i].time -= 1000;
         showTime = convertTime(limitTime[i].time);
-        limitTime[i].dom.text(showTime);
+        if (showTime) {
+            text = showTime;
+            if (limitTime[i].pre) {
+                text = limitTime[i].pre + ' ' + text;
+            }
+        } else {
+            $par = limitTime[i].dom.closest('.item-info').parent();
+            $par.find('a').attr('onclick', 'return false;');
+            text = '活动已结束';
+        }
+        limitTime[i].dom.text(text);
     }
 }
 
-function limitPageSwitch(num) {
-
-    $limitList.animate({
+function limitPageSwitch(dom, num) {
+    dom.animate({
         'margin-left': (-num * 10) + '0%'
-    }, 'fast');
-
-    $limitList.data({
+    }, 'fast').data({
         page: num
     });
 }
 
-function formatExtraGood() {
-    var $item = $limitList.find('.good-item'),
-        html = '',
+// 上线预告&潮品推荐 公共处理方法
+function formatExtraList(items, num) {
+    var html = '',
         list = [],
         i = 0;
 
-    if (!$limitList.length) {
+    if (!items.length) {
         return;
     }
 
-    $item.each(function() {
-        if ((i % 5) === 0) {
+    items.each(function() {
+        if ((i % num) === 0) {
             list.push('');
         }
-        list[list.length - 1] += $item[i].outerHTML;
+        list[list.length - 1] += items[i].outerHTML;
         i++;
     });
 
-    $limitList.data({max: list.length});
+    if (list.length > 3) {
+        list.length = 3;
+    }
 
     for (i = 0; i < list.length; i++) {
         html += '<div class="list-page">' + list[i] + '</div>';
     }
 
-    $limitList.html(html);
+    return {
+        length: list.length,
+        html: html
+    };
+}
+
+function extraInfo() {
+    var good = formatExtraList($limitList.find('.good-item'), 5),
+        brand = formatExtraList($limitBrand.find('.brand-item'), 9);
+
+    if (good && good.length > 1) {
+        $limitList.html(good.html).data({max: good.length});
+        $limitList.siblings('.page-btns').show();
+    }
+
+    if (brand && brand.length > 1) {
+        $limitBrand.html(brand.html).data({max: brand.length});
+        $limitBrand.siblings('.page-btns').show();
+    }
 }
 
-//
 if ($fixNav.length) {
     $navPar = $fixNav.parent();
 
@@ -113,54 +143,52 @@ $('.time').each(function() {
     if (data.limit) {
         limitTime.push({
             dom: $(this),
-            time: data.limit
+            time: data.limit,
+            pre: data.pre ? data.pre : ''
         });
     }
 });
 
-$('.good-page-btns > label').click(function() {
+$('.page-btns > label').click(function() {
     var nowTime = new Date().getTime(),
-        data = $limitList.data(),
-        max = data.max - 1,
-        page = data.page ? data.page : 0;
+        $dom, data, max, page;
 
-    if (data.time && nowTime - data.time < 700) {
+    if ($(this).closest('.good-page-btns').length) {
+        $dom = $limitList;
+    } else {
+        $dom = $limitBrand;
+    }
+
+    data = $dom.data();
+    max = data.max ? data.max : 1;
+    page = data.page ? data.page : 0;
+
+    if (data.time && nowTime - data.time < 500) {
         return;
     }
 
-    $limitList.data({
+    $dom.data({
         time: nowTime
     });
 
     if ($(this).hasClass('pre-page-btn')) {
-        if (page > 0) {
-            page -= 1;
-        } else {
-            limitPageSwitch(-0.1);
-        }
+        page += max - 1;
     } else {
-        if (page < max) {
-            page += 1;
-        } else {
-            limitPageSwitch(max + 0.1);
-        }
+        page += 1;
     }
 
-    limitPageSwitch(page);
+    page = page % max;
+
+    limitPageSwitch($dom, page);
+    $(window).trigger('scroll');
 });
 
 setInterval(setPageTime, 1000);
 
-if (homePage) {
-    $('.slide-container').slider({
-        orient: false
-    });
-} else {
-    $('.slide-container').slider({
-        orient: true
-    });
-}
+$('.slide-container').slider({
+    orient: true
+});
 
-formatExtraGood();
+extraInfo();
 
 lazyLoad($('img.lazy'));
diff --git a/public/js/product/outlets/special.js b/public/js/product/outlets/special.js
index 1af0304..18e3eb9 100644
--- a/public/js/product/outlets/special.js
+++ b/public/js/product/outlets/special.js
@@ -4,8 +4,9 @@
  * @date: 2016/06/3
  */
 
-// var $ = require('yoho-jquery');
+ var product = require('../index/product');
 
-// require('../product');
-// require('../../common/filter');
-// require('../../common/sort-pager');
+ require('../../plugins/filter');
+ require('../../plugins/sort-pager');
+
+ product.init(4);
diff --git a/public/js/product/sale.page.js b/public/js/product/sale.page.js
index ba652cc..ad1d79d 100644
--- a/public/js/product/sale.page.js
+++ b/public/js/product/sale.page.js
@@ -1,6 +1,11 @@
+/**
+ * sale页面
+ * @author: da<abel.wang@yoho.cn>
+ * @date: 2016/05/31
+ */
 var $ = require('yoho-jquery'),
     lazyLoad = require('yoho-jquery-lazyload'),
-    product = require('../plugins/product');
+    product = require('./index/product');
 
 var limitTime = [];
 
@@ -37,7 +42,7 @@ function getNaviData(items) {
 
         goodItems.html('');
         goodItems.append(res);
-        lazyLoad($('img.lazy'));
+        lazyLoad(items.closest('.sale-box').find('.lazy'));
     });
 }
 
@@ -78,8 +83,8 @@ function convertTime(time) {
         s = Math.floor(time / aSecond % 60);
 
         showTime += d > 0 ? d + '天' : '';
-        showTime += h > 0 ? h + '小时' : '';
-        showTime += m > 0 ? m + '分钟' : '';
+        showTime += h > 0 ? h + '时' : '';
+        showTime += m > 0 ? m + '分' : '';
         showTime += s > 0 ? s + '秒' : '';
     }
 
@@ -87,11 +92,23 @@ function convertTime(time) {
 }
 
 function setPageTime() {
-    var i, showTime;
+    var i, text, showTime;
 
     for (i = 0; i < limitTime.length; i++) {
+        if (limitTime[i].time < 0) {
+            return;
+        }
+
         limitTime[i].time -= 1000;
         showTime = convertTime(limitTime[i].time);
+        if (showTime) {
+            text = showTime;
+            if (limitTime[i].pre) {
+                text = limitTime[i].pre + ' ' + text;
+            }
+        } else {
+            text = '活动已结束';
+        }
         $('.time-calculate').removeClass('hidden');
         $('.time-calculate').text(showTime);
     }
diff --git a/public/js/product/sale/banner.js b/public/js/product/sale/banner.js
index a372726..3b2455f 100644
--- a/public/js/product/sale/banner.js
+++ b/public/js/product/sale/banner.js
@@ -23,7 +23,10 @@ for (i = 0; i < $item.length; i++) {
     }
 }
 
-pagationBoxStr = '<div class="sale-list-pagation"><div>' + pagationStr + '</div></div>';
+pagationBoxStr = '<div class="sale-list-pagation">' +
+'<div class="slide-pagination-inner"><div class="slide-shade"></div><div>' +
+ pagationStr + '</div></div></div>';
+
 
 if ($item.length > 1) {
     $contain.append($(pagationBoxStr));
@@ -37,31 +40,32 @@ slide = new Slide({
     index: 0
 });
 
+if ($item.length > 1) {
+    slide.on('change', function(data) {
+        if (current) {
+            current = false;
+        } else {
+            return;
+        }
+        index++;
+
+
+        $('.sale-list-pagation').find('span').removeClass('active');
+        $item.eq(data.from).animate({
+            opacity: 0
+        }, 300);
+        $item.eq(data.to).css({
+            zIndex: index
+        }).animate({
+            opacity: 1
+        }, 300, function() {
+            current = true;
+        });
+
+        $('.sale-list-pagation').find('span').eq(data.to).addClass('active');
 
-slide.on('change', function(data) {
-    if (current) {
-        current = false;
-    } else {
-        return;
-    }
-    index++;
-
-
-    $('.sale-list-pagation').find('span').removeClass('active');
-    $item.eq(data.from).animate({
-        opacity: 0
-    }, 300);
-    $item.eq(data.to).css({
-        zIndex: index
-    }).animate({
-        opacity: 1
-    }, 300, function() {
-        current = true;
     });
-
-    $('.sale-list-pagation').find('span').eq(data.to).addClass('active');
-
-});
+}
 
 $contain.hover(function() {
     if (current) {
diff --git a/public/scss/channel/_brand.css b/public/scss/channel/_brand.css
index 03fcaa4..a29a59b 100644
--- a/public/scss/channel/_brand.css
+++ b/public/scss/channel/_brand.css
@@ -9,16 +9,20 @@
 
     .brands-tabs {
         position: relative;
+
         a {
             display: block;
+
             img {
                 width: 100%;
                 height: 100%;
                 display: block;
             }
         }
+
         li {
             float: left;
+
             p {
                 display: block;
                 font-size: 30px;
@@ -30,22 +34,27 @@
                 margin-top: -15px;
                 z-index: 3;
             }
+
             .g-mask {
                 opacity: 0.4;
             }
+
             &:hover .g-mask,
             .g-mask-on {
                 opacity: 0;
             }
         }
+
         .hover-contain {
             position: relative;
             border-bottom: 1px solid #dfdfdf;
+
             .hoverarr {
                 background-color: #3d3d3d;
                 position: absolute;
                 bottom: 0;
                 z-index: 10;
+
                 i {
                     width: 0;
                     height: 0;
@@ -60,9 +69,11 @@
             }
         }
     }
+
     .header-navs {
         margin-right: -15px;
     }
+
     .category-nav {
         border: 2px solid #222;
         padding-left: 16px;
@@ -73,10 +84,12 @@
         position: relative;
         z-index: 100;
         background-color: #fff;
+
         span {
             display: inline-block;
             margin-right: 15px;
         }
+
         a {
             display: inline-block;
             padding: 0 7px;
@@ -85,18 +98,21 @@
             cursor: pointer;
         }
     }
+
     .category-fix {
         position: fixed;
         top: 0;
         z-index: 100;
         margin-top: 0 !important;
     }
+
     .brands-list {
         dl {
             position: relative;
             border-top: 1px dotted #999;
             padding: 20px 0;
         }
+
         dt {
             position: absolute;
             width: 130px;
@@ -107,38 +123,46 @@
             top: 50%;
             margin-top: -9px;
         }
+
         dd {
             margin-left: 130px;
+
             li {
                 float: left;
                 display: block;
                 width: 170px;
                 height: 18px;
             }
+
             a {
                 color: #666;
                 line-height: 18px;
                 font-size: 12px;
                 position: relative;
             }
+
             span {
                 max-width: 150px;
                 overflow: hidden;
                 text-overflow: ellipsis;
                 white-space: nowrap;
                 display: inline-block;
+
                 &:hover {
                     text-decoration: underline;
                 }
             }
+
             .brands-dialog {
                 display: inline;
                 position: relative;
             }
+
             .hot {
                 font-weight: bold;
                 color: #222;
             }
+
             i {
                 position: relative;
                 top: -4px;
@@ -154,17 +178,21 @@
 
     .brands-tabs {
         width: 100%;
+
         li {
             margin-left: 10px;
+
             a {
                 position: relative;
                 width: 222px;
                 height: 180px;
             }
         }
+
         li:first-child {
             margin-left: 0;
         }
+
         .hover-contain {
             height: 30px;
 
@@ -222,33 +250,40 @@
         .g-list {
             margin-top: -32px;
         }
+
         li {
             margin-right: 8px;
             margin-top: 32px;
+
             a {
                 width: 378px;
                 height: 250px;
             }
         }
     }
+
     .singlegoods {
         .g-list {
             margin-top: -10px;
         }
+
         li {
             margin-right: 10px;
             margin-top: 10px;
+
             a {
                 width: 280px;
                 height: 374px;
             }
         }
+
         .singlegoods-title {
             position: absolute;
             left: 0;
             bottom: 0;
             height: 50px;
             width: 100%;
+
             p {
                 position: absolute;
                 z-index: 2;
@@ -264,18 +299,22 @@
             }
         }
     }
+
     .video {
         .g-list {
             margin-top: -10px;
         }
+
         li {
             margin-right: 8px;
             margin-top: 10px;
+
             a {
                 width: 378px;
                 height: 242px;
             }
         }
+
         .video-play {
             display: block;
             position: absolute;
@@ -287,12 +326,14 @@
             height: 56px;
             background-image: resolve(img/index/play.png);
         }
+
         .video-title {
             position: absolute;
             left: 0;
             bottom: 0;
             height: 32px;
             width: 100%;
+
             p {
                 position: absolute;
                 z-index: 2;
@@ -308,15 +349,19 @@
             }
         }
     }
+
     .news {
         margin-bottom: 40px;
+
         .news-pic {
             position: relative;
             float: left;
             width: 764px;
             height: 436px;
+
             .slide-container {
                 height: 100%;
+
                 li a {
                     height: 100%;
                     width: 764px;
@@ -325,21 +370,26 @@
                 .slide-wrapper {
                     height: 100%;
                 }
+
                 .slide-switch {
                     display: none;
                 }
+
                 .prev {
                     left: 0;
                     margin-left: 0;
                 }
+
                 .next {
                     right: 0;
                     margin-right: 0;
                 }
+
                 .slide-switch.show {
                     display: block;
                 }
             }
+
             .slide-tips {
                 position: absolute;
                 left: 0;
@@ -359,40 +409,48 @@
                     color: #fff;
                 }
             }
+
             .slide-pagination {
                 right: 0;
                 left: auto;
                 bottom: 0;
+
                 .slide-shade {
                     opacity: 0;
                     background: none;
                 }
+
                 span {
                     margin-top: 3px;
                 }
             }
         }
+
         .news-txt {
             float: right;
             padding: 20px 16px;
             float: right;
             border: 1px solid #000;
             overflow: hidden;
+
             ul {
                 height: 100%;
             }
+
             li {
                 position: relative;
                 display: block;
                 margin-bottom: 10px;
                 margin-left: 20px;
             }
+
             a {
                 font-size: 14px;
                 line-height: 27px;
                 cursor: pointer;
                 color: #010101;
                 display: block;
+
                 &:hover {
                     color: #fff;
                     background: #000;
@@ -400,6 +458,7 @@
                     transition: padding 0.4s;
                 }
             }
+
             i {
                 position: absolute;
                 top: 0;
@@ -407,6 +466,7 @@
                 font-size: 22px;
             }
         }
+
         .news-txt {
             width: 342px;
             height: 394px;
@@ -419,15 +479,19 @@
         li {
             margin-right: 10px;
             margin-bottom: 10px;
+
             a {
                 width: 280px;
+
                 img {
                     height: 160px;
                 }
             }
+
             .name {
                 font-size: 14px;
             }
+
             .des {
                 font-size: 12px;
             }
@@ -436,33 +500,39 @@
 
     .brands-items {
         margin: 25px auto;
+
         .brands-item {
             float: left;
             padding: 15px 0;
             width: 50%;
         }
+
         a.brands-pic {
             float: left;
             width: 280px;
             height: 136px;
             display: block;
+
             img {
                 width: 100%;
                 height: 100%;
             }
         }
+
         .brand-info {
             float: right;
             padding: 0 20px;
             width: 255px;
             color: #000;
+
             h3 {
                 width: 100%;
                 font-size: 20px;
                 line-height: 1;
 
-                @mixin ellipsis;
+                @mixin ellipsis ;
             }
+
             .brand-desc {
                 padding: 12px 0;
                 height: 92px;
@@ -472,9 +542,11 @@
             }
         }
     }
+
     .pagination {
         margin: 40px 0 80px;
         text-align: center;
+
         a {
             height: 24px;
             padding: 0 9px;
@@ -484,6 +556,7 @@
             margin-right: 8px;
             color: #222;
             font-size: 12px;
+
             i {
                 position: relative;
                 top: -1px;
@@ -491,6 +564,7 @@
                 transform: scale(0.8);
             }
         }
+
         a.cur {
             background: #222;
             color: #fff;
@@ -502,16 +576,20 @@
     .header-navs {
         margin-right: -10px;
     }
+
     .sit-nav {
         padding-top: 10px;
         font-size: 12px;
+
         .sep {
             margin: 0 6px;
         }
     }
+
     .brands-category {
         width: 990px;
     }
+
     .brands-tabs {
         li {
             a {
@@ -519,8 +597,10 @@
                 height: 154px;
             }
         }
+
         .hover-contain {
             height: 25px;
+
             .hoverarr {
                 height: 4px;
                 width: 190px;
@@ -560,33 +640,40 @@
         .g-list {
             margin-top: -26px;
         }
+
         li {
             margin-right: 9px;
             margin-top: 26px;
+
             a {
                 width: 324px;
                 height: 214px;
             }
         }
     }
+
     .singlegoods {
         .g-list {
             margin-top: -10px;
         }
+
         li {
             margin-right: 10px;
             margin-top: 10px;
+
             a {
                 width: 240px;
                 height: 324px;
             }
         }
+
         .singlegoods-title {
             position: absolute;
             left: 0;
             bottom: 0;
             height: 50px;
             width: 100%;
+
             p {
                 position: absolute;
                 z-index: 2;
@@ -602,18 +689,22 @@
             }
         }
     }
+
     .video {
         .g-list {
             margin-top: -10px;
         }
+
         li {
             margin-right: 9px;
             margin-top: 10px;
+
             a {
                 width: 324px;
                 height: 206px;
             }
         }
+
         .video-play {
             display: block;
             position: absolute;
@@ -625,12 +716,14 @@
             height: 56px;
             background-image: resolve(img/index/play.png);
         }
+
         .video-title {
             position: absolute;
             left: 0;
             bottom: 0;
             height: 30px;
             width: 100%;
+
             p {
                 position: absolute;
                 z-index: 2;
@@ -646,52 +739,65 @@
             }
         }
     }
+
     .news {
         .news-pic {
             width: 660px;
             height: 376px;
+
             .slide-container {
                 height: 376px;
+
                 img {
                     height: 376px;
                 }
             }
         }
+
         .news-txt {
             width: 284px;
             height: 334px;
+
             li {
                 margin-bottom: 13px;
             }
         }
     }
+
     .ads {
         margin-bottom: 30px;
 
         li {
             margin-right: 10px;
             margin-bottom: 10px;
+
             a {
                 width: 240px;
+
                 img {
                     height: 138px;
                 }
             }
+
             .name {
                 font-size: 14px;
             }
+
             .des {
                 font-size: 12px;
             }
         }
     }
+
     .brands-items {
         a.brands-pic {
             width: 240px;
             height: 116px;
         }
+
         .brand-info {
             width: 212px;
+
             .brand-desc {
                 height: 72px;
             }
@@ -711,6 +817,7 @@
 
     .layer-content {
         padding: 20px 20px 20px 35px;
+
         .title {
             font-size: 24px;
             line-height: 24px;
@@ -720,16 +827,19 @@
             text-overflow: ellipsis;
             white-space: nowrap;
         }
+
         .desc {
             margin: 5px 0;
             height: 72px;
             overflow: hidden;
+
             img {
                 width: 80px;
                 height: 50px;
                 margin: 3px 5px 0 0;
                 float: left;
             }
+
             .right {
                 width: 180px;
                 float: right;
@@ -738,9 +848,11 @@
                 max-height: 80px;
             }
         }
+
         .featured {
             font-size: 16px;
             margin-right: -15px;
+
             img {
                 height: 100px;
                 width: 80px;
diff --git a/public/scss/common/_error.css b/public/scss/common/_error.css
new file mode 100644
index 0000000..ca29c73
--- /dev/null
+++ b/public/scss/common/_error.css
@@ -0,0 +1,24 @@
+.wrapper-404 {
+    width: 560px;
+    margin: 80px auto;
+    min-height: 240px;
+
+    .text1 {
+        font-size: 24px;
+        margin-top: 60px;
+        line-height: 24px;
+    }
+
+    .text2 {
+        margin: 18px 0 10px;
+        line-height: 12px;
+    }
+
+    .text3 .button-2 {
+        height: 24px;
+        line-height: 24px;
+        font-size: 12px;
+        color: #fff;
+        margin-right: 5px;
+    }
+}
diff --git a/public/scss/common/_floor-header.css b/public/scss/common/_floor-header.css
new file mode 100644
index 0000000..38663a7
--- /dev/null
+++ b/public/scss/common/_floor-header.css
@@ -0,0 +1,43 @@
+/*
+ *楼层头部样式
+ */
+.floor-header {
+    position: relative;
+    margin: 80px 0 40px;
+
+    .floor-title {
+        margin: 0 auto;
+        width: 298px;
+        height: 31px;
+        line-height: 31px;
+        border: 1px solid #000;
+        font-size: 16px;
+        text-align: center;
+    }
+
+    .header-navs {
+        position: absolute;
+        padding: 10px 0;
+        top: 0;
+        right: 0;
+        font-size: 14px;
+
+        li {
+            float: left;
+            padding: 1px 15px;
+            border-left: 1px solid #ccc;
+
+            &:first-child {
+                border-left: none;
+            }
+
+            &:hover {
+                text-decoration: underline;
+            }
+
+            a {
+                color: #333;
+            }
+        }
+    }
+}
diff --git a/public/scss/common/_foot-pager.css b/public/scss/common/_foot-pager.css
new file mode 100644
index 0000000..95e83b6
--- /dev/null
+++ b/public/scss/common/_foot-pager.css
@@ -0,0 +1,25 @@
+.foot-pager {
+    padding: 20px 0;
+    font-size: 12px;
+    color: #6a6a6a;
+    border-top: 1px solid #eaeceb;
+
+    .pager {
+        float: right;
+
+        a {
+            height: 24px;
+            padding: 0 9px;
+            line-height: 24px;
+            display: inline-block;
+            text-align: center;
+            margin-right: 8px;
+            color: #222;
+        }
+
+        .cur {
+            color: #fff;
+            background-color: #222;
+        }
+    }
+}
diff --git a/public/scss/common/_header.css b/public/scss/common/_header.css
index f609c3d..c65f6a1 100644
--- a/public/scss/common/_header.css
+++ b/public/scss/common/_header.css
@@ -282,7 +282,7 @@
 
             li {
                 float: left;
-                padding: 8px 23px 5px;
+                padding: 8px 22px 5px;
 
                 a {
                     font-size: 12px;
@@ -314,7 +314,7 @@
             background: resolve('layout/outlets.png') no-repeat center center;
             width: 200px;
             height: 34px;
-            left: 42%;
+            left: 45%;
             margin-top: 28px;
             position: absolute;
             display: none;
@@ -324,7 +324,7 @@
             background: resolve('layout/logo-en.png') no-repeat center center;
             width: 182px;
             height: 53px;
-            left: 42%;
+            left: 43%;
             margin-top: 22px;
             position: absolute;
             animation: logoflip 20s infinite;
@@ -437,19 +437,20 @@
             top: 30px;
             right: -14px;
             width: 378px;
-            background: #f8f8f8 resolve('layout/empty_car.png') no-repeat 106px 132px;
             z-index: 1000;
+            background: #f8f8f8;
             display: none;
 
             .empty-cart {
                 padding: 280px 0 200px;
                 text-align: center;
+                background: resolve('layout/empty_car.png') no-repeat 106px 132px;
             }
 
             .loading-cart {
                 padding: 200px 0;
                 text-align: center;
-                background: #f8f8f8 reslove('layout/loading.gif') no-repeat center 170px;
+                background: resolve('layout/loading.gif') no-repeat center 170px;
             }
 
             .rich-cart {
@@ -744,7 +745,6 @@
     }
 
     .sub-nav-list {
-        padding-left: 15%;
 
         a {
             color: #222;
@@ -760,6 +760,10 @@
         li:hover a {
             border-color: #555;
         }
+
+        li:first-child {
+            margin-left: 15%;
+        }
     }
 }
 
diff --git a/public/scss/common/_index.css b/public/scss/common/_index.css
index 64bc743..9b8ad9c 100644
--- a/public/scss/common/_index.css
+++ b/public/scss/common/_index.css
@@ -16,52 +16,6 @@
     }
 }
 
-.yoho-page {
-    /*
-    楼层头部样式
-    */
-    .floor-header {
-        position: relative;
-        margin: 80px 0 40px;
-
-        .floor-title {
-            margin: 0 auto;
-            width: 298px;
-            height: 31px;
-            line-height: 31px;
-            border: 1px solid #000;
-            font-size: 16px;
-            text-align: center;
-        }
-
-        .header-navs {
-            position: absolute;
-            padding: 10px 0;
-            top: 0;
-            right: 0;
-            font-size: 14px;
-
-            li {
-                float: left;
-                padding: 1px 15px;
-                border-left: 1px solid #ccc;
-
-                &:first-child {
-                    border-left: none;
-                }
-
-                &:hover {
-                    text-decoration: underline;
-                }
-
-                a {
-                    color: #333;
-                }
-            }
-        }
-    }
-}
-
 /*
 热门推荐模板样式
 */
@@ -236,3 +190,7 @@
 @import "footer";
 @import "slider";
 @import "404";
+@import "path-nav";
+@import "floor-header";
+@import "error";
+@import "foot-pager";
diff --git a/public/scss/common/_path-nav.css b/public/scss/common/_path-nav.css
new file mode 100644
index 0000000..9557dff
--- /dev/null
+++ b/public/scss/common/_path-nav.css
@@ -0,0 +1,19 @@
+.path-nav {
+    font-size: 12px;
+    padding: 15px 0;
+    height: 18px;
+    line-height: 18px;
+    color: #666;
+
+    a {
+        color: #666;
+    }
+
+    .iconfont {
+        font-size: 12px;
+    }
+
+    .last {
+        font-weight: bold;
+    }
+}
diff --git a/public/scss/common/_slider.css b/public/scss/common/_slider.css
index ef41084..2ef2a25 100644
--- a/public/scss/common/_slider.css
+++ b/public/scss/common/_slider.css
@@ -1 +1,62 @@
-.unslider{overflow:auto;margin:0;padding:0}.unslider-wrap{position:relative}.unslider-wrap.unslider-carousel>li{float:left}.unslider-vertical>ul{height:100%}.unslider-vertical li{float:none;width:100%}.unslider-fade{position:relative}.unslider-fade .unslider-wrap li{position:absolute;left:0;top:0;right:0;z-index:8}.unslider-fade .unslider-wrap li.unslider-active{z-index:10}.unslider li,.unslider ol,.unslider ul{list-style:none;margin:0;padding:0;border:none}.unslider-arrow{position:absolute;left:20px;z-index:2;cursor:pointer}.unslider-arrow.next{left:auto;right:20px}
\ No newline at end of file
+/* stylelint-disable */
+.unslider {
+    overflow: auto;
+    margin: 0;
+    padding: 0;
+}
+
+.unslider-wrap {
+    position: relative;
+}
+
+.unslider-wrap.unslider-carousel > li {
+    float: left;
+}
+
+.unslider-vertical > ul {
+    height: 100%;
+}
+
+.unslider-vertical li {
+    float: none;
+    width: 100%;
+}
+
+.unslider-fade {
+    position: relative;
+}
+
+.unslider-fade .unslider-wrap li {
+    position: absolute;
+    left: 0;
+    top: 0;
+    right: 0;
+    z-index: 8;
+}
+
+.unslider-fade .unslider-wrap li.unslider-active {
+    z-index: 10;
+}
+
+.unslider li,
+.unslider ol,
+.unslider ul {
+    list-style: none;
+    margin: 0;
+    padding: 0;
+    border: none;
+}
+
+.unslider-arrow {
+    position: absolute;
+    left: 20px;
+    z-index: 2;
+    cursor: pointer;
+}
+
+.unslider-arrow.next {
+    left: auto;
+    right: 20px;
+}
+
+/* stylelint-enable */
\ No newline at end of file
diff --git a/public/scss/index.css b/public/scss/index.css
index 1568f34..da72059 100644
--- a/public/scss/index.css
+++ b/public/scss/index.css
@@ -7,3 +7,4 @@
 /* 模块 */
 @import "channel/index";
 @import "product/index";
+@import 'passport/index';
diff --git a/public/scss/passport/_back.css b/public/scss/passport/_back.css
new file mode 100644
index 0000000..c040ae0
--- /dev/null
+++ b/public/scss/passport/_back.css
@@ -0,0 +1,238 @@
+.back-page {
+    font-size: 14px;
+
+    .content {
+        margin: 175px 0 0 !important;
+    }
+
+    .back-header {
+        position: relative;
+        width: 268px;
+        line-height: 40px;
+        margin-bottom: 5px;
+
+        .country-code {
+            float: right;
+            cursor: pointer;
+            color: #b9b9b9;
+            .iconfont {
+                font-size: 14px;
+                vertical-align: middle;
+            }
+        }
+    }
+
+    .title {
+        float: left;
+        margin: 0px;
+        font-size: 22px;
+        line-height: 40px;
+        color: #000;
+        font-weight: normal; 
+    }
+    .title2 {
+        margin: 0 0 5px;
+        font-size: 22px;
+        line-height: 40px;
+        color: #000;
+        font-weight: normal;
+    }
+
+    .err-tip.captcha-err {
+        top: 10px;
+        left: 326px;
+    }
+
+    .country-code-list {
+        display: none;
+        position: absolute;
+        padding: 0 10px;
+        color: #000;
+        background-color: #fff;
+        border: 1px solid #000;
+        margin-top: 5px;
+        cursor: pointer;
+        z-index: 100;
+        top: 30px;
+        right: 0;
+        border-radius: 5px;
+
+        li {
+            height: 20px;
+            line-height: 20px;
+        }
+    }
+
+    .input-container-li {
+        position: relative;
+        margin-bottom: 22px;
+
+        .btn {
+            width: 270px;
+            height: 45px;
+            line-height: 45px;
+            cursor: pointer;
+            font-size: 20px;
+            border: none;
+            letter-spacing: 0;
+        }
+
+        .captcha {
+            width: 160px;
+        }
+
+        .captcha-img {
+            height: 37px;
+            width: 90px;
+            border: 0;
+            margin-left: 10px;
+            vertical-align: middle;
+            outline: none;
+            cursor: pointer;
+        }
+        .change-captcha {
+            color: #ff1901;
+            font-size: 12px;
+            text-decoration: underline;
+            margin-left: 10px;
+            cursor: pointer;
+        }
+    }
+}
+
+.send-email-page {
+    font-size: 14px;
+
+    .content {
+        margin: 216px 0 0 !important;
+    }
+
+    .send-tips {
+        line-height: 28px;
+        color: #4c4c4c;
+        text-align: center;
+        font-size: 15px;
+
+        .iconfont {
+            margin: 0 8px 0 0;
+        }
+    }
+
+    .no-find {
+        margin: 10px 0 0 0;
+        line-height: 20px;
+        color: #a5a4a4;
+        text-align: center;
+    }
+
+    .to-my-email {
+        a {
+            display: block;
+            margin: 53px auto 0;
+            width: 270px;
+            height: 45px;
+            line-height: 45px;
+            background: #ff1901;
+            text-align: center;
+            color: #fff;
+            letter-spacing: 2px;
+        }
+    }
+}
+
+.verification-page .content{
+    li {
+        position: relative;
+        margin-bottom: 43px;
+    }
+
+    .btn {
+        display: inline-block;
+        border: none;
+    }
+
+    .head-title {
+        font-size: 24px;
+        color: #000;
+    }
+
+    .pn-label {
+        color: #828282;
+        font-size: 16px;
+    }
+
+    .country-code {
+        margin: 0 10px;
+    }
+
+    .country-code, .phone-num {
+        color: #000;
+        font-size: 16px;
+    }
+
+    .captcha {
+        width: 160px !important;
+    }
+
+    .send-captcha {
+        width: 133px;
+        font-size: 12px;
+        position: relative;
+        top: -1px;
+        letter-spacing: 0;
+    }
+
+    .err-tip {
+        left: 310px;
+    }
+
+    .captcha-tips {
+        position: absolute;
+        top: 50px;
+        color: #a5a4a4;
+
+        .iconfont {
+            color: #0F9ACD;
+            font-size: 14px;
+            margin: 0 8px 0 0;
+            vertical-align: 12%;
+        }
+    }
+}
+
+.reset-success-page {
+    .content {
+        margin: 255px 0 0 !important;
+    }
+
+    .success-text {
+        line-height: 35px;
+
+        .iconfont {
+            font-size: 30px;
+            color: #ee3f14;
+        }
+
+        span {
+            font-size: 24px;
+            margin: 0 18px;
+        }
+
+        #count-down {
+            color: #ee3f14;
+        }
+    }
+
+    .success-btn {
+        display: block;
+        margin: 43px auto 0;
+        width: 269px;
+        line-height: 269px;
+        height: 45px;
+        line-height: 45px;
+        font-size: 14px;
+        color: #fff;
+        text-align: center;
+        background-color: #ff1901;
+    }
+}
\ No newline at end of file
diff --git a/public/scss/passport/_index.css b/public/scss/passport/_index.css
new file mode 100644
index 0000000..b1e8d38
--- /dev/null
+++ b/public/scss/passport/_index.css
@@ -0,0 +1,217 @@
+.passport-page {
+    width: 1150px;
+    margin-left: auto;
+    margin-right: auto;
+
+    .content {
+        float: left;
+        margin-top: 107px;
+        padding-left: 85px;
+    }
+
+    .input {
+        height: 43px;
+        font-size: 16px;
+        line-height: 1.2;
+        line-height: 43px\9;
+        width: 268px;
+        border: 1px solid #dbdbdb;
+        text-indent: 10px;
+        color: #9a9a9a;
+        color: rgba(0,0,0,.5);
+    }
+
+    .error {
+        border-color: #f00 !important;
+    }
+
+    .btn {
+        display: block;
+        height: 46px;
+        line-height: 46px;
+        width: 100%;
+        text-align: center;
+        color: #fff;
+        background-color: #ff1901;
+        letter-spacing: 10px;
+        font-size: 20px;
+        cursor: pointer;
+
+        &.disable {
+            background-color: #555;
+            cursor: default;
+        }
+    }
+
+    .pwd-intensity-container {
+        width: 270px;
+        text-align: right;
+        padding-top: 5px;
+
+        &.red {
+            .pwd-intensity {
+                color: #ee0011;
+            }
+            .color {
+                background: #ee0011;
+                color: #fff;
+            }
+        }
+
+        &.yellow {
+            .pwd-intensity {
+                color: #f6da1e;
+            }
+            .color {
+                background: #f6da1e;
+                color: #fff;
+            }
+        }
+
+        &.green {
+            .pwd-intensity {
+                color: #3ee392;
+            }
+            .color {
+                background: #3ee392;
+                color: #fff;
+            }
+        }
+        .pwd-intensity {
+            height: 15px;
+            font-size: 12px;
+            background-color: #e8e8e8;
+            padding: 0px 10px;
+            text-align: center;
+            color: #b9b9b9;
+        }
+    }
+
+    .pwd-tips {
+        position: absolute;
+        top: -10px;
+        left: 285px;
+        width: 160px !important;
+        height: 72px;
+        padding-top: 7px;
+        font-size: 12px;
+        background: url(/passport/tip/block.png) no-repeat;
+
+        > div {
+            position: relative;
+            height: 22px;
+            line-height: 22px;
+            margin-left: 15px;
+            padding-left: 15px;
+            font-size: 12px;
+            color: #b9b9b9;
+
+            i {
+                position: absolute;
+                width: 14px;
+                height: 14px;
+                left: -2px;
+                top: 50%;
+                margin: -7px 0 0;
+                background: url(/passport/tip/info.png) no-repeat;
+            }
+
+            &.no {
+                color: red;
+
+                i {
+                    background: url(/passport/tip/error.png) no-repeat;
+                }
+            }
+
+            &.yes i {
+                background: url(/passport/tip/success.png) no-repeat;
+            }
+        }
+    }
+
+    .email-autocomplete {
+        position: absolute;
+        width: 248px;
+        padding: 0 10px;
+        z-index: 1;
+        margin-top: 5px;
+        border-radius: 5px;
+        cursor: pointer;
+        border: 1px solid #fefefe;
+        background-color: #161616;
+        color: #fff;
+        font-size: 16px;
+
+        li {
+            height: 24px;
+            line-height: 24px;
+        }
+    }
+
+    .err-tip {
+        position: absolute;
+        font-size: 14px;
+        white-space: nowrap;
+        top: 8px;
+        left: 285px;
+        padding: 6px 0;
+        color: #f00;
+
+        i {
+            display: block;
+            float: left;
+            height: 14px;
+            width: 14px;
+            background: url(/passport/tip/error.png) no-repeat;
+
+            margin-right: 5px;
+        }
+
+        a {
+            text-decoration: underline;
+            color: #f00;
+        }
+    }
+
+    /*完善信息提示框*/
+    .page-tip {
+        display: block;
+        width: 100%;
+        height: 30px;
+        line-height: 30px;
+        text-align: center;
+        font-size: 20px;
+        font-weight: bold;
+        color: #ccc;
+        clear: both;
+        margin-bottom: 15px;
+    }
+}
+
+.passport-cover {
+    float: left;
+    margin: 107px 0;
+    width: 575px;
+
+    .cover-content {
+        width: 100%;
+        height: 318px;
+        padding: 50px 0;
+        border-right: 1px solid #dfdfdf;
+    }
+
+    .cover-img {
+        display: block;
+        width: 252px;
+        height: 190px;
+        margin: 0 auto;
+        margin-top: 50px;
+    }
+}
+
+@import "login";
+@import "register";
+@import "back";
+@import "welcome";
+@import "relate";
diff --git a/public/scss/passport/_login.css b/public/scss/passport/_login.css
new file mode 100644
index 0000000..f0ef24a
--- /dev/null
+++ b/public/scss/passport/_login.css
@@ -0,0 +1,154 @@
+.login-page {
+    .relative {
+        position: relative;
+    }
+
+    .right {
+        float: right;
+    }
+
+    .login-ul > li {
+        margin-bottom: 25px;
+    }
+
+    .title {
+        float: left;
+        font-size: 20px;
+    }
+
+    .country-code {
+        cursor: pointer;
+        color: #b9b9b9;
+    }
+
+    .country-list {
+        display: none;
+        position: absolute;
+        padding: 0 10px;
+        background: #fff;
+        border: 1px solid #000;
+        top: 20px;
+        right: 0;
+        z-index: 1;
+
+        border-radius: 5px;
+
+        li {
+            height: 20px;
+            line-height: 20px;
+            color: #000;
+        }
+    }
+
+    .captcha-wrap {
+        position: relative;
+
+        .err-tip {
+            left: 335px;
+        }
+    }
+
+    /* 验证码 */
+    .captcha{
+        width: 160px;
+        float: left;
+    }
+
+    .captcha-img {
+        height: 37px;
+        width: 90px;
+        border: 0;
+        vertical-align: middle;
+        outline: none;
+        margin-left: 10px;
+        margin-top: 4px;
+        float: left;
+    }
+
+    .change-captcha {
+        position: absolute;
+        top: 0;
+        right: -50px;
+        cursor: pointer;
+        float: left;
+        height: 43px;
+        font-size: 14px;
+        line-height: 43px;
+        color: #ff1901;
+    }
+
+    .remember-me {
+        cursor: pointer;
+    }
+
+    .other-opts {
+        color: #b9b9b9;
+        font-size: 14px;
+
+        .iconfont {
+            font-size: 14px;
+        }
+
+        .fast-reg {
+            color: #ff1901;
+        }
+    }
+
+    .forget-password {
+        color: #b9b9b9;
+    }
+
+    .third-party-login {
+        display: table;
+
+        a {
+            display: table-cell;
+            width: 45px;
+            background-size: 100% 100%;
+        }
+
+        .icon {
+            display: block;
+            width: 30px;
+            height: 30px;
+            margin: 0 auto;
+        }
+
+        .weixin {
+            background: url(/passport/third/weixin.png) no-repeat;
+        }
+
+        .qq {
+            background: url(/passport/third/qq.png) no-repeat;
+        }
+
+        .weibo {
+            background: url(/passport/third/weibo.png) no-repeat;
+        }
+
+        .alipay {
+            background: url(/passport/third/alipay.png) no-repeat;
+        }
+
+        .douban {
+            background: url(/passport/third/douban.png) no-repeat;
+        }
+
+        .renren {
+            background: url(/passport/third/renren.png) no-repeat;
+        }
+    }
+
+    .caps-lock {
+        position: absolute;
+        color: #666;
+        border: #ffe57d;
+        background: #fff6d2;
+        white-space: nowrap;
+        top: 8px;
+        left: 278px;
+        padding: 0 20px;
+        height: 27px;
+        line-height: 30px;
+    }
+}
diff --git a/public/scss/passport/_register.css b/public/scss/passport/_register.css
new file mode 100644
index 0000000..2509e9b
--- /dev/null
+++ b/public/scss/passport/_register.css
@@ -0,0 +1,279 @@
+.register-page {
+    font-size: 14px;
+    color: #b9b9b9;
+
+    li {
+        margin-bottom: 25px;
+        width: 270px;
+        position: relative;
+
+        &.w330 {
+            width: 330px;
+        }
+
+        input, select {
+            outline: none;
+        }
+
+        .input {
+            height: 43px;
+            line-height: 43px;
+            font-size: 16px;
+            width: 268px;
+            border: 1px solid #dbdbdb;
+            text-indent: 10px;
+            color: #9a9a9a;
+            padding: 0;
+
+            &.error {
+                border: 1px solid red;
+            }
+
+            &.phone-num {
+                width: 209px;
+                display: block;
+                float: left;
+                position: absolute;
+                top: 0;
+                right: 0;
+            }
+
+            &.captcha, &.msg-captcha{
+                width: 160px;
+                float: left;
+            }
+
+            &.agree-terms {
+                vertical-align: middle;
+            }
+        }
+
+        .send-captcha {
+            top: 0;
+            background: #ff1901;
+            position: absolute;
+            width: 100px;
+            right: 0;
+            font-size: 12px;
+            text-indent: 0;
+            letter-spacing: 0;
+
+            &.disable {
+                background: #555;
+            }
+        }
+
+        .link {
+            text-decoration: underline;
+            color: #ff1901;
+        }
+
+        .btn {
+            height: 45px;
+            line-height: 45px;
+            color: #fff;
+            border: none;
+            padding: 0;
+            font-family: '黑体' Regular;
+            text-align: center;
+        }
+
+        /*区域下拉选择框*/
+        .region {
+            height: 30px;
+            padding: 4px 0;
+            width: 132px;
+            border-color: #c1c1c1;
+            color: #9a9a9a;
+            font-size: 16px;
+            font-family: '黑体' Regular;
+        }
+
+        /*手机号*/
+        .country-code {
+            width: 58px;
+            height: 43px;
+            line-height: 43px;
+            text-align: center;
+            white-space: nowrap;
+            border: 1px solid #dbdbdb;
+            border-right: 0;
+            font-size: 16px;
+            display: block;
+            float: left;
+        }
+
+        /*验证码*/
+        .captcha-img {
+            height: 37px;
+            width: 90px;
+            border: 0;
+            vertical-align: middle;
+            outline: none;
+            margin-left: 10px;
+            margin-top: 4px;
+            float: left;
+        }
+        .change-captcha {
+            margin-left: 10px;
+            cursor: pointer;
+            float: left;
+            height: 43px;
+            line-height: 43px;
+        }
+
+        /*密码强度*/
+        .pwd-intensity-container {
+            width: 270px;
+            text-align: right;
+            margin-top: 5px;
+            height: auto;
+            overflow: hidden;
+
+            .pwd-intensity {
+                height: 15px;
+                font-size: 12px;
+                background-color: #e8e8e8;
+                padding: 1px 10px;
+                text-align: center;
+            }
+
+            &.red {
+                color: red;
+
+                .color {
+                    background: red;
+                    color: #fff;
+                }
+            }
+
+            &.yellow .color {
+                background: #ff0;
+                color: #fff;
+            }
+
+            &.green .color {
+                background: #3ee392;
+                color: #fff;
+            }
+        }
+
+        /*服务条款*/
+        &.items-container {
+            font-size: 13px;
+            text-align: right;
+            white-space: nowrap;
+        }
+
+        /*立即注册*/
+        .register-btn {
+            width: 270px;
+            font-size: 20px;
+            font-weight: bold;
+            background: #ff1901;
+
+            &.disable {
+                background: #555;
+            }
+        }
+
+        /*立即登录*/
+        &.quick-login-container {
+            width: 270px;
+            font-size: 13px;
+            text-align: right;
+            white-space: nowrap;
+        }
+
+        &.skip-user-info {
+            font-size: 18px;
+            text-align: center;
+            a {
+                color: #ff1901;
+                text-decoration: underline;
+            }
+        }
+    }
+
+    .msg-tip {
+        position: absolute;
+        top: 17px;
+        left: 285px;
+        white-space: nowrap;
+
+        &:before {
+            content: '';
+            display: inline-block;
+            width: 12px;
+            height: 12px;
+            margin-right: 5px;
+            background: url(/passport/tip/succ-info.png) no-repeat;
+        }
+    }
+    .err-tip {
+        z-index: 1000;
+        position: absolute;
+        height: 30px;
+        line-height: 30px;
+        color: red;
+        background-color: #ffebeb;
+        border: 1px solid #ffbdbe;
+        padding: 0 10px;
+
+        b {
+            display: block;
+            position: absolute;
+            top: 30px;
+            left: 20px;
+            background: url(/passport/tip/angle.png) no-repeat;
+            width: 17px;
+            height: 9px;
+
+        }
+    }
+
+    /*注册成功*/
+    .success-box {
+        font-size: 14px;
+        color: #b9b9b9;
+        margin-top: 130px;
+
+        .success-text {
+            line-height: 29px;
+            padding-left: 46px;
+            font-size: 16px;
+            color: #000;
+
+            span {
+                font-size: 22px;
+            }
+
+            &:before {
+                content: '';
+                display: inline-block;
+                background: url(/passport/tip/success-icon.png) no-repeat;
+                width: 29px;
+                height: 29px;
+                margin-right: 5px;
+                position: relative;
+                top: 6px;
+            }
+
+             #count-down {
+                color: #ff1901;
+             }
+        }
+
+        .success-btn {
+            display: block;
+            margin: 46px auto 0;
+            width: 270px;
+            height: 45px;
+            line-height: 45px;
+            background: #ff1901;
+            text-align: center;
+            color: #fff;
+            letter-spacing: 2px;
+        }
+    }
+}
\ No newline at end of file
diff --git a/public/scss/passport/_relate.css b/public/scss/passport/_relate.css
new file mode 100644
index 0000000..f090f16
--- /dev/null
+++ b/public/scss/passport/_relate.css
@@ -0,0 +1,187 @@
+.third-relate-page {
+    min-height: 600px;
+
+    .relate-main {
+        padding-top: 100px;
+    }
+
+    .user-wrapper {
+        width: 280px;
+        margin: 0 auto;
+
+        .user-thumb {
+            width: 94px;
+            height: 94px;
+            border-radius: 50%;
+            display: inline-block;
+            overflow: hidden;
+
+            img {
+                width: 100%;
+                height: 100%;
+            }
+        }
+
+        label {
+            width: 190px;
+            line-height: 94px;
+            margin-left: 20px;
+            font-size: 18px;
+            font-weight: 700;
+            color: #545454;
+            word-break: keep-all;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            position: absolute;
+        }
+    }
+
+    .remind-info {
+        width: 490px;
+        min-height: 54px;
+        padding-left: 50px;
+        margin: 35px auto;
+        background: resolve('passport/warn.png') no-repeat;
+        text-align: center;
+
+        h3 {
+            font-size: 18px;
+            font-weight: 700;
+            color: #545454;
+            margin-bottom: 12px;
+        }
+
+        a {
+            color: #f22c26;
+            text-decoration: underline;
+            cursor: pointer;
+        }
+
+        p {
+            font-size: 16px;
+            color: #888;
+        }
+    }
+
+    .option-btn {
+        text-align: center;
+
+        a {
+            width: 192px;
+            height: 46px;
+            color: #fff;
+            font-size: 18px;
+            line-height: 46px;
+            display: inline-block;
+            background-color: #f12200;
+            cursor: pointer;
+        }
+
+        a:first-child {
+            margin-right: 14px;
+        }
+    }
+
+    .remind-tips {
+        width: 390px;
+        margin: 0 auto;
+        font-size: 14px;
+        color: #888;
+        text-align: center;
+        margin-top: 30px;
+        text-decoration: underline;
+        display: block;
+
+        a {
+            color: #f12200;
+            cursor: pointer;
+        }
+
+        > * {
+            text-decoration: underline;
+        }
+    }
+
+    .code-validate {
+        padding-top: 140px;
+    }
+
+    .action-link {
+        width: 440px;
+        margin: 0 auto;
+        padding-left: 180px;
+        color: #545454;
+        line-height: 46px;
+
+        .code-name {
+            margin-left: -100px;
+            position: absolute;
+        }
+
+        input {
+            width: 260px;
+            height: 40px;
+            padding-left: 10px;
+            font-size: 16px;
+            margin-right: 14px;
+        }
+
+        label {
+            width: 140px;
+            height: 46px;
+            font-size: 14px;
+            color: #fff;
+            background-color: #f12200;
+            display: inline-block;
+            text-align: center;
+            cursor: pointer;
+        }
+
+        .count-down {
+            color: #979797;
+            background-color: #d8d8d8;
+            display: none;
+        }
+
+        .code-error {
+            position: absolute;
+            width: 200px;
+            display: inline-block;
+            color: #f00;
+            padding-left: 10px;
+
+            i {
+                display: inline-block;
+                height: 14px;
+                width: 14px;
+                background: url(/passport/tip/error.png) no-repeat;
+                vertical-align: middle;
+                margin-right: 5px;
+                margin-top: -2px;
+            }
+        }
+    }
+
+    .waiting {
+        .get-code {
+            display: none;
+        }
+
+        .count-down {
+            display: inline-block;
+        }
+    }
+
+    .relate-btn {
+        width: 212px;
+        height: 46px;
+        font-family: arial, "Microsoft YaHei";
+        color: #fff;
+        font-size: 18px;
+        background-color: #f12200;
+        border: 0;
+        outline: none;
+        margin: 20px 0;
+    }
+}
\ No newline at end of file
diff --git a/public/scss/passport/_welcome.css b/public/scss/passport/_welcome.css
new file mode 100644
index 0000000..d388774
--- /dev/null
+++ b/public/scss/passport/_welcome.css
@@ -0,0 +1,56 @@
+.welcome-page {
+    text-align: center;
+    color: #7f7f7f;
+
+    .content {
+        padding-top: 82px;
+    }
+
+    .wel-title {
+        font-size: 30px;
+        margin-bottom: 30px;
+
+        em {
+            font-style: normal;
+            color: #ff1901;
+        }
+    }
+
+    .wel-sub-title {
+        font-size: 16px;
+        margin-bottom: 60px;
+    }
+
+    .link {
+        display: block;
+
+        span {
+            color: #7f7f7f;
+        }
+    }
+
+    .link-img {
+        height: 91px;
+        width: 91px;
+        background-size: 100% 100%;
+        margin-bottom: 10px;
+    }
+
+    .go-shopping {
+        float: left;
+        padding-left: 100px;
+
+        div {
+            background-image: resolve('passport/go-shopping.png');
+        }
+    }
+
+    .complete-info {
+        float: right;
+        padding-right: 100px;
+
+        div {
+            background-image: resolve('passport/edit-info.png');
+        }
+    }
+}
\ No newline at end of file
diff --git a/public/scss/plugin/_dialog.css b/public/scss/plugin/_dialog.css
deleted file mode 100644
index 95bed57..0000000
--- a/public/scss/plugin/_dialog.css
+++ /dev/null
@@ -1,115 +0,0 @@
-.yoho-dialog {
-    position: fixed;
-    padding: 20px;
-    top: 50%;
-    left: 50%;
-    min-height: 130px;
-    min-width: 350px;
-    background: #f8f8f8;
-    z-index: 1001;
-    border: 5px solid rgba(0, 0, 0, 0.38);
-
-    .close {
-        position: absolute;
-        top: 5px;
-        right: 5px;
-        cursor: pointer;
-    }
-
-    .content {
-        text-align: center;
-    }
-
-    .btns {
-        text-align: center;
-    }
-    .alert-sure {
-        background: #000;
-        color: #fff;
-    }
-    .confirm-sure {
-        background: #000;
-        color: #fff;
-    }
-    .btn {
-        display: inline-block;
-        width: 56px;
-        height: 26px;
-        line-height: 26px;
-        text-align: center;
-        border: 1px solid #000;
-        cursor: pointer;
-        margin-left: 10px;
-        &:first-child {
-            margin-left: 0;
-        }
-    }
-
-    &.alert-dialog .content,
-    &.confirm-dialog .content {
-        width: 350px;
-        height: auto;
-        min-height: 90px;
-        overflow: hidden;
-        line-height: 20px;
-        position: relative;
-        padding-top: 40px;
-        padding-bottom: 20px;
-        p {
-            position: absolute;
-            left: 0;
-            bottom: 25px;
-            width: 100%;
-            color: #444;
-            line-height: 25px;
-        }
-        div {
-            position: absolute;
-            top: 0;
-            left: 100px;
-            padding-top: 30px;
-            font-size: 22px;
-            font-weight: bold;
-            width: 150px;
-            height: 30px;
-            line-height: 30px;
-            margin: 0 auto;
-            span {
-                background: url(/cart/del.png);
-                float: left;
-                width: 27px;
-                height: 30px;
-            }
-        }
-    }
-
-    &.subcontent-dialog {
-        padding: 30px 0;
-
-        .content {
-            font-weight: bold;
-            margin: 0 auto 30px;
-        }
-
-        .sub-content {
-            text-align: center;
-            font-size: 12px;
-            color: #555;
-            margin-left: 5px;
-            margin-bottom: 5px;
-        }
-
-        .btn {
-            margin-top: 25px;
-            width: 100px;
-            font-size: 13px;
-            margin-left: 0;
-            margin-right: 0;
-
-            &.black {
-                background-color: #000;
-                color: #fff;
-            }
-        }
-    }
-}
diff --git a/public/scss/plugin/_index.css b/public/scss/plugin/_index.css
index aa8332d..3a26adc 100644
--- a/public/scss/plugin/_index.css
+++ b/public/scss/plugin/_index.css
@@ -1,2 +1 @@
 @import "slider";
-@import "dialog";
diff --git a/public/scss/product/_good.css b/public/scss/product/_good.css
index be26416..0d04ca1 100644
--- a/public/scss/product/_good.css
+++ b/public/scss/product/_good.css
@@ -6,7 +6,7 @@
 
     .good-detail-img {
         width: 100%;
-        height: 100%;
+        height: 315px;
         position: relative;
 
         .good-thumb,
@@ -29,6 +29,24 @@
             text-align: center;
             bottom: 0;
         }
+
+        .sale-out {
+            width: 100%;
+            height: 100%;
+            text-align: center;
+            top: 0;
+            position: absolute;
+            background: resolve('product/sale-out-bg.png');
+        }
+
+        .sale-out-tip {
+            width: 110px;
+            height: 110px;
+            margin-top: 105px;
+            display: inline-block;
+            background: resolve('product/sale-out-tip.png') no-repeat center center;
+            text-indent: -9999px;
+        }
     }
 
     .good-detail-text {
@@ -47,7 +65,6 @@
 
         > .price {
             margin-top: 5px;
-            text-align: center;
         }
 
         .brand {
@@ -60,58 +77,16 @@
         .market-price {
             text-decoration: line-through;
             color: #999;
-            margin-right: 10px;
+            margin-right: 15px;
         }
 
-        span.vip-tag {
-            background-image: resolve("sale/vip.png");
-            background-repeat: no-repeat;
-            background-size: 100% 90%;
-            width: 40px;
-            color: #fff;
-            font-style: italic;
-            margin-right: 5px;
-            margin-left: 5px;
-            width: 30px;
-        }
-
-        span.vip-1 {
-            background-image: resolve("product/silver-small.png");
-            background-repeat: no-repeat;
-            width: 30px;
-            display: inline-block;
-            height: 12px;
-            color: #fff;
-            font-style: italic;
-            margin-right: 5px;
-            margin-left: 5px;
-            position: absolute;
-        }
-
-        span.vip-2 {
-            background-image: resolve("product/golden-small.png");
-            background-repeat: no-repeat;
-            width: 30px;
-            display: inline-block;
-            height: 12px;
+        .discount {
+            font-size: 12px;
+            line-height: 22px;
             color: #fff;
-            font-style: italic;
-            margin-right: 5px;
-            margin-left: 5px;
-            position: absolute;
-        }
-
-        span.vip-3 {
-            background-image: resolve("product/platinum-small.png");
-            background-repeat: no-repeat;
-            width: 30px;
+            padding: 0 6px 0 16px;
+            background: resolve('product/discount-tag.png') no-repeat;
             display: inline-block;
-            height: 12px;
-            color: #fff;
-            font-style: italic;
-            margin-right: 5px;
-            margin-left: 5px;
-            position: absolute;
         }
 
     }
@@ -252,11 +227,3 @@
         }
     }
 }
-
-.good-info-big {
-    width: 280px;
-    height: 380px;
-    margin-right: 10px;
-    float: left;
-    margin-bottom: 100px;
-}
diff --git a/public/scss/product/_index.css b/public/scss/product/_index.css
index 7353e0e..fec121b 100644
--- a/public/scss/product/_index.css
+++ b/public/scss/product/_index.css
@@ -1,6 +1,5 @@
 @import "search";
 @import "list";
-@import "new-sale";
 @import "filter-box";
 @import "sort-pager";
 @import "good";
@@ -10,22 +9,10 @@
 @import "hot-rank";
 @import "shop-entry";
 @import "detail";
-@import "sale/_index.css";
-@import "outlets/_index.css";
+@import "sale/index";
+@import "outlets/index";
 
 .product-page {
-    /* 分页 */
-    .product-pager {
-        padding: 20px 0;
-        font-size: 12px;
-        color: #6a6a6a;
-        border-top: 2px solid #eaeceb;
-
-        .pager {
-            float: right;
-        }
-    }
-
     .list-left {
         width: 160px;
     }
diff --git a/public/scss/product/_new-sale.css b/public/scss/product/_new-sale.css
deleted file mode 100644
index aa30a8b..0000000
--- a/public/scss/product/_new-sale.css
+++ /dev/null
@@ -1,195 +0,0 @@
-.new-sale-page {
-    .sale-list-banner {
-        width: 100%;
-        position: relative;
-
-        ul {
-            overflow: hidden;
-            width: 100%;
-            position: relative;
-            z-index: 1;
-
-            li {
-                width: 100%;
-                height: 100%;
-                display: block;
-                position: absolute;
-                top: 0;
-                left: 0;
-            }
-        }
-    }
-
-    .sale-list-pagation {
-        z-index: 2;
-        position: absolute;
-        left: 0;
-        bottom: 50px;
-        width: 100%;
-        height: 20px;
-        text-align: center;
-
-        div {
-            display: inline-block;
-        }
-
-        span {
-            display: block;
-            width: 20px;
-            height: 20px;
-            background: resolve('product/default-normal.png');
-            float: left;
-            margin: 0 10px;
-            cursor: pointer;
-
-            &.active {
-                background: resolve('product/default-active.png');
-            }
-        }
-    }
-
-    .header-title {
-        position: relative;
-        width: 100%;
-        height: 42px;
-        margin: 20px 0;
-        text-align: center;
-        font-size: 20px;
-
-        .count-wrap {
-            position: relative;
-        }
-
-        .count {
-            background: #fff;
-            padding: 0 5px;
-            color: #999;
-            font-size: 12px;
-            margin-top: 6px;
-        }
-
-        .line-through {
-            position: absolute;
-            bottom: 9px;
-            left: 0;
-            right: 0;
-            height: 1px;
-            border-top: 1px dotted #999;
-        }
-    }
-
-    .new-banner img {
-        display: block;
-        width: 100%;
-    }
-
-    .new-brands {
-        position: relative;
-        width: 100%;
-        margin-top: 25px;
-
-        > * {
-            float: left;
-        }
-
-        .pre
-        .next {
-            position: absolute;
-            display: block;
-            width: 40px;
-            height: 40px;
-            line-height: 40px;
-            color: #fff;
-            background: #e0e0e0;
-            text-align: center;
-            top: 50%;
-            margin-top: -20px;
-            cursor: pointer;
-
-            opacity: 0.8;
-
-            &:hover {
-                opacity: 0.9;
-            }
-        }
-
-        .pre {
-            left: 0;
-        }
-
-        .next {
-            right: 0;
-        }
-
-        .brands-wrap {
-            position: relative;
-            overflow: hidden;
-            width: 890px;
-            height: 76px;
-            margin-left: 40px;
-        }
-
-        .brands {
-            position: absolute;
-            width: auto;
-            height: 76px;
-        }
-
-        .brands li {
-            float: left;
-            margin-left: 14px;
-
-            a {
-                /*
-                display:block;
-                */
-
-                width: 164px;
-                height: 76px;
-                line-height: 76px;
-                vertical-align: middle;
-                text-align: center;
-            }
-
-            img {
-                vertical-align: middle;
-                max-width: 100%;
-                max-height: 100%;
-                border: none;
-            }
-        }
-    }
-
-    .new-floor-title {
-        position: relative;
-        margin: 35px auto;
-        width: 300px;
-        height: 31px;
-        line-height: 31px;
-        font-size: 18px;
-        border: 1px solid #000;
-
-        .date {
-            position: absolute;
-            left: -1px;
-            top: -1px;
-            width: 155px;
-            height: 33px;
-            color: #fff;
-            text-align: center;
-            background: resolve('product/floor-title.png');
-        }
-
-        .title {
-            float: right;
-            margin-right: 40px;
-        }
-    }
-}
-
-.min-screen
-.new-sale-page
-.new-brands
-.brands-wrap {
-    width: 730px;
-}
diff --git a/public/scss/product/_sort-pager.css b/public/scss/product/_sort-pager.css
index 6ad81c2..a793bb6 100644
--- a/public/scss/product/_sort-pager.css
+++ b/public/scss/product/_sort-pager.css
@@ -142,20 +142,3 @@
         }
     }
 }
-
-.pager {
-    a {
-        height: 24px;
-        padding: 0 9px;
-        line-height: 24px;
-        display: inline-block;
-        text-align: center;
-        margin-right: 8px;
-        color: #222;
-    }
-
-    .cur {
-        color: #fff;
-        background-color: #222;
-    }
-}
diff --git a/public/scss/product/outlets/_channel.css b/public/scss/product/outlets/_channel.css
index b9cc73e..7ef9047 100644
--- a/public/scss/product/outlets/_channel.css
+++ b/public/scss/product/outlets/_channel.css
@@ -1,4 +1,5 @@
 .outlets-channel-page {
+    width: 1150px !important;
 
     .slide-thumb-container {
         height: 510px;
@@ -57,36 +58,8 @@
     .slide-switch {
         display: block;
 
-        a {
-            position: absolute;
-            top: 50%;
-            margin: -30px 0 0;
-            width: 60px;
-            height: 60px;
-            line-height: 56px;
-            text-align: center;
-            z-index: 2;
-            background: #fff;
-            opacity: 0.55;
-
-            &.prev {
-                left: 50%;
-                margin-left: -575px;
-            }
-
-            &.next {
-                right: 50%;
-                margin-right: -575px;
-            }
-
-            &:hover {
-                opacity: 0.9;
-            }
-
-            .iconfont {
-                font-size: 32px;
-                color: #59585a;
-            }
+        .next {
+            right: 290px;
         }
     }
 
@@ -165,6 +138,7 @@
 
     .slide-container {
         height: 450px;
+        margin-top: 10px;
         width: 100%;
         position: relative;
 
@@ -601,8 +575,8 @@
         }
 
         .tpl-brands {
-            width: 378px;
-            height: 512px;
+            width: 377px;
+            height: 504px;
 
             li a {
                 height: 248px;
diff --git a/public/scss/product/outlets/_index.css b/public/scss/product/outlets/_index.css
index 096e063..9ab7c1a 100644
--- a/public/scss/product/outlets/_index.css
+++ b/public/scss/product/outlets/_index.css
@@ -1,11 +1,13 @@
 .outlets-page {
+    .center-content {
+        width: 1150px !important;
+    }
     .column-img-tab {
-        height: 178px;
         margin-top: 15px;
 
         li {
             width: 380px;
-            height: 178px;
+            max-height: 178px;
             margin-left: 5px;
             float: left;
             overflow: hidden;
@@ -54,8 +56,8 @@
             }
 
             .logo-img {
-                width: 79%;
-                height: 25%;
+                width: 140px;
+                height: auto;
                 margin: 25px 0 40px;
                 float: none;
             }
@@ -75,6 +77,7 @@
             .title {
                 font-size: 16px;
                 margin: 28px 0 14px;
+                padding: 0 8px;
                 font-weight: bold;
             }
 
@@ -108,11 +111,45 @@
             }
         }
 
+        .brand-list {
+            width: 1135px;
+            max-height: 273px;
+            overflow: hidden;
+
+            .list-page {
+                width: 378px;
+                max-height: 918px;
+                overflow: hidden;
+                display: inline-block;
+                vertical-align: top;
+            }
+
+            .brand-item {
+                width: 125px;
+                height: 90px;
+                float: left;
+                border: 1px solid #ccc;
+                margin-top: -1px;
+                margin-left: -1px;
+                text-align: center;
+            }
+
+            .brand-item img {
+                width: 90%;
+                margin-top: 19px;
+            }
+
+        }
+
+        .brand-page-btns {
+            margin-top: 10px;
+        }
+
         .good-list {
             width: 300%;
 
             .list-page {
-                width: 33%;
+                width: 33.33%;
                 max-height: 918px;
                 overflow: hidden;
                 display: inline-block;
@@ -122,10 +159,21 @@
             .good-item {
                 padding: 15px;
             }
+
+            .good-item > a {
+                width: 90px;
+                height: 120px;
+                display: inline-block;
+            }
+
+            .good-item > img {
+                width: 100%;
+                height: 100%;
+            }
         }
 
         .item-text {
-            width: 225px;
+            width: 64%;
             padding-right: 10px;
             padding-top: 5px;
             float: right;
@@ -142,11 +190,10 @@
 
             .sale-price {
                 color: #ec0011;
-                margin-right: 15px;
+                margin-right: 8px;
             }
 
             .market-price {
-                color: #999;
                 margin-right: 15px;
                 text-decoration: line-through;
             }
@@ -161,10 +208,10 @@
             }
         }
 
-        .good-page-btns {
+        .page-btns {
             text-align: center;
             padding-bottom: 10px;
-            user-select: none;
+            display: none;
 
             label {
                 width: 40px;
@@ -229,10 +276,12 @@
         .brand-logo {
             width: 120px;
             float: right;
+            margin-top: 14px;
+            margin-right: 8px;
         }
 
         .activity-info {
-            width: 360px;
+            width: 380px;
             padding: 10px 20px;
 
             p {
@@ -333,17 +382,6 @@
             display: none;
         }
     }
-
-    .product-pager {
-        padding: 20px 0;
-        font-size: 12px;
-        color: #6a6a6a;
-        border-top: 2px solid #eaeceb;
-
-        .pager {
-            float: right;
-        }
-    }
 }
 
 @import "channel";
diff --git a/public/scss/product/outlets/_main-product.css b/public/scss/product/outlets/_main-product.css
index a92ea13..aec77c1 100644
--- a/public/scss/product/outlets/_main-product.css
+++ b/public/scss/product/outlets/_main-product.css
@@ -2,7 +2,7 @@
     .all-goods-menu {
         height: 35px;
         line-height: 35px;
-        padding: 45px 0 10px;
+        padding-top: 45px;
 
         .menu-tag {
             color: #d0021b;
@@ -44,19 +44,25 @@
         }
     }
 
+    .sort-layer {
+        margin-top: 10px;
+    }
+
     .product-list {
         width: 1160px;
 
         .list-item {
             width: 222px;
+            height: 372px;
             margin: 23px 10px 23px 0;
+            overflow: hidden;
             float: left;
         }
 
         .thumb {
             width: 100%;
-            height: 130%;
-            display: inline-block;
+            height: 296px;
+            display: block;
 
             img {
                 width: 100%;
diff --git a/public/scss/product/outlets/_special.css b/public/scss/product/outlets/_special.css
index 985634c..b748f54 100644
--- a/public/scss/product/outlets/_special.css
+++ b/public/scss/product/outlets/_special.css
@@ -1,4 +1,8 @@
 .outlets-special-page {
+    .center-content {
+        width: 1150px !important;
+    }
+
     .main-banner {
         height: 360px;
     }
@@ -57,4 +61,8 @@
 
         }
     }
+
+    .brand .attr-content {
+        max-width: 730px;
+    }
 }
diff --git a/public/scss/product/sale/_index.css b/public/scss/product/sale/_index.css
index 93ffbbd..3d6f13f 100644
--- a/public/scss/product/sale/_index.css
+++ b/public/scss/product/sale/_index.css
@@ -1,4 +1,4 @@
-@import "_new-sale.css";
+@import "new-sale";
 
 .center-content {
     width: 1150px;
@@ -9,46 +9,43 @@
 .sale-page {
     margin-top: 10px;
 
-    .slide-switch {
-        display: block;
-
-        a {
-            position: absolute;
-            top: 50%;
-            margin: -30px 0 0;
-            width: 60px;
-            height: 60px;
-            line-height: 56px;
-            text-align: center;
-            z-index: 2;
-            background: #fff;
-            opacity: 0.55;
+    .slide-container {
+        position: relative;
+        height: 450px;
 
-            &.prev {
-                left: 50%;
-                margin-left: -575px;
-            }
+        ul {
+            width: 100%;
+            height: 100%;
+            position: relative;
+        }
 
-            &.next {
-                right: 50%;
-                margin-right: -575px;
-            }
+        li {
+            width: 100%;
+            height: 100%;
+            display: block;
+            position: absolute;
+            top: 0;
+            left: 0;
+        }
 
-            &:hover {
-                opacity: 0.9;
-            }
+        li > a {
+            width: 100%;
+            height: 100%;
+            display: block;
+        }
 
-            .iconfont {
-                font-size: 32px;
-                color: #59585a;
-            }
+        .slide-wrapper {
+            height: 100%;
         }
-    }
 
-    .slide-container {
-        position: relative;
-        height: 450px;
-        overflow: hidden;
+        .slide-switch {
+            position: relative;
+            width: 1150px;
+            left: 50%;
+            margin-left: -575px;
+            top: -225px;
+            display: block;
+        }
     }
 
     /*
@@ -147,7 +144,7 @@
 
             .pic {
                 position: relative;
-                height: 400px;
+                height: 375px;
             }
 
             .time {
@@ -155,13 +152,21 @@
                 position: absolute;
                 left: 0;
                 bottom: 0;
-                opacity: 0.5;
+                opacity: 0.7;
                 width: 100%;
-                font-size: 22px;
+                letter-spacing: 1px;
+                font-size: 16px;
                 line-height: 30px;
                 text-align: right;
                 color: #fff;
                 background: #4e4e4e;
+                span {
+                    margin-right: 10px;
+                }
+            }
+
+            .time-span {
+                margin-right: 20px;
             }
 
             .detail {
@@ -169,13 +174,13 @@
             }
 
             .brand {
-                margin: 24px 10px 10px;
+                margin: 10px;
             }
 
             .text {
                 padding: 24px 10px 48px 0;
                 font-size: 16px;
-                height: 74px;
+                padding-bottom: 20px;
                 color: #fd5659;
             }
 
@@ -184,7 +189,6 @@
                 font-weight: bold;
                 text-align: right;
                 margin-right: 20px;
-
                 max-width: 220px;
                 overflow: hidden;
                 text-overflow: ellipsis;
@@ -205,11 +209,12 @@
             }
 
             .title {
-                font-size: 22px;
+                font-size: 14px;
                 max-width: 200px;
                 overflow: hidden;
                 text-overflow: ellipsis;
                 white-space: nowrap;
+                text-align: center;
             }
         }
 
@@ -235,11 +240,11 @@
             }
 
             .title {
-                font-size: 10px;
-                height: 40px;
+                height: 20px;
                 width: auto;
                 font-size: 10px;
-                line-height: 40px;
+                line-height: 20px;
+                font-weight: 500;
                 text-align: center;
                 max-width: 200px;
                 overflow: hidden;
@@ -254,7 +259,8 @@
             }
 
             .time {
-                font-size: 14px;
+                font-size: 13px;
+                font-weight: 600;
             }
         }
     }
@@ -262,8 +268,11 @@
     .sale-nav {
         display: inline-block;
         width: 100%;
+        height: 40px;
+        background-color: #f5f5f5;
     }
     li {
+        cursor: pointer;
         float: left;
         width: 20%;
         height: 40px;
@@ -363,7 +372,6 @@
             top: 10px;
             right: 10px;
             line-height: 60px;
-            background: url("furniture/top-tag-bg.png?1450667948");
             font-size: 20px;
             color: #fff;
         }
@@ -411,66 +419,6 @@
                 color: #565656;
                 font-size: 13px;
             }
-            span.vip-tag {
-                background-image: resolve("sale/vip.png");
-                background-repeat: no-repeat;
-                background-size: 100% 90%;
-                width: 40px;
-                color: #fff;
-                font-style: italic;
-                margin-right: 5px;
-                margin-left: 5px;
-                width: 30px;
-            }
-
-            span.vip-1 {
-                background-image: resolve("product/silver-small.png");
-                background-repeat: no-repeat;
-                width: 30px;
-                display: inline-block;
-                height: 12px;
-                color: #fff;
-                font-style: italic;
-                margin-right: 5px;
-                margin-left: 5px;
-                position: absolute;
-            }
-
-            span.vip-2 {
-                background-image: resolve("product/golden-small.png");
-                background-repeat: no-repeat;
-                width: 30px;
-                display: inline-block;
-                height: 12px;
-                color: #fff;
-                font-style: italic;
-                margin-right: 5px;
-                margin-left: 5px;
-                position: absolute;
-            }
-
-            span.vip-3 {
-                background-image: resolve("product/platinum-small.png");
-                background-repeat: no-repeat;
-                width: 30px;
-                display: inline-block;
-                height: 12px;
-                color: #fff;
-                font-style: italic;
-                margin-right: 5px;
-                margin-left: 5px;
-                position: absolute;
-            }
-
-            .price-sale {
-                margin-left: 10px;
-                padding-left: 10px;
-                width: 36px;
-                height: 20px;
-                line-height: 20px;
-                background: url('../assets/images/furniture/sale-tag-bg.png?1450667948');
-                color: #fff;
-            }
         }
     }
 
@@ -489,6 +437,123 @@
             height: 77px;
         }
     }
+
+    .good-info {
+        .good-detail-img {
+            width: 100%;
+            height: 100%;
+            position: relative;
+        }
+
+        .good-detail-text {
+
+            > a {
+                margin-top: 16px;
+                line-height: 1.5;
+                display: block;
+                text-align: center;
+                font-weight: 600;
+
+                @mixin ellipsis;
+            }
+
+            > .price {
+                margin-top: 5px;
+                text-align: center;
+                font-weight: bold;
+            }
+
+            .brand {
+                display: none;
+            }
+
+            .market-price {
+                text-decoration: line-through;
+                margin-left: 30px;
+                color: #444;
+                font-weight: bold;
+            }
+        }
+    }
+
+    .sale-vip-box {
+        .good-info {
+            width: 280px;
+            height: 380px;
+            margin-right: 10px;
+            float: left;
+            margin-bottom: 100px;
+        }
+
+        .good-detail-text {
+
+            > a {
+                margin-top: 16px;
+                line-height: 1.5;
+                display: block;
+                text-align: center;
+                font-weight: 600;
+
+                @mixin ellipsis;
+            }
+
+            > .price {
+                margin-top: 5px;
+                text-align: center;
+                font-weight: bold;
+            }
+
+            .brand {
+                display: none;
+            }
+
+            .market-price {
+                text-decoration: line-through;
+                color: #444;
+                font-weight: bold;
+            }
+
+            .vip-span {
+                background-repeat: no-repeat;
+                background-size: 100% 100%;
+                line-height: 20px;
+                color: #fff;
+                font-style: italic;
+                margin-right: 5px;
+                margin-left: 10px;
+                margin-bottom: -3px;
+                padding-right: 5px;
+                padding-left: 5px;
+                display: inline-block;
+            }
+
+            .vip-tag {
+                background-image: resolve("sale/vip.png");
+                margin-left: 30px;
+                width: 20px;
+                height: 15px;
+            }
+
+            .vip-1 {
+                background-image: resolve("product/silver.png");
+                margin-left: 30px;
+                width: 16px;
+                height: 16px;
+            }
+            .vip-2 {
+                background-image: resolve("product/golden.png");
+                margin-left: 30px;
+                width: 16px;
+                height: 16px;
+            }
+            .vip-3 {
+                background-image: resolve("product/platinum.png");
+                margin-left: 30px;
+                width: 16px;
+                height: 16px;
+            }
+        }
+    }
 }
 
 .sale-discount-page {
@@ -507,14 +572,17 @@
             display: inline-block;
             margin-right: 10px;
             padding: 0 10px;
+            height: 25px;
+            vertical-align: center;
             font-weight: lighter;
-            line-height: 16px;
-            vertical-align: text-bottom;
+            line-height: 25px;
             color: #fff;
             background: #ff575c;
         }
 
         .time {
+            left-margin: 10px;
+
             .iconfont {
                 margin-right: 5px;
             }
@@ -547,4 +615,76 @@
     .pager {
         float: right;
     }
+
+    .good-info {
+        .good-detail-text {
+
+            > .price {
+                margin-top: 5px;
+                text-align: left;
+                font-weight: bold;
+            }
+
+            .brand {
+                display: none;
+            }
+
+            .sale-price {
+                margin-left: 20px;
+            }
+
+            .market-price {
+                text-decoration: line-through;
+                margin-left: 5px;
+                margin-right: 0;
+                color: #444;
+                font-weight: bold;
+            }
+
+            strong {
+                font-weight: normal;
+                color: #565656;
+                font-size: 13px;
+                float: left;
+            }
+
+            .vip-span {
+                background-repeat: no-repeat;
+                background-size: 100% 100%;
+                line-height: 20px;
+                color: #fff;
+                font-style: italic;
+                position: relative;
+                top: -3px;
+                margin-right: 5px;
+                margin-left: 10px;
+                padding-right: 5px;
+                padding-left: 5px;
+                float: left;
+            }
+
+            .vip-tag {
+                background-image: resolve("sale/vip.png");
+                width: 20px;
+                height: 15px;
+            }
+
+            .vip-1 {
+                background-image: resolve("product/silver.png");
+                width: 18px;
+                height: 16px;
+            }
+            .vip-2 {
+                background-image: resolve("product/golden.png");
+                width: 18px;
+                height: 16px;
+            }
+            .vip-3 {
+                background-image: resolve("product/platinum.png");
+                width: 18px;
+                height: 16px;
+                margin-bottom: 1px;
+            }
+        }
+    }
 }
diff --git a/public/scss/product/sale/_new-sale.css b/public/scss/product/sale/_new-sale.css
index bc158fb..91b4a9b 100644
--- a/public/scss/product/sale/_new-sale.css
+++ b/public/scss/product/sale/_new-sale.css
@@ -1,7 +1,8 @@
 .sale-discount-page {
     .sale-list-banner {
-        width: 100%;
+        width: 1150px;
         position: relative;
+        margin: auto;
 
         ul {
             overflow: hidden;
@@ -186,6 +187,199 @@
     }
 }
 
+.new-sale-page {
+
+    .sale-list-banner {
+        width: 100%;
+        position: relative;
+
+        ul {
+            overflow: hidden;
+            width: 100%;
+            position: relative;
+            z-index: 1;
+
+            li {
+                width: 100%;
+                height: 100%;
+                display: block;
+                position: absolute;
+                top: 0;
+                left: 0;
+            }
+        }
+    }
+
+    .sale-list-pagation {
+        z-index: 2;
+        position: absolute;
+        left: 0;
+        bottom: 50px;
+        width: 100%;
+        height: 20px;
+        text-align: center;
+
+        div {
+            display: inline-block;
+        }
+
+        span {
+            position: relative;
+            display: inline-block;
+            margin: 0 7px;
+            width: 12px;
+            height: 12px;
+            background: #fff;
+            cursor: pointer;
+            opacity: 0.6;
+            border-radius: 6px;
+            z-index: 2;
+
+            &.active {
+                opacity: 1;
+            }
+        }
+    }
+
+    .header-title {
+        position: relative;
+        width: 100%;
+        height: 42px;
+        margin: 20px 0;
+        text-align: center;
+        font-size: 20px;
+
+        .count-wrap {
+            position: relative;
+        }
+
+        .count {
+            background: #fff;
+            padding: 0 5px;
+            color: #999;
+            font-size: 12px;
+            margin-top: 6px;
+        }
+
+        .line-through {
+            position: absolute;
+            bottom: 9px;
+            left: 0;
+            right: 0;
+            height: 1px;
+            border-top: 1px dotted #999;
+        }
+    }
+
+    .new-banner img {
+        display: block;
+        width: 100%;
+    }
+
+    .new-brands {
+        position: relative;
+        width: 100%;
+        margin-top: 25px;
+
+        > * {
+            float: left;
+        }
+
+        .pre
+        .next {
+            position: absolute;
+            display: block;
+            width: 40px;
+            height: 40px;
+            line-height: 40px;
+            color: #fff;
+            background: #e0e0e0;
+            text-align: center;
+            top: 50%;
+            margin-top: -20px;
+            cursor: pointer;
+
+            opacity: 0.8;
+
+            &:hover {
+                opacity: 0.9;
+            }
+        }
+
+        .pre {
+            left: 0;
+        }
+
+        .next {
+            right: 0;
+        }
+
+        .brands-wrap {
+            position: relative;
+            overflow: hidden;
+            width: 890px;
+            height: 76px;
+            margin-left: 40px;
+        }
+
+        .brands {
+            position: absolute;
+            width: auto;
+            height: 76px;
+        }
+
+        .brands li {
+            float: left;
+            margin-left: 14px;
+
+            a {
+                /*
+                display:block;
+                */
+
+                width: 164px;
+                height: 76px;
+                line-height: 76px;
+                vertical-align: middle;
+                text-align: center;
+            }
+
+            img {
+                vertical-align: middle;
+                max-width: 100%;
+                max-height: 100%;
+                border: none;
+            }
+        }
+    }
+
+    .new-floor-title {
+        position: relative;
+        margin: 35px auto;
+        width: 300px;
+        height: 31px;
+        line-height: 31px;
+        font-size: 18px;
+        border: 1px solid #000;
+
+        .date {
+            position: absolute;
+            left: -1px;
+            top: -1px;
+            width: 155px;
+            height: 33px;
+            color: #fff;
+            text-align: center;
+            background: resolve('product/floor-title.png');
+        }
+
+        .title {
+            float: right;
+            margin-right: 40px;
+        }
+    }
+}
+
 .min-screen .new-sale-page .new-brands .brands-wrap {
     width: 730px;
 }
diff --git a/public/webpack.config.js b/public/webpack.config.js
index 2cd7c1c..fad0ee4 100644
--- a/public/webpack.config.js
+++ b/public/webpack.config.js
@@ -6,6 +6,7 @@
 
 'use strict';
 
+const webpack = require('webpack');
 const path = require('path');
 const _ = require('lodash');
 const shelljs = require('shelljs');
@@ -18,6 +19,12 @@ shelljs.ls(path.join(__dirname, '/js/**/*.page.js')).forEach((f) => {
     // Important
     // 生成规则:module.page: './js/module/xx.page.js'
     entries[`${dir[0]}.${dir[1].match(/(.*).page.js/)[1]}`] = `./js/${dir.join('/')}`;
+    entries.libs = [
+        'yoho-handlebars',
+        'yoho-jquery',
+        'yoho-jquery-lazyload',
+        'yoho-slider'
+    ];
 });
 
 module.exports = {
@@ -25,5 +32,17 @@ module.exports = {
     output: {
         path: path.join(__dirname, 'bundle'), // absolute path
         filename: '[name].js'
-    }
+    },
+    plugins: [
+        new webpack.optimize.OccurenceOrderPlugin(),
+        new webpack.optimize.CommonsChunkPlugin({
+            name: 'libs',
+            filename: 'libs.js'
+        }),
+        new webpack.ProvidePlugin({
+            $: 'yoho-jquery',
+            jQuery: 'yoho-jquery',
+            'window.jQuery': 'yoho-jquery'
+        })
+    ]
 };
diff --git a/test/library/api.test.js b/test/library/api.test.js
deleted file mode 100644
index 94dbf22..0000000
--- a/test/library/api.test.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * http api 测试
- *
- * @author: jiangfeng<jeff.jiang@yoho.cn>
- * @date: 2016/05/17
- */
-'use strict';
-
-const test = require('ava');
-const sign = require('../../library/sign');
-
-
-const API = require('../../library/api').API;
-const ServiceAPI = require('../../library/api').ServiceAPI;
-const SearchAPI = require('../../library/api').SearchAPI;
-
-const getUrl = 'operations/api/v6/category/getCategory';
-
-test('api constructor test', (t) => {
-    let api = new ServiceAPI();
-    let api2 = new API();
-    let api3 = new SearchAPI();
-
-    t.true(api !== null);
-    t.true(api2 !== null);
-    t.true(api3 !== null);
-});
-
-test('api get test', t => {
-    let api = new ServiceAPI();
-
-    return api.get(getUrl, sign.apiSign({})).then(result => {
-        if (result && result.code) {
-            t.pass();
-        } else {
-            t.fail();
-        }
-    });
-});
-
-test('api get test, api return an error', t => {
-    let api = new ServiceAPI();
-
-    return api.get(getUrl + '/error', sign.apiSign({})).catch(err => {
-
-        // 故意调用一个错误的接口
-        if (err && err.code === 500) {
-            t.pass();
-        } else {
-            t.fail();
-        }
-    });
-});
-
-test('api get use cache test', t => {
-    let api = new ServiceAPI();
-
-    return api.get(getUrl, sign.apiSign({}), true).then(result => {
-        if (result && result.code) {
-            t.pass();
-        } else {
-            t.fail();
-        }
-    });
-});
-
-test('api post test', t => {
-    let api = new ServiceAPI();
-
-    return api.post(getUrl, sign.apiSign({})).then(result => {
-        if (result && result.code) {
-            t.pass();
-        } else {
-            t.fail();
-        }
-    });
-});
-
-test('api multiple call test', (t) => {
-    let api = new ServiceAPI();
-    let multi = [api.get(getUrl, sign.apiSign({})), api.get(getUrl, sign.apiSign({}))];
-
-    return api.all(multi).then(result => {
-        if (result.length === 2) {
-            t.pass();
-        } else {
-            t.fail();
-        }
-    });
-});
-
-test('api multiple fail call test', (t) => {
-    let api = new ServiceAPI();
-
-    return api.all(1).catch((e) => {
-        if (e) {
-            t.pass();
-        } else {
-            t.fail();
-        }
-    });
-});
diff --git a/test/library/cache.test.js b/test/library/cache.test.js
deleted file mode 100644
index 98840f3..0000000
--- a/test/library/cache.test.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * cache 测试
- *
- * @author: jf<jeff.jiang@yoho.cn>
- * @date: 2016/5/18
- */
-
-'use strict';
-
-import test from 'ava';
-
-import cache from '../../library/cache';
-
-let testKey = 'test_unit_key:' + (new Date()).getTime();
-let testValue = 'anotherValue';
-let anotherKey = 'test_unit_key2:' + (new Date()).getTime();
-let anotherValue = {a: 1};
-
-let slaveTestKey = 'test_unit_key3:' + (new Date()).getTime();
-let slaveTestValue = 'anotherValue3';
-
-test.before('set test key', (t) => {
-    cache.set(testKey, testValue);
-    cache.set(anotherKey, anotherValue);
-    t.pass();
-});
-
-test.after('del test key', (t) => {
-    cache.del(testKey);
-    cache.del(anotherKey);
-    t.pass();
-});
-
-test('cache get test', (t) => {
-    return cache.get(testKey).then((v) => {
-        t.is(v, testValue);
-    });
-});
-
-test('cache get multi test', (t) => {
-    cache.set(anotherKey, anotherValue);
-    return cache.getMulti([testKey, anotherKey]).then((values) => {
-        t.is(values[testKey], testValue);
-        t.is(values[anotherKey], JSON.stringify(anotherValue));
-    });
-});
-
-test('cache get from slave test', (t) => {
-    return cache.getFromSlave(testKey).then((v) => {
-        t.is(v, testValue);
-    });
-});
-
-test('cache get multi from slave test', (t) => {
-    cache.set(anotherKey, anotherValue);
-    return cache.getMultiFromSlave([testKey, anotherKey]).then((values) => {
-        t.is(values[testKey], testValue);
-        t.is(values[anotherKey], JSON.stringify(anotherValue));
-    });
-});
-
-test('cache set to slave', (t) => {
-    return cache.setSlave(slaveTestKey, {
-        value: slaveTestValue
-    }).then(() => {
-        return cache.getFromSlave(slaveTestKey);
-    }).then((v) => {
-        v = JSON.parse(v);
-        t.is(v.value, slaveTestValue);
-        cache.del(slaveTestKey);
-    });
-});
-
-test('cache get test, key is not a string', (t) => {
-    return cache.get(123).then((v) => {
-        t.notOk(v);
-    });
-});
-
-test('cache get multi test, key is not an array', (t) => {
-    return cache.getMulti(123).then((v) => {
-        t.notOk(v);
-    });
-});
-
-test('cache get from slave test, key is not a string', (t) => {
-    return cache.getFromSlave(123).then((v) => {
-        t.notOk(v);
-    });
-});
-
-test('cache get multi from slave test, key is not an array', (t) => {
-    return cache.getMultiFromSlave(123).then((v) => {
-        t.notOk(v);
-    });
-});
-
-test('cache set test, key is not a string', (t) => {
-    return cache.set(123).then((v) => {
-        t.notOk(v);
-    });
-});
-
-test('cache set multi test, key is not an array', (t) => {
-    return cache.setSlave(123).then((v) => {
-        t.notOk(v);
-    });
-});
-
-test('cache del test, key is not a string', (t) => {
-    return cache.del(123).then((v) => {
-        t.notOk(v);
-    });
-});
diff --git a/test/library/camel-case.test.js b/test/library/camel-case.test.js
deleted file mode 100644
index 3cb9ab4..0000000
--- a/test/library/camel-case.test.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * 对象键名驼峰测试
- *
- * @author: jiangfeng<jeff.jiang@yoho.cn>
- * @date: 2016/05/17
- */
-
-import {test} from 'ava';
-
-const camelCase = require('../../library/camel-case');
-
-test('camel case object', t => {
-    let o = {
-        A_B: 'ab_cd'
-    };
-
-    t.is(camelCase(o).aB, 'ab_cd');
-});
-
-test('camel case array', t => {
-    let arr = [{
-        A_B: 'ab_cd'
-    }, {
-        A_B: 'ab_cd'
-    }];
-
-    t.is(camelCase(arr)[1].aB, 'ab_cd');
-});
diff --git a/test/library/helpers.test.js b/test/library/helpers.test.js
deleted file mode 100644
index 38d5419..0000000
--- a/test/library/helpers.test.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * library helpers 类单元测试
- * @author jeff.jiang<jeff.jiang@yoho.cn>
- * @date 2016/05/17
- */
-
-'use strict';
-
-const test = require('ava');
-const helpers = require('../../library/helpers');
-
-test('qiniu image url handle', t => {
-    let url = 'http://img11.static.yhbimg.com/yhb-img01/2016/04/18/03/016d50b20cfdec5a91c614b68546bc9d72.jpg?imageView2/{mode}/w/{width}/h/{height}';
-    let expected = 'http://img11.static.yhbimg.com/yhb-img01/2016/04/18/03/016d50b20cfdec5a91c614b68546bc9d72.jpg?imageView2/2/w/400/h/300';
-
-    t.is(helpers.image(url, 400, 300), expected);
-});
-
-test('uri format', t => {
-    let uri = '/test';
-    let qs = { name: 'yoho' };
-    let mod = 'list';
-    let expected = '//list.yohobuy.com/test?name=yoho';
-
-    t.is(helpers.urlFormat(uri, qs, mod), expected);
-});
-
-test('upper char to lowercase', t => {
-    let str = 'ABc';
-    let expected = 'abc';
-
-    t.is(helpers.lowerCase(str), expected);
-});
-
-test('lower char to uppercase', t => {
-    let str = 'abc!';
-    let expected = 'ABC!';
-
-    t.is(helpers.upperCase(str), expected);
-});
diff --git a/test/library/logger.test.js b/test/library/logger.test.js
deleted file mode 100644
index e2661b5..0000000
--- a/test/library/logger.test.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * logger 工具类测试
- */
-
-const test = require('ava');
-const logger = require('../../library/logger');
-
-test('logger error test', t => {
-    logger.error('error test', () => {
-        t.pass();
-    });
-});
-
-test('logger info test', t => {
-    logger.info('info test', () => {
-        t.pass();
-    });
-});
diff --git a/test/library/sign.test.js b/test/library/sign.test.js
deleted file mode 100644
index 9cf591e..0000000
--- a/test/library/sign.test.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 签名类测试
- *
- * @author: jiangfeng<jeff.jiang@yoho.cn>
- * @date: 2016/05/17
- */
-
-const test = require('ava');
-const sign = require('../../library/sign');
-
-test('app sign test', t => {
-    let params = {
-        client_type: 'h5', // eslint-disable-line
-        a: 1,
-        b: 'b'
-    };
-    let signedParams = sign.apiSign(params);
-
-    t.true(sign.checkSign(signedParams));
-});
-
-test('app sign test webSign', t => {
-    let params = {
-        uid: '123',
-        key: '3fc5a9fcea9fea49cce5432202a167ad'
-    };
-
-    t.true(sign.webSign(params));
-});
diff --git a/test/library/timer.test.js b/test/library/timer.test.js
deleted file mode 100644
index 0fcf5cf..0000000
--- a/test/library/timer.test.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Timer 计时类测试
- *
- * @author: jiangfeng<jeff.jiang@yoho.cn>
- * @date: 2016/05/17
- */
-
-const test = require('ava');
-const Timer = require('../../library/timer');
-
-const sleep = (timeout) => {
-    return new Promise((resolve) => {
-        setTimeout(() => {
-            resolve();
-        }, timeout);
-    });
-};
-
-test.cb('timer class ', t => {
-    let timer = new Timer();
-
-    timer.put('test');
-    sleep(300).then(() => {
-        let diff = timer.put('test');
-
-        t.true(diff >= 300);
-        t.end();
-    });
-});
diff --git a/utils/product-process.js b/utils/product-process.js
index 41525e8..5b0a12c 100644
--- a/utils/product-process.js
+++ b/utils/product-process.js
@@ -1,7 +1,9 @@
 'use strict';
 const _ = require('lodash');
-const camelCase = require('../library/camel-case');
-const helpers = require('../library/helpers');
+
+const camelCase = global.yoho.camelCase;
+const helpers = global.yoho.helpers;
+const images = require(`${global.utils}/images`);
 
 /**
  * 根据性别来决定  默认图片获取字段   如果是 2、3
@@ -18,6 +20,24 @@ const procProductImg = (product, gender) => {
     return product.cover1 || product.cover2 || product.imagesUrl || '';
 };
 
+
+/**
+ * 处理列表大图周边小图数据,拼接添加 href
+ * @param origin goods 原始数据
+ * @returns {{}} goods 输出数据,结构不变
+ */
+const handleGoodsListData = (origin) => {
+    _.forEach(origin, (value, key) => {
+        if (!_.isEmpty(value.goodsList)) {
+            _.forEach(value.goodsList, (subValue, subKey) => {
+                origin[key].goodsList[subKey].url =
+                    helpers.urlFormat(`/product/pro_${value.productId}_${subValue.goodsId}/${value.cnAlphabet}.html`);
+            });
+        }
+    });
+    return origin;
+};
+
 /**
  * 商品搜索商品数据处理
  */
@@ -34,18 +54,26 @@ exports.processProductList = (list, options) => {
         showPoint: true,
         gender: '2,3'
     }, options);
+
     list = camelCase(list);
 
     _.forEach(list, (product) => {
+
+
         // 商品信息有问题,则不显示
-        if (!product.productId || !product.goodsList.length) {
+        if (!product.productSkn || !product.goodsList.length) {
             return;
         }
 
-        // 市场价和售价一样,则不显示市场价
+        // 如果库存为0,显示已抢完
+        if (product.storageNum === 0 && product.status === 1) {
+            product.isSaleOut = true;
+        }
+
+        // 市场价和售价一样,则不显示市场价, 不显示折扣信息
         if (product.marketPrice === product.salesPrice) {
-            product.marketPrice = false;
-        } else if (product.marketPrice && product.salesPrice) {
+            delete product.marketPrice;
+        } else {
             product.discount = (product.salesPrice / product.marketPrice * 10).toFixed(1);
         }
 
@@ -73,23 +101,6 @@ exports.processProductList = (list, options) => {
             thumb: product.defaultImages
         });
 
-        if (options.showPoint) {
-            product.marketPrice += '.00';
-            product.salesPrice += '.00';
-
-            if (product.vip1Price) {
-                product.vip1Price = parseInt(product.vip1Price, 10) + '.00';
-            }
-
-            if (product.vip2Price) {
-                product.vip2Price = parseInt(product.vip2Price, 10) + '.00';
-            }
-
-            if (product.vip3Price) {
-                product.vip3Price = parseInt(product.vip3Price, 10) + '.00';
-            }
-        }
-
         product.isSoonSoldOut = product.isSoonSoldOut === 'Y';
         product.url = helpers.urlFormat(`/product/pro_${product.productId}_${product.goodsList[0].goodsId}/${product.cnAlphabet}.html`); // eslint-disable-line
 
@@ -128,7 +139,7 @@ exports.processProductList = (list, options) => {
 
         pruductList.push(product);
     });
-    return pruductList;
+    return handleGoodsListData(pruductList);
 };
 
 
@@ -259,3 +270,76 @@ exports.processFilter = (list, options) => {
 
     return filters;
 };
+
+// 处理单个商品
+exports.processProduct = (productData, options) => {
+    let result = {};
+
+    options = Object.assign({
+        showTags: true,
+        showNew: true,
+        showSale: true,
+        width: 290,
+        height: 388,
+        showPoint: true
+    }, options);
+
+    // 商品信息有问题,则不显示
+    if (!productData.product_skn || !productData.goods_list[0]) {
+        return false;
+    }
+
+    // 市场价和售价一样,则不显示市场价
+    if (parseInt(productData.market_price, 0) === parseInt(productData.sales_price, 0)) {
+        productData.market_price = false;
+    }
+
+    // 设置默认图片
+    _.forEach(productData.goods_list, item => {
+        if (item.is_default === 'Y') {
+            productData.default_images = item.images_url;
+        }
+    });
+
+    if (!productData.default_images) {
+        productData.default_images = productData.goods_list[0].images_url;
+    }
+
+    result.id = productData.product_skn;
+    result.product_id = productData.product_id;
+    result.thumb = images.getImageUrl(productData.default_images, options.width, options.height);
+    result.name = productData.product_name;
+    result.price = !productData.market_price ? false : productData.market_price;
+    result.salePrice = productData.sales_price;
+    if (options.showPoint) {
+        result.price += '.00';
+        result.salePrice += '.00';
+    }
+
+    result.is_soon_sold_out = (productData.is_soon_sold_out === 'Y');
+    result.url = helpers.urlFormat(`/product/pro_${productData.product_id}_${productData.goods_list[0].goods_id}/${productData.cn_alphabet}.html`, null, 'list'); // eslint-disable-line
+
+
+    if (options.showTags) {
+        result.tags = {};
+        result.tags.is_new = options.showNew && productData.is_new && productData.is_new === 'Y'; // 新品
+        result.tags.is_discount = options.showSale && productData.is_discount && productData.is_discount === 'Y'; // 在售
+        result.tags.is_limited = productData.is_limited && productData.is_limited === 'Y'; // 限量
+        result.tags.is_yohood = productData.is_yohood && productData.is_yohood === 'Y'; // YOHOOD
+        result.tags.midYear = productData['mid-year'] && productData['mid-year'] === 'Y'; // 年中
+        result.tags.yearEnd = productData['year-end'] && productData['year-end'] === 'Y'; // 年末
+        result.tags.is_advance = productData.is_advance && productData.is_advance === 'Y'; // 再到着
+
+        if (result.is_soon_sold_out && result.tags.is_discount) {
+            result.tags.is_new = false;// 打折与即将售完组合显示打折
+        } else if (result.tags.is_discount &&
+            (result.tags.is_new || result.tags.is_limited || result.tags.is_yohood || result.tags.is_advance)) {
+            result.tags.is_discount = false;// 打折与其它组合则隐藏打折
+        } else if (result.tags.is_yohood && result.tags.is_new) {
+            result.tags.is_new = false;// YOHOOD和新品组合显示YOHOOD
+        }
+    }
+    return result;
+};
+
+
diff --git a/utils/resources-process.js b/utils/resources-process.js
index 30ded14..f825f2b 100644
--- a/utils/resources-process.js
+++ b/utils/resources-process.js
@@ -1,5 +1,5 @@
 const _ = require('lodash');
-const camelCase = require('../library/camel-case');
+const camelCase = global.yoho.camelCase;
 
 /**
  * 处理楼层数据