@agentscope-ai/design 1.0.26-beta.1768271896414 → 1.0.26-beta.1768889945788
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.
- package/lib/antd/styles/button.style.js +3 -1
- package/lib/antd/themes/carbonDarkTheme.json +1 -1
- package/lib/components/commonComponents/CodeBlock/index.d.ts +2 -2
- package/lib/components/commonComponents/CodeBlock/index.js +1 -1
- package/lib/components/commonComponents/FileIcon/index.js +1 -5
- package/lib/components/commonComponents/Tabs/index.js +46 -27
- package/lib/components/commonComponents/Tooltip/index.style.js +3 -1
- package/lib/components/commonComponents/Video/index.style.js +9 -9
- package/lib/i18n/strings/en-US.json +7 -1
- package/lib/i18n/strings/zh-CN.json +7 -1
- package/llms/all.llms.txt +2081 -1168
- package/llms/index.llms.txt +48 -49
- package/package.json +6 -5
- package/lib/components/commonComponents/FileIcon/icons/audio.svg +0 -1
- package/lib/components/commonComponents/FileIcon/icons/video.svg +0 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
var _templateObject;
|
|
2
2
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
3
3
|
import createGlobalStyle from "../../libs/createStyle";
|
|
4
|
-
export var useButtonStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n/* \u53D6\u6D88\u6240\u6709button\u7684boxShadow */\nbutton[type=\"button\"].", "-btn {\n font-weight: 500;\n padding-inline: 11px;\n \n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 20px;\n }\n \n &.", "-btn-sm {\n padding-inline: 7px;\n \n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 16px;\n }\n }\n \n &.", "-btn-lg {\n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 24px;\n }\n }\n}\n\n.", "-btn-default {\n border-color: var(--", "-color-border-secondary);\n}\n\n.", "-btn-textCompact:hover {\n color: var(--", "-color-text-tertiary) !important;\n}\n\n.", "-btn.", "-btn-default.", "-btn-dangerous:not(:disabled):not(.", "-btn-disabled) {\n border-color: transparent;\n background-color: var(--", "-color-error-bg);\n color: var(--", "-color-error);\n \n &:hover {\n background-color: var(--", "-color-error-bg-hover);\n border-color: transparent;\n color: var(--", "-color-error-hover);\n }\n}\n\n.", "-btn-color-dangerous.", "-btn-variant-solid:disabled,\n.", "-btn-color-dangerous.", "-btn-variant-solid.", "-btn-disabled {\n border-color: transparent;\n background-color: var(--", "-color-fill-disable);\n color: var(--", "-color-text-white);\n}\n\n.", "-btn-primary {\n color: var(--", "-color-text-on-primary);\n}\n.", "-btn-primary.", "-btn-variant-solid:not(:disabled):not(.", "-btn-disabled):hover {\n color: var(--", "-color-text-on-primary);\n}\n\n.", "-btn-primary:disabled {\n background: var(--", "-color-fill-disable);\n color: var(--", "-color-text-white);\n border-color: transparent;\n}\n\n.", "-btn-default:disabled {\n background: var(--", "-color-bg-base);\n color: var(--", "-color-text-tertiary);\n border-color: var(--", "-color-border-secondary);\n}\n\n/* Keep white text color for primaryLess buttons */\n.spark-button-primaryLess.", "-btn-primary {\n color: var(--", "-color-text-white);\n}\n.spark-button-primaryLess.", "-btn-primary.", "-btn-variant-solid:not(:disabled):not(.", "-btn-disabled):hover {\n color: var(--", "-color-text-white);\n}\n"])), function (p) {
|
|
4
|
+
export var useButtonStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n/* \u53D6\u6D88\u6240\u6709button\u7684boxShadow */\nbutton[type=\"button\"].", "-btn {\n font-weight: 500;\n padding-inline: 11px;\n \n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 20px;\n }\n \n &.", "-btn-sm {\n padding-inline: 7px;\n \n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 16px;\n }\n }\n \n &.", "-btn-lg {\n span[data-spark-icon] {\n /* @agentscope-ai/icons\u7684\u7279\u6B8A\u903B\u8F91 */\n font-size: 24px;\n }\n }\n}\n\n.", "-btn-default {\n border-color: var(--", "-color-border-secondary);\n}\n\n.", "-btn-textCompact:hover {\n color: var(--", "-color-text-tertiary) !important;\n}\n\n.", "-btn.", "-btn-default.", "-btn-dangerous:not(:disabled):not(.", "-btn-disabled) {\n border-color: transparent;\n background-color: var(--", "-color-error-bg);\n color: var(--", "-color-error);\n \n &:hover {\n background-color: var(--", "-color-error-bg-hover);\n border-color: transparent;\n color: var(--", "-color-error-hover);\n }\n}\n\n.", "-btn-color-dangerous.", "-btn-variant-solid:disabled,\n.", "-btn-color-dangerous.", "-btn-variant-solid.", "-btn-disabled {\n border-color: transparent;\n background-color: var(--", "-color-fill-disable);\n color: var(--", "-color-text-white);\n}\n\n.", "-btn-primary {\n color: var(--", "-color-text-on-primary);\n}\n.", "-btn-primary.", "-btn-variant-solid:not(:disabled):not(.", "-btn-background-ghost):not(.", "-btn-disabled):hover {\n color: var(--", "-color-text-on-primary);\n}\n\n.", "-btn-primary:disabled {\n background: var(--", "-color-fill-disable);\n color: var(--", "-color-text-white);\n border-color: transparent;\n}\n\n.", "-btn-default:disabled {\n background: var(--", "-color-bg-base);\n color: var(--", "-color-text-tertiary);\n border-color: var(--", "-color-border-secondary);\n}\n\n/* Keep white text color for primaryLess buttons */\n.spark-button-primaryLess.", "-btn-primary {\n color: var(--", "-color-text-white);\n}\n.spark-button-primaryLess.", "-btn-primary.", "-btn-variant-solid:not(:disabled):not(.", "-btn-disabled):hover {\n color: var(--", "-color-text-white);\n}\n"])), function (p) {
|
|
5
|
+
return p.antPrefix;
|
|
6
|
+
}, function (p) {
|
|
5
7
|
return p.antPrefix;
|
|
6
8
|
}, function (p) {
|
|
7
9
|
return p.antPrefix;
|
|
@@ -8,7 +8,7 @@ export interface CodeBlockProps {
|
|
|
8
8
|
* @description 值
|
|
9
9
|
* @descriptionEn Value
|
|
10
10
|
*/
|
|
11
|
-
value
|
|
11
|
+
value?: string;
|
|
12
12
|
/**
|
|
13
13
|
* @description 类名
|
|
14
14
|
* @descriptionEn Class name
|
|
@@ -23,7 +23,7 @@ export interface CodeBlockProps {
|
|
|
23
23
|
* @descriptionEn Read only
|
|
24
24
|
*/
|
|
25
25
|
readOnly?: boolean;
|
|
26
|
-
onChange?: (value
|
|
26
|
+
onChange?: (value?: string) => void;
|
|
27
27
|
}
|
|
28
28
|
export declare const langExtensionsMap: Record<string, any[]>;
|
|
29
29
|
export declare const beautifulJson: (val?: string, count?: number) => string;
|
|
@@ -85,7 +85,7 @@ var CodeMirrorWrapper = function CodeMirrorWrapper(props) {
|
|
|
85
85
|
className: cls("".concat(sparkPrefix, "-code-block"), props.className),
|
|
86
86
|
children: /*#__PURE__*/_jsx(CodeMirror, _objectSpread({
|
|
87
87
|
extensions: extensions,
|
|
88
|
-
value: props.language === 'json' ? beautifulJson(props.value) : props.value,
|
|
88
|
+
value: props.language === 'json' ? beautifulJson(props.value || '') : props.value || '',
|
|
89
89
|
theme: getTheme
|
|
90
90
|
}, omit(props, ['language', 'theme', 'extensions', 'value'])))
|
|
91
91
|
});
|
|
@@ -18,8 +18,6 @@ import ppt from "./icons/ppt.svg";
|
|
|
18
18
|
import txt from "./icons/txt.svg";
|
|
19
19
|
import web from "./icons/web.svg";
|
|
20
20
|
import word from "./icons/word.svg";
|
|
21
|
-
import video from "./icons/video.svg";
|
|
22
|
-
import audio from "./icons/audio.svg";
|
|
23
21
|
import { useStyle } from "./index.style";
|
|
24
22
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
25
23
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -36,9 +34,7 @@ var maps = {
|
|
|
36
34
|
ppt: ppt,
|
|
37
35
|
txt: txt,
|
|
38
36
|
web: web,
|
|
39
|
-
word: word
|
|
40
|
-
video: video,
|
|
41
|
-
audio: audio
|
|
37
|
+
word: word
|
|
42
38
|
};
|
|
43
39
|
function getSize(size) {
|
|
44
40
|
var retSize = size;
|
|
@@ -17,6 +17,7 @@ import { getCommonConfig } from "../../../config";
|
|
|
17
17
|
import useMergedState from '@rc-component/util/lib/hooks/useMergedState';
|
|
18
18
|
import { Segmented, Tabs } from 'antd';
|
|
19
19
|
import classNames from 'classnames';
|
|
20
|
+
import { useCallback, useMemo } from 'react';
|
|
20
21
|
import { useStyle } from "./index.style";
|
|
21
22
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
22
23
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
@@ -38,35 +39,53 @@ var SparkTabs = function SparkTabs(props) {
|
|
|
38
39
|
mergedActiveKey = _useMergedState2[0],
|
|
39
40
|
setMergedActiveKey = _useMergedState2[1];
|
|
40
41
|
var Style = useStyle();
|
|
42
|
+
|
|
43
|
+
// 缓存 onChange 回调
|
|
44
|
+
var handleChange = useCallback(function (key) {
|
|
45
|
+
var _props$onChange;
|
|
46
|
+
setMergedActiveKey(key);
|
|
47
|
+
(_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, key);
|
|
48
|
+
}, [setMergedActiveKey, props.onChange]);
|
|
49
|
+
|
|
50
|
+
// 缓存 options 配置
|
|
51
|
+
var segmentedOptions = useMemo(function () {
|
|
52
|
+
var _props$items;
|
|
53
|
+
return ((_props$items = props.items) === null || _props$items === void 0 ? void 0 : _props$items.map(function (item) {
|
|
54
|
+
return {
|
|
55
|
+
label: item.label,
|
|
56
|
+
value: item.key,
|
|
57
|
+
disabled: item.disabled
|
|
58
|
+
};
|
|
59
|
+
})) || [];
|
|
60
|
+
}, [props.items]);
|
|
61
|
+
|
|
62
|
+
// 缓存 className
|
|
63
|
+
var segmentedClassName = useMemo(function () {
|
|
64
|
+
return classNames("".concat(sparkPrefix, "-segmented-tab-bar"), _defineProperty({}, "".concat(sparkPrefix, "-segmented-tab-bar-centered"), centered));
|
|
65
|
+
}, [sparkPrefix, centered]);
|
|
66
|
+
|
|
67
|
+
// 获取当前选中 tab 的内容
|
|
68
|
+
var activeContent = useMemo(function () {
|
|
69
|
+
var _props$items2;
|
|
70
|
+
var activeItem = (_props$items2 = props.items) === null || _props$items2 === void 0 ? void 0 : _props$items2.find(function (item) {
|
|
71
|
+
return item.key === mergedActiveKey;
|
|
72
|
+
});
|
|
73
|
+
return activeItem === null || activeItem === void 0 ? void 0 : activeItem.children;
|
|
74
|
+
}, [props.items, mergedActiveKey]);
|
|
75
|
+
|
|
76
|
+
// segmented 类型:分离 Segmented 和内容渲染,避免 renderTabBar 导致的样式问题
|
|
41
77
|
if (type === 'segmented') {
|
|
42
|
-
var handleChange = function handleChange(key) {
|
|
43
|
-
var _props$onChange;
|
|
44
|
-
setMergedActiveKey(key);
|
|
45
|
-
(_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, key);
|
|
46
|
-
};
|
|
47
78
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
48
|
-
children: [/*#__PURE__*/_jsx(Style, {}), /*#__PURE__*/_jsx(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
disabled: item.disabled
|
|
59
|
-
};
|
|
60
|
-
})) || [];
|
|
61
|
-
return /*#__PURE__*/_jsx(Segmented, {
|
|
62
|
-
options: options,
|
|
63
|
-
onChange: handleChange,
|
|
64
|
-
className: classNames("".concat(sparkPrefix, "-segmented-tab-bar"), _defineProperty({}, "".concat(sparkPrefix, "-segmented-tab-bar-centered"), centered)),
|
|
65
|
-
value: mergedActiveKey,
|
|
66
|
-
size: props.size
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
}))]
|
|
79
|
+
children: [/*#__PURE__*/_jsx(Style, {}), /*#__PURE__*/_jsx(Segmented, {
|
|
80
|
+
options: segmentedOptions,
|
|
81
|
+
value: mergedActiveKey,
|
|
82
|
+
onChange: handleChange,
|
|
83
|
+
className: segmentedClassName,
|
|
84
|
+
size: props.size
|
|
85
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
86
|
+
className: "".concat(sparkPrefix, "-segmented-tab-content"),
|
|
87
|
+
children: activeContent
|
|
88
|
+
})]
|
|
70
89
|
});
|
|
71
90
|
}
|
|
72
91
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
var _templateObject;
|
|
2
2
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
3
3
|
import createGlobalStyle from "../../../libs/createStyle";
|
|
4
|
-
export var useStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n/* Default dark mode */\n.", "-tooltip-content {\n
|
|
4
|
+
export var useStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n/* Default dark mode */\n.", "-tooltip {\n .", "-tooltip-content {\n .", "-tooltip-inner {\n border: 1px solid transparent;\n padding: 6px 12px;\n background: var(--", "-color-slate);\n color: var(--", "-color-text-white);\n }\n }\n}\n\n/* Light mode - keep same style as dark mode */\n.", "-tooltip-light {\n .", "-tooltip-content .", "-tooltip-inner {\n background: var(--", "-color-slate);\n color: var(--", "-color-text-white);\n }\n \n .", "-tooltip-arrow {\n &::after {\n background: var(--", "-color-slate);\n }\n }\n}\n"])), function (p) {
|
|
5
|
+
return p.antPrefix;
|
|
6
|
+
}, function (p) {
|
|
5
7
|
return p.antPrefix;
|
|
6
8
|
}, function (p) {
|
|
7
9
|
return p.antPrefix;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var _templateObject;
|
|
2
2
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
3
3
|
import createGlobalStyle from "../../../libs/createStyle";
|
|
4
|
-
export var useStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n// Video \u4E3B\u5BB9\u5668\u6837\u5F0F\n.", "-video-container {\n position: relative;\n width: 100%;\n height: 100%;\n background: #000;\n\n button {\n --", "-color-text-disabled: rgba(231, 231, 237, 0.25) !important;\n --", "-button-text-text-color: rgba(231, 231, 237, 0.88) !important;\n --", "-button-text-text-hover-color: rgba(231, 231, 237, 0.88) !important;\n --", "-button-text-hover-bg: rgba(231, 231, 237, 0.08) !important;\n }\n\n .", "-media-time-text {\n color: var(--", "-color-text-white);\n }\n}\n\n.", "-video-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n\n.", "-video-element {\n position: relative;\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.", "-video-poster {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.", "-video-controller-wrapper {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background: linear-gradient(0deg, #000000 2%, rgba(0, 0, 0, 0) 94%);\n transition: opacity 0.3s;\n}\n
|
|
4
|
+
export var useStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n// Video \u4E3B\u5BB9\u5668\u6837\u5F0F\n.", "-video-container {\n position: relative;\n width: 100%;\n height: 100%;\n background: #000;\n\n button {\n --", "-color-text-disabled: rgba(231, 231, 237, 0.25) !important;\n --", "-button-text-text-color: rgba(231, 231, 237, 0.88) !important;\n --", "-button-text-text-hover-color: rgba(231, 231, 237, 0.88) !important;\n --", "-button-text-hover-bg: rgba(231, 231, 237, 0.08) !important;\n }\n\n .", "-media-time-text {\n color: var(--", "-color-text-white);\n }\n\n // \u8FDB\u5EA6\u6761\u6837\u5F0F\n .", "-media-progress-bar {\n .", "-progress-inner {\n --", "-progress-remaining-color: var(--", "-color-fill);\n }\n \n .", "-progress-bg {\n background: var(--", "-color-text-white) !important;\n }\n }\n}\n\n.", "-video-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n\n.", "-video-element {\n position: relative;\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.", "-video-poster {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.", "-video-controller-wrapper {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background: linear-gradient(0deg, #000000 2%, rgba(0, 0, 0, 0) 94%);\n transition: opacity 0.3s;\n}\n"])), function (p) {
|
|
5
5
|
return p.sparkPrefix;
|
|
6
6
|
}, function (p) {
|
|
7
7
|
return p.antPrefix;
|
|
@@ -17,14 +17,6 @@ export var useStyle = createGlobalStyle(_templateObject || (_templateObject = _t
|
|
|
17
17
|
return p.antPrefix;
|
|
18
18
|
}, function (p) {
|
|
19
19
|
return p.sparkPrefix;
|
|
20
|
-
}, function (p) {
|
|
21
|
-
return p.sparkPrefix;
|
|
22
|
-
}, function (p) {
|
|
23
|
-
return p.sparkPrefix;
|
|
24
|
-
}, function (p) {
|
|
25
|
-
return p.sparkPrefix;
|
|
26
|
-
}, function (p) {
|
|
27
|
-
return p.sparkPrefix;
|
|
28
20
|
}, function (p) {
|
|
29
21
|
return p.antPrefix;
|
|
30
22
|
}, function (p) {
|
|
@@ -35,4 +27,12 @@ export var useStyle = createGlobalStyle(_templateObject || (_templateObject = _t
|
|
|
35
27
|
return p.antPrefix;
|
|
36
28
|
}, function (p) {
|
|
37
29
|
return p.antPrefix;
|
|
30
|
+
}, function (p) {
|
|
31
|
+
return p.sparkPrefix;
|
|
32
|
+
}, function (p) {
|
|
33
|
+
return p.sparkPrefix;
|
|
34
|
+
}, function (p) {
|
|
35
|
+
return p.sparkPrefix;
|
|
36
|
+
}, function (p) {
|
|
37
|
+
return p.sparkPrefix;
|
|
38
38
|
});
|
|
@@ -12,5 +12,11 @@
|
|
|
12
12
|
"components.SlateEditor.utils.editor.WraptagnameCannotBePlacedIn": "[{wrapTagName}] cannot be placed in [{tagName}]",
|
|
13
13
|
"components.SlateEditor.utils.editor.WraptagnameCannotBeNestedIn": "[{wrapTagName}] cannot be nested in [{tagName}]]",
|
|
14
14
|
"components.SlateEditor.utils.withEditor.YouCanEnterAMaximum": "You can enter a maximum of {maxLen} characters.",
|
|
15
|
-
"components.commonComponents.Image.Preview": "Preview"
|
|
15
|
+
"components.commonComponents.Image.Preview": "Preview",
|
|
16
|
+
"docs.icons.IconLibrary.SearchPlaceholder": "Search icons (by export name)",
|
|
17
|
+
"docs.icons.IconLibrary.CopyName": "Copy name",
|
|
18
|
+
"docs.icons.IconLibrary.CopyImport": "Copy import",
|
|
19
|
+
"docs.icons.IconLibrary.CopyJSX": "Copy JSX",
|
|
20
|
+
"docs.icons.IconLibrary.TotalCount": "{count} total",
|
|
21
|
+
"docs.icons.IconLibrary.CopySuccess": "Copied"
|
|
16
22
|
}
|
|
@@ -12,5 +12,11 @@
|
|
|
12
12
|
"components.SlateEditor.utils.editor.WraptagnameCannotBePlacedIn": "【{wrapTagName}】不能在放在【{tagName}】内",
|
|
13
13
|
"components.SlateEditor.utils.editor.WraptagnameCannotBeNestedIn": "【{wrapTagName}】中不能嵌套【{tagName}】",
|
|
14
14
|
"components.SlateEditor.utils.withEditor.YouCanEnterAMaximum": "最多可输入{maxLen}字",
|
|
15
|
-
"components.commonComponents.Image.Preview": "预览"
|
|
15
|
+
"components.commonComponents.Image.Preview": "预览",
|
|
16
|
+
"docs.icons.IconLibrary.SearchPlaceholder": "搜索图标(按导出名)",
|
|
17
|
+
"docs.icons.IconLibrary.CopyName": "复制名称",
|
|
18
|
+
"docs.icons.IconLibrary.CopyImport": "复制 import",
|
|
19
|
+
"docs.icons.IconLibrary.CopyJSX": "复制 JSX",
|
|
20
|
+
"docs.icons.IconLibrary.TotalCount": "共 {count} 个",
|
|
21
|
+
"docs.icons.IconLibrary.CopySuccess": "已复制"
|
|
16
22
|
}
|