@riil-frontend/component-topology 11.0.5 → 11.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,101 @@
1
- import React from 'react';
1
+ import _Balloon from "@alifd/next/es/balloon";
2
+ import _Grid from "@alifd/next/es/grid";
3
+ import React, { useState, useEffect } from 'react';
4
+ import styles from "./HelpIcon.module.scss";
5
+ import useCanvasThemeConfig from "../../../hooks/useCanvasThemeConfig";
2
6
 
3
7
  function HelpIcon(props) {
4
- var topo = props.topo;
5
- return /*#__PURE__*/React.createElement("div", null, "HelpIcon");
8
+ var topo = props.topo,
9
+ topoType = props.topoType;
10
+ var localStorageVal = localStorage.getItem(topoType + 'helpBoxHidden');
11
+
12
+ var _useState = useState(),
13
+ helpBoxIsShow = _useState[0],
14
+ setHelpBoxIsShow = _useState[1]; //TODO:在主得style里面需要增加color与background属性,根据外部传值进行改变,默认值为$color-text1-4,#fff
15
+
16
+
17
+ var Row = _Grid.Row,
18
+ Col = _Grid.Col;
19
+
20
+ var _useCanvasThemeConfig = useCanvasThemeConfig({
21
+ topo: topo
22
+ }),
23
+ themeConfig = _useCanvasThemeConfig.themeConfig;
24
+
25
+ var helpIconNames = themeConfig.editor.helpIcon;
26
+
27
+ var onChange = function onChange(visible, type) {
28
+ if (type != 'docClick') {
29
+ setHelpBoxIsShow(visible);
30
+ localStorage.setItem(topoType + 'helpBoxHidden', !visible);
31
+ }
32
+ };
33
+
34
+ var topoModState = topo.store.useModelState('topoMod');
35
+ var graphLoaded = topoModState.graphLoaded;
36
+ useEffect(function () {
37
+ if (graphLoaded) {
38
+ setHelpBoxIsShow(localStorageVal == 'true' ? false : true);
39
+ }
40
+ }, [topo, graphLoaded]);
41
+ return /*#__PURE__*/React.createElement(_Balloon, {
42
+ triggerType: "click",
43
+ align: "t",
44
+ trigger: /*#__PURE__*/React.createElement("div", {
45
+ className: styles.topoHelpIconBtn,
46
+ onClick: function onClick() {
47
+ open;
48
+ }
49
+ }, /*#__PURE__*/React.createElement("img", {
50
+ src: "/img/topo/editor/bottomFloatTool/default.svg",
51
+ alt: "",
52
+ style: {
53
+ width: '15px',
54
+ height: '15px'
55
+ }
56
+ })),
57
+ closable: true,
58
+ visible: helpBoxIsShow,
59
+ onVisibleChange: onChange,
60
+ shouldUpdatePosition: true,
61
+ id: helpIconNames
62
+ }, /*#__PURE__*/React.createElement("div", {
63
+ className: styles.topoHelpIcon
64
+ }, /*#__PURE__*/React.createElement("div", {
65
+ className: styles[helpIconNames + 'Box']
66
+ }, /*#__PURE__*/React.createElement("span", {
67
+ className: styles.title
68
+ }, "\u5FEB\u6377\u952E"), /*#__PURE__*/React.createElement("div", {
69
+ className: styles.conten
70
+ }, /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(Col, {
71
+ span: "16"
72
+ }, "\u590D\u5236"), /*#__PURE__*/React.createElement(Col, {
73
+ span: "8"
74
+ }, "ctrl/\u2318+c")), /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(Col, {
75
+ span: "16"
76
+ }, "\u7C98\u8D34"), /*#__PURE__*/React.createElement(Col, {
77
+ span: "8"
78
+ }, "ctrl/\u2318+v")), /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(Col, {
79
+ span: "16"
80
+ }, "\u64A4\u9500"), /*#__PURE__*/React.createElement(Col, {
81
+ span: "8"
82
+ }, "ctrl/\u2318+z")), /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(Col, {
83
+ span: "16"
84
+ }, "\u6062\u590D"), /*#__PURE__*/React.createElement(Col, {
85
+ span: "8"
86
+ }, "ctrl/\u2318+y")), /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(Col, {
87
+ span: "16"
88
+ }, "\u6587\u5B57\u52A0\u7C97"), /*#__PURE__*/React.createElement(Col, {
89
+ span: "8"
90
+ }, "ctrl/\u2318+b")), /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(Col, {
91
+ span: "16"
92
+ }, "\u9009\u62E9-\u62D6\u5230"), /*#__PURE__*/React.createElement(Col, {
93
+ span: "8"
94
+ }, "\u7A7A\u683C")), /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(Col, {
95
+ span: "16"
96
+ }, "\u9000\u51FA\u94FE\u8DEF/\u7EBF\u7ED8\u5236"), /*#__PURE__*/React.createElement(Col, {
97
+ span: "8"
98
+ }, "\u9F20\u6807\u53F3\u952E"))))));
6
99
  }
7
100
 
8
101
  export default HelpIcon;
@@ -0,0 +1,68 @@
1
+ .topoHelpIconBtn{
2
+ width: '100%';
3
+ height: '100%';
4
+ margin: 0;
5
+ padding: 0;
6
+ border: 0;
7
+ }
8
+ :global{
9
+ #white.next-overlay-inner{
10
+ padding: 10px;
11
+ .next-balloon-close{
12
+ right: 10px;
13
+ }
14
+ }
15
+ #dark.next-overlay-inner{
16
+ padding: 10px;
17
+ background-color: #063658;
18
+ border-color: #08A5F4;
19
+ .next-balloon-close{
20
+ right: 10px;
21
+ /* color:$color-text1-5; */
22
+ color:#fff;
23
+ }
24
+ }
25
+ #dark.next-overlay-inner:after{
26
+ border-color: #08A5F4;
27
+ background: #063658;
28
+ }
29
+ }
30
+ .topoHelpIcon{
31
+ width: 187px;
32
+ .whiteBox,.darkBox{
33
+ color:$color-text1-4;
34
+ font-size: 12px;
35
+ font-family: PingFangSC-Medium, PingFang SC;
36
+ width: 187px;
37
+ background: #FFFFFF;
38
+ .title{
39
+ line-height: 15px;
40
+ font-weight: 500;
41
+ }
42
+ .colse{
43
+ float: right;
44
+ cursor: pointer;
45
+ }
46
+ .conten{
47
+ color:$color-text1-6;
48
+ font-weight: 400;
49
+ line-height: 20px;
50
+ :global{
51
+ .next-row{
52
+ margin: 4px 0;
53
+ }
54
+ .next-col-8{
55
+ text-align: right;
56
+ }
57
+ }
58
+ }
59
+
60
+ }
61
+ .darkBox{
62
+ background: #063658;
63
+ color:$color-text1-5;
64
+ .conten{
65
+ color:$color-text1-5;
66
+ }
67
+ }
68
+ }
@@ -6,12 +6,16 @@ var themeMap = [{
6
6
  color: '#FFFFFF',
7
7
  editor: {
8
8
  // 快捷帮助
9
- helpIcon: {}
9
+ helpIcon: 'white'
10
10
  }
11
11
  }, {
12
12
  name: 'lightblue',
13
13
  label: '蓝色',
14
- color: '#F9FBFF'
14
+ color: '#F9FBFF',
15
+ editor: {
16
+ // 快捷帮助
17
+ helpIcon: 'white'
18
+ }
15
19
  }, // {
16
20
  // name: 'yellow',
17
21
  // label: '黄色',
@@ -25,11 +29,19 @@ var themeMap = [{
25
29
  {
26
30
  name: 'dark',
27
31
  label: '深色',
28
- color: '#031425'
32
+ color: '#031425',
33
+ editor: {
34
+ // 快捷帮助
35
+ helpIcon: 'dark'
36
+ }
29
37
  }, {
30
38
  name: 'poly',
31
39
  label: 'Poly',
32
- backgroundImage: '/img/topo/themes/poly.png'
40
+ backgroundImage: '/img/topo/themes/poly.png',
41
+ editor: {
42
+ // 快捷帮助
43
+ helpIcon: 'dark'
44
+ }
33
45
  }].reduce(function (map, item) {
34
46
  var _extends2;
35
47
 
@@ -24,7 +24,7 @@ import ElementTagTipConfig from "./tagstips/ElementTagTipConfig";
24
24
  import SelectionModel from "./SelectionModel";
25
25
  import CiCache from "./cache/CiCache"; // eslint-disable-next-line no-undef
26
26
 
27
- var version = typeof "11.0.5" === 'string' ? "11.0.5" : null;
27
+ var version = typeof "11.0.7" === 'string' ? "11.0.7" : null;
28
28
  console.info("\u62D3\u6251\u7248\u672C: " + version);
29
29
  /**
30
30
  * 拓扑显示和编辑
@@ -115,7 +115,18 @@ var ElementTagTipConfig = /*#__PURE__*/function () {
115
115
  // ]
116
116
  };
117
117
 
118
- _proto.getFiedldMapByType = function getFiedldMapByType(ciType, type) {
118
+ _proto.getFiedldMapByMtCodes = function getFiedldMapByMtCodes(mtCodes, type) {
119
+ var _this = this;
120
+
121
+ var map = {};
122
+ mtCodes.forEach(function (mtCode) {
123
+ var ciType = _this.mtCiTypeMap[mtCode];
124
+ map[mtCode] = _this.getFiedldMapByType(ciType, type, mtCode);
125
+ });
126
+ return map;
127
+ };
128
+
129
+ _proto.getFiedldMapByType = function getFiedldMapByType(ciType, type, mtCode) {
119
130
  var attributes = this.topo.ciTyeCache.getCiType(ciType).attributes.filter(function (attr) {
120
131
  return !!attr.userVisible;
121
132
  });
@@ -148,17 +159,6 @@ var ElementTagTipConfig = /*#__PURE__*/function () {
148
159
  }));
149
160
  };
150
161
 
151
- _proto.getFiedldMapByMtCodes = function getFiedldMapByMtCodes(mtCodes, type) {
152
- var _this = this;
153
-
154
- var map = {};
155
- mtCodes.forEach(function (mtCode) {
156
- var ciType = _this.mtCiTypeMap[mtCode];
157
- map[mtCode] = _this.getFiedldMapByType(ciType, type);
158
- });
159
- return map;
160
- };
161
-
162
162
  _proto.getMtMetricModels = function getMtMetricModels(mtCode) {
163
163
  var _this2 = this;
164
164
 
@@ -5,11 +5,112 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  exports.__esModule = true;
6
6
  exports["default"] = void 0;
7
7
 
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _balloon = _interopRequireDefault(require("@alifd/next/lib/balloon"));
9
+
10
+ var _grid = _interopRequireDefault(require("@alifd/next/lib/grid"));
11
+
12
+ var _react = _interopRequireWildcard(require("react"));
13
+
14
+ var _HelpIconModule = _interopRequireDefault(require("./HelpIcon.module.scss"));
15
+
16
+ var _useCanvasThemeConfig2 = _interopRequireDefault(require("../../../hooks/useCanvasThemeConfig"));
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
9
21
 
10
22
  function HelpIcon(props) {
11
- var topo = props.topo;
12
- return /*#__PURE__*/_react["default"].createElement("div", null, "HelpIcon");
23
+ var topo = props.topo,
24
+ topoType = props.topoType;
25
+ var localStorageVal = localStorage.getItem(topoType + 'helpBoxHidden');
26
+
27
+ var _useState = (0, _react.useState)(),
28
+ helpBoxIsShow = _useState[0],
29
+ setHelpBoxIsShow = _useState[1]; //TODO:在主得style里面需要增加color与background属性,根据外部传值进行改变,默认值为$color-text1-4,#fff
30
+
31
+
32
+ var Row = _grid["default"].Row,
33
+ Col = _grid["default"].Col;
34
+
35
+ var _useCanvasThemeConfig = (0, _useCanvasThemeConfig2["default"])({
36
+ topo: topo
37
+ }),
38
+ themeConfig = _useCanvasThemeConfig.themeConfig;
39
+
40
+ var helpIconNames = themeConfig.editor.helpIcon;
41
+
42
+ var onChange = function onChange(visible, type) {
43
+ if (type != 'docClick') {
44
+ setHelpBoxIsShow(visible);
45
+ localStorage.setItem(topoType + 'helpBoxHidden', !visible);
46
+ }
47
+ };
48
+
49
+ var topoModState = topo.store.useModelState('topoMod');
50
+ var graphLoaded = topoModState.graphLoaded;
51
+ (0, _react.useEffect)(function () {
52
+ if (graphLoaded) {
53
+ setHelpBoxIsShow(localStorageVal == 'true' ? false : true);
54
+ }
55
+ }, [topo, graphLoaded]);
56
+ return /*#__PURE__*/_react["default"].createElement(_balloon["default"], {
57
+ triggerType: "click",
58
+ align: "t",
59
+ trigger: /*#__PURE__*/_react["default"].createElement("div", {
60
+ className: _HelpIconModule["default"].topoHelpIconBtn,
61
+ onClick: function onClick() {
62
+ open;
63
+ }
64
+ }, /*#__PURE__*/_react["default"].createElement("img", {
65
+ src: "/img/topo/editor/bottomFloatTool/default.svg",
66
+ alt: "",
67
+ style: {
68
+ width: '15px',
69
+ height: '15px'
70
+ }
71
+ })),
72
+ closable: true,
73
+ visible: helpBoxIsShow,
74
+ onVisibleChange: onChange,
75
+ shouldUpdatePosition: true,
76
+ id: helpIconNames
77
+ }, /*#__PURE__*/_react["default"].createElement("div", {
78
+ className: _HelpIconModule["default"].topoHelpIcon
79
+ }, /*#__PURE__*/_react["default"].createElement("div", {
80
+ className: _HelpIconModule["default"][helpIconNames + 'Box']
81
+ }, /*#__PURE__*/_react["default"].createElement("span", {
82
+ className: _HelpIconModule["default"].title
83
+ }, "\u5FEB\u6377\u952E"), /*#__PURE__*/_react["default"].createElement("div", {
84
+ className: _HelpIconModule["default"].conten
85
+ }, /*#__PURE__*/_react["default"].createElement(Row, null, /*#__PURE__*/_react["default"].createElement(Col, {
86
+ span: "16"
87
+ }, "\u590D\u5236"), /*#__PURE__*/_react["default"].createElement(Col, {
88
+ span: "8"
89
+ }, "ctrl/\u2318+c")), /*#__PURE__*/_react["default"].createElement(Row, null, /*#__PURE__*/_react["default"].createElement(Col, {
90
+ span: "16"
91
+ }, "\u7C98\u8D34"), /*#__PURE__*/_react["default"].createElement(Col, {
92
+ span: "8"
93
+ }, "ctrl/\u2318+v")), /*#__PURE__*/_react["default"].createElement(Row, null, /*#__PURE__*/_react["default"].createElement(Col, {
94
+ span: "16"
95
+ }, "\u64A4\u9500"), /*#__PURE__*/_react["default"].createElement(Col, {
96
+ span: "8"
97
+ }, "ctrl/\u2318+z")), /*#__PURE__*/_react["default"].createElement(Row, null, /*#__PURE__*/_react["default"].createElement(Col, {
98
+ span: "16"
99
+ }, "\u6062\u590D"), /*#__PURE__*/_react["default"].createElement(Col, {
100
+ span: "8"
101
+ }, "ctrl/\u2318+y")), /*#__PURE__*/_react["default"].createElement(Row, null, /*#__PURE__*/_react["default"].createElement(Col, {
102
+ span: "16"
103
+ }, "\u6587\u5B57\u52A0\u7C97"), /*#__PURE__*/_react["default"].createElement(Col, {
104
+ span: "8"
105
+ }, "ctrl/\u2318+b")), /*#__PURE__*/_react["default"].createElement(Row, null, /*#__PURE__*/_react["default"].createElement(Col, {
106
+ span: "16"
107
+ }, "\u9009\u62E9-\u62D6\u5230"), /*#__PURE__*/_react["default"].createElement(Col, {
108
+ span: "8"
109
+ }, "\u7A7A\u683C")), /*#__PURE__*/_react["default"].createElement(Row, null, /*#__PURE__*/_react["default"].createElement(Col, {
110
+ span: "16"
111
+ }, "\u9000\u51FA\u94FE\u8DEF/\u7EBF\u7ED8\u5236"), /*#__PURE__*/_react["default"].createElement(Col, {
112
+ span: "8"
113
+ }, "\u9F20\u6807\u53F3\u952E"))))));
13
114
  }
14
115
 
15
116
  var _default = HelpIcon;
@@ -0,0 +1,68 @@
1
+ .topoHelpIconBtn{
2
+ width: '100%';
3
+ height: '100%';
4
+ margin: 0;
5
+ padding: 0;
6
+ border: 0;
7
+ }
8
+ :global{
9
+ #white.next-overlay-inner{
10
+ padding: 10px;
11
+ .next-balloon-close{
12
+ right: 10px;
13
+ }
14
+ }
15
+ #dark.next-overlay-inner{
16
+ padding: 10px;
17
+ background-color: #063658;
18
+ border-color: #08A5F4;
19
+ .next-balloon-close{
20
+ right: 10px;
21
+ /* color:$color-text1-5; */
22
+ color:#fff;
23
+ }
24
+ }
25
+ #dark.next-overlay-inner:after{
26
+ border-color: #08A5F4;
27
+ background: #063658;
28
+ }
29
+ }
30
+ .topoHelpIcon{
31
+ width: 187px;
32
+ .whiteBox,.darkBox{
33
+ color:$color-text1-4;
34
+ font-size: 12px;
35
+ font-family: PingFangSC-Medium, PingFang SC;
36
+ width: 187px;
37
+ background: #FFFFFF;
38
+ .title{
39
+ line-height: 15px;
40
+ font-weight: 500;
41
+ }
42
+ .colse{
43
+ float: right;
44
+ cursor: pointer;
45
+ }
46
+ .conten{
47
+ color:$color-text1-6;
48
+ font-weight: 400;
49
+ line-height: 20px;
50
+ :global{
51
+ .next-row{
52
+ margin: 4px 0;
53
+ }
54
+ .next-col-8{
55
+ text-align: right;
56
+ }
57
+ }
58
+ }
59
+
60
+ }
61
+ .darkBox{
62
+ background: #063658;
63
+ color:$color-text1-5;
64
+ .conten{
65
+ color:$color-text1-5;
66
+ }
67
+ }
68
+ }
@@ -15,12 +15,16 @@ var themeMap = [{
15
15
  color: '#FFFFFF',
16
16
  editor: {
17
17
  // 快捷帮助
18
- helpIcon: {}
18
+ helpIcon: 'white'
19
19
  }
20
20
  }, {
21
21
  name: 'lightblue',
22
22
  label: '蓝色',
23
- color: '#F9FBFF'
23
+ color: '#F9FBFF',
24
+ editor: {
25
+ // 快捷帮助
26
+ helpIcon: 'white'
27
+ }
24
28
  }, // {
25
29
  // name: 'yellow',
26
30
  // label: '黄色',
@@ -34,11 +38,19 @@ var themeMap = [{
34
38
  {
35
39
  name: 'dark',
36
40
  label: '深色',
37
- color: '#031425'
41
+ color: '#031425',
42
+ editor: {
43
+ // 快捷帮助
44
+ helpIcon: 'dark'
45
+ }
38
46
  }, {
39
47
  name: 'poly',
40
48
  label: 'Poly',
41
- backgroundImage: '/img/topo/themes/poly.png'
49
+ backgroundImage: '/img/topo/themes/poly.png',
50
+ editor: {
51
+ // 快捷帮助
52
+ helpIcon: 'dark'
53
+ }
42
54
  }].reduce(function (map, item) {
43
55
  var _extends2;
44
56
 
@@ -56,7 +56,7 @@ var _SelectionModel = _interopRequireDefault(require("./SelectionModel"));
56
56
  var _CiCache = _interopRequireDefault(require("./cache/CiCache"));
57
57
 
58
58
  // eslint-disable-next-line no-undef
59
- var version = typeof "11.0.5" === 'string' ? "11.0.5" : null;
59
+ var version = typeof "11.0.7" === 'string' ? "11.0.7" : null;
60
60
  console.info("\u62D3\u6251\u7248\u672C: " + version);
61
61
  /**
62
62
  * 拓扑显示和编辑
@@ -128,7 +128,18 @@ var ElementTagTipConfig = /*#__PURE__*/function () {
128
128
  // ]
129
129
  };
130
130
 
131
- _proto.getFiedldMapByType = function getFiedldMapByType(ciType, type) {
131
+ _proto.getFiedldMapByMtCodes = function getFiedldMapByMtCodes(mtCodes, type) {
132
+ var _this = this;
133
+
134
+ var map = {};
135
+ mtCodes.forEach(function (mtCode) {
136
+ var ciType = _this.mtCiTypeMap[mtCode];
137
+ map[mtCode] = _this.getFiedldMapByType(ciType, type, mtCode);
138
+ });
139
+ return map;
140
+ };
141
+
142
+ _proto.getFiedldMapByType = function getFiedldMapByType(ciType, type, mtCode) {
132
143
  var attributes = this.topo.ciTyeCache.getCiType(ciType).attributes.filter(function (attr) {
133
144
  return !!attr.userVisible;
134
145
  });
@@ -161,17 +172,6 @@ var ElementTagTipConfig = /*#__PURE__*/function () {
161
172
  }));
162
173
  };
163
174
 
164
- _proto.getFiedldMapByMtCodes = function getFiedldMapByMtCodes(mtCodes, type) {
165
- var _this = this;
166
-
167
- var map = {};
168
- mtCodes.forEach(function (mtCode) {
169
- var ciType = _this.mtCiTypeMap[mtCode];
170
- map[mtCode] = _this.getFiedldMapByType(ciType, type);
171
- });
172
- return map;
173
- };
174
-
175
175
  _proto.getMtMetricModels = function getMtMetricModels(mtCode) {
176
176
  var _this2 = this;
177
177
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riil-frontend/component-topology",
3
- "version": "11.0.5",
3
+ "version": "11.0.7",
4
4
  "description": "拓扑",
5
5
  "scripts": {
6
6
  "start": "build-scripts start",
@@ -118,6 +118,6 @@
118
118
  "access": "public"
119
119
  },
120
120
  "license": "MIT",
121
- "homepage": "https://unpkg.com/@riil-frontend/component-topology@11.0.5/build/index.html",
121
+ "homepage": "https://unpkg.com/@riil-frontend/component-topology@11.0.7/build/index.html",
122
122
  "gitHead": "2da19ffccbb7ca60a8acf396e39f542c68bb33f5"
123
123
  }