From 058a702cf3c5a7737faf92f653b29a195c4a01f8 Mon Sep 17 00:00:00 2001 From: SHAOJIAHAO <55341701@qq.com> Date: Fri, 16 Jun 2023 08:03:03 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]=E5=A2=9E=E5=8A=A0=E4=B8=A4?= =?UTF-8?q?=E4=B8=AA=E5=81=87=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- reset.css | 77 ++++++-- .../drill-record/drill-record.component.html | 63 +++++++ .../drill-record/drill-record.component.scss | 171 ++++++++++++++++++ .../drill-record.component.spec.ts | 25 +++ .../drill-record/drill-record.component.ts | 114 ++++++++++++ .../plan-management-routing.module.ts | 4 + .../plan-management/plan-management.module.ts | 6 +- .../six-familiarity.component.html | 63 +++++++ .../six-familiarity.component.scss | 171 ++++++++++++++++++ .../six-familiarity.component.spec.ts | 25 +++ .../six-familiarity.component.ts | 166 +++++++++++++++++ src/index.html | 4 +- 13 files changed, 867 insertions(+), 24 deletions(-) create mode 100644 src/app/plan-management/drill-record/drill-record.component.html create mode 100644 src/app/plan-management/drill-record/drill-record.component.scss create mode 100644 src/app/plan-management/drill-record/drill-record.component.spec.ts create mode 100644 src/app/plan-management/drill-record/drill-record.component.ts create mode 100644 src/app/plan-management/six-familiarity/six-familiarity.component.html create mode 100644 src/app/plan-management/six-familiarity/six-familiarity.component.scss create mode 100644 src/app/plan-management/six-familiarity/six-familiarity.component.spec.ts create mode 100644 src/app/plan-management/six-familiarity/six-familiarity.component.ts diff --git a/package.json b/package.json index 4b4ab52..b4cb532 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "scripts": { "ng": "ng", - "start": "ng serve --proxy-config proxy.config.json --open --port 51423", + "start": "ng serve --proxy-config proxy.config.json --open --port 51423 --host 192.168.1.57", "build": "ng build", "build-prod": "node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --prod", "publish": "ng build --prod --verbose", diff --git a/reset.css b/reset.css index c67618d..5e558db 100644 --- a/reset.css +++ b/reset.css @@ -1,27 +1,66 @@ @charset "utf-8"; -html,body,ul,ol,dl,li,dt,dd,p,form,input,h1,h2,h3,h4,h5,h6,section,article,aside,header,footer,nav,figure,time,mark,main,canvas{ - margin:0; - padding:0; - font-size:16px; +html, +body, +ul, +ol, +dl, +li, +dt, +dd, +p, +form, +input, +h1, +h2, +h3, +h4, +h5, +h6, +section, +article, +aside, +header, +footer, +nav, +figure, +time, +mark, +main, +canvas { + margin: 0; + padding: 0; + font-size: 16px; } -b,strong,i,em,h1,h2,h3,h4,h5,h6{ - font-weight:500; - font-style:normal; +b, +strong, +i, +em, +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: 500; + font-style: normal; } -img{ - border:none; +img { + border: none; } -a{ +a { text-decoration: none; - color:#000; -ul,ol,li{ - list-style:none; + color: #000; + ul, + ol, + li { + list-style: none; + } } -.clearfn:after{ - content:""; - clear:both; +.clearfn:after { + content: ""; + clear: both; display: block; - overflow:hidden; - height:0; + overflow: hidden; + height: 0; visibility: hidden; -} \ No newline at end of file +} diff --git a/src/app/plan-management/drill-record/drill-record.component.html b/src/app/plan-management/drill-record/drill-record.component.html new file mode 100644 index 0000000..1602a4a --- /dev/null +++ b/src/app/plan-management/drill-record/drill-record.component.html @@ -0,0 +1,63 @@ + +
+
+
+
+ +
+ + + + +
+
+ + + + +
+
+ + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
演练对象{{element.name}}演练时间{{element.time1}}演练时段{{element.time2}}演练形式{{element.type}}操作 + 查看 + 详情 +
+ + + +
+
+
\ No newline at end of file diff --git a/src/app/plan-management/drill-record/drill-record.component.scss b/src/app/plan-management/drill-record/drill-record.component.scss new file mode 100644 index 0000000..06606f0 --- /dev/null +++ b/src/app/plan-management/drill-record/drill-record.component.scss @@ -0,0 +1,171 @@ +.box { + height: 100%; + overflow: auto; +} + + +.header { + width: 100%; + padding: 12px 10px; + box-sizing: border-box; + + .queryBox { + box-sizing: border-box; + padding: 5px 0 0 5px; + // margin-left: 50px; + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + + // justify-content:center; + .queryField { + margin: 0 10px; + + input { + width: 180px; + height: 22px; + line-height: 22px; + border-radius: 3px; + } + + @media screen and (max-device-width:1400px)and (min-device-width:1200px) { + + //margin: 3px 10px; + mat-form-field { + width: 180px; + } + } + + @media screen and (max-device-width:1200px) { + + //margin: 3px 0 3px 10px; + mat-form-field { + width: 110px; + } + } + } + + } + + //queryBox + .butclass { + button { + width: 80px; + height: 36px; + font-size: 16px; + } + } + + .ordiv { + position: relative; + + .organizationbox { + width: 450px; + height: 200px; + background: white; + position: absolute; + top: 48px; + left: 77px; + z-index: 999; + border: 1px solid grey; + overflow-y: auto; + + li { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + mat-tree-node { + cursor: pointer; + white-space: pre; + } + + mat-tree-node:hover { + background: rgba(225, 225, 225, 0.8); + } + + .closediv { + z-index: 100; + position: absolute; + right: 0; + top: 0; + width: 30px; + height: 30px; + cursor: pointer; + line-height: 30px; + text-align: center; + } + + .closediv:hover { + background: rgba(225, 225, 225, 0.8); + } + } + + } +} + +.body { + .buttonbox { + padding-left: 50px; + + button { + margin: 0 10px + } + } + + .tablebox { + .add { + cursor: auto; + text-decoration: none; + display: block; + width: 40px; + height: 20px; + background: #1AE2AC; + font-size: 12px; + line-height: 20px; + color: #FFFFFF; + margin-left: 50px; + } + + .weihu { + cursor: auto; + text-decoration: none; + display: block; + width: 64px; + height: 20px; + background: #FFC94B; + font-size: 12px; + color: #FFFFFF; + line-height: 20px; + margin-left: 40px; + } + + table { + width: 100%; + // margin-left: 2%; + margin-top: 15px; + } + + mat-paginator { + width: 100%; + // margin-left: 2%; + // margin-top: 30px; + } + } +} + +.mat-header-cell, +.mat-cell { + text-align: center; +} + + +.operate { + span { + color: blue; + margin: 0 3px; + cursor: pointer; + } +} diff --git a/src/app/plan-management/drill-record/drill-record.component.spec.ts b/src/app/plan-management/drill-record/drill-record.component.spec.ts new file mode 100644 index 0000000..105276b --- /dev/null +++ b/src/app/plan-management/drill-record/drill-record.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DrillRecordComponent } from './drill-record.component'; + +describe('DrillRecordComponent', () => { + let component: DrillRecordComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DrillRecordComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DrillRecordComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/plan-management/drill-record/drill-record.component.ts b/src/app/plan-management/drill-record/drill-record.component.ts new file mode 100644 index 0000000..4c7cde0 --- /dev/null +++ b/src/app/plan-management/drill-record/drill-record.component.ts @@ -0,0 +1,114 @@ +import { Component, OnInit, ViewChild, Inject } from "@angular/core"; +import { HttpClient } from "@angular/common/http"; +import { + MatTreeFlatDataSource, + MatTreeFlattener, +} from "@angular/material/tree"; +import { MatPaginator } from "@angular/material/paginator"; +import { FlatTreeControl } from "@angular/cdk/tree"; +import { FormControl } from "@angular/forms"; +import { Router, ActivatedRoute } from "@angular/router"; +import { PageEvent } from "@angular/material/paginator"; +import { MatDialog } from "@angular/material/dialog"; +import { MatSnackBar } from "@angular/material/snack-bar"; +import { TreeService } from "../../http-interceptors/tree.service"; +@Component({ + selector: "app-drill-record", + templateUrl: "./drill-record.component.html", + styleUrls: ["./drill-record.component.scss"], +}) +export class DrillRecordComponent implements OnInit { + constructor( + private http: HttpClient, + private router: Router, + private route: ActivatedRoute, + private tree: TreeService, + public dialog: MatDialog, + public snackBar: MatSnackBar + ) {} + + private _transformer = (node, level: number) => { + //初始化tree + return { + expandable: !!node.children && node.children.length > 0, + name: node.name, + level: level, + id: node.id, + parentId: node.parentId, + children: node.children, + }; + }; + treeControl = new FlatTreeControl( + (node) => node.level, + (node) => node.expandable + ); + treeFlattener = new MatTreeFlattener( + this._transformer, + (node) => node.level, + (node) => node.expandable, + (node) => node.children + ); + dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener); + myControl = new FormControl(); + hasChild = (_: number, node: any) => node.expandable; + //分页 + @ViewChild(MatPaginator, { static: true }) + pageEvent: PageEvent; + paginator: MatPaginator; + length: any = 4; //共多少条数据 + pageSize: any = 10; //每页条数 + pageSizeOptions: number[] = [10]; //设置每页条数 + PageNumber: any = 1; //第几页 + + displayedColumns: string[] = ["name", "time1", "time2", "type", "operate"]; + allorganizations: any; //所有组织机构 + allunittype: any; //所有单位类型 + tabledataSource: any; //表格数据 + IsNewData = ""; //维护更新活新增 + + preparelevels: any; + ngOnInit(): void { + this.tabledataSource = [ + { + name: "中保大厦有限公司", + time1: "2023-5-18 07:19", + time2: "2023.5.18-2023.5.19", + type: "二维预案演练", + }, + { + name: "上海通高制造有限公司", + time1: "2023-5-19 09:09", + time2: "2023.5.19-2023.5.19", + type: "二维预案演练", + }, + { + name: "怡莲超市", + time1: "2023-5-20 08:23", + time2: "2023.5.20-2023.5.21", + type: "二维预案演练", + }, + { + name: "永兴商务广场", + time1: "2023-5-25 12:50", + time2: "2023.5.25-2023.5.26", + type: "二维预案演练", + }, + ]; + } + + //分页事件 + chagePage(e) { + this.PageNumber = e.pageIndex + 1; + } + + name; + time; + //查询 + onSubmit(e) { + this.PageNumber = 1; + this.pageEvent.pageIndex = 0; + } + + //重置 + reset() {} +} diff --git a/src/app/plan-management/plan-management-routing.module.ts b/src/app/plan-management/plan-management-routing.module.ts index 46fda67..cd51f14 100644 --- a/src/app/plan-management/plan-management-routing.module.ts +++ b/src/app/plan-management/plan-management-routing.module.ts @@ -20,6 +20,8 @@ import { MaintainUpComponent } from './maintain-up/maintain-up.component' import { from } from 'rxjs'; import { ReinforcePlanComponent } from './reinforce-plan/reinforce-plan.component'; import { CreatePlanOnlineFiveComponent } from './create-plan-online-five/create-plan-online-five.component'; +import { SixFamiliarityComponent } from './six-familiarity/six-familiarity.component'; +import { DrillRecordComponent } from './drill-record/drill-record.component'; const routes: Routes = [ { path: 'entryPlan', component: EntryPlanComponent}, @@ -35,6 +37,8 @@ const routes: Routes = [ { path: 'maintainup',component:MaintainUpComponent},//维护更新 { path: 'reinforceplan',component:ReinforcePlanComponent},//增援预案 { path: 'createplanonlinefive',component:CreatePlanOnlineFiveComponent},//在线编制五级预案 + { path: 'sixFamiliarity',component:SixFamiliarityComponent},//六熟悉 + { path: 'drillRecord',component:DrillRecordComponent},//演练记录 ]; @NgModule({ diff --git a/src/app/plan-management/plan-management.module.ts b/src/app/plan-management/plan-management.module.ts index d9695c1..28c6fea 100644 --- a/src/app/plan-management/plan-management.module.ts +++ b/src/app/plan-management/plan-management.module.ts @@ -77,13 +77,15 @@ import {ChangeUrl} from './entry-plan-look/entry-plan-look.component' import {adddwsurveys} from './create-plan-online-five/create-plan-online-five.component' import { editUpload } from './entry-plan-look/entry-plan-look.component' import { wenbenUpload } from './entry-plan-look/entry-plan-look.component'; -import { EditPlanCategoryComponent } from './entry-plan-look/edit-plan-category/edit-plan-category.component' +import { EditPlanCategoryComponent } from './entry-plan-look/edit-plan-category/edit-plan-category.component'; +import { SixFamiliarityComponent } from './six-familiarity/six-familiarity.component'; +import { DrillRecordComponent } from './drill-record/drill-record.component' @NgModule({ declarations: [EntryPlanComponent, PassPlanComponent, OpenPlanComponent, EntryPlanLookComponent, AddPlanone, PlanType, AuditSatus, PlanLevel, DownloadFile, AuditResult, ChangeName, WebLookComponent, OnetwoEntryPlanComponent, newunitComponent, MeetPlanComponent, newunitMeet, TypePlanComponent, newunitType, PsViewer, onetwoAuditResult, meetAuditResult, typeAuditResult, MaintainUpComponent, GkPsViewer, GkhtmlPsViewer, UnitInfo, ReinforcePlanComponent, state, ImgDetails, CreatePlanOnlineFiveComponent, CreatePlanOnlineThreeComponent, - OpenPlanToolDialog,yinYong,newTitle,disaster,updataHl,ChangeUrl,adddwsurveys,editUpload,wenbenUpload, EditPlanCategoryComponent], + OpenPlanToolDialog,yinYong,newTitle,disaster,updataHl,ChangeUrl,adddwsurveys,editUpload,wenbenUpload, EditPlanCategoryComponent, SixFamiliarityComponent, DrillRecordComponent], imports: [ CommonModule, PlanManagementRoutingModule, diff --git a/src/app/plan-management/six-familiarity/six-familiarity.component.html b/src/app/plan-management/six-familiarity/six-familiarity.component.html new file mode 100644 index 0000000..9319102 --- /dev/null +++ b/src/app/plan-management/six-familiarity/six-familiarity.component.html @@ -0,0 +1,63 @@ + +
+
+
+
+ +
+ + + + +
+
+ + + + +
+
+ + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
熟悉对象{{element.name}}熟悉时间{{element.time}}带队领导{{element.leader}}上传人员{{element.upload}}操作 + 查看 + 详情 +
+ + + +
+
+
\ No newline at end of file diff --git a/src/app/plan-management/six-familiarity/six-familiarity.component.scss b/src/app/plan-management/six-familiarity/six-familiarity.component.scss new file mode 100644 index 0000000..06606f0 --- /dev/null +++ b/src/app/plan-management/six-familiarity/six-familiarity.component.scss @@ -0,0 +1,171 @@ +.box { + height: 100%; + overflow: auto; +} + + +.header { + width: 100%; + padding: 12px 10px; + box-sizing: border-box; + + .queryBox { + box-sizing: border-box; + padding: 5px 0 0 5px; + // margin-left: 50px; + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + + // justify-content:center; + .queryField { + margin: 0 10px; + + input { + width: 180px; + height: 22px; + line-height: 22px; + border-radius: 3px; + } + + @media screen and (max-device-width:1400px)and (min-device-width:1200px) { + + //margin: 3px 10px; + mat-form-field { + width: 180px; + } + } + + @media screen and (max-device-width:1200px) { + + //margin: 3px 0 3px 10px; + mat-form-field { + width: 110px; + } + } + } + + } + + //queryBox + .butclass { + button { + width: 80px; + height: 36px; + font-size: 16px; + } + } + + .ordiv { + position: relative; + + .organizationbox { + width: 450px; + height: 200px; + background: white; + position: absolute; + top: 48px; + left: 77px; + z-index: 999; + border: 1px solid grey; + overflow-y: auto; + + li { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + mat-tree-node { + cursor: pointer; + white-space: pre; + } + + mat-tree-node:hover { + background: rgba(225, 225, 225, 0.8); + } + + .closediv { + z-index: 100; + position: absolute; + right: 0; + top: 0; + width: 30px; + height: 30px; + cursor: pointer; + line-height: 30px; + text-align: center; + } + + .closediv:hover { + background: rgba(225, 225, 225, 0.8); + } + } + + } +} + +.body { + .buttonbox { + padding-left: 50px; + + button { + margin: 0 10px + } + } + + .tablebox { + .add { + cursor: auto; + text-decoration: none; + display: block; + width: 40px; + height: 20px; + background: #1AE2AC; + font-size: 12px; + line-height: 20px; + color: #FFFFFF; + margin-left: 50px; + } + + .weihu { + cursor: auto; + text-decoration: none; + display: block; + width: 64px; + height: 20px; + background: #FFC94B; + font-size: 12px; + color: #FFFFFF; + line-height: 20px; + margin-left: 40px; + } + + table { + width: 100%; + // margin-left: 2%; + margin-top: 15px; + } + + mat-paginator { + width: 100%; + // margin-left: 2%; + // margin-top: 30px; + } + } +} + +.mat-header-cell, +.mat-cell { + text-align: center; +} + + +.operate { + span { + color: blue; + margin: 0 3px; + cursor: pointer; + } +} diff --git a/src/app/plan-management/six-familiarity/six-familiarity.component.spec.ts b/src/app/plan-management/six-familiarity/six-familiarity.component.spec.ts new file mode 100644 index 0000000..07ae34e --- /dev/null +++ b/src/app/plan-management/six-familiarity/six-familiarity.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SixFamiliarityComponent } from './six-familiarity.component'; + +describe('SixFamiliarityComponent', () => { + let component: SixFamiliarityComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SixFamiliarityComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SixFamiliarityComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/plan-management/six-familiarity/six-familiarity.component.ts b/src/app/plan-management/six-familiarity/six-familiarity.component.ts new file mode 100644 index 0000000..f4f88c4 --- /dev/null +++ b/src/app/plan-management/six-familiarity/six-familiarity.component.ts @@ -0,0 +1,166 @@ +import { Component, OnInit, ViewChild, Inject } from "@angular/core"; +import { HttpClient } from "@angular/common/http"; +import { + MatTreeFlatDataSource, + MatTreeFlattener, +} from "@angular/material/tree"; +import { MatPaginator } from "@angular/material/paginator"; +import { FlatTreeControl } from "@angular/cdk/tree"; +import { FormControl } from "@angular/forms"; +import { Router, ActivatedRoute } from "@angular/router"; +import { PageEvent } from "@angular/material/paginator"; +import { MatDialog } from "@angular/material/dialog"; +import { MatSnackBar } from "@angular/material/snack-bar"; +import { TreeService } from "../../http-interceptors/tree.service"; +@Component({ + selector: "app-six-familiarity", + templateUrl: "./six-familiarity.component.html", + styleUrls: ["./six-familiarity.component.scss"], +}) +export class SixFamiliarityComponent implements OnInit { + constructor( + private http: HttpClient, + private router: Router, + private route: ActivatedRoute, + private tree: TreeService, + public dialog: MatDialog, + public snackBar: MatSnackBar + ) {} + + private _transformer = (node, level: number) => { + //初始化tree + return { + expandable: !!node.children && node.children.length > 0, + name: node.name, + level: level, + id: node.id, + parentId: node.parentId, + children: node.children, + }; + }; + treeControl = new FlatTreeControl( + (node) => node.level, + (node) => node.expandable + ); + treeFlattener = new MatTreeFlattener( + this._transformer, + (node) => node.level, + (node) => node.expandable, + (node) => node.children + ); + dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener); + myControl = new FormControl(); + hasChild = (_: number, node: any) => node.expandable; + //分页 + @ViewChild(MatPaginator, { static: true }) + pageEvent: PageEvent; + paginator: MatPaginator; + length: any = 13; //共多少条数据 + pageSize: any = 10; //每页条数 + pageSizeOptions: number[] = [10]; //设置每页条数 + PageNumber: any = 1; //第几页 + + displayedColumns: string[] = ["name", "time", "leader", "upload", "operate"]; + allorganizations: any; //所有组织机构 + allunittype: any; //所有单位类型 + tabledataSource: any; //表格数据 + IsNewData = ""; //维护更新活新增 + + preparelevels: any; + + arr1 = [ + { + name: "上海百联物业管理有限公司(福兴大厦)", + time: "2023-5-18 07:19", + leader: "郑子墨", + upload: "赵竹林", + }, + { + name: "未来资产大厦", + time: "2023-5-18 08:59", + leader: "何仙超", + upload: "何晨", + }, + { + name: "星展银行大厦", + time: "2023-5-18 11:22", + leader: "吴洁力", + upload: "赵玉", + }, + { + name: "中国金融信息中心", + time: "2023-5-19 12:29", + leader: "吴易奚", + upload: "赵宵蕙", + }, + { + name: "中保大厦有限公司", + time: "2023-5-20 13:07", + leader: "周伟林", + upload: "李英顺", + }, + { + name: "上海国际航运大厦有限公司海神诺富特大酒店", + time: "2023-5-21 16:16", + leader: "李琳颖", + upload: "吴斯怡", + }, + { + name: "东方绿舟度假村", + time: "2023-5-22 15:50", + leader: "李双秆", + upload: "钱浩宇", + }, + { + name: "上海市金山食品工业学校", + time: "2023-5-22 08:39", + leader: "孙正容", + upload: "孙正云", + }, + ]; + arr2=[ + { + name: "上海汇资百货有限公司", + time: "2023-5-23 05:25", + leader: "王英皓", + upload: "赵竹林", + }, + { + name: "上海良骤兴餐饮有限公司", + time: "2023-5-23 13:14", + leader: "蔡坤", + upload: "何晨", + }, + { + name: "上海红珍娱乐有限公司", + time: "2023-5-23 18:06", + leader: "徐皓", + upload: "赵玉", + }, + ] + ngOnInit(): void { + this.tabledataSource = this.arr1; + } + + //分页事件 + chagePage(e) { + console.log(e) + // this.PageNumber = e.pageIndex + 1; + if(e.pageIndex === 1){ + this.tabledataSource = this.arr2; + }else{ + this.tabledataSource = this.arr1; + } + } + + name; + time; + //查询 + onSubmit(e) { + this.PageNumber = 1; + this.pageEvent.pageIndex = 0; + } + + //重置 + reset() {} +} diff --git a/src/index.html b/src/index.html index 7ca66fa..ae5fbd1 100644 --- a/src/index.html +++ b/src/index.html @@ -31,9 +31,9 @@ securityJsCode: '0afa0b144398727fad2ca06f5f7156b3' } - - + -->