UNPKG

ecp-ui-lib

Version:

1,057 lines (1,021 loc) 148 kB
import { CommonModule } from '@angular/common'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { Router } from '@angular/router'; import { animate, state, style, transition, trigger } from '@angular/animations'; import { Injectable, Component, Input, Output, EventEmitter, ElementRef, Renderer2, NgModule, defineInjectable } from '@angular/core'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class EcpUiLibService { constructor() { } } EcpUiLibService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ EcpUiLibService.ctorParameters = () => []; /** @nocollapse */ EcpUiLibService.ngInjectableDef = defineInjectable({ factory: function EcpUiLibService_Factory() { return new EcpUiLibService(); }, token: EcpUiLibService, providedIn: "root" }); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class EcpUiLibComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } EcpUiLibComponent.decorators = [ { type: Component, args: [{ selector: 'lib-ecp-ui-lib', template: ` <p> ecp-ui-lib works! </p> ` }] } ]; /** @nocollapse */ EcpUiLibComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class BreadCrumbComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } BreadCrumbComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-bread-crumb', template: "<!--\u81EA\u5B9A\u4E49\u9762\u5305\u5C51-->\r\n<div class=\"custom-breadcrumb\">\r\n <span class=\"breadcrumb-item\">\r\n <ng-content></ng-content>\r\n </span>\r\n <ng-content select=\".right-link\"></ng-content>\r\n</div>\r\n", styles: [".custom-breadcrumb{height:50px;background:rgba(255,255,255,1);border-bottom:1px solid rgba(218,218,218,1);line-height:50px;padding:0 30px;font-size:14px;color:rgba(153,153,153,1)}:host>>>.breadcrumb-item span:not(:last-child):after{content:\" > \"}:host>>>.right-link{float:right;font-size:14px;font-weight:400;color:rgba(110,110,110,1)}:host>>>.right-link a{color:#1e5bd6;margin-left:30px}:host>>>.custom-breadcrumb .right-link a i{color:#1e5bd6;margin-right:9px}"] }] } ]; /** @nocollapse */ BreadCrumbComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexLeftCenterRightComponent { constructor() { this.leftWidth = 0; this.rightWidth = 0; this.leftBg = '#ffffff'; this.bodyBg = '#ffffff'; this.rightBg = '#ffffff'; } /** * @return {?} */ ngOnInit() { } } FlexLeftCenterRightComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-flex-lcr', template: "<div class=\"flex-lcb\">\r\n <div class=\"flex-left\" *ngIf=\"leftWidth>0\" [ngStyle]=\"{'flex':'0 0 '+leftWidth+'px','background':leftBg}\">\r\n <ng-content select=\"ecp-flex-left\"></ng-content>\r\n </div>\r\n <div class=\"flex-body\" [ngStyle]=\"{'background':bodyBg}\">\r\n <ng-content select=\"ecp-flex-body\"></ng-content>\r\n </div>\r\n <div class=\"flex-right\" *ngIf=\"rightWidth>0\" [ngStyle]=\"{'flex':'0 0 '+rightWidth+'px','background':rightBg}\">\r\n <ng-content select=\"ecp-flex-right\"></ng-content>\r\n </div>\r\n</div>\r\n\r\n", styles: [".flex-lcb{display:flex;width:100%;height:100%}.flex-left{flex:0 0 200px;height:100%;background:#fff}.flex-body{flex:1;overflow:auto;background:#fff}.flex-right{flex:0 0 200px;height:100%;background:#fff}"] }] } ]; /** @nocollapse */ FlexLeftCenterRightComponent.ctorParameters = () => []; FlexLeftCenterRightComponent.propDecorators = { leftWidth: [{ type: Input }], rightWidth: [{ type: Input }], leftBg: [{ type: Input }], bodyBg: [{ type: Input }], rightBg: [{ type: Input }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexTopCenterBottomComponent { constructor() { this.topHeight = 0; this.bottomHeight = 0; this.topBg = '#ffffff'; this.bottomBg = '#ffffff'; this.bodyBg = '#ffffff'; } /** * @return {?} */ ngOnInit() { } } FlexTopCenterBottomComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-flex-tcb', template: "<div class=\"flex-tcb\">\r\n <div class=\"flex-top\" *ngIf=\"topHeight>0\" [ngStyle]=\"{'height':topHeight+'px','background':topBg}\">\r\n <ng-content select=\"ecp-flex-top\"></ng-content>\r\n </div>\r\n <div class=\"flex-body\" [ngStyle]=\"{'background':bodyBg}\">\r\n <ng-content select=\"ecp-flex-body\"></ng-content>\r\n </div>\r\n <div class=\"flex-footer\" *ngIf=\"bottomHeight>0\" [ngStyle]=\"{'height':bottomHeight+'px','background':bottomBg}\">\r\n <ng-content select=\"ecp-flex-bottom\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".flex-tcb{height:100%;display:flex;flex-direction:column}:host>>>.flex-tcb .flex-top{flex-grow:0;flex-shrink:0;width:100%}.flex-tcb .flex-body{overflow-y:auto;flex-grow:1;height:inherit}:host>>>.flex-tcb .flex-footer{flex-grow:0;flex-shrink:0;width:100%}"] }] } ]; /** @nocollapse */ FlexTopCenterBottomComponent.ctorParameters = () => []; FlexTopCenterBottomComponent.propDecorators = { topHeight: [{ type: Input }], bottomHeight: [{ type: Input }], topBg: [{ type: Input }], bottomBg: [{ type: Input }], bodyBg: [{ type: Input }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexBottomComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } FlexBottomComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-flex-bottom', template: ` <ng-content></ng-content> ` }] } ]; /** @nocollapse */ FlexBottomComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexTopComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } FlexTopComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-flex-top', template: ` <ng-content></ng-content> ` }] } ]; /** @nocollapse */ FlexTopComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexBodyComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } FlexBodyComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-flex-body', template: ` <ng-content></ng-content> ` }] } ]; /** @nocollapse */ FlexBodyComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexLeftComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } FlexLeftComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-flex-left', template: ` <ng-content></ng-content> ` }] } ]; /** @nocollapse */ FlexLeftComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexRightComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } FlexRightComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-flex-right', template: ` <ng-content></ng-content> ` }] } ]; /** @nocollapse */ FlexRightComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class ModuleTitleComponent { constructor() { this.isShowHelpInfo = false; this.showList = null; } /** * @return {?} */ mouseOut() { /** @type {?} */ let seft = this; seft.showList = setTimeout(function () { seft.isShowHelpInfo = false; }, 200); } /** * @return {?} */ cleanTime() { /** @type {?} */ let seft = this; clearTimeout(seft.showList); } /** * @return {?} */ ngOnInit() { } } ModuleTitleComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-module-title', template: "<div class=\"module-title\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".module-title{position:relative;height:60px;line-height:60px;font-size:18px;font-weight:700;color:rgba(25,25,25,1);border-bottom:1px solid #dadada;padding-left:20px}:host>>>.module-title .close{position:absolute;right:20px}:host>>>.module-title .close i{font-size:14px;color:#6e6e6e}:host>>>.module-title .help-info{cursor:pointer;position:relative;display:inline-block;height:14px;width:14px;margin-left:5px;background:url(../../../../../src/assets/base/help-info.png) center center no-repeat}:host>>>.module-title .help-info .help-info-txt{position:absolute;z-index:1000;right:0;top:25px;background:rgba(0,0,0,1);opacity:.8;width:300px;font-size:14px;line-height:26px;font-weight:400;padding:10px;color:#fff}"] }] } ]; /** @nocollapse */ ModuleTitleComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class ModuleBottomComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } ModuleBottomComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-module-bottom', template: "<div class=\"module-footer\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n", styles: [":host>>>.module-footer{background:#fff;width:100%;line-height:60px;border-top:1px solid #dadada;text-align:right}:host>>>.module-footer>button{margin-right:10px}"] }] } ]; /** @nocollapse */ ModuleBottomComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class LayoutVerticalCenterComponent { constructor() { this.customStyle = {}; } /** * @return {?} */ ngOnInit() { } } LayoutVerticalCenterComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-layout-vertical-center', template: "<div id=\"container\" [ngStyle]=\"customStyle\">\r\n <div id =\"center\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: ["#container{position:relative;display:block}#center{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}"] }] } ]; /** @nocollapse */ LayoutVerticalCenterComponent.ctorParameters = () => []; LayoutVerticalCenterComponent.propDecorators = { customStyle: [{ type: Input }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class CopyrightComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } CopyrightComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-copyright', template: "<div class=\"copyright\"><ng-content></ng-content></div>\r\n", styles: [".copyright{text-align:center;height:28px;line-height:28px;margin-bottom:20px}"] }] } ]; /** @nocollapse */ CopyrightComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class CardInfoComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } CardInfoComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-card-info', template: "<div class=\"card\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".card{border:1px solid #dadada;border-radius:4px;height:auto;padding:20px}:host>>>.module-item-title{clear:both;position:relative;height:20px;line-height:20px;font-size:14px;font-weight:700;padding-left:14px;width:100%;margin-bottom:10px}:host>>>.module-item-title i.left-pic{position:absolute;top:2px;left:0;width:6px;height:16px;background:rgba(30,91,214,1)}:host>>>.module-item-content{margin-bottom:20px}:host>>>.module-item-content div{line-height:32px}"] }] } ]; /** @nocollapse */ CardInfoComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class DocsComponentRecommendComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } DocsComponentRecommendComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-component-recommend', template: "<div\r\n style=\"position: absolute; right: -1px; top: -1px; bottom: -1px; width: 30%; padding:10px;background: #f2f4f5;border-left: rgba(34, 36, 38, 0.15) 1px solid;overflow-y: scroll; overflow-x:hidden;text-align: left; \">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [":host>>>h3{margin-top:30px}:host>>>h3:first-child{margin-top:0}:host>>>div{line-height:1.4em;color:#666}"] }] } ]; /** @nocollapse */ DocsComponentRecommendComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class NavBarComponent { // 历史选中菜单,收缩时记录,展开时使用 /* menus: Array<any> = [ { 'name': '基本组件', 'uri': '', 'iconuri': 'pipe_area', 'child': [ { 'name': '左边导航', 'uri': 'navBarPage', 'iconuri': '', 'child': null }, { 'name': '顶部导航', 'uri': 'topNavPage', 'iconuri': '', 'child': null }, { 'name': '页面左边导航', 'uri': 'pageLeftNavPage', 'iconuri': '', 'child': null }, { 'name': '开关切换', 'uri': 'switchPage', 'iconuri': '', 'child': null }, { 'name': '面包屑', 'uri': 'breadCrumbPage', 'iconuri': '', 'child': null }, { 'name': '步骤条', 'uri': 'stepsInfo', 'iconuri': '', 'child': null }, { 'name': '工具条', 'uri': 'toolBarPage', 'iconuri': '', 'child': null } , { 'name': '搜索模块', 'uri': 'seachModulePage', 'iconuri': '', 'child': null } , { 'name': '弹出详情', 'uri': 'openDetailsInfo', 'iconuri': '', 'child': null } , { 'name': '弹出详情2', 'uri': 'openDetailsInfo2', 'iconuri': '', 'child': null }, { 'name': '地图用组件', 'uri': 'dotRipplePage', 'iconuri': '', 'child': null }, { 'name': '侧边栏弹出', 'uri': 'popupSidebarPage', 'iconuri': '', 'child': null }, { 'name': '标签页', 'uri': 'tabsPage', 'iconuri': '', 'child': null }, { 'name': '状态条', 'uri': 'statusBarPage', 'iconuri': '', 'child': null } ] }, { 'name': '布局组件', 'uri': '', 'iconuri': 'pipe_area', 'child': [ { 'name': '布局演示', 'uri': 'layoutDemoPage', 'iconuri': '', 'child': null }, { 'name': '上中下', 'uri': 'flexTopCenterBottom', 'iconuri': '', 'child': null }, { 'name': '左中右', 'uri': 'flexleftCenterRight', 'iconuri': '', 'child': null } ] }, { 'name': '数据展示', 'uri': '', 'iconuri': 'pipe_area', 'child': [ { 'name': '登录界面', 'uri': 'loginPage', 'iconuri': '', 'child': null }, { 'name': '系统切换', 'uri': 'homePage', 'iconuri': '', 'child': null }, { 'name': '页面演示1', 'uri': 'pageDemo', 'iconuri': '', 'child': null }, { 'name': '页面演示3', 'uri': 'pageDemo3', 'iconuri': '', 'child': null }, { 'name': '页面演示2', 'uri': 'detailsStyle1', 'iconuri': '', 'child': null }, { 'name': '表格展示1', 'uri': 'dataDemoPage', 'iconuri': '', 'child': null }, { 'name': '表格展示', 'uri': 'tablePage', 'iconuri': '', 'child': null } , { 'name': '图标演示', 'uri': 'iconPage', 'iconuri': '', 'child': null }, { 'name': '标签页(传递模板)', 'uri': 'ecpTabset', 'iconuri': '', 'child': null }, { 'name': '404/500页面', 'uri': 'httpPage', 'iconuri': '', 'child': null } , { 'name': '生成帐单', 'uri': 'generateBillPage', 'iconuri': '', 'child': null }, { 'name': '弹窗演示', 'uri': 'waterConsumptionAnalysisPopup', 'iconuri': '', 'child': null } , { 'name': '组件联动', 'uri': 'pageDemo2', 'iconuri': '', 'child': null }, { 'name': '调度中心', 'uri': 'dispatchPage', 'iconuri': '', 'child': null } , { 'name': '控制台主页', 'uri': 'consolePage', 'iconuri': '', 'child': null } ] }, { 'name': '关于', 'uri': 'about', 'iconuri': 'pipe_report', 'child': [] } ]; */ /** * @param {?} router */ constructor(router) { this.router = router; // 自定义伸缩,true 可以缩放,false 禁止缩放 this.customStyle = {}; this.navJson = []; this.goTo = new EventEmitter(); this.menuStatus = 'off'; this.hoverId = 0; // 当前已选中 // 当前已选中 this.selectId = 0; // 当前鼠标选中 // 当前鼠标选中 this.thisMenuId = 0; // 当前选中子菜单 // 当前选中子菜单 this.hisHover = 0; // 历史选中菜单,收缩时记录,展开时使用 } /** * @return {?} */ ngOnInit() { if (this.customScaling == null) { this.customScaling = true; } } // 菜单选中 /** * @param {?} id * @return {?} */ hoverMenu(id) { if (this.hoverId === id) { this.hoverId = null; } else { this.hoverId = id; } } // 移上去的 /** * @param {?} id * @return {?} */ selectMenu(id) { this.selectId = id; } // 清除选中 /** * @return {?} */ cleanSel() { this.selectId = null; } // 展开 /** * @return {?} */ on() { /** @type {?} */ const self = this; if (self.menuStatus === 'off') { self.hoverId = self.hisHover; self.menuStatus = 'on'; } } // 收缩 /** * @return {?} */ off() { /** @type {?} */ const self = this; self.hisHover = self.hoverId; if (self.customScaling == true) { this.menuStatus = 'off'; } } /** * @param {?} i * @return {?} */ showChildMenu(i) { if (i === this.hoverId && this.menuStatus === 'on') { return 'block'; } else { return 'none'; } } /** * @param {?} uri * @param {?} hoverId * @return {?} */ selectedApp(uri, hoverId) { /** @type {?} */ const self = this; this.goTo.emit(uri); if (hoverId == null || hoverId == '') { self.thisMenuId = 0; } self.thisMenuId = hoverId; // console.log('click'); // self.router.navigate([uri]); return false; } } NavBarComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-nav-bar', template: "<nav class=\"main-menu\" [ngClass]=\"{'on':!customScaling}\" [ngStyle]=\"customStyle\" (mouseleave)=\"off()\" (mouseover)=\"on()\">\r\n <!--\u5DE6\u8FB9\u56FE\u6807-->\r\n\r\n <ul class=\"menu-body\">\r\n <ng-container *ngFor=\"let menu of navJson;let i=index;\">\r\n <li [ngClass]=\"{'select':i==selectId,'hover':i==hoverId}\">\r\n <div class=\"menu-title\" [ngClass]=\"{'select':i==selectId,'hover':i==hoverId}\"\r\n (click)=\"hoverMenu(i);selectedApp(menu.uri,i)\" (mouseover)=\"selectMenu(i)\"\r\n (mouseout)=\"cleanSel()\">\r\n <i class=\"icon dongxiniotwater {{menu.iconuri}}\"></i>{{menu.name}}\r\n <i class=\"right\" [ngClass]=\"{'icon-fold':hoverId==i,'icon-unfold':hoverId!=i||hoverId==null}\"\r\n *ngIf=\"menu.child!=''\"></i>\r\n </div>\r\n <ul *ngIf=\"menu.child!=''\" class=\"menu-sub\" [@displayState]=\"showChildMenu(i)\">\r\n <ng-container *ngFor=\"let childmenu of menu.child; let childId = index;\">\r\n <li class=\"hover\" (click)=\"selectedApp(childmenu.uri,childId)\"\r\n [ngClass]=\"{'hover':childId==thisMenuId}\" (mouseover)=\"selectMenu(i)\" (mouseout)=\"cleanSel()\">\r\n {{childmenu.name}}\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</nav>\r\n\r\n\r\n\r\n\r\n\r\n", animations: [ trigger('displayState', [ state('none', style({ height: 0, display: 'none', opacity: '0', })), state('block', style({ height: '*', display: 'block', opacity: '1', })), transition('none => block', animate('100ms linear')), transition('block => none', animate('100ms linear')) ]) ], styles: [".main-menu.hover,.main-menu.on,.main-menu:hover{width:220px;overflow:hidden;opacity:1}.main-menu.off{width:60px;overflow:hidden;opacity:1}.main-menu{background:#22272e;color:#fff;position:absolute;top:0;bottom:0;left:0;width:60px;overflow:hidden;transition:width .2s linear;-webkit-transform:translateZ(0) scale(1,1);opacity:1;z-index:1000}.main-menu>ul{margin:0}.main-menu li{position:relative;display:block;width:220px;font-size:14px;cursor:pointer}nav{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}nav li,nav ul{outline:0;margin:0;padding:0}.main-menu .menu-body{height:100%}.main-menu .menu-body li{width:220px;min-height:42px;line-height:42px;clear:both}.main-menu .menu-body li .menu-title{height:42px;line-height:42px;text-align:left;cursor:pointer;color:#999;font-weight:700}.main-menu .menu-body li .menu-title i{width:60px;float:left;text-align:center;margin-right:0;font-size:18px;font-weight:400}.main-menu .menu-body li .menu-title i.on,.main-menu .menu-body li .menu-title i.right{margin-top:16px;width:13px;height:13px;float:right;margin-right:15px;font-size:12px;font-weight:400}.main-menu .menu-body li .menu-title.select{background:#1979ff;color:#fff}.main-menu .menu-body li .menu-title.hover{background:#1e5bd6;color:#fff}.main-menu .menu-body .menu-sub{overflow-x:hidden;background:#181b1f}.main-menu .menu-body .menu-sub li{height:42px;line-height:42px;color:#999;cursor:pointer;text-align:left!important;padding-left:60px!important}.main-menu .menu-body .menu-sub li:hover{background:#111214;color:#fff}.main-menu .menu-body .menu-sub li.hover{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAdElEQVQY04XOwQnCQBQE0JetwApyE2Er2ALEJtKIkHtII3tNAWIBVhAC3raCgA14cA8qER/MZT58poG2m/cYcfRyxbnkeG/abj7ghp1PK1LAsHFUuyG8vd1yCv4IddAvl4C+Dvq2og8lxwUJEx41E1LJcXkCWCIYS4tT67sAAAAASUVORK5CYII=) 25px center no-repeat #111214;color:#fff}"] }] } ]; /** @nocollapse */ NavBarComponent.ctorParameters = () => [ { type: Router } ]; NavBarComponent.propDecorators = { customScaling: [{ type: Input }], customStyle: [{ type: Input }], navJson: [{ type: Input }], goTo: [{ type: Output }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class MapSwitchComponent { constructor() { this.selectId = 0; //当前选中的选项. } //当前选中的选项. /* switchArray = [{ "name": "操作", "icon": "icon-operation" }, { "name": "展示", "icon": "icon-demonstration" }, { "name": "展示二", "icon": "icon-demonstration" }, { "name": "展示三", "icon": "icon-demonstration" }]; */ /** * @param {?} i * @return {?} */ select(i) { this.selectId = i; //console.log("当前选中" + i + "#######" + this.switchArray[i].name); } /** * @return {?} */ ngOnInit() { } } MapSwitchComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-switch', template: "<div class=\"map-switch\" [ngStyle]=\"customPosition\">\r\n <a [ngClass]=\"{'hover':selectId==i}\" *ngFor=\"let item of switchArray; let i = index;\" (click)=\"select(i)\"><i class=\"icon dongxiniotwater {{item.icon}}\"></i>{{item.name}}</a>\r\n</div>\r\n", styles: [".map-switch{position:absolute;width:auto;height:36px;line-height:36px;background:#fff;border-radius:4px;box-shadow:0 3px 8px 0 rgba(0,0,0,.3);overflow:hidden;font-size:14px}.map-switch a{width:80px;float:left;text-align:center;color:rgba(25,25,25,1)}.map-switch a i{margin-right:6px}.map-switch a.hover,.map-switch a:hover{background:#1e5bd6;color:#fff}"] }] } ]; /** @nocollapse */ MapSwitchComponent.ctorParameters = () => []; MapSwitchComponent.propDecorators = { customPosition: [{ type: Input }], switchArray: [{ type: Input }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class MapDotPopupComponent { constructor() { this.isCloseBtn = true; } /** * @return {?} */ ngOnInit() { } } MapDotPopupComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-map-dot-popup', template: "<div class=\"ol-popup\" [ngStyle]=\"customPosition\">\r\n <a class=\"ol-popup-closer\" *ngIf=\"isCloseBtn\"></a>\r\n <div class=\"overlay-content\">\r\n <!--\u7528\u6237\u5185\u5BB9-->\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".ol-popup{position:absolute;top:10px;left:10px;background:#000c17;color:#fff;min-width:100px;opacity:.6;-webkit-filter:drop-shadow(0 1px 4px rgba(0, 0, 0, .2));filter:drop-shadow(0 1px 4px rgba(0, 0, 0, .2));padding:15px 20px;font-size:14px}.ol-popup:after,.ol-popup:before{top:100%;border:solid transparent;content:\" \";height:0;width:0;position:absolute;pointer-events:none}.ol-popup:after{border-top-color:#000c17;border-width:10px;left:50%;margin-left:-10px}.ol-popup:before{border-top-color:#000c17;border-width:11px;left:50%;margin-left:-11px}.ol-popup-closer{text-decoration:none;position:absolute;top:2px;right:8px;color:#fff}.ol-popup-closer:after{content:\"\u2716\"}"] }] } ]; /** @nocollapse */ MapDotPopupComponent.ctorParameters = () => []; MapDotPopupComponent.propDecorators = { isCloseBtn: [{ type: Input }], customPosition: [{ type: Input }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class LegendComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } LegendComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-map-legend', template: "<!--\u53F3\u4E0B\u89D2\u56FE\u4F8B-->\r\n<div class=\"map-bottom-legend\">\r\n <span class=\"point\"><i></i>\u5750\u6807</span>\r\n <span class=\"sensors\"><i></i>\u4F20\u611F\u5668</span>\r\n <span class=\"pipe\"><i></i>\u7BA1\u9053</span>\r\n <!---->\r\n <span class=\"node\"><i></i>\u8282\u70B9</span>\r\n <span class=\"endcap\"><i></i>\u5835\u5934\u5C01\u677F</span>\r\n <span class=\"valve\"><i></i>\u95F8\u9600</span>\r\n <span class=\"firehydrant\"><i></i>\u6D88\u9632\u6813</span>\r\n <!---->\r\n <span class=\"magnification\">\u7F29\u653E\u6BD4\u4F8B:\r\n <span id=\"scale-line\" style=\"padding:0;position: absolute; bottom: 0px; left: 63px;\">200m</span>\r\n <i></i>\r\n </span>\r\n</div>\r\n", styles: [".map-bottom-legend{width:auto;height:24px;background:rgba(255,255,255,1);position:absolute;bottom:0;right:0}.map-bottom-legend span{font-size:12px;display:inline-block;font-weight:400;color:rgba(25,25,25,1);padding:1px 1px 1px 18px;position:relative;margin:0 9px}.map-bottom-legend span.sensors i{position:absolute;top:0;left:2px;width:12px;height:12px;background:rgba(255,32,79,1);border-radius:50%;display:inline-block;border:2px solid #fff}.map-bottom-legend span.point i{width:12px;position:absolute;top:0;left:2px;height:12px;background:rgba(30,91,214,1);border-radius:50%;display:inline-block;border:2px solid #fff}.map-bottom-legend span.pipe{padding-left:30px}.map-bottom-legend span.pipe i{width:25px;position:absolute;top:5px;left:2px;height:3px;background:rgba(0,0,255,1);display:inline-block;border-radius:6px}.map-bottom-legend span.node{padding-left:22px}.map-bottom-legend span.node i{position:absolute;top:1px;left:1px;width:19px;height:18px;background:url(../../../src/assets/map/legend/node.png) no-repeat;display:inline-block}.map-bottom-legend span.endcap{padding-left:24px}.map-bottom-legend span.endcap i{position:absolute;top:0;left:1px;width:21px;height:14px;background:url(../../../src/assets/map/legend/endcap.png) no-repeat;display:inline-block}.map-bottom-legend span.firehydrant{padding-left:22px}.map-bottom-legend span.firehydrant i{position:absolute;top:1px;left:1px;width:17px;height:21px;background:url(../../../src/assets/map/legend/firehydrant.png) no-repeat;display:inline-block}.map-bottom-legend span.valve{padding-left:22px}.map-bottom-legend span.valve i{position:absolute;top:1px;left:1px;width:17px;height:21px;background:url(../../../src/assets/map/legend/valve.png) no-repeat;display:inline-block}.map-bottom-legend span.magnification{position:relative;width:130px}.map-bottom-legend span.magnification i{position:absolute;left:120px;bottom:5px;width:31px;height:3px}"] }] } ]; /** @nocollapse */ LegendComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class UploadFileComponent { constructor() { } /** * @return {?} */ ngOnInit() { } } UploadFileComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-upload-file', template: "<div class=\"upload-form\">\r\n <div class=\"form-content\"\r\n style=\" clear:both;text-align: center; display:block; width: 480px; height: 36px; margin: 60px auto; \">\r\n <div><span style=\"background: #DADADA; border:#DADADA 1px solid; display: inline-block; width: 380px; height: 36px; line-height: 36px;border-radius:4px; color: #FFFFFF; float: left; overflow: hidden; \"><span\r\n style=\" color: #191919; text-align: center;width:90px; float: right; height: 34px; line-height:34px; background: #FFFFFF;\">\u9009\u62E9\u6587\u4EF6</span></span>\r\n <span style=\"background: #1E5BD6; display: inline-block; width: 90px; height: 36px; line-height: 36px;border-radius:4px; color: #FFFFFF; float: right; \">\u4E0A\u4F20\u6587\u4EF6</span>\r\n </div>\r\n <div class=\"error-info\">*\u6587\u4EF6\u683C\u5F0F\u4EC5\u9650\u4E8E.xlsx</div>\r\n </div>\r\n <div class=\"tips-info\">\r\n 1 \u70B9\u51FB\u94FE\u63A5\u4E0B\u8F7D\u6A21\u677F<a href=\"assets/\u5BFC\u5165\u6A21\u7248.xlsx\">\u4E0B\u8F7D\u6A21\u677F</a><br>\r\n 2 \u5BFC\u5165\u5C5E\u4E8E\u8FFD\u52A0\u5BFC\u5165\uFF0C\u5DF2\u7ECF\u5B58\u5728\u7684\u6570\u636E\u4E0D\u4FEE\u6539\u3002<br>\r\n 3 \u5BFC\u5165\u6587\u4EF6\u53EA\u5141\u8BB8\u6709\u4E00\u4E2Asheet\u9875<br>\r\n 4 \u8BBE\u5907\u7C7B\u578B: \u7BA1\u9053->pipe,\u4F20\u611F\u5668->sensor,\u9600\u95E8->valve,\u5835\u5934\u5C01\u677F->plug,\u8282\u70B9->node,\u6D88\u9632\u6813->hydrant<br>\r\n 5 \u533A\u57DF\u548C\u4EA7\u54C1\u5982\u679C\u4E0D\u5B58\u5728\uFF0C\u4E0D\u80FD\u6210\u529F\u5BFC\u5165\u3002<br>\r\n </div>\r\n</div>\r\n", styles: [".upload-form{width:700px;margin:10px auto}.upload-form .error-info{clear:both;display:block;color:#999;text-align:left;line-height:24px}.upload-form .tips-info{clear:both;border-top:1px solid #dadada;padding-top:10px;text-align:left;color:#6e6e6e;line-height:30px}"] }] } ]; /** @nocollapse */ UploadFileComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class TopNavComponent { constructor() { } // 处理警告 /** * @param {?} id * @return {?} */ disposedId(id) { alert('alarm组件回传ID------' + id); } /** * @param {?} txt * @return {?} */ test(txt) { console.log(txt); } /** * @return {?} */ ngOnInit() { } } TopNavComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-top-nav', template: "<div class=\"top-header\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".top-header{background:#303844;height:50px;min-width:1000px;z-index:1000}:host>>>.top-header .logo{height:32px;margin-left:23px;margin-top:8px;display:inline-block;float:left;padding-right:20px;margin-right:20px;border-right:3px solid #fff;cursor:pointer}:host>>>.top-header .logo img{vertical-align:top;height:32px}:host>>>.top-header .name{display:inline-block;float:left;color:#fff;font-size:24px;margin-top:10px;cursor:pointer}:host>>>.logout{background:url(../../../../src/assets/nav/logout.png) no-repeat;width:18px;height:20px;text-indent:-999999px;display:inline-block;margin-top:16px;margin-right:30px;float:right!important}"] }] } ]; /** @nocollapse */ TopNavComponent.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class AlarmComponent { /* 测试 alarmList = [ { id: '1', title: '流量计【004557】200流速超过10m³' }, { id: '2', title: '【00DX34557】200流速超过10m³' }, { id: '3', title: '流量计【00DX34557】200流超过10m³' }, { id: '4', title: '流量计【00DX4557】流速超过10m³' }, { id: '5', title: '流量200流速计【20流速】200流速超过10m³' }, { id: '6', title: '200流速流量计【00D557】200流速超过10m³' }, { id: '7', title: '流量计200流速【00D57】200流速超过10m³' }, { id: '8', title: '流量计【00DX34557】200流速超过10m³' }, { id: '9', title: '200流量计【00DX34557】200流过10m³' }, { id: '10', title: '流量计【00DX34557】200流速超过10m³' } ]; */ constructor() { this.isShow = false; // 传入列表 this.alarmList = []; // 回传ID this.disposed = new EventEmitter(); // 点击‘查看全部’回传 this.viewAll = new EventEmitter(); } /** * @param {?} id * @return {?} */ dispose(id) { this.disposed.emit(id); // alert(id); } /** * @return {?} */ viewMore() { this.viewAll.emit(); } /** * @return {?} */ ngOnInit() { console.log('alarmList', this.alarmList); } } AlarmComponent.decorators = [ { type: Component, args: [{ selector: 'ecp-alarm', template: "<span class=\"alarm\" (mouseover)=\"isShow=true\" (mouseleave)=\"isShow=false\"> <span\r\n class=\"alarm-num\"><span>{{alarmList.length}}</span></span> <span class=\"txt\">\u8B66\u62A5</span> <span class=\"icon\"><i\r\n class=\"icon dongxiniotwater general_alarm\"></i></span>\r\n<div class=\"alarm-content\" [@displayState]=\"isShow == true? 'block' : 'none'\">\r\n <div class=\"top-title\">\r\n <div class=\"content\"> <span>{{alarmTitle}}</span>\r\n <nav class=\"right-link\"><a (click)=\"viewMore()\">\u67E5\u770B\u5168\u90E8</a></nav>\r\n </div>\r\n </div>\r\n <div class=\"alarm-list\">\r\n <div class=\"content\">\r\n <div class=\"no-data\" *ngIf=\"alarmList.length==0\">\u6682\u65E0\u8B66\u544A\u4FE1\u606F</div>\r\n <table *ngIf=\"alarmList.length>0\">\r\n <tr *ngFor=\"let item of alarmList\">\r\n <td><span class=\"alarm-icon\"></span></td>\r\n <td style=\"text-align: left;\">{{item.title}}</td>\r\n <td><a (click)=\"dispose(item.id)\">\u5904\u7406</a></td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</div>\r\n</span>\r\n", animations: [ trigger('displayState', [ state('none', style({ display: 'none', opacity: '0', })), state('block', style({ display: 'block', opacity: '1', })), transition('none => block', animate('100ms linear')), transition('block => none', animate('80ms linear')) ]) ], styles: [".alarm{position:relative;display:inline-block;float:right;height:50px;width:90px;line-height:50px;text-align:right;padding-left:15px;padding-right:32px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAeCAYAAADOziUSAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4JGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMwNjcgNzkuMTU3NzQ3LCAyMDE1LzAzLzMwLTIzOjQwOjQyICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTgtMTEtMDFUMTk6MjY6MjMrMDg6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0xMS0wMVQxOToyODo0NCswODowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTgtMTEtMDFUMTk6Mjg6NDQrMDg6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6NzkwMDk2MTctZjdjNy0zYjRkLWJmYjctY2NlOTRiYTkwZGRlPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjc5MDA5NjE3LWY3YzctM2I0ZC1iZmI3LWNjZTk0YmE5MGRkZTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjc5MDA5NjE3LWY3YzctM2I0ZC1iZmI3LWNjZTk0YmE5MGRkZTwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo3OTAwOTYxNy1mN2M3LTNiNGQtYmZiNy1jY2U5NGJhOTBkZGU8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTgtMTEtMDFUMTk6MjY6MjMrMDg6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MTk8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg