text:
@charset "utf-8";
/* CSS Document */
/* ===============
 * 重新定义Html元素
 * =============== */
html, body, div, ul, ol, li, dl, dt, dd, h1, h2, h3, h4, h5, h6, pre, form, p, blockquote, fieldset, input { padding: 0; margin: 0; }
h1, h2, h3, h4, h5, h6, pre, code, address, caption, cite, code, em, strong, table, th, td { font-size: 1em; font-style: normal; font-weight: normal; }
strong { font-weight: bold; }
ul, ol { list-style: none outside none; }
fieldset, img { border: medium none; }
caption, th { text-align: left; }
table { border-collapse: collapse; border-spacing: 0; }
body { font: 12px/150% "Hiragino Sans GB", "Microsoft Yahei", arial, 宋体, "Helvetica Neue", Helvetica, STHeiTi, sans-serif; color: #666666; background: #FFF none repeat scroll 0 0; margin: 0; padding: 0; }
a { color: #555; outline: medium none; }
a:link, a:visited, a:active { text-decoration: none; }
a:hover { color: #E4393C; text-decoration: underline; }
i, cite, em { font-style: normal; }
/* ==========================
 * 为旧版本浏览器格式化Html5元素
 * ========================== */
article, aside, dialog, footer, header, section, footer, nav, figure, menu { display:block; }
/* ==========================
 * 常用宽度、高度、边距、边框属性
 * ========================== */
.w { width: 100% }
.wrapper { width: 1200px; margin: auto; }
.fl { float: left; }
.fr { float: right; }
.block { display: block; }
.none { display: none; }
.goods-price { font-family: Verdana; }
.goods-price em { font-weight: 600; color: #C00; }
.nc-appbar-tabs a.compare { display: none !important; }/*抢购页面去除侧边栏对比

/* ==========================
 * 广告区域布局样式
 * ========================== */
.ads-topbanner-layout { text-align: center; display: block; width: 100%; overflow: hidden; }
/* 公用导航区域
-------------------------------------- */
.public-nav-layout .all-category .category { margin-top: -2px; }
/* 首页焦点区域
-------------------------------------- */
.home-focus-layout { width: 100%; height: 585px; position: relative; z-index: 1; }
/* 满屏背静切换焦点图 */
.full-screen-slides { width: 100%; height: 400px; position: relative; z-index: 1; }
.full-screen-slides li { width: 100%; height: 100%; position: absolute; z-index: 1; top: 0; left: 0; }
.full-screen-slides li a { display: block; width:776px; height:270px; text-indent:-9999px; margin-left: -388px; position: absolute; z-index: 2; left: 50%; }
.full-screen-slides-pagination { font-size: 0; *word-spacing:-1px/*IE6、7*/; text-align: center; display:block; list-style:none; width:600px; height: 6px; padding:7px 8px ; margin-left: -325px; position:absolute; left:50%; top: 360px; z-index: 9; }
.full-screen-slides-pagination li { vertical-align: top; letter-spacing: normal; word-spacing: normal; display: inline-block; *display:inline/*IE6、7*/; list-style:none;border-radius: 50%; margin-left:4px;filter:progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#3F000000', endColorstr='#3F000000');
background:rgba(0,0,0,0.25); overflow: hidden; cursor: pointer; *zoom:1;}
.full-screen-slides-pagination a {  display: block; width:18px;height:18px;line-height:18px;overflow: hidden;text-align: center; color:#fff;font-family:arial;font-size:12px; text-indent:-9999px; }
.full-screen-slides-pagination .current { background: #F30; }
.home-focus-layout .banner-arrow {width: 762px;position: absolute;top: 95px;left: 50%;margin-left: -395px; z-index:99999}
.home-focus-layout .arrow { background: url(../images/home_bg.png) no-repeat; width: 45px; height: 100px; position: absolute; z-index: 2; top:25px; cursor: pointer;}/*40px*/
.home-focus-layout  .pre { background-position: 0 -100px; left:6px; }
.home-focus-layout  .next { background-position: -45px -100px; right: 0;}
.home-focus-layout .banner-arrow:hover .arrow { opacity: 0.5!important; }
.home-focus-layout .banner-arrow .arrow:hover { opacity: 0.8!important; }

/* 四联切换焦点图 */

.limited_time { position:absolute; z-index:9; width:220px; height:164px; float:left; background:#fff }
.limited_time .clock-wrap { position:relative; width:210px; height:164px; background:url(../images/clock01.png) no-repeat }
.limited_time .clock { position:absolute; left:81px; top:26px; width:40px; height:40px; border-radius:50%; border:6px solid transparent }
.limited_time .clock:before { content:""; position:absolute; left:18px; top:18px; width:7px; height:7px; border-radius:50%; background:#fa0808 }
.limited_time .clock .clock-h { position:absolute; top:5px; left:19px; height:18px; width:5px; background:url(../images/clock_h.png) no-repeat; transform:rotate(10deg); -webkit-transform-origin:2.5px 16.5px; -moz-transform-origin:2.5px 16.5px; transform-origin:2.5px 16.5px }
.limited_time .clock .clock-m { position:absolute; left:5px; top:19px; width:19px; height:5px }
.limited_time .clock .clock-m:after { content:""; position:absolute; left:14px; top:-17px; width:4px; height:21px; background-color:#1985D9; border-radius:2px; background:url(../images/clock_m.png) no-repeat; border:1px solid transparent; -webkit-transform-origin:2.5px 19.5px; -webkit-animation:tick-tock 20s steps(60, end) infinite; -moz-transform-origin:2.5px 19.5px; -moz-animation:tick-tock 20s steps(60, end) infinite; transform-origin:2.5px 19.5px; animation:tick-tock 20s steps(60, end) infinite }
.limited_time .clock .clock-s { position:absolute; left:17px; top:-6px; width:5px; height:26px; -webkit-transform-origin:bottom; -webkit-animation:tick-tock 10s linear infinite; -moz-transform-origin:bottom; -moz-animation:tick-tock 10s linear infinite; transform-origin:bottom; animation:tick-tock 10s linear infinite }
.limited_time .clock .clock-s:after { content:""; position:absolute; left:0; top:0; width:5px; height:5px; background-color:#fff; border-radius:50% }
@-keyframes tick-tock { to {
transform:rotate(360deg) translate3d(0, 0, 0)
}
}
@-moz-keyframes tick-tock { to {
-moz-transform:rotate(360deg) translate3d(0, 0, 0)
}
}
@-webkit-keyframes tick-tock { to {
-webkit-transform:rotate(360deg) translate3d(0, 0, 0)
}
}

.jfocus-trigeminybox { width:1200px; height: 164px; margin:0px auto; overflow: hidden; margin-top:10px;  }/*180px*/
.jfocus-trigeminy { float:left;width:985px; height: 164px; margin-left: -388px; clear: both; position: absolute; z-index: 2; top:410px; left: 50%; overflow: hidden; }/*776px*/
.jfocus-trigeminy ul { background-color: #FFF; width: auto; height: 164px; position: absolute; z-index: 1; overflow: hidden;}
.jfocus-trigeminy ul li { width:985px; height: 164px; float: left; }/*749px*/
.jfocus-trigeminy ul li a { display: block; width: 240px; height: 164px; overflow:hidden; float: left;text-align:right;padding-left:6px;}
.jfocus-trigeminy ul li a img {}
.jfocus-trigeminy .arrow { background: url(../images/home_bg.png) no-repeat; width: 45px; height: 100px; position: absolute; z-index: 2; top:25px; cursor: pointer; }/*40px*/
.jfocus-trigeminy .pre { background-position: 0 -100px; left:6px;}
.jfocus-trigeminy .next { background-position: -45px -100px; right: 0;}
.jfocus-trigeminy .pagination{ display: none;}
.jfocus_add1{ float:left;background: url(../images/xiaomei_tuijian.jpg) no-repeat left center; width:211px; height:147px;}
/*焦点区域右侧*/
.home-focus-layout .right-sidebar {
filter: progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#19000000', endColorstr='#19000000'); width: 230px; height: 400px; margin-left: 368px; position: absolute; z-index:1; top: 0; left: 50%; }
/*服务标志*/
.home-focus-layout .policy { background-color: #FFF; width: 210px; height: 81px; padding: 8px 0 0; }
.home-focus-layout .policy ul { width: 210px; height: 80px; }
.home-focus-layout .policy ul li { line-height: 24px; color: #999; background: url(../images/CP.png) no-repeat; width: 50px; height: 24px; float: left; padding: 52px 10px 0 10px }
.home-focus-layout .policy ul li.b1 { background-position: 0 0; }
.home-focus-layout .policy ul li.b2 { background-position: -70px 0; }
.home-focus-layout .policy ul li.b3 { background-position: -140px 0; }
/* 商城首页-新闻及店铺Tab切换 */
.nc-home-news .tabs-nav { background: #F7F7F7; height:32px; border-bottom: solid 1px #E7E7E7; position:relative; z-index:1; }
.nc-home-news .tabs-nav li { line-height:25px; background:#F7F7F7; text-align: center; display:block; width:70px; height:25px; float:left; padding: 0; margin:5px 0 0 5px; border: solid #F7F7F7; border-width: 1px 1px 0 1px; position:relative; z-index:9; }
.nc-home-news .tabs-nav li.tabs-selected { color:#333; font-weight: 700; line-height:27px; background:#FFF; height:27px; border: solid #E7E7E7; border-width: 1px 1px 0 1px; position:relative; z-index:10; _margin-bottom:-1px/* IE6 */; }
.nc-home-news .tabs-nav li a:hover, .nc-home-news .tabs-nav li.tabs-selected a { color:#333; }
.nc-home-news .tabs-panel { width: 95%; margin: 6px auto; }
.tabs-hide { display: none !important; }
.tabs-panel .store-join-btn { background: url(../images/home_bg.png) no-repeat 0 -200px; display: block; width: 180px; height: 60px; margin: 20px auto 10px; text-indent:-9999px; }
.tabs-panel .store-join-help { color: #999; display: block; text-align: center; }
.tabs-panel .store-join-help:hover { text-decoration: none; color: #39C; }
.tabs-panel .store-join-help i { font-size: 14px; margin-right: 4px; }
/*抢购活动*/
.home-focus-layout .groupbuy { background-color: transparent; width: 210px; height: 238px; position: relative; z-index: 1; overflow: hidden; }
.home-focus-layout .groupbuy .title { line-height: 30px; background-color: #F0F0F0; color: #777; width: 210px; height: 30px; }
.home-focus-layout .groupbuy .title i { line-height: 16px; color: #FFF; background-color: #CB0100; vertical-align: middle; text-align: center; display: inline-block; width: 16px; height: 16px; margin: auto 8px auto 5px; border-radius: 2px; }
.home-focus-layout .groupbuy ul { height: 210px; padding: 0px; margin: 0px; float: left; clear: both; position: absolute; z-index:1; }
.home-focus-layout .groupbuy ul li { float: left; width: 210px; height: 208px; padding: 0px; }
.home-focus-layout .groupbuy .pagination { display: none; }
.home-focus-layout .groupbuy .arrow { background: url(../images/home_bg.png) no-repeat; width: 19px; height: 29px; position: absolute; z-index: 2; top: 80px; cursor: pointer; }
.home-focus-layout .groupbuy:hover .arrow { opacity: 0.5!important; }
.home-focus-layout .groupbuy .arrow:hover { opacity: 0.8!important; }
.home-focus-layout .groupbuy .pre { background-position: -160px -40px; left: 0; }
.home-focus-layout .groupbuy .next { background-position: -180px -40px; right:0; }
.home-focus-layout .groupbuy dl { background-color: #FFF; background-repeat: no-repeat; background-position: top center; width: 210px; height: 180px; padding-bottom: 28px; position: relative; z-index: 1; }
.home-focus-layout .groupbuy dl dt { color: #FFF; text-shadow: 1px 1px 0 rgba(0,0,0,0.25); filter:progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#7F000000', endColorstr='#7F000000');
background:rgba(0,0,0,0.5); text-overflow: ellipsis; white-space: nowrap; width: 200px; height: 20px; padding: 2px 5px 38px 5px; position: absolute; z-index: 1; top: 120px; left: 0; overflow: hidden; }
.home-focus-layout .groupbuy dl dd.price { font-family: Verdana, Geneva, sans-serif; background: url(../images/home_bg.png) no-repeat 0 0; width: 200px; height: 30px; position: absolute; z-index: 1; top: 145px; left: 10px; }
.home-focus-layout .groupbuy dl dd.price .groupbuy-price { font-size: 16px; font-weight: 600; color: #FFF; line-height: 24px; display: block; height: 24px; float: left; margin: 3px 0 auto 12px; }
.home-focus-layout .groupbuy dl dd.price .original-price { font-size: 12px; color: #FFF; text-decoration: line-through; line-height: 24px; color: #F99; display: block; float: left; height: 24px; margin: 3px 0 auto 4px; }
.home-focus-layout .groupbuy dl dd.price .buy-button a { font-weight: 600; color: #FFF; background-color: #FF6800; line-height: 20px; text-align: center; width: 54px; height: 22px; float: right; margin: 5px 5px auto auto; }
.home-focus-layout .groupbuy dl dd.time { font-family: Verdana; background-color: #FFF; width: 200px; height: 20px; padding: 4px 5px; position: absolute; z-index: 1; bottom: 0; left: 0; }
.home-focus-layout .groupbuy dl dd.time .sell { float: left; }
.home-focus-layout .groupbuy dl dd.time .sell em { font-weight: 600; color: #E72551; margin-left: 2px; }
.home-focus-layout .groupbuy dl dd.time .time-remain { color: #777; float: right; }
.home-focus-layout .groupbuy dl dd.time .time-remain em { font-weight: 600; color: #E72551; }
/* 商城首页-新闻及店铺Tab切换*/
.proclamation { background: #FFF; width: 210px; height: 152px; margin:0 auto;}
.proclamation .tabs-nav { background: #F7F7F7; height:30px; border: solid #E7E7E7; border-width: 1px 0; position:relative; z-index:1; }
.proclamation .tabs-nav li { background:#F7F7F7; text-align: center; display: block; width: 103px; height: 20px; float: left; padding: 5px 0; margin: 0; border: solid #F7F7F7; border-width: 0 0 0 1px; position: relative; z-index: 9; cursor: pointer; }
.proclamation .tabs-nav li h3 { font-weight: 600; line-height:20px; }
.proclamation .tabs-nav li.tabs-selected { color: #333; font-weight: 600; line-height: 20px; background: #FFF; width: 104px; height: 20px; border-style: solid; border-color: transparent #E7E7E7 #FFF #E7E7E7; border-width: 0 1px 1px 1px; position: relative; z-index:10; _margin-bottom: -1px/* IE6 */; }
.proclamation .tabs-nav li h3, #news .tabs-nav li.tabs-selected h3 { color:#333; }
.proclamation .tabs-panel { width: 95%; margin: 6px auto; }
.proclamation .mall-news { }
.proclamation .mall-news li { line-height: 20px; text-overflow: ellipsis; white-space: nowrap; height: 20px; padding: 1px 0; overflow: hidden; }
.proclamation .mall-news li i { background: url(../images/home_bg.png) no-repeat -70px -40px; vertical-align: middle; display: inline-block; width: 2px; height: 2px; margin-right: 6px; }
.proclamation .mall-news li time { font-family: Tahoma, Geneva, sans-serif; color: #999; font-size: 10px; margin-left: 6px; }
.tabs-hide { display: none !important; }
.home-sale-layout { overflow: hidden; }
.home-sale-layout .left-layout { width: 989px; float: left; border-bottom: solid 1px #F0F0F0; }
.home-sale-layout .tabs-nav { background-color: transparent; width: 100%; height: 40px; border-style: solid; border-width: 0 0 2px 0; border-color: transparent transparent #F0F0F0 transparent; position: relative; z-index: 1; }
.home-sale-layout .tabs-nav li { background-color: transparent; width: 20%; *width: 195px;
height: 40px; float: left; padding: 0; position: relative; z-index: 1; cursor: pointer; }
.home-sale-layout .tabs-nav li h3 { font-size: 12px; font-weight: 600; line-height: 38px; text-align: center; }
.home-sale-layout .tabs-nav li i { font-size: 0px; line-height: 0; display: none; width: 0px; height: 0px; float: right; margin-left: -4px; border-width: 5px; border-style: dashed dashed solid dashed; position: absolute; z-index: 1; bottom: 0; left: 50%; }
.home-sale-layout .tabs-nav .tabs-selected { border-style: solid; border-width: 0 0 2px 0; border-color: #F87622; }
.home-sale-layout .tabs-nav .tabs-selected i { display: block; border-color: transparent transparent #F87622; }
.home-sale-layout .tabs-nav .tabs-selected h3 { color: #F87622; }
.home-sale-layout .tabs-panel { width: 989px; overflow: hidden; }
.home-sale-layout .tabs-panel ul { width: 990px; margin-left: -1px; overflow: hidden; }
.home-sale-layout .tabs-panel ul li { width: 197px; height: 235px; padding: 15px 0 0; border-left: dotted 1px #F0F0F0; float: left; overflow: hidden; }
.home-sale-layout .tabs-panel dl { width: 160px; margin: 0 auto auto; position: relative; z-index: 1; }
.home-sale-layout .tabs-panel dl dt.goods-name { font-family: Tahoma, Geneva, sans-serif; line-height: 16px; width: 160px; height: 32px; position: absolute; z-index: auto; top: 164px; left: 0; overflow: hidden; }
.home-sale-layout .tabs-panel dl dd.goods-thumb { width: 160px; height: 160px; position: absolute; z-index: auto; top: 0; left: 0; }
.home-sale-layout .tabs-panel dl dd.goods-thumb a { text-align: center; vertical-align: middle; display: table-cell; *display: block;
width: 160px; height: 160px; overflow: hidden; }
.home-sale-layout .tabs-panel dl dd.goods-thumb img { max-width: 160px; max-height: 160px; margin-top:expression(160-this.height/2);
*margin-top:expression(80-this.height/2);
}
.home-sale-layout .tabs-panel dl dd.goods-price { line-height: 20px; color: #999; position: absolute; z-index: auto; top: 200px; left: 0; }
.home-sale-layout .tabs-panel dl dd.goods-price em { font-size: 14px; vertical-align: middle; }
.home-sale-layout .right-sidebar { width: 211px; float: right; }
.home-sale-layout .right-sidebar .title { height: 40px; border-bottom: solid 2px #f87622; }
.home-sale-layout .right-sidebar .title h3 { font-size: 12px; font-weight: 600; line-height: 38px; color: #F87622; float: left; margin-left: 20px; }
.home-sale-layout .right-sidebar .title a { line-height: 38px; float: right; margin-right: 6px; }
.home-sale-layout .sale-discount { width: 210px; height: 252px; overflow: hidden; position: relative; z-index: 1; }
.home-sale-layout .sale-discount ul { width: auto; height: 252px; position: absolute; z-index: 1; }
.home-sale-layout .sale-discount ul li { width: 210px; height: 50px; float: left; padding: 191px 0 0 0; }
.home-sale-layout .sale-discount .arrow { background: url(../images/home_bg.png) no-repeat; width: 19px; height: 29px; margin-top: -40px; position: absolute; z-index: 2; top: 50%; cursor: pointer; opacity: 0.25!important; }
.home-sale-layout .sale-discount .arrow:hover { opacity: 0.85!important; }
.home-sale-layout .sale-discount .pre { background-position: -160px -70px; left: 0; }
.home-sale-layout .sale-discount .next { background-position: -180px -70px; right: 0; }
.home-sale-layout .sale-discount dl { height: 59px; width: 210px; border-bottom: solid 1px #F0F0F0; position: relative; z-index: 1; }
.home-sale-layout .sale-discount dl dt, .home-sale-layout .sale-discount dl dd { position: absolute; z-index: auto; }
.home-sale-layout .sale-discount dt.goods-name { text-overflow: ellipsis; white-space: nowrap; width: 200px; height: 20px; top: 30px; left: 5px; overflow: hidden; }
.home-sale-layout .sale-discount dd.goods-thumb { top: -155px; left: 30px; }
.home-sale-layout .sale-discount dd.goods-thumb a { text-align: center; vertical-align: middle; display: table-cell; *display: block;
width: 150px; height: 150px; overflow: hidden; }
.home-sale-layout .sale-discount dd.goods-thumb img { max-width: 150px; max-height: 150px;}
.home-sale-layout .sale-discount dd.goods-price { font: 600 16px/30px Verdana; color: #C00; width: 200px; height: 30px; top: 0; left: 5px; }
.home-sale-layout .sale-discount dd.goods-price .original { font-size: 12px; color: #AAA; font-weight: normal; text-decoration: line-through; margin-left: 6px; }
.home-sale-layout .sale-discount dd.goods-price-discount { color: #FFF; background: url(../images/home_bg.png) no-repeat -100px -100px; text-align: center; width: 48px; height: 24px; padding: 28px 0 16px 0; top: -40px; right: 5px; }
.home-sale-layout .sale-discount dd.goods-price-discount em { font-size: 16px; font-weight: 600; margin-right: 2px; }
.home-sale-layout .sale-discount dd.time-remain { color: #999; line-height: 16px; text-align: center; width: 210px; height: 16px; top: -180px; left: 0; }
.home-sale-layout .sale-discount dd.time-remain i { background: url(../images/home_bg.png) no-repeat -40px -60px; vertical-align: middle; display: inline-block; width: 11px; height: 11px; margin-right: 4px; }
.home-sale-layout .sale-discount dd.time-remain em { font-weight: 600; color: #555; margin: 0 2px; }
.home-sale-layout .sale-discount dd.goods-buy-btn { }
.home-sale-layout .sale-discount .preNext { opacity: 0.5 !important; }
.home-sale-layout .sale-discount .preNext:hover { opacity: 1 !important; }
/* 首页标准内容模块
-------------------------------------- */
.home-standard-layout { height: 462px; overflow: hidden; margin-top: 15px; }
/*首页楼层横幅 v3-b12*/
.home-floor-banner { margin:10px auto; width: 1200px; overflow: hidden; }
.right-side-layout {float:left; width:358px;}
/*区块左侧*/
.home-standard-layout .left-sidebar { width: 212px; height: 462px; float: left; }
.home-standard-layout .left-sidebar .title { width: 100%; height: 42px; }
.home-standard-layout .left-sidebar .title .pic-type { }
.home-standard-layout .left-sidebar .title .pic-type img { max-width: 210px; max-height: 42px; margin: 0 1px; }
.home-standard-layout .left-sidebar .title .txt-type { height: 36px; padding-top:2px; }
.home-standard-layout .left-sidebar .title .txt-type span { font: 22px/32px "Microsoft YaHei", 微软雅黑, \9ed1\4f53, \5b8b\4f53, "Microsoft JhengHei", 华文细黑, STHeiti, MingLiu; line-height: 28px; vertical-align: middle; text-align: center; display: inline-block; width: 28px; height: 28px; margin: 2px auto auto 16px; color:#fff }
.home-standard-layout .left-sidebar .title .txt-type h2 { font: 22px/32px "Microsoft YaHei", 微软雅黑, \9ed1\4f53, \5b8b\4f53, "Microsoft JhengHei", 华文细黑, STHeiti, MingLiu; color: #fff; vertical-align: middle; display: inline-block; *display: inline/*IE6,7*/;
zoom:1; }
/*区块左侧广告*/.home-standard-layout .left-ads { width:180px; height: 180px; margin:0 auto; overflow:hidden;}
.home-standard-layout .left-ads img { width: 180px; height:auto; }
.home-standard-layout .left-hot-goods { color: #666; margin: 10px; padding: 10px 10px 3px; }
.home-standard-layout .left-hot-goods p { color: #333; font-size: 14px; }
.home-standard-layout .left-hot-goods ul { list-style: outside none disc; padding-top: 10px; }
.home-standard-layout .left-hot-goods ul li { lline-height: 20px; text-overflow: ellipsis; white-space: nowrap; height: 20px; padding: 1px 0; overflow: hidden; }
.home-standard-layout .left-hot-goods ul li i { background: url(../images/home_bg.png) no-repeat -70px -40px; vertical-align: middle; display: inline-block; width: 2px; height: 2px; margin-right: 6px; }
.home-standard-layout .left-hot-goods a { color: #666; display: inline-block; line-height: 20px; overflow: hidden; text-overflow: ellipsis; vertical-align: middle; white-space: nowrap; width: 160px; }
.home-standard-layout .left-hot-goods a:hover { color: #666; text-decoration: underline; }
/*左侧推荐分类*/
.home-standard-layout .recommend-classes { width: 200px; height: 124px; margin: 0 auto; overflow: hidden; }
.home-standard-layout .recommend-classes ul {
*word-spacing:-1px/*IE6、7*/; height: 94px; padding: 22px 0 8px 22px; }
.home-standard-layout .recommend-classes ul li { display: inline-block; *display: inline;
zoom: 1; }
.home-standard-layout .recommend-classes ul li a { display: inline-block; line-height: 14px; margin-bottom: 15px; min-width: 62px; padding:2px 8px; }
.home-standard-layout .recommend-classes ul li a:hover { text-decoration: none; text-shadow: none; }
/*区块中部*/
.home-standard-layout .middle-layout { width: 988px; height: 100%; float: left; }
.home-standard-layout .tabs-nav { background-color: transparent; width: 100%; height: 40px; }
.home-standard-layout .tabs-nav li { background-color: transparent; width: 12%; height: 40px; float: left; padding: 0; position: relative; z-index: 1; cursor: pointer; }
.home-standard-layout .tabs-nav li h3 { font-size: 14px; font-weight: 600; line-height: 38px; text-align: center; }
.home-standard-layout .tabs-nav li i { font-size: 0px; line-height: 0; display: none; width: 0px; height: 0px; float: right; margin-left: -4px; border-width: 5px; border-style:dashed dashed solid dashed; position: absolute; z-index: 1; bottom: 0; left: 50%; }
.home-standard-layout .tabs-panel { width: 988px; height: 498px; padding: 0; margin: 0; position: relative; z-index: 1; }
/*中部推荐位广告图形式1*/
.home-standard-layout .middle-banner-style01 { width: 988px; height: 498px; position: relative; z-index: 1; }
.home-standard-layout .middle-banner-style01 a { position: absolute; z-index: 1; }
.home-standard-layout .middle-banner-style01 .a1, .home-standard-layout .middle-banner-style01 .a2, .home-standard-layout .middle-banner-style01 .c1, .home-standard-layout .middle-banner-style01 .c2, .home-standard-layout .middle-banner-style01 .a1 img, .home-standard-layout .middle-banner-style01 .a2 img, .home-standard-layout .middle-banner-style01 .c1 img, .home-standard-layout .middle-banner-style01 .c2 img { width: 194px; height: 194px; }
.home-standard-layout .middle-banner-style01 .a1 { top: 0; left: 0; }
.home-standard-layout .middle-banner-style01 .a2 { top: 194px; left: 0; }
.home-standard-layout .middle-banner-style01 .b1 { width: 388px; height: 388px; top: 0; left: 194px; }
.home-standard-layout .middle-banner-style01 .b1 img { width: 388px; height: 388px; }
.home-standard-layout .middle-banner-style01 .c1 { top: 0; left: 582px; }
.home-standard-layout .middle-banner-style01 .c2 { top: 194px; left: 582px; }
.home-standard-layout .middle-banner-style01 .d1, .home-standard-layout .middle-banner-style01 .d2, .home-standard-layout .middle-banner-style01 .d3, .home-standard-layout .middle-banner-style01 .d4, .home-standard-layout .middle-banner-style01 .d1 img, .home-standard-layout .middle-banner-style01 .d2 img, .home-standard-layout .middle-banner-style01 .d3 img, .home-standard-layout .middle-banner-style01 .d4 img { width: 194px; height: 110px; }
.home-standard-layout .middle-banner-style01 .d1 { top: 388px; left: 0; }
.home-standard-layout .middle-banner-style01 .d2 { top: 388px; left: 194px; }
.home-standard-layout .middle-banner-style01 .d3 { top: 388px; left: 388px; }
.home-standard-layout .middle-banner-style01 .d4 { top: 388px; left: 582px; }

/*中部推荐广告列表*/
.home-standard-layout .middle-banner-list {float:right; width:629px; !important; height: 420px !important; border-style: solid; border-width: 0 1px 1px 0; border-color: transparent #DDD #DDD transparent; overflow: hidden; }
.home-standard-layout .middle-banner-list ul { width: 630px; height: 420px; margin: 0 -1px -1px 0; border-left:1px solid #DDD }
.home-standard-layout .middle-banner-list ul li { width: 209px; height: 209px; float: left; border-style: solid; border-width: 0 1px 1px 0; border-color: transparent #DDD #DDD transparent; overflow: hidden; }
.home-standard-layout .middle-banner-list dl { width: 180px; margin: 14px auto auto; position: relative; z-index: 1; }
.home-standard-layout .middle-banner-list dl dt.banner-name {font-size:14px;  font-family: Tahoma; text-overflow: ellipsis; white-space: nowrap; line-height: 22px; width: 180px; height: 22px; position: absolute; z-index: 11; top: 198px; left: 0; overflow: hidden; background:#fff; filter:alpha(opacity=60); -moz-opacity:0.6; -khtml-opacity: 0.6; opacity: 0.6;  }
.style-pink .banner-name a { position:relative; padding:0 4px; color:#000}
.home-standard-layout .middle-banner-list dl dd.banner-thumb { width: 180px; height: 180px; overflow:hidden; position: absolute; z-index: auto; top: 0; left: 0; }
.home-standard-layout .middle-banner-list dl dd.banner-thumb a { text-align: center; vertical-align: middle; display: table-cell; *display: block; width: 180px; height: 180px; overflow: hidden;  }

/*中部推荐商品列表*/
.home-standard-layout .middle-goods-list {float:right; width:629px; !important; height: 420px !important; border-style: solid; border-width: 0 1px 1px 0; border-color: transparent #DDD #DDD transparent; overflow: hidden; }
.home-standard-layout .middle-goods-list ul { width: 630px; height: 420px; margin: 0 -1px -1px 0; border-left:1px solid #DDD }
.home-standard-layout .middle-goods-list ul li { width: 209px; height: 209px; float: left; border-style: solid; border-width: 0 1px 1px 0; border-color: transparent #DDD #DDD transparent; overflow: hidden; }
.home-standard-layout .middle-goods-list dl { width: 140px; margin: 14px auto auto; position: relative; z-index: 1; }
.home-standard-layout .middle-goods-list dl dt.goods-name { font-family: Tahoma; text-overflow: ellipsis; white-space: nowrap; line-height: 16px; width: 145px; height: 16px; position: absolute; z-index: auto; top: 148px; left: 0; overflow: hidden; }
.home-standard-layout .middle-goods-list dl dd.goods-thumb { width: 140px; height: 140px; overflow:hidden; position: absolute; z-index: auto; top: 0; left: 0; }
.home-standard-layout .middle-goods-list dl dd.goods-thumb a { text-align: center; vertical-align: middle; display: table-cell; *display: block;
width: 140px; height: 140px; overflow: hidden; }
.home-standard-layout .middle-goods-list dl dd.goods-thumb img { width: 140px; height:auto;}
.home-standard-layout .middle-goods-list dl dd.goods-price { font-size: 16px; line-height: 20px; position: absolute; z-index: auto; top: 170px; left: 0; }
.home-standard-layout .middle-goods-list dl dd.goods-price .original { font-size: 12px; font-weight: normal; text-decoration: line-through; color: #999; vertical-align: middle; margin-left: 6px; }
/*右侧推荐品牌*/
.home-standard-layout .right-sidebar { width: 212px; height: 100%; float: right; left: 0; }
.home-standard-layout .right-sidebar .title { background-color: #FFF; width: 100%; height: 40px; border-bottom: solid 2px #DDD; }
.home-standard-layout .recommend-brand { width: 212px; height: 257px; overflow: hidden; }
.home-standard-layout .recommend-brand ul { background-color: #FFF; width: 212px; height: 258px; margin-top: -1px }
.home-standard-layout .recommend-brand ul li { background-color: #FFF; float: left; border-bottom: solid 1px #EEE; }
.home-standard-layout .recommend-brand ul li a { display: block; width: 96px; height: 32px; padding: 5px; }
.home-standard-layout .recommend-brand ul li img { max-width: 96px; max-height: 32px; }
/*右侧广告切换*/
.home-standard-layout .right-side-focus { width: 358px; height: 419px; border-style: solid; border-width: 0 0 1px 0; border-color: transparent #DDD #DDD transparent; position: relative; z-index: 1; overflow: hidden; }
.home-standard-layout .right-side-focus ul { height: 241px; position: absolute; z-index: 1; }
.home-standard-layout .right-side-focus ul li { width: 358px; height: 420px; overflow: hidden; float: left; }
.home-standard-layout .right-side-focus img { width: 358px; height:auto; }
.home-standard-layout .right-side-focus .pagination { font-size: 0; *word-spacing:-1px/*IE6、7*/;
text-align: center; width: 338px; height: 6px; padding: 7px 10px; position: absolute; z-index: 3; right: 0; bottom: 15px; }
.home-standard-layout .right-side-focus .pagination span { border-radius:50%; width:14px;height:14px;line-height:14px;overflow: hidden;background: #fff; vertical-align: top; letter-spacing: normal; word-spacing: normal; display: inline-block; *display:inline/*IE6、7*/;list-style:none; margin-left:4px; cursor: pointer; }
.home-standard-layout .right-side-focus .pagination span.on { background: #fff; }
.home-standard-layout .right-side-focus .arrow { background: transparent url("../images/home_bg.png") no-repeat scroll 0% 0%;width: 40px;height: 50px; position: absolute; z-index: 2; top: 183px; cursor: pointer; }
.home-standard-layout .right-side-focus:hover .arrow { opacity: 0.5!important; }
.home-standard-layout .right-side-focus .arrow:hover { opacity: 0.8!important; }
.home-standard-layout .right-side-focus .pre { background-position: -68px -40px; left: 0; }
.home-standard-layout .right-side-focus .next { background-position: -108px -40px; right: 0; }
/*标准区块色彩风格*/
/*红色*/
.style-red .left-sidebar .title { background-color: #C1392B; }
.style-red .left-sidebar, .style-red .right-sidebar { background-color: #F9EEF2; }
.style-red .left-ads { }
.style-red .recommend-classes li a { border-color: #C74D41 transparent #AD3327 transparent; }
.style-red .left-sidebar .title .txt-type span, .style-red .middle-layout .tabs-selected { border-color: #C1392B; }
.style-red .middle-layout .tabs-selected i { display: block; border-color: transparent transparent #C1392B transparent; }
.style-red .tabs-nav { border-style: solid; border-width: 0 0 2px 0; border-color: transparent transparent #C1392B transparent; }
.style-red .tabs-nav li { border-style: solid; border-width: 0 0 2px 0; border-color: #C1392B; }
.style-red .goods-price em { color:#C1392B;}
/*橙色*/
.style-orange .left-sidebar .title { background-color: #E77E23; }
.style-orange .left-sidebar, .style-orange .right-sidebar { background-color: #FBF1E8; }
.style-orange .left-ads { }
.style-orange .recommend-classes li a { border-color: #EB9144 transparent #C56B1E transparent; }
.style-orange .left-sidebar .title .txt-type span, .style-orange .middle-layout .tabs-selected { border-color: #E77E23; }
.style-orange .middle-layout .tabs-selected i { display: block; border-color: transparent transparent #E77E23 transparent; }
.style-orange .tabs-nav { border-style: solid; border-width: 0 0 2px 0; border-color: transparent transparent #E77E23 transparent; }
.style-orange .tabs-nav li { border-style: solid; border-width: 0 0 2px 0; border-color: #E77E23; }
.style-orange .goods-price em { color:#E77E23;}
/*棕色*/
.style-brown .left-sidebar .title { background-color: #8C4600; }
.style-brown .left-sidebar, .style-brown .right-sidebar { background-color: #FCF2E7; }
.style-brown .left-ads { }
.style-brown .left-sidebar .recommend-classes li a { border-color: #A36B33 transparent #7E3F00 transparent; }
.style-brown .left-sidebar .title .txt-type span, .style-brown .middle-layout .tabs-selected { border-color: #8C4600; }
.style-brown .middle-layout .tabs-selected i { display: block; border-color: transparent transparent #8C4600 transparent; }
.style-brown .tabs-nav { border-style: solid; border-width: 0 0 2px 0; border-color: transparent transparent #8C4600 transparent; }
.style-brown .tabs-nav li { border-style: solid; border-width: 0 0 2px 0; border-color: #8C4600; }
.style-brown .goods-price em { color:#8C4600;}
/*绿色*/
.style-green .left-sidebar .title { background-color: #27AE61; }
.style-green .left-sidebar, .style-green .right-sidebar { background-color: #E8FDF1; }
.style-green .left-ads { }
.style-green .left-sidebar .recommend-classes li a { border-color: #52BE81 transparent #239C57 transparent; }
.style-green .left-sidebar .title .txt-type span, .style-green .middle-layout .tabs-selected { border-color: #27AE61; }
.style-green .middle-layout .tabs-selected i { display: block; border-color: transparent transparent #27AE61 transparent; }
.style-green .tabs-nav { border-style: solid; border-width: 0 0 2px 0; border-color: transparent transparent #27AE61 transparent; }
.style-green .tabs-nav li { border-style: solid; border-width: 0 0 2px 0; border-color: #27AE61; }
.style-green .goods-price em { color:#27AE61;}
/*蓝色*/
.style-blue .left-sidebar .title { background-color: #3598DC; }
.style-blue .left-sidebar, .style-blue .right-sidebar { background-color: #E8F4FC; }
.style-blue .left-ads { }
.style-blue .left-sidebar .recommend-classes li a { border-color: #5DADE3 transparent #3089C6 transparent; }
.style-blue .left-sidebar .title .txt-type span, .style-blue .middle-layout .tabs-selected { border-color: #3598DC; }
.style-blue .middle-layout .tabs-selected i { display: block; border-color: transparent transparent #3598DC transparent; }
.style-blue .tabs-nav { border-style: solid; border-width: 0 0 2px 0; border-color: transparent transparent #3598DC transparent; }
.style-blue .tabs-nav li { border-style: solid; border-width: 0 0 2px 0; border-color: #3598DC; }
.style-blue .goods-price em { color:#3598DC;}
/*粉色*/
.style-pink .left-sidebar .title { background-color: #ff7373; }
.style-pink .left-sidebar, .style-pink .right-sidebar { background-color: #FFEBEB; }
.style-pink .left-ads { }
.style-pink .left-sidebar .recommend-classes li a { border-color: #FFEBEB transparent #E56767 transparent; }
.style-pink .left-sidebar .title .txt-type span, .style-pink .middle-layout .tabs-nav .tabs-selected { }
.style-pink .middle-layout .tabs-nav .tabs-selected i { display: block; border-color: transparent transparent #FF7373 transparent; }
.style-pink .tabs-nav { border-style: solid; border-width: 0 0 2px 0; border-color: transparent transparent #ff7373 transparent; }
.style-pink .tabs-nav li { border-style: solid; border-width: 0 0 2px 0; border-color: #ff7373; }
.style-pink .goods-price em { color:#ff7373;}
/*紫色*/
.style-purple .left-sidebar .title { background-color: #9C59B8; }
.style-purple .left-sidebar, .style-purple .right-sidebar { background-color: #F7EAFD; }
.style-purple .left-ads { }
.style-purple .left-sidebar .recommend-classes li a { border-color: #B07AC6 transparent #8C50A5 transparent; }
.style-purple .left-sidebar .title .txt-type span, .style-purple .middle-layout .tabs-selected { border-color: #9C59B8; }
.style-purple .middle-layout .tabs-selected i { display: block; border-color: transparent transparent #9C59B8 transparent; }
.style-purple .tabs-nav { border-style: solid; border-width: 0 0 2px 0; border-color: transparent transparent #9C59B8 transparent; }
.style-purple .tabs-nav li { border-style: solid; border-width: 0 0 2px 0; border-color: #9C59B8; }
.style-purple .goods-price em { color:#9C59B8;}
/*浅色*/
.style-default .left-sidebar .title { background-color: #565656; }
.style-default .left-sidebar, .style-purple .right-sidebar { background-color: #F5F5F5; }
.style-default .left-ads { }
.style-default .left-sidebar .recommend-classes li a { border-color: #555 transparent #8C50A5 transparent; }
.style-default .left-sidebar .title .txt-type span, .style-purple .middle-layout .tabs-selected { border-color: #9C59B8; }
.style-default .middle-layout .tabs-selected i { display: block; border-color: transparent transparent #565656 transparent; }
.style-default .tabs-nav { border-style: solid; border-width: 0 0 2px 0; border-color: transparent transparent #565656 transparent; }
.style-default .tabs-nav li { border-style: solid; border-width: 0 0 2px 0; border-color: #565656; }
.style-default .goods-price em { color:#565656;}

.home-channel-layout { margin-top: 15px; }
.home-channel-layout .ll { width: 380px; margin-right: 30px; float: left; }
.home-channel-layout .ml { width: 380px; float: left; }
.home-channel-layout .rl { width: 380px; margin-left: 30px; float: right; }
.home-channel-layout .title { height: 38px; border-bottom: solid 2px #DDD; }
.home-channel-layout .title h2 { font-family: "microsoft yahei"; font-size: 22px; font-weight: 100; line-height: 30px; paddding: 4px; }
.home-channel-layout .content { margin: 10px 0; }
.cms-picture { width: 380px; height: 260px; position: relative; z-index: 1; overflow: hidden; }
.cms-picture ul { position: absolute; z-index: 1; }
.cms-picture ul li { width: 380px; height: 260px; float: left; }
.cms-article { width: 380px; margin-top: 15px; }
.cms-article dl { width: 120px; height: 110px; float: left; clear: left; position: relative; z-index: 1; }
.cms-article dl dt { line-height: 24px; width: 120px; height: 24px; overflow: hidden; position: absolute; z-index: 1; bottom: 0; left: 0; }
.cms-article dl dd { width: 120px; height: 90px; position: absolute; z-index: 1; top: 0; left: 0; }
.cms-article dl dd img { max-width: 120px; }
.cms-article ul { width: 240px; float: right; }
.cms-article ul li { line-height: 24px; }
.microshop-summary .content { width: 380px; overflow: hidden; }
.microshop-summary .content ul { width: 400px; margin-left: -20px; }
.microshop-summary .content ul li { float: left; width: 180px; height: 240px; padding-left: 20px; margin-bottom: 10px; position:relative; z-index: 1; overflow:hidden; }
.microshop-share { width: 180px; height: 90px; padding: 195px 0 10px 0; position:absolute; left: 20px; top:0; background:url(trans.gif); }
.microshop-share b {
filter:progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#A5000000', endColorstr='#A5000000'); background:rgba(0,0,0,0.65); display: block; width: 180px; height: 240px; position:absolute; z-index: 1; left: 0; top: 195px; }
.microshop-summary .content ul li dl { position: relative; z-index:2; }
.microshop-summary .content ul li dl dt { padding: 5px; }
.share-member-avatar { border: solid 1px #FFF; width: 32px; height: 32px; float: left; }
.share-member-avatar img { max-width: 32px; max-height: 32px; }
.share-member-info { float: left; margin-left: 8px; }
.share-member-name { font-size: 12px; font-weight: 600; color: #FC0; }
.share-date { font-family: Tahoma, Geneva, sans-serif; color: #999; }
.share-content { font-size:12px; line-height:16px; clear: both; height: 32px; padding: 5px; overflow: hidden; }
.share-content a { color: #EEE; }
.share-content a:hover { text-decoration: none; color: #FC0; }
.share-like { line-height: 16px; color: #CCC; padding: 0 5px; }
.share-like i { background: url(../images/home_bg.png) no-repeat -40px -40px; vertical-align: middle; display: inline-block; width: 16px; height: 16px; margin-right: 5px; }
.share-like em { font-weight: 600; color: #FC0; margin: 0 2px; }
.microshop-thumb { background: #fff; overflow: hidden; }
.microshop-thumb a { overflow: hidden; text-align: center; position: relative; }
.microshop-thumb a img { position: relative; vertical-align: text-top; }
.microshop-thumb { width: 180px; height: 240px; }
.microshop-thumb a { width: 180px; height: 240px; }
.circle-summary .contnet { width: 380px; overflow: hidden; }
.circle-theme { width: 400px; margin-left: -20px; overflow: hidden; }
.circle-theme li { width: 180px; margin-left: 20px; float: left; }
.circle-theme li a { width: 180px; }
.circle-theme-thumb { background: #fff; overflow: hidden; }
.circle-theme-thumb a { overflow: hidden; text-align: center; position: relative; }
.circle-theme-thumb a img { position: relative; vertical-align: text-top; }
.circle-theme-name { line-height: 16px; background-color: #EBF5EC; height: 32px; padding: 5px; overflow: hidden; }
.circle-theme-from { line-height: 24px; color: #999; padding: 0 5px; }
.circle-theme-from a { color: #3AA55A; }
.circle-reply-theme { border: dashed #DDD; border-width: 1px 0; margin: 10px 0 15px 0; padding: 8px 5px; overflow: hidden; }
.circle-reply-theme li { line-height: 24px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }
.circle-reply-theme li a:hover { color: #3AA55A; text-decoration: none; }
.circle-reply-theme li span { color: #999; margin-right: 4px; }
.circle-member { width: 400px; margin-left: -20px; }
.circle-member li { width: 80px; height: 80px; float: left; margin-left: 20px; }
.circle-member li div.circle-member-avatar { width: 80px; height: 80px; }
.circle-member li div.circle-member-avatar a { text-align: center; vertical-align: middle; display: table-cell; *display: block/*IE7*/;
width: 72px; height: 72px; float: left; padding: 3px; border: solid 1px #EBF5EC; overflow: hidden; }
.circle-member li div.circle-member-avatar a:hover { background-color: #EBF5EC; }
.circle-member li div.circle-member-avatar img { max-width: 72px; max-height: 72px; margin-top:expression(72-this.height/2);
*margin-top:expression(36-this.height/2)/*IE7*/;
}
.circle-member li h4.circle-member-name { font-weight: 600; line-height: 24px; height: 24px; }
.circle-member li h4.circle-member-name a { color: #3AA55A; }
.circle-member li p.circle-member-theme { line-height: 16px; height: 32px; overflow: hidden; }
.circle-member li p.circle-member-theme a { color: #999; }
.clip-thumb { background: #fff; overflow: hidden; }
.clip-thumb a { overflow: hidden; text-align: center; position: relative; }
.clip-thumb a img { position: relative; vertical-align: text-top; }
#faq { border-top: solid 1px #f5f5f5; }
.footer-line { border-top: 4px solid #e7e7e7; font-family: "微软雅黑"; margin-top:20px; min-width: 1190px; padding: 0; }
/* 友情链接 */
.index-link {width: 1200px; margin-top:10px; font-size:14px;}
.website { height: 50px; line-height: 50px; border: 1px solid #eee; }
.website dt, .website dd { float: left; }
.website dt { position: relative; width: 140px; text-align: center; background: #eee; }
.website dt b { position: absolute; top: 50%; right: -7px; margin-top: -7px; border-style: solid; border-width: 7px 0 7px 7px; border-color: transparent transparent transparent #eee; overflow: hidden; }
.website dd { width:1020px; height:50px; text-overflow: ellipsis; white-space: nowrap;overflow:hidden; margin-left:10px;}
.website dd a { margin: 0 5px; }
/*控制左侧导航菜单*/
#nav_box { position:fixed; left:30px; top:160px; display:none; left:50%; margin-left:-660px }
#nav_box ul li { width:30px; height:30px; line-height:30px; border-bottom:1px dotted #666; text-align:center }
#nav_box ul li.last { border-bottom:1px dotted #666 }
#nav_box ul li .num { color:#666; display:block }
#nav_box ul li .word { display:none; color:#CB1C39 }
#nav_box ul li.hover .num { display:none!important }
#nav_box ul li.hover .word { display:block!important }
#nav_box ul li:last-child { border:0px}
/*楼层*/
.right-brand { float: right; height: 40px;}
.right-brand li { color: #414141; cursor: pointer; float: left; line-height: 50px; padding: 0 8px; }
.sticky { position:fixed;_position: relative; height:50px; width:100%; min-width:990px; background:#fff; left:0; top:0; opacity:.95; filter:alpha(opacity=95); z-index:999;border-bottom:1px solid #ddd; }
.sticky .public-head-layout { height:50px!important;  }
.sticky .public-head-layout .site-logo { height:40px!important; margin:5px 10px auto 0!important }
.sticky .public-head-layout .site-logo img { max-height:40px!important }
.sticky .public-head-layout .site-ad, .sticky .keyword { display:none; }
.sticky .head-user-menu { margin:5px 0 0 0!important }
.sticky .head-search-bar { padding-top:4px; margin:0 0 0 80px;}

/*右边*/
.right-panel { filter:alpha(opacity=90); -moz-opacity:.9; opacity:.9; width:230px; height:400px; background:#fdfdfd; float:right; border-top:0 }
.right-panel .welcomePanel { background:url(../images/login-bg.jpg); height:100px; text-align:center }
.right-panel .welcomePanel img { margin:5px 0; width:65px; border-radius:50% }
.right-panel .loginPanel { border-top:1px #c1c1c1 solid; border-bottom:1px #c1c1c1 solid; border-color:#e3e3e3 }
.right-panel .loginPanel .loginTxt { border-right:1px #c1c1c1 solid; border-color:#e3e3e3 }
.right-panel .loginPanel span { padding:10px 0; display:inline-block; width:48%; cursor:pointer; text-align:center }
.right-panel .loginPanel img { padding-right:5px; width:15px; height:15px }
.right-panel .exitPanel { background:url(../images/login-bg.jpg); height:100px }
.right-panel .exitPanel img { padding:17px 10px; width:65px; border-radius:50%; vertical-align:middle }
.right-panel .exitPanel .message { display:inline-block; width:130px; vertical-align:middle }
.right-panel .exitPanel .message .name { font-size:14px; font-weight:600; color:#FF0000; height:24px; line-height:24px; overflow:hidden }
.right-panel .exitPanel .message .logOut { cursor:pointer }
.right-panel .txtPanel { border-top:1px #c1c1c1 solid; border-bottom:1px #c1c1c1 solid; padding:2px 0 }
.right-panel .txtPanel a { padding:3px 0; display:inline-block; width:31%; text-align:center; cursor:pointer }
.right-panel .txtPanel .line { border-right:1px #c1c1c1 solid }
.right-panel .securePanel { color:#000; padding:16px 0;}
.right-panel .securePanel h6 { margin:0; padding:0 0 10px 20px }
.right-panel .securePanel li { display:inline-block; width:32%; text-align:center }
.right-panel .securePanel li img { width:40px; margin-bottom:5px }
.panelimg-side li { display:inline-block; list-style-type:none; position:relative; padding:0; margin:0; font-size:0 }

/*banner右侧广告切换*/
.right-panel .panelimg-side { width: 230px; height: 165px; position: relative; z-index: 1; overflow: hidden; }
.right-panel .panelimg-side ul { height: 165px; position: absolute; z-index: 1; }
.right-panel .panelimg-side ul li { width: 230px; height: 165px; overflow: hidden; float: left; }
.right-panel .panelimg-side img { width: 230px; height:165px; }
.right-panel .panelimg-side .pagination { font-size: 0; *word-spacing:-1px/*IE6、7*/;
text-align: center; width: 210px; height: 6px; padding: 7px 10px; position: absolute; z-index: 3; right: 0; bottom: 15px; }
.right-panel .panelimg-side .pagination span { background: #fff; vertical-align: top; letter-spacing: normal; word-spacing: normal; display: inline-block; *display:inline/*IE6、7*/;
list-style:none; width:24px; height:6px; margin-left:4px; cursor: pointer; }
.right-panel .panelimg-side .pagination span.on { background: #fff; }
.right-panel .panelimg-side .arrow { background: transparent url("../images/home_bg.png") no-repeat scroll 0% 0%;width: 40px;height: 50px; position: absolute; z-index: 2; top: 183px; cursor: pointer; }
.right-panel .panelimg-side:hover .arrow { opacity: 0.5!important; }
.right-panel .panelimg-side .arrow:hover { opacity: 0.8!important; }
.right-panel .panelimg-side .pre { display:none}
.right-panel .panelimg-side .next {  display:none}

.comment { margin: 0 auto; width: 1200px; }
.comment .tit { height: 46px; line-height: 46px; margin-top: 0px; overflow: hidden; }
.comment .tit .cmttite { float: left; }
.comment .tit .cmttite span { font-size: 20px; color: #666; }
.comment .tit .cmttite .more { margin-left: 14px; color: #797a7a; }
.comment .tit .cmttite .more:hover { color: #3c3c3c; text-decoration: none; }
.comment .tit .notice { float: right; width: 221px; display: inline; }
.comment .tit .notice h3 {font-size: 16px; color: #6d6d6d; height: 44px; }
.cmtcon { background: #fff; overflow: hidden; zoom: 1;  height: 248px; border-bottom: 1px solid #d5d9dd; }
.cmtcon .cmtleft { float: left; height:248px; width: 978px;border-bottom: 1px solid #d5d9dd;border-top: 2px solid #d5d9dd;border-left: 1px solid #d5d9dd;border-right: 1px solid #d5d9dd; display: inline }
.cmtcon .cmtleft dl { width: 288px; overflow: hidden; zoom: 1; border-bottom: 1px dashed #d5d9dd; float: left; margin: 0 15px 0 23px; padding: 17px 0; display: inline; }
.cmtcon .cmtleft dl dt { float: left; width: 90px; height: 90px; display: inline; }
.cmtcon .cmtleft dl dd { float: right; width: 180px; display: inline; }
.cmtcon .cmtleft dl dd h3 { line-height: 18px; }
.cmtcon .cmtleft dl dd h3 .username { color: #333 }
.cmtcon .cmtleft dl .goods-name { color: #8c8c8c; line-height: 20px; margin-top: 10px; max-height: 40px; _height: 40px; overflow: hidden; }
.cmtcon .cmtleft dl .goods-name a { color: #8c8c8c; }
.noticecon { margin: 14px auto 0; width: 219px; }
.noticecon ul { margin-top: 12px; height: 118px; overflow: hidden }
.noticecon ul li { line-height: 24px; overflow: hidden; height: 24px }
.noticecon ul li a { color: #6d6d6d; font-size: 12px }
.noticecon ul li a:hover { text-decoration: none; color: #F4504E }
.cmtcon .cmtleft dl dt img { max-width: 90px; max-height: 90px; }
.cmtcon .cmtleft dl dd h3 .datetime { float: right; color: #ccc; }
.cmtcon .cmtleft dl dd p { color: #8c8c8c; line-height: 20px; margin-top: 10px; max-height: 40px; _height: 40px; overflow: hidden; }
.cmtcon .cmtrigt { float: right; width: 219px; display: inline; border-right: 1px solid #e8ebed;border-bottom: 1px solid #e8ebed;border-top: 2px solid #F87622; height: 248px; }
.grid_119011 .copyright_img a img { margin-left: 20px; }
.floor-head .ad-panel .ad-links ul { float: right; }
.floor-head .ad-panel .ad-links ul li a { text-align: right; }
.floor-head .ad-panel .ad-links ul li a { font-size: 12px; line-height: 12px; padding: 7px 10px; border: 1px solid #ccc; border-radius: 16px; display: inline-block; color: #666; margin-left: 6px; _margin-left: 3px; _vertical-align: sub; }
.floor-head .ad-panel .ad-links ul li a:hover { border: 1px solid #c9033b; background: #c9033b; text-decoration: none; color: #fff!important; }
#top-banner { display:block;}


text:
/* ###
 * IP: GHIDRA
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package ghidra.app.plugin.core.datamgr;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.tree.TreePath;

import org.junit.*;

import docking.ActionContext;
import docking.action.*;
import docking.widgets.tree.GTree;
import docking.widgets.tree.GTreeNode;
import ghidra.app.plugin.core.datamgr.tree.*;
import ghidra.app.plugin.core.datamgr.util.DataTypeChooserDialog;
import ghidra.framework.plugintool.PluginTool;
import ghidra.program.database.ProgramBuilder;
import ghidra.program.database.ProgramDB;
import ghidra.program.model.data.*;
import ghidra.test.AbstractGhidraHeadedIntegrationTest;
import ghidra.test.TestEnv;

/**
 * Test the favorites and data manager services.
 */
public class FavoritesAndMiscTest extends AbstractGhidraHeadedIntegrationTest {

	private static final String PROGRAM_NAME = "notepad";

	private TestEnv env;
	private PluginTool tool;
	private ProgramDB program;
	private DataTypeManagerPlugin plugin;
	private DataTypesProvider provider;
	private DataTypeArchiveGTree tree;
	private ArchiveRootNode archiveRootNode;
	private ArchiveNode builtInNode;
	private ToggleDockingAction favoritesAction;
	private ArchiveNode programNode;

	@Before
	public void setUp() throws Exception {
		clearFavorites();// tool will initialize defaults
		env = new TestEnv();

		program = buildProgram();
		tool = env.launchDefaultTool(program);

		plugin = env.getPlugin(DataTypeManagerPlugin.class);
		provider = plugin.getProvider();
		tree = provider.getGTree();
		waitForTree();

		archiveRootNode = (ArchiveRootNode) tree.getModelRoot();
		builtInNode = (ArchiveNode) archiveRootNode.getChild("BuiltInTypes");
		programNode = (ArchiveNode) archiveRootNode.getChild(PROGRAM_NAME);

		tool.showComponentProvider(provider, true);
		favoritesAction = (ToggleDockingAction) getAction(plugin, "Set Favorite Data Type");
	}

	private ProgramDB buildProgram() throws Exception {
		ProgramBuilder builder = new ProgramBuilder("notepad", ProgramBuilder._TOY, this);

		builder.createMemory(".text", "0x1001000", 0x100);
		CategoryPath miscPath = new CategoryPath("/MISC");
		builder.addCategory(miscPath);
		StructureDataType struct = new StructureDataType("ArrayStruct", 4);
		struct.setCategoryPath(miscPath);
		builder.addDataType(struct);
		CategoryPath cat1Path = new CategoryPath("/Category1");
		builder.addCategory(cat1Path);
		CategoryPath cat2Path = new CategoryPath(cat1Path, "Category2");
		builder.addCategory(cat2Path);
		CategoryPath cat4Path = new CategoryPath(cat2Path, "Category4");
		builder.addCategory(cat4Path);
		builder.addCategory(new CategoryPath(cat2Path, "Category5"));

		CategoryPath cat3Path = new CategoryPath(cat2Path, "Category3");
		builder.addCategory(cat3Path);
		return builder.getProgram();
	}

	@After
	public void tearDown() throws Exception {
		env.dispose();
	}

	@Test
	public void testSetFavorites1() throws Exception {
		tree.expandPath(builtInNode);
		waitForTree();
		DataTypeNode node = (DataTypeNode) builtInNode.getChild("undefined1");
		assertFalse(node.isFavorite());

		tree.setSelectedNode(node);
		waitForTree();

		favoritesAction.isEnabledForContext(createContext(node));
		assertTrue(favoritesAction.isEnabled());
		assertFalse(favoritesAction.isSelected());

		performToggleAction(favoritesAction, true);
		assertTrue(node.isFavorite());
	}

	@Test
	public void testSetFavorites2() throws Exception {
		tree.expandPath(builtInNode);
		waitForTree();
		DataTypeNode node = (DataTypeNode) builtInNode.getChild("byte");
		assertTrue(node.isFavorite());

		tree.setSelectedNode(node);
		waitForTree();

		favoritesAction.isEnabledForContext(createContext(node));
		assertTrue(favoritesAction.isEnabled());
		assertTrue(favoritesAction.isSelected());

		performToggleAction(favoritesAction, false);
		assertFalse(node.isFavorite());
	}

	@Test
	public void testSetFavorites3() throws Exception {
		env.showTool();

		tree.expandPath(builtInNode);
		waitForTree();
		DataTypeNode node = (DataTypeNode) builtInNode.getChild("byte");
		assertTrue(node.isFavorite());

		tree.setSelectedNode(node);
		waitForTree();

		favoritesAction.isEnabledForContext(createContext(node));
		assertTrue(favoritesAction.isEnabled());
		assertTrue(favoritesAction.isSelected());

		performToggleAction(favoritesAction, false);
		assertFalse(node.isFavorite());

		performToggleAction(favoritesAction, true);
		assertTrue(node.isFavorite());

	}

	@Test
	public void testListeners() throws Exception {
		MyChangeListener changeListener = new MyChangeListener();
		plugin.addDataTypeManagerChangeListener(changeListener);

		tree.expandPath(builtInNode);
		waitForTree();
		DataTypeNode node = (DataTypeNode) builtInNode.getChild("PascalUnicode");

		tree.setSelectedNode(node);
		waitForTree();

		performToggleAction(favoritesAction, true);
		waitForSwing();

		List<DataType> dts = changeListener.getFavoriteDts();
		boolean found = false;
		for (int i = 0; i < dts.size(); i++) {
			if (dts.get(i).getName().equals("PascalUnicode")) {
				found = true;
				break;
			}
		}
		if (!found) {
			Assert.fail("Did not find MBCString as a favorite!");
		}

		// turn off favorite
		tree.setSelectedNode(node);

		performToggleAction(favoritesAction, false);
		waitForSwing();

		dts = changeListener.getFavoriteDts();
		for (int i = 0; i < dts.size(); i++) {
			if (dts.get(i).getName().equals("MBCString")) {
				Assert.fail("Should not have found MBCString as a favorite!");
			}
		}
	}

	@Test
	public void testMultiSelectionFavorites() throws Exception {
		// select some favorites and some not favorites
		// favorites action should be disabled
		tree.expandPath(builtInNode);
		waitForTree();
		DataTypeNode node1 = (DataTypeNode) builtInNode.getChild("PascalUnicode");
		DataTypeNode node2 = (DataTypeNode) builtInNode.getChild("undefined1");
		DataTypeNode node3 = (DataTypeNode) builtInNode.getChild("byte");

		tree.setSelectionPaths(new TreePath[] { node1.getTreePath(), node2.getTreePath() });
		waitForTree();

		assertTrue(favoritesAction.isEnabledForContext(createContext(node2)));

		// Invalid selection - mixed favorite and non-favorite
		tree.setSelectionPaths(
			new TreePath[] { node1.getTreePath(), node2.getTreePath(), node3.getTreePath() });
		waitForTree();

		assertFalse(favoritesAction.isEnabledForContext(createContext(node3)));

		// Valid
		tree.setSelectionPaths(new TreePath[] { node1.getTreePath(), node2.getTreePath() });
		waitForTree();

		assertTrue(favoritesAction.isEnabledForContext(createContext(node2)));

		// now make sure that a mixture of node types is not a valid context
		tree.setSelectionPaths(
			new TreePath[] { node1.getTreePath(), node2.getTreePath(), builtInNode.getTreePath() });
		waitForTree();

		assertFalse(favoritesAction.isEnabledForContext(createContext(node2)));
	}

	@Test
	public void testMultiSelectionAddAndRemoveFavorites() throws Exception {
		tree.expandPath(builtInNode);
		waitForTree();
		DataTypeNode node = (DataTypeNode) builtInNode.getChild("PascalUnicode");
		DataTypeNode node2 = (DataTypeNode) builtInNode.getChild("undefined1");
		DataTypeNode node3 = (DataTypeNode) builtInNode.getChild("undefined2");
		DataTypeNode node4 = (DataTypeNode) builtInNode.getChild("undefined4");

		tree.setSelectionPaths(new TreePath[] { node.getTreePath(), node2.getTreePath(),
			node3.getTreePath(), node4.getTreePath() });
		waitForTree();

		assertTrue(favoritesAction.isEnabledForContext(createContext(node2)));

		performToggleAction(favoritesAction, true);

		assertTrue(node.isFavorite());
		assertTrue(node2.isFavorite());
		assertTrue(node3.isFavorite());
		assertTrue(node4.isFavorite());

		performToggleAction(favoritesAction, false);

		assertFalse(node.isFavorite());
		assertFalse(node2.isFavorite());
		assertFalse(node3.isFavorite());
		assertFalse(node4.isFavorite());
	}

	@Test
	public void testSaveRestoreFavorites() throws Exception {
		env.showTool();

		tree.expandPath(builtInNode);
		waitForTree();
		DataTypeNode node = (DataTypeNode) builtInNode.getChild("PascalUnicode");
		DataTypeNode node2 = (DataTypeNode) builtInNode.getChild("undefined1");
		DataTypeNode node3 = (DataTypeNode) builtInNode.getChild("undefined2");
		DataTypeNode node4 = (DataTypeNode) builtInNode.getChild("undefined4");

		tree.setSelectionPaths(new TreePath[] { node.getTreePath(), node2.getTreePath(),
			node3.getTreePath(), node4.getTreePath() });
		waitForTree();

		assertTrue(favoritesAction.isEnabledForContext(createContext(node4)));

		performToggleAction(favoritesAction, true);

		List<DataType> dts = plugin.getFavorites();

		env.saveRestoreToolState();

		plugin = getPlugin(tool, DataTypeManagerPlugin.class);
		List<DataType> newdts = plugin.getFavorites();
		assertEquals(dts.size(), newdts.size());
		for (int i = 0; i < dts.size(); i++) {
			assertTrue(dts.get(i).isEquivalent(newdts.get(i)));
		}
	}

	@Test
	public void testGetSetMostRecentlyUsed() throws Exception {
		DataType dt = new ByteDataType();
		plugin.setRecentlyUsed(dt);
		assertTrue(dt.isEquivalent(plugin.getRecentlyUsed()));

		ArrayList<DataType> list = new ArrayList<>();
		program.getListing().getDataTypeManager().findDataTypes("ArrayStruct", list);
		dt = list.get(0);
		plugin.setRecentlyUsed(dt);
		assertTrue(dt.isEquivalent(plugin.getRecentlyUsed()));
	}

	@Test
	public void testGetChosenDataType() throws Exception {
		env.showTool();
		expandNode(programNode);
		CategoryNode cat1Node = (CategoryNode) programNode.getChild("Category1");
		expandNode(cat1Node);
		CategoryNode cat2Node = (CategoryNode) cat1Node.getChild("Category2");
		expandNode(cat2Node);
		CategoryNode cat3Node = (CategoryNode) cat2Node.getChild("Category3");
		expandNode(cat3Node);

		Structure struct = new StructureDataType("ArrayStruct", 0);
		struct.add(new ByteDataType());
		struct.add(new WordDataType());

		int transactionID = program.startTransaction("test");
		Category c = cat3Node.getCategory();
		c.addDataType(struct, null);
		program.endTransaction(transactionID, true);

		program.flushEvents();
		waitForSwing();

		runSwing(() -> plugin.getDataType("ArrayStruct"), false);

		DataTypeChooserDialog d = waitForDialogComponent(DataTypeChooserDialog.class);

		assertNotNull(d);

		GTree gtree = (GTree) getInstanceField("tree", d);
		waitForTree(gtree);

		ArchiveRootNode root = (ArchiveRootNode) gtree.getModelRoot();
		ArchiveNode programNode1 = (ArchiveNode) root.getChild(PROGRAM_NAME);

		assertNotNull("could not find " + PROGRAM_NAME + " in " + root, programNode1);
		expandNode(programNode1);
		cat1Node = (CategoryNode) programNode1.getChild("Category1");
		expandNode(cat1Node);
		cat2Node = (CategoryNode) cat1Node.getChild("Category2");
		expandNode(cat2Node);
		cat3Node = (CategoryNode) cat2Node.getChild("Category3");
		expandNode(cat3Node);

		DataTypeNode structNode = (DataTypeNode) cat3Node.getChild("ArrayStruct");
		DataType s = structNode.getDataType();

		gtree.setSelectedNode(structNode);
		waitForTree(gtree);

		JButton okButton = (JButton) getInstanceField("okButton", d);
		assertTrue(okButton.isEnabled());
		runSwing(() -> okButton.doClick());

		DataType selectedDataType = d.getSelectedDataType();
		assertEquals(selectedDataType, s);
	}

	@Test
	public void testCollapseAllDtms() {
		env.showTool();

		List<GTreeNode> children = archiveRootNode.getChildren();
		for (GTreeNode node : children) {
			expandNode(node);
		}

		DockingActionIf collapseAllAction = getAction(plugin, "Collapse All");
		assertNotNull(collapseAllAction);
		assertTrue(collapseAllAction.isEnabled());
		runSwing(() -> {
			ActionContext context = new DataTypesActionContext(null, null, tree, null, true);
			collapseAllAction.actionPerformed(context);
		}, true);
		waitForTree();

		for (GTreeNode node : children) {
			assertFalse(tree.isExpanded(node.getTreePath()));
		}
	}

//==================================================================================================
// Private Methods
//==================================================================================================

	private class MyChangeListener extends DataTypeManagerChangeListenerAdapter {
		private List<DataType> favoriteDts;

		@Override
		public void favoritesChanged(DataTypeManager dtm, DataTypePath path, boolean isFavorite) {
			favoriteDts = plugin.getFavorites();
		}

		List<DataType> getFavoriteDts() {
			return favoriteDts;
		}
	}

	private ActionContext createContext(GTreeNode node) {
		return new DataTypesActionContext(provider, program, tree, node);
	}

	private void performToggleAction(ToggleDockingActionIf action, boolean selected) {
		ActionContext context = createContext(null);
		runSwing(() -> {
			action.setSelected(selected);
			action.actionPerformed(context);
		});

	}

	private void waitForTree() {
		waitForTree(tree);
	}

	private void expandNode(GTreeNode node) {
		tree.expandPath(node);
		waitForTree();
	}

	private void clearFavorites() {
		BuiltInDataTypeManager dataTypeManager = BuiltInDataTypeManager.getDataTypeManager();
		for (DataType dt : dataTypeManager.getFavorites()) {
			dataTypeManager.setFavorite(dt, false);
		}
	}

}

redpajama_set_name: RedPajamaGithub


text:
package com.example.zhangnan.myfarm;

import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.SeekBar;
import android.widget.Switch;
import android.widget.TextView;

import com.example.zhangnan.myfarm.activity_information.Controller;

/**
 * Created by zhangnan on 17/5/3.
 */

public class ControlDetalisFragment extends Fragment {

    private RecyclerView recyclerView;
    private String TAG="CDA";
    private static final String EXTRA_POSITION="com.example.zhangnan.myfarm.position";
    private int namePosition;
    private TextView controllerTitleTextView;
    public static int Tag;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_control_details, container, false);
        new getControllerInfoTask().execute();
        namePosition = ControlFragment.controlItemClickPosition;
        recyclerView = (RecyclerView) view.findViewById(R.id.control_details_recycler_view);
        recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),2));
        recyclerView.addItemDecoration(new MyFarmItemDecoration(2));
        return view;
    }

    private class SoundHolder extends RecyclerView.ViewHolder{
        private TextView idTextView;
        private Switch aSwitch;
        private SeekBar aSeekBar;

        public SoundHolder(View view) {
            super(view);
            switch (namePosition){
                case 0:case 1:case 2:case 3:{
                    idTextView= (TextView) view.findViewById(R.id.control_list_item_id_text_view);
                    aSwitch= (Switch) view.findViewById(R.id.control_list_item_switch);
                }break;
                default:{
                    idTextView= (TextView) view.findViewById(R.id.control_details_list_item2_id_text_view);
                    aSeekBar= (SeekBar) view.findViewById(R.id.control_details_list_item2_seek_bar);
                }break;
            }

        }

        public void bindHolder(Controller controller,int position){
            switch (namePosition){
                case 0:{
                    idTextView.setText(controller.getWater_pumpControllers().get(position).getId());
                    aSwitch.setChecked(controller.getWater_pumpControllers().get(position).getState());
                }break;
                case 1:{
                    idTextView.setText(controller.getDraught_fensController().get(position).getId());
                    aSwitch.setChecked(controller.getDraught_fensController().get(position).getState());
                }break;
                case 2:{
                    idTextView.setText(controller.getLightControllers().get(position).getId());
                    aSwitch.setChecked(controller.getLightControllers().get(position).getState());
                }break;
                case 3:{
                    idTextView.setText(controller.getWaningControllers().get(position).getId());
                    aSwitch.setChecked(controller.getWaningControllers().get(position).getState());
                }break;
                case 4:{
                    idTextView.setText(controller.getFilm_sideControllers().get(position).getId());
                    aSeekBar.setProgress(controller.getFilm_sideControllers().get(position).getState());
                }break;
                case 5:{
                    idTextView.setText(controller.getFilm_topControllers().get(position).getId());
                    aSeekBar.setProgress(controller.getFilm_topControllers().get(position).getState());
                }break;

            }
        }

    }

    private class SoundAdapter extends RecyclerView.Adapter<SoundHolder>{
            Controller controller;

        public SoundAdapter(Controller controller) {
            this.controller = controller;
        }

        @Override
        public SoundHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            LayoutInflater inflater= LayoutInflater.from(getActivity());
            switch (namePosition){
                case 0:case 1:case 2:case 3:{
                    Tag = 0;
                   return new SoundHolder(inflater.inflate(R.layout.control_details_list_item,parent,false));
                }
                default:{
                    Tag = 1;
                    return new SoundHolder(inflater.inflate(R.layout.control_details_list_item2,parent,false));
                }
            }

        }

        @Override
        public void onBindViewHolder(final SoundHolder soundHodler, int position) {
            soundHodler.bindHolder(controller,position);
            if (Tag ==0){
                if (soundHodler.aSwitch.isChecked()){
                    soundHodler.aSwitch.setText("开");
                }else{
                    soundHodler.aSwitch.setText("关");
                }
                soundHodler.aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        if (isChecked){
                            soundHodler.aSwitch.setText("开");
                        }else {
                            soundHodler.aSwitch.setText("关");
                        }
                    }
                });
        }

        }

        @Override
        public int getItemCount() {
            switch (namePosition){
                case 0:return controller.getWater_pumpControllers().size();
                case 1:return controller.getDraught_fensController().size();
                case 2:return controller.getLightControllers().size();
                case 3:return controller.getWaningControllers().size();
                case 4:return controller.getFilm_sideControllers().size();
                case 5:return controller.getFilm_topControllers().size();
                default:return controller.getWater_pumpControllers().size();
            }
        }

    }

    private class MyFarmItemDecoration extends RecyclerView.ItemDecoration{
        int mSpace;

        @Override
        public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
            super.getItemOffsets(outRect, view, parent, state);
            if (parent.getChildAdapterPosition(view)%2 == 0) {
                outRect.right = mSpace;
                outRect.bottom = mSpace;
                outRect.top = mSpace;
            } else{
                outRect.left = mSpace;
                outRect.bottom = mSpace;
                outRect.top = mSpace;
            }

        }

        public MyFarmItemDecoration(int space) {
            this.mSpace = space;
        }

    }

    public class getControllerInfoTask extends AsyncTask<Void,Void,Controller>{

        @Override
        protected Controller doInBackground(Void... params) {
            return new VisitServer().getControllers();
        }

        @Override
        protected void onPostExecute(Controller controller) {
            recyclerView.setAdapter(new SoundAdapter(controller));

        }
    }

}


text:
// $Id: gethrtime.cpp 77333 2007-02-22 16:03:48Z shuston $
//
// Build this file with g++.  It can be linked in to a ACE application
// that was compiled with GreenHills.  It wouldn't be necessary if I
// knew a way to correctly move values from registers to a 64-bit
// variable in GHS asm code.  That's easy with g++ asm.

#include "ace/config-all.h"

ACE_RCSID(ace, gethrtime, "$Id: gethrtime.cpp 77333 2007-02-22 16:03:48Z shuston $")

#if defined (ghs) && (defined (i386) || defined(__i386__))

#include "ace/OS_NS_time.h"

extern "C"
ACE_hrtime_t
ACE_GETHRTIME_NAME (void)
{
#if defined (ACE_HAS_PENTIUM)
  // ACE_TRACE ("ACE_GETHRTIME_NAME");

#if defined (ACE_LACKS_LONGLONG_T)
  double now;
#else  /* ! ACE_LACKS_LONGLONG_T */
  ACE_hrtime_t now;
#endif /* ! ACE_LACKS_LONGLONG_T */

  // Read the high-res tick counter directly into memory variable
  // "now".  The A constraint signifies a 64-bit int.
#if defined (__GNUG__)
  asm volatile ("rdtsc" : "=A" (now) : : "memory");
// #elif defined (ghs)
// The following doesn't work.  For now, this file must be compile with g++.
//  asm ("rdtsc");
//  asm ("movl %edx,-16(%ebp)");
//  asm ("movl %eax,-12(%ebp)");
#else
# error unsupported compiler
#endif

#if defined (ACE_LACKS_LONGLONG_T)
  // ACE_U_LongLong doesn't have the same layout as now, so construct
  // it "properly".
  ACE_UINT32 least, most;
  ACE_OS::memcpy (&least, &now, sizeof (ACE_UINT32));
  ACE_OS::memcpy (&most, (unsigned char *) &now + sizeof (ACE_UINT32),
                  sizeof (ACE_UINT32));

  const ACE_hrtime_t ret (least, most);
  return ret;
#else  /* ! ACE_LACKS_LONGLONG_T */
  return now;
#endif /* ! ACE_LACKS_LONGLONG_T */

#else  /* ! ACE_HAS_PENTIUM */
# error This file can _only_ be compiled with ACE_HAS_PENTIUM.
#endif /* ! ACE_HAS_PENTIUM */
}
#endif /* ghs */


text:
import sbt.Keys._
import sbt._

object BuildSettings {

  val Name = "dhira"
  val Version = "0.0.1"
  // You can use either version of Scala. We default to 2.11.7:
  val ScalaVersion = "2.11.7"
  val ScalaVersions = Seq("2.11.7", "2.10.5")

  lazy val buildSettings = Defaults.coreDefaultSettings ++ Seq (
    name          := Name,
    version       := Version,
    scalaVersion  := ScalaVersion,
    crossScalaVersions := ScalaVersions,
    organization  := "Aja",
    description   := "Accomplish Joyfull Adventures",
    scalacOptions := Seq("-deprecation", "-unchecked", "-encoding", "utf8", "-Xlint")
  )
}

object Resolvers {
  val typesafe      = "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"
  val sonatype      = "Sonatype Release" at "https://oss.sonatype.org/content/repositories/releases"
  val mvnrepository = "MVN Repo" at "http://mvnrepository.com/artifact"
  val allResolvers  = Seq(typesafe, sonatype, mvnrepository)

}

//Dont use %% for third party libraries for which appending Scala version might not help in fetching
object Dependency {
  object Version {
    val ScalaTest    = "2.2.4"
    val ScalaCheck   = "1.12.2"
  }

  val scalaTest             = "org.scalatest"         %% "scalatest"        % Version.ScalaTest  % "test"
  val scalaCheck            = "org.scalacheck"        %% "scalacheck"       % Version.ScalaCheck % "test"

  val cli                   = "commons-cli"           % "commons-cli"       % "1.2" withSources()

  val dataFormat            = "com.fasterxml.jackson.dataformat"  % "jackson-dataformat-yaml" % "2.5.1" withSources()
  val apacheCompress        = "org.apache.commons"    % "commons-compress" % "1.8" withSources()
  val apacheCommonIO        = "commons-io"            % "commons-io" % "2.4"
  val nd4s                  = "org.nd4j"              % "nd4s_2.11" % "0.5.0" withSources()
  val sl4j                  = "org.slf4j"             % "slf4j-log4j12" % "1.2" withSources()
  val sl4j2                 = "org.grlea.log.adapters" % "simple-log-sl4j" % "1.7" withSources()

}

object Dependencies {
  import Dependency._

  val tej =
    Seq(scalaTest, scalaCheck, cli, dataFormat, apacheCompress, apacheCommonIO, nd4s, sl4j)
}

object TejSparkBuild extends Build {
  import BuildSettings._

  val excludeSigFilesRE = """META-INF/.*\.(SF|DSA|RSA)""".r
  lazy val activatorspark = Project(
    id = "aja-workspace",
    base = file("."),
    settings = buildSettings ++ Seq(
      shellPrompt := { state => "(%s)> ".format(Project.extract(state).currentProject.id) },
      unmanagedSourceDirectories in Compile += baseDirectory.value / "src" / "examples" / "scala",
      unmanagedSourceDirectories in Compile += baseDirectory.value / "src" / "examples" / "java",
      maxErrors          := 5,
      triggeredMessage   := Watched.clearWhenTriggered,
      // runScriptSetting,
      resolvers := Resolvers.allResolvers,
      exportJars := true,
      // For the Hadoop variants to work, we must rebuild the package before
      // running, so we make it a dependency of run.
      (run in Compile) <<= (run in Compile) dependsOn (packageBin in Compile),
      libraryDependencies ++= Dependencies.tej,
      libraryDependencies ~= { _.map(_.exclude("ch.qos.logback", "logback-classic")) },
      dependencyOverrides ++= Set(
        "com.fasterxml.jackson.core" % "jackson-databind" % "2.4.4"
      ),
      excludeFilter in unmanagedSources := (HiddenFileFilter || "*-script.scala"),
      // unmanagedResourceDirectories in Compile += baseDirectory.value / "conf",
      mainClass := Some("run"),
      // Must run the examples and tests in separate JVMs to avoid mysterious
      // scala.reflect.internal.MissingRequirementError errors.
      // fork := true,
      // Must run Spark tests sequentially because they compete for port 4040!
      parallelExecution in Test := false))

}


text:
<!DOCTYPE html>

    <meta http-equiv="refresh" content="0;URL=type.N491.html">

Redirecting to type.N491.html...


text:
package com.opengamma.strata.examples.marketdata;

import java.io.File;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Locale;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.stream.Collectors;

import com.google.common.collect.ImmutableSet;
import com.opengamma.strata.collect.Messages;
import com.opengamma.strata.collect.io.ResourceLocator;

/**
 * Loads market data from the standard directory structure embedded within a JAR file.
 */
public class JarMarketDataBuilder extends ExampleMarketDataBuilder {

  /**
   * The JAR file containing the expected structure of resources.
   */
  private final File jarFile;
  /**
   * The root path to the resources within the JAR file.
   */
  private final String rootPath;
  /**
   * A cache of JAR entries under the root path.
   */
  private final ImmutableSet<String> entries;

  /**
   * Constructs an instance.
   *
   * @param jarFile  the JAR file containing the expected structure of resources
   * @param rootPath  the root path to the resources within the JAR file
   */
  public JarMarketDataBuilder(File jarFile, String rootPath) {
    // classpath resources are forward-slash separated
    String jarRoot = rootPath.startsWith("/") ? rootPath.substring(1) : rootPath;
    if (!jarRoot.endsWith("/")) {
      jarRoot += "/";
    }
    this.jarFile = jarFile;
    this.rootPath = jarRoot;
    this.entries = getEntries(jarFile, rootPath);
  }

  //-------------------------------------------------------------------------
  @Override
  protected Collection<ResourceLocator> getAllResources(String subdirectoryName) {
    String resolvedSubdirectory = subdirectoryName + "/";
    return entries.stream()
        .filter(e -> e.startsWith(resolvedSubdirectory) && !e.equals(resolvedSubdirectory))
        .map(e -> getEntryLocator(rootPath + e))
        .collect(Collectors.toSet());
  }

  @Override
  protected ResourceLocator getResource(String subdirectoryName, String resourceName) {
    String fullLocation = String.format(Locale.ENGLISH, "%s%s/%s", rootPath, subdirectoryName, resourceName);
    try (JarFile jar = new JarFile(jarFile)) {
      JarEntry entry = jar.getJarEntry(fullLocation);
      if (entry == null) {
        return null;
      }
      return getEntryLocator(entry.getName());
    } catch (Exception e) {
      throw new IllegalArgumentException(
          Messages.format("Error loading resource from JAR file: {}", jarFile), e);
    }
  }

  @Override
  protected boolean subdirectoryExists(String subdirectoryName) {
    // classpath resources are forward-slash separated
    String resolvedName = subdirectoryName.startsWith("/") ? subdirectoryName.substring(1) : subdirectoryName;
    if (!resolvedName.endsWith("/")) {
      resolvedName += "/";
    }
    return entries.contains(resolvedName);
  }

  //-------------------------------------------------------------------------
  // Gets the resource locator corresponding to a given entry
  private ResourceLocator getEntryLocator(String entryName) {
    return ResourceLocator.ofClasspath(entryName);
  }

  private static ImmutableSet<String> getEntries(File jarFile, String rootPath) {
    ImmutableSet.Builder<String> builder = ImmutableSet.builder();
    try (JarFile jar = new JarFile(jarFile)) {
      Enumeration<JarEntry> jarEntries = jar.entries();
      while (jarEntries.hasMoreElements()) {
        JarEntry entry = jarEntries.nextElement();
        String entryName = entry.getName();
        if (entryName.startsWith(rootPath) && !entryName.equals(rootPath)) {
          String relativeEntryPath = entryName.substring(rootPath.length() + 1);
          if (!relativeEntryPath.trim().isEmpty()) {
            builder.add(relativeEntryPath);
          }
        }
      }
    } catch (Exception e) {
      throw new IllegalArgumentException(
          Messages.format("Error scanning entries in JAR file: {}", jarFile), e);
    }
    return builder.build();
  }

}


text:
package org.ops4j.pax.exam.sample3.ice;

public interface IceCreamService {

    String getFlavour();
}


text:
Ti=Article 1144

1.sec=Le délai de l'action en nullité ne court, en cas d'erreur ou de dol, que du jour où ils ont été découverts et, en cas de violence, que du jour où elle a cessé.

=[Z/paras/s1]


text:
package browser_remote;

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import java.io.IOException;

import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.TableColumn;

@SuppressWarnings("serial")
public class ConfigureControllerPanel extends JPanel {

	private static int KEY_TABLE_DISPLAY_ROWS = 15;

	private static FileNameExtensionFilter FILE_FILTER = new FileNameExtensionFilter("Configuration Files", "cfg");
	private static JFileChooser configFileChooser() {
		JFileChooser fileChooser = new JFileChooser();
		fileChooser.setCurrentDirectory(new File(System.getProperty("user.dir")));
		fileChooser.setFileFilter(FILE_FILTER);
		return fileChooser;
	}

	private ControlPanel controlPanel;
	private ControllerLayout controllerLayout;
	private int controllerNumber;

	private JComboBox<Integer> controllerNumberComboBox;
	private JButton addControllerButton;
	private JButton removeControllerButton;
	private JTable keyTable;
	private KeyTableModel keyTableModel;
	private JScrollPane keyScrollPane;
	private JButton doneButton;
	private JButton saveButton;
	private JButton loadButton;

	public ConfigureControllerPanel(ControlPanel controlPanel, ControllerLayout controllerLayout) {
		this.controlPanel = controlPanel;
		this.controllerLayout = controllerLayout;
		controllerNumber = 1;

		controllerNumberComboBox = new JComboBox<Integer>();
		for (int i = 0; i < controllerLayout.getNumberOfControllers(); i++) {
			controllerNumberComboBox.addItem(i + 1);
		}
		controllerNumberComboBox.setSelectedItem(controllerNumber);
		controllerNumberComboBox.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				Object selection = controllerNumberComboBox.getSelectedItem();
				if (selection != null) {
					setControllerNumber((Integer) selection);
				}
			}
		});

		addControllerButton = new JButton("Add");
		addControllerButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				addControllerButtonPressed();
			}
		});

		removeControllerButton = new JButton("Delete");
		removeControllerButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				removeControllerButtonPressed();
			}
		});

		keyTable = new JTable();
		keyTable.setRowHeight(22);
		updateKeyTableModel();

		keyScrollPane = new JScrollPane(keyTable);
		int keyScrollPaneWidth = keyScrollPane.getPreferredSize().width;
		int keyScrollPaneHeight = keyTable.getRowHeight() * KEY_TABLE_DISPLAY_ROWS;
		keyScrollPane.setPreferredSize(new Dimension(keyScrollPaneWidth, keyScrollPaneHeight));

		setFocusable(true);
		addKeyListener(new KeyListener() {
			@Override
			public void keyTyped(KeyEvent e) {}
			@Override
			public void keyReleased(KeyEvent e) {}
			@Override
			public void keyPressed(KeyEvent e) {
				keyTableModel.keyPressed(e);
			}
		});

		doneButton = new JButton("Done");
		doneButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				doneButtonPressed();
			}
		});

		saveButton = new JButton("Save");
		saveButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				saveButtonPressed();
			}
		});

		loadButton = new JButton("Load");
		loadButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				loadButtonPressed();
			}
		});

		// add ui elements
		JPanel topPanel = new JPanel();
		topPanel.setLayout(new FlowLayout());
		topPanel.add(new JLabel("Controller #:"));
		topPanel.add(controllerNumberComboBox);
		topPanel.add(addControllerButton);
		topPanel.add(removeControllerButton);

		JPanel bottomPanel = new JPanel();
		bottomPanel.setLayout(new FlowLayout());
		bottomPanel.add(doneButton);
		bottomPanel.add(saveButton);
		bottomPanel.add(loadButton);

		setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
		add(topPanel);
		add(keyScrollPane);
		add(bottomPanel);
	}

	public void setControllerLayout(ControllerLayout controllerLayout) {
		this.controllerLayout = controllerLayout;

		controllerNumber = 1;

		controllerNumberComboBox.removeAllItems();
		for (int i = 0; i < controllerLayout.getNumberOfControllers(); i++) {
			controllerNumberComboBox.addItem(i + 1);
		}
		controllerNumberComboBox.setSelectedItem(controllerNumber);

		updateKeyTableModel();
	}

	private void updateKeyTableModel() {
		keyTableModel = new KeyTableModel(this, controllerLayout);
		keyTable.setModel(keyTableModel);
		AwtComponentCellEditor cellEditor = new AwtComponentCellEditor();
		TableColumn keyLabelColumn = keyTable.getColumnModel().getColumn(1);
		keyLabelColumn.setCellRenderer(cellEditor);
		keyLabelColumn.setCellEditor(cellEditor);
		TableColumn noneButtonColumn = keyTable.getColumnModel().getColumn(2);
		noneButtonColumn.setCellRenderer(cellEditor);
		noneButtonColumn.setCellEditor(cellEditor);
		TableColumn deleteButtonColumn = keyTable.getColumnModel().getColumn(3);
		deleteButtonColumn.setCellRenderer(cellEditor);
		deleteButtonColumn.setCellEditor(cellEditor);
	}

	private void setControllerNumber(int controllerNumber) {
		this.controllerNumber = controllerNumber;
		keyTableModel.setControllerNumber(controllerNumber);
	}

	private void addControllerButtonPressed() {
		if (controllerLayout.getNumberOfControllers() == 1) {
			removeControllerButton.setEnabled(true);
		}
		controllerLayout.addController();
		controllerNumberComboBox.addItem(controllerLayout.getNumberOfControllers());
		controllerNumberComboBox.setSelectedIndex(controllerNumberComboBox.getItemCount() - 1);
		setControllerNumber(controllerNumberComboBox.getItemAt(controllerNumberComboBox.getItemCount() - 1));
	}

	private void removeControllerButtonPressed() {
		if (controllerLayout.getNumberOfControllers() == 2) {
			removeControllerButton.setEnabled(false);
		}
		controllerLayout.removeController(controllerNumber);
		controllerNumberComboBox.removeItemAt(controllerNumberComboBox.getItemCount() - 1);
		controllerNumberComboBox.setSelectedIndex(controllerNumberComboBox.getItemCount() - 1);
		setControllerNumber((Integer) controllerNumberComboBox.getSelectedItem());
	}

	private void doneButtonPressed() {
		controlPanel.controllerConfigureDone();
	}

	private void loadButtonPressed() {
		JFileChooser fileChooser = configFileChooser();
		int returnValue = fileChooser.showOpenDialog(getParent());
		if (returnValue == JFileChooser.APPROVE_OPTION) {
			addLayoutFromFile(fileChooser.getSelectedFile());
		}
	}

	private void addLayoutFromFile(File file) {
		ControllerLayout layout = ControllerLayout.loadFromFile(file);
		if (file == null) {
			JOptionPane.showMessageDialog((JFrame) getTopLevelAncestor(), "Failed to read file.", "Load Error", JOptionPane.ERROR_MESSAGE);
		}
		controlPanel.loadedNewControllerLayout(layout);
	}

	private void saveButtonPressed() {
		JFileChooser fileChooser = configFileChooser();
		int returnValue = fileChooser.showSaveDialog(getParent());
		if (returnValue == JFileChooser.APPROVE_OPTION) {
			File file = fileChooser.getSelectedFile();
			if (!file.getName().endsWith(".cfg")) {
				file = new File(file.getAbsolutePath() + ".cfg");
			}
			saveConfiguration(file);
		}
	}

	private void saveConfiguration(File file) {
		try {
			controllerLayout.saveToFile(file);
		} catch (IOException e) {
			JOptionPane.showMessageDialog((JFrame) getTopLevelAncestor(), "Failed to write file.", "Save Error", JOptionPane.ERROR_MESSAGE);
			return;
		}
	}

}


text:
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">DCH-RP eCSG Mobile</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="title_activity_web_view">WebViewActivity</string>
    <string name="title_activity_prova">Prova</string>
    <string name="preference_file_key">it.infn.ct.dchrpSGmobile_preferences</string>
    <string name="cookie"></string>
    <string name="title_activity_menu">MenuActivity</string>
    <string name="lbl1">Long Name: </string>
    <string name="lbl2">Period: </string>
    <string name="lbl3">Day: </string>
    <string name="lbl4">Month: </string>
    <string name="lbl5">Year: </string>
    <string name="lbl6">file type: </string>
    <string name="title_activity_products_details">ProductsDetails</string>
    <string name="replicasBtn">Replicas</string>
    <string name="relBtn">Relations</string>
    <string name="title_activity_replicas">ReplicasActivity</string>
    <string name="pref_show_how_to_title">How To</string>
    <string name="pref_show_how_to">Show "How To" information on next restart</string>
    <string name="pref_gateway">Gateway</string>
    <string name="pref_gateway_summary">Set the default gateway</string>
    <string name="pref_app_setting">Application Settings</string>
    <string name="title_activity_filters">Apply filters</string>
    <string name="title_activity_po_c">PoCActivity</string>

</resources>


text:
@echo off
rem ----------------------------------------------------------------------------
rem Author: Tri H. Nguyen
rem
rem Description:
rem   Launch JUnit Test
rem ----------------------------------------------------------------------------

set CWD=%~dp0
set APP_LIB=%CWD%..\lib
set APP_CONFIG=%CWD%..\config

set CLASSPATH_OLD=%CLASSPATH%

set CLASSPATH=.
set CLASSPATH=%CLASSPATH%;%APP_CONFIG%
set CLASSPATH=%CLASSPATH%;%APP_LIB%\hello.jar
set CLASSPATH=%CLASSPATH%;%APP_LIB%\hello_test.jar
set CLASSPATH=%CLASSPATH%;%APP_LIB%\sample-ant_libs.jar

if "%1" == "test.hello" goto TEST_HELLO
goto USAGE

:TEST_HELLO
set TEST_CLASS=sample.hello.HelloTest
goto TEST

:TEST
%JAVA_HOME%/bin/java org.junit.runner.JUnitCore %TEST_CLASS%
goto END

:USAGE
echo.
echo Usage: %0 [options]
echo where options are
echo   test.hello Test sample.hello.Hello module
echo.
goto END

:END
set CLASSPATH=%CLASSPATH_OLD%
set CLASSPATH_OLD=

@echo on


text:
.. _implementedservice_s3:

.. |start-h3| raw:: html

    <h3>

.. |end-h3| raw:: html

    </h3>

==
s3
==

.. autoclass:: moto.s3.models.S3Backend

|start-h3| Example usage |end-h3|

.. sourcecode:: python

            @mock_s3
            def test_s3_behaviour:
                boto3.client("s3")
                ...

|start-h3| Implemented features for this service |end-h3|

- [X] abort_multipart_upload
- [X] complete_multipart_upload
- [X] copy_object
- [X] create_bucket
- [X] create_multipart_upload
- [X] delete_bucket
- [ ] delete_bucket_analytics_configuration
- [X] delete_bucket_cors
- [X] delete_bucket_encryption
- [ ] delete_bucket_intelligent_tiering_configuration
- [ ] delete_bucket_inventory_configuration
- [X] delete_bucket_lifecycle
- [ ] delete_bucket_metrics_configuration
- [X] delete_bucket_ownership_controls
- [X] delete_bucket_policy
- [X] delete_bucket_replication
- [X] delete_bucket_tagging
- [X] delete_bucket_website
- [X] delete_object
- [X] delete_object_tagging
- [X] delete_objects
- [X] delete_public_access_block
- [ ] get_bucket_accelerate_configuration
- [X] get_bucket_acl
- [ ] get_bucket_analytics_configuration
- [X] get_bucket_cors
- [X] get_bucket_encryption
- [ ] get_bucket_intelligent_tiering_configuration
- [ ] get_bucket_inventory_configuration
- [X] get_bucket_lifecycle
- [ ] get_bucket_lifecycle_configuration
- [X] get_bucket_location
- [X] get_bucket_logging
- [ ] get_bucket_metrics_configuration
- [ ] get_bucket_notification
- [X] get_bucket_notification_configuration
- [X] get_bucket_ownership_controls
- [X] get_bucket_policy
- [ ] get_bucket_policy_status
- [X] get_bucket_replication
- [ ] get_bucket_request_payment
- [X] get_bucket_tagging
- [X] get_bucket_versioning
- [ ] get_bucket_website
- [X] get_object
- [X] get_object_acl
- [ ] get_object_attributes
- [X] get_object_legal_hold
- [X] get_object_lock_configuration
- [ ] get_object_retention
- [X] get_object_tagging
- [ ] get_object_torrent
- [X] get_public_access_block
- [X] head_bucket
- [X] head_object
- [ ] list_bucket_analytics_configurations
- [ ] list_bucket_intelligent_tiering_configurations
- [ ] list_bucket_inventory_configurations
- [ ] list_bucket_metrics_configurations
- [X] list_buckets
- [ ] list_multipart_uploads
- [X] list_object_versions
- [X] list_objects
- [X] list_objects_v2
- [X] list_parts
- [X] put_bucket_accelerate_configuration
- [X] put_bucket_acl
- [ ] put_bucket_analytics_configuration
- [X] put_bucket_cors
- [X] put_bucket_encryption
- [ ] put_bucket_intelligent_tiering_configuration
- [ ] put_bucket_inventory_configuration
- [X] put_bucket_lifecycle
- [ ] put_bucket_lifecycle_configuration
- [X] put_bucket_logging

        The logging functionality itself is not yet implemented - we only store the configuration for now.

- [ ] put_bucket_metrics_configuration
- [ ] put_bucket_notification
- [X] put_bucket_notification_configuration

        The configuration can be persisted, but at the moment we only send notifications to the following targets:

         - AWSLambda
         - SQS

        For the following events:

         - 's3:ObjectCreated:Copy'
         - 's3:ObjectCreated:Put'

- [X] put_bucket_ownership_controls
- [X] put_bucket_policy
- [X] put_bucket_replication
- [ ] put_bucket_request_payment
- [X] put_bucket_tagging
- [X] put_bucket_versioning
- [ ] put_bucket_website
- [X] put_object
- [X] put_object_acl
- [X] put_object_legal_hold
- [X] put_object_lock_configuration
- [X] put_object_retention
- [ ] put_object_tagging
- [ ] put_public_access_block
- [ ] restore_object
- [ ] select_object_content
- [X] upload_part
- [ ] upload_part_copy
- [ ] write_get_object_response