@atlaskit/teams-client 4.32.4 → 4.32.5
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/CHANGELOG.md +7 -0
- package/dist/cjs/common/utils/ufo/index.js +2 -2
- package/dist/cjs/services/base-client/index.js +2 -3
- package/dist/cjs/services/graphql-client/main.js +9 -16
- package/dist/cjs/services/sentry/utils/get-sentry-config.js +1 -1
- package/dist/es2019/common/utils/ufo/index.js +2 -2
- package/dist/es2019/services/base-client/index.js +2 -3
- package/dist/es2019/services/graphql-client/main.js +9 -16
- package/dist/es2019/services/sentry/utils/get-sentry-config.js +1 -1
- package/dist/esm/common/utils/ufo/index.js +2 -2
- package/dist/esm/services/base-client/index.js +2 -3
- package/dist/esm/services/graphql-client/main.js +9 -16
- package/dist/esm/services/sentry/utils/get-sentry-config.js +1 -1
- package/dist/types/services/graphql-client/main.d.ts +2 -3
- package/dist/types-ts4.5/services/graphql-client/main.d.ts +2 -3
- package/package.json +2 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @atlaskit/teams-client
|
|
2
2
|
|
|
3
|
+
## 4.32.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`759719a07dfd0`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/759719a07dfd0) -
|
|
8
|
+
Clean up teams-app_client_fix-invalid-ari feature gate
|
|
9
|
+
|
|
3
10
|
## 4.32.4
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
|
@@ -52,7 +52,7 @@ var TeamsUFOExperience = exports.TeamsUFOExperience = /*#__PURE__*/function (_UF
|
|
|
52
52
|
return _superPropGet(TeamsUFOExperience, "failure", this, 3)([{
|
|
53
53
|
metadata: {
|
|
54
54
|
error: (0, _utils.createErrorMetadata)(error),
|
|
55
|
-
packageVersion: "
|
|
55
|
+
packageVersion: "4.32.4",
|
|
56
56
|
packageName: "@atlaskit/teams-client"
|
|
57
57
|
}
|
|
58
58
|
}]);
|
|
@@ -60,7 +60,7 @@ var TeamsUFOExperience = exports.TeamsUFOExperience = /*#__PURE__*/function (_UF
|
|
|
60
60
|
return _superPropGet(TeamsUFOExperience, "failure", this, 3)([{
|
|
61
61
|
metadata: {
|
|
62
62
|
error: 'unknown error',
|
|
63
|
-
packageVersion: "
|
|
63
|
+
packageVersion: "4.32.4",
|
|
64
64
|
packageName: "@atlaskit/teams-client"
|
|
65
65
|
}
|
|
66
66
|
}]);
|
|
@@ -8,7 +8,6 @@ exports.BaseClient = void 0;
|
|
|
8
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
12
11
|
var _sentry = require("../sentry");
|
|
13
12
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14
13
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -23,14 +22,14 @@ var BaseClient = exports.BaseClient = /*#__PURE__*/function () {
|
|
|
23
22
|
});
|
|
24
23
|
this.config = config;
|
|
25
24
|
this.context = {
|
|
26
|
-
cloudId:
|
|
25
|
+
cloudId: ''
|
|
27
26
|
};
|
|
28
27
|
}
|
|
29
28
|
return (0, _createClass2.default)(BaseClient, [{
|
|
30
29
|
key: "setContext",
|
|
31
30
|
value: function setContext(context) {
|
|
32
31
|
this.context = _objectSpread(_objectSpread({}, context), {}, {
|
|
33
|
-
cloudId:
|
|
32
|
+
cloudId: context.cloudId || ''
|
|
34
33
|
});
|
|
35
34
|
}
|
|
36
35
|
}, {
|
|
@@ -13,7 +13,6 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
13
13
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
14
14
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
15
15
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
16
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
17
16
|
var _error = require("../../common/utils/error");
|
|
18
17
|
var _baseClient = require("../base-client");
|
|
19
18
|
var _utils = require("./utils");
|
|
@@ -56,9 +55,8 @@ var BaseGraphQlClient = exports.BaseGraphQlClient = /*#__PURE__*/function (_Base
|
|
|
56
55
|
|
|
57
56
|
/**
|
|
58
57
|
* Creates query context headers if cloudId is available and valid.
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* `ari:cloud:platform::site/None` from being sent.
|
|
58
|
+
* Validates the cloudId before constructing the ARI, preventing invalid
|
|
59
|
+
* ARIs like `ari:cloud:platform::site/None` from being sent.
|
|
62
60
|
*/
|
|
63
61
|
}, {
|
|
64
62
|
key: "createQueryContextHeaders",
|
|
@@ -66,19 +64,14 @@ var BaseGraphQlClient = exports.BaseGraphQlClient = /*#__PURE__*/function (_Base
|
|
|
66
64
|
if (!cloudId) {
|
|
67
65
|
return undefined;
|
|
68
66
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
return undefined;
|
|
77
|
-
}
|
|
67
|
+
try {
|
|
68
|
+
var ari = createPlatformSiteAri(cloudId);
|
|
69
|
+
return {
|
|
70
|
+
'X-Query-Context': ari
|
|
71
|
+
};
|
|
72
|
+
} catch (_unused) {
|
|
73
|
+
return undefined;
|
|
78
74
|
}
|
|
79
|
-
return {
|
|
80
|
-
'X-Query-Context': "ari:cloud:platform::site/".concat(cloudId)
|
|
81
|
-
};
|
|
82
75
|
}
|
|
83
76
|
}, {
|
|
84
77
|
key: "makeGraphQLRequest",
|
|
@@ -36,7 +36,7 @@ function getSentryConfig(options) {
|
|
|
36
36
|
return _objectSpread(_objectSpread(_objectSpread({}, otherOptions), DEFAULT_SENTRY_CONFIG), {}, {
|
|
37
37
|
// Standalone __VERSION__ is set from `bin/set-release-version.sh`
|
|
38
38
|
// when building to deploy to production
|
|
39
|
-
release: "".concat("@atlaskit/teams-client", "@").concat("
|
|
39
|
+
release: "".concat("@atlaskit/teams-client", "@").concat("4.32.4") ||
|
|
40
40
|
// @ts-ignore Jira - window.BUILD_KEY
|
|
41
41
|
window.BUILD_KEY || ( // @ts-ignore Confluence - window.__buildInfo
|
|
42
42
|
(_window$__buildInfo = window.__buildInfo) === null || _window$__buildInfo === void 0 ? void 0 : _window$__buildInfo.FRONTEND_VERSION) || '---',
|
|
@@ -27,7 +27,7 @@ export class TeamsUFOExperience extends UFOExperience {
|
|
|
27
27
|
return super.failure({
|
|
28
28
|
metadata: {
|
|
29
29
|
error: createErrorMetadata(error),
|
|
30
|
-
packageVersion: "
|
|
30
|
+
packageVersion: "4.32.4",
|
|
31
31
|
packageName: "@atlaskit/teams-client"
|
|
32
32
|
}
|
|
33
33
|
});
|
|
@@ -35,7 +35,7 @@ export class TeamsUFOExperience extends UFOExperience {
|
|
|
35
35
|
return super.failure({
|
|
36
36
|
metadata: {
|
|
37
37
|
error: 'unknown error',
|
|
38
|
-
packageVersion: "
|
|
38
|
+
packageVersion: "4.32.4",
|
|
39
39
|
packageName: "@atlaskit/teams-client"
|
|
40
40
|
}
|
|
41
41
|
});
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
2
|
import { logException } from '../sentry';
|
|
4
3
|
export class BaseClient {
|
|
5
4
|
constructor(config) {
|
|
@@ -10,13 +9,13 @@ export class BaseClient {
|
|
|
10
9
|
});
|
|
11
10
|
this.config = config;
|
|
12
11
|
this.context = {
|
|
13
|
-
cloudId:
|
|
12
|
+
cloudId: ''
|
|
14
13
|
};
|
|
15
14
|
}
|
|
16
15
|
setContext(context) {
|
|
17
16
|
this.context = {
|
|
18
17
|
...context,
|
|
19
|
-
cloudId:
|
|
18
|
+
cloudId: context.cloudId || ''
|
|
20
19
|
};
|
|
21
20
|
}
|
|
22
21
|
getContext() {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
2
1
|
import { DefaultError, GraphQLError } from '../../common/utils/error';
|
|
3
2
|
import { BaseClient } from '../base-client';
|
|
4
3
|
import { handleGraphQLRequest } from './utils';
|
|
@@ -32,27 +31,21 @@ export class BaseGraphQlClient extends BaseClient {
|
|
|
32
31
|
|
|
33
32
|
/**
|
|
34
33
|
* Creates query context headers if cloudId is available and valid.
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* `ari:cloud:platform::site/None` from being sent.
|
|
34
|
+
* Validates the cloudId before constructing the ARI, preventing invalid
|
|
35
|
+
* ARIs like `ari:cloud:platform::site/None` from being sent.
|
|
38
36
|
*/
|
|
39
37
|
createQueryContextHeaders(cloudId) {
|
|
40
38
|
if (!cloudId) {
|
|
41
39
|
return undefined;
|
|
42
40
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return undefined;
|
|
51
|
-
}
|
|
41
|
+
try {
|
|
42
|
+
const ari = createPlatformSiteAri(cloudId);
|
|
43
|
+
return {
|
|
44
|
+
'X-Query-Context': ari
|
|
45
|
+
};
|
|
46
|
+
} catch {
|
|
47
|
+
return undefined;
|
|
52
48
|
}
|
|
53
|
-
return {
|
|
54
|
-
'X-Query-Context': `ari:cloud:platform::site/${cloudId}`
|
|
55
|
-
};
|
|
56
49
|
}
|
|
57
50
|
async makeGraphQLRequest(body, options = {}) {
|
|
58
51
|
try {
|
|
@@ -28,7 +28,7 @@ export function getSentryConfig(options) {
|
|
|
28
28
|
...DEFAULT_SENTRY_CONFIG,
|
|
29
29
|
// Standalone __VERSION__ is set from `bin/set-release-version.sh`
|
|
30
30
|
// when building to deploy to production
|
|
31
|
-
release: `${"@atlaskit/teams-client"}@${"
|
|
31
|
+
release: `${"@atlaskit/teams-client"}@${"4.32.4"}` ||
|
|
32
32
|
// @ts-ignore Jira - window.BUILD_KEY
|
|
33
33
|
window.BUILD_KEY || ( // @ts-ignore Confluence - window.__buildInfo
|
|
34
34
|
(_window$__buildInfo = window.__buildInfo) === null || _window$__buildInfo === void 0 ? void 0 : _window$__buildInfo.FRONTEND_VERSION) || '---',
|
|
@@ -45,7 +45,7 @@ export var TeamsUFOExperience = /*#__PURE__*/function (_UFOExperience) {
|
|
|
45
45
|
return _superPropGet(TeamsUFOExperience, "failure", this, 3)([{
|
|
46
46
|
metadata: {
|
|
47
47
|
error: createErrorMetadata(error),
|
|
48
|
-
packageVersion: "
|
|
48
|
+
packageVersion: "4.32.4",
|
|
49
49
|
packageName: "@atlaskit/teams-client"
|
|
50
50
|
}
|
|
51
51
|
}]);
|
|
@@ -53,7 +53,7 @@ export var TeamsUFOExperience = /*#__PURE__*/function (_UFOExperience) {
|
|
|
53
53
|
return _superPropGet(TeamsUFOExperience, "failure", this, 3)([{
|
|
54
54
|
metadata: {
|
|
55
55
|
error: 'unknown error',
|
|
56
|
-
packageVersion: "
|
|
56
|
+
packageVersion: "4.32.4",
|
|
57
57
|
packageName: "@atlaskit/teams-client"
|
|
58
58
|
}
|
|
59
59
|
}]);
|
|
@@ -3,7 +3,6 @@ import _createClass from "@babel/runtime/helpers/createClass";
|
|
|
3
3
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
4
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
5
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
6
|
import { logException } from '../sentry';
|
|
8
7
|
export var BaseClient = /*#__PURE__*/function () {
|
|
9
8
|
function BaseClient(config) {
|
|
@@ -16,14 +15,14 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
16
15
|
});
|
|
17
16
|
this.config = config;
|
|
18
17
|
this.context = {
|
|
19
|
-
cloudId:
|
|
18
|
+
cloudId: ''
|
|
20
19
|
};
|
|
21
20
|
}
|
|
22
21
|
return _createClass(BaseClient, [{
|
|
23
22
|
key: "setContext",
|
|
24
23
|
value: function setContext(context) {
|
|
25
24
|
this.context = _objectSpread(_objectSpread({}, context), {}, {
|
|
26
|
-
cloudId:
|
|
25
|
+
cloudId: context.cloudId || ''
|
|
27
26
|
});
|
|
28
27
|
}
|
|
29
28
|
}, {
|
|
@@ -10,7 +10,6 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
10
10
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
11
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
12
12
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
13
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
14
13
|
import { DefaultError, GraphQLError } from '../../common/utils/error';
|
|
15
14
|
import { BaseClient } from '../base-client';
|
|
16
15
|
import { handleGraphQLRequest } from './utils';
|
|
@@ -50,9 +49,8 @@ export var BaseGraphQlClient = /*#__PURE__*/function (_BaseClient) {
|
|
|
50
49
|
|
|
51
50
|
/**
|
|
52
51
|
* Creates query context headers if cloudId is available and valid.
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* `ari:cloud:platform::site/None` from being sent.
|
|
52
|
+
* Validates the cloudId before constructing the ARI, preventing invalid
|
|
53
|
+
* ARIs like `ari:cloud:platform::site/None` from being sent.
|
|
56
54
|
*/
|
|
57
55
|
}, {
|
|
58
56
|
key: "createQueryContextHeaders",
|
|
@@ -60,19 +58,14 @@ export var BaseGraphQlClient = /*#__PURE__*/function (_BaseClient) {
|
|
|
60
58
|
if (!cloudId) {
|
|
61
59
|
return undefined;
|
|
62
60
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return undefined;
|
|
71
|
-
}
|
|
61
|
+
try {
|
|
62
|
+
var ari = createPlatformSiteAri(cloudId);
|
|
63
|
+
return {
|
|
64
|
+
'X-Query-Context': ari
|
|
65
|
+
};
|
|
66
|
+
} catch (_unused) {
|
|
67
|
+
return undefined;
|
|
72
68
|
}
|
|
73
|
-
return {
|
|
74
|
-
'X-Query-Context': "ari:cloud:platform::site/".concat(cloudId)
|
|
75
|
-
};
|
|
76
69
|
}
|
|
77
70
|
}, {
|
|
78
71
|
key: "makeGraphQLRequest",
|
|
@@ -29,7 +29,7 @@ export function getSentryConfig(options) {
|
|
|
29
29
|
return _objectSpread(_objectSpread(_objectSpread({}, otherOptions), DEFAULT_SENTRY_CONFIG), {}, {
|
|
30
30
|
// Standalone __VERSION__ is set from `bin/set-release-version.sh`
|
|
31
31
|
// when building to deploy to production
|
|
32
|
-
release: "".concat("@atlaskit/teams-client", "@").concat("
|
|
32
|
+
release: "".concat("@atlaskit/teams-client", "@").concat("4.32.4") ||
|
|
33
33
|
// @ts-ignore Jira - window.BUILD_KEY
|
|
34
34
|
window.BUILD_KEY || ( // @ts-ignore Confluence - window.__buildInfo
|
|
35
35
|
(_window$__buildInfo = window.__buildInfo) === null || _window$__buildInfo === void 0 ? void 0 : _window$__buildInfo.FRONTEND_VERSION) || '---',
|
|
@@ -6,9 +6,8 @@ export declare class BaseGraphQlClient extends BaseClient {
|
|
|
6
6
|
setServiceUrl(serviceUrl: string): void;
|
|
7
7
|
/**
|
|
8
8
|
* Creates query context headers if cloudId is available and valid.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* `ari:cloud:platform::site/None` from being sent.
|
|
9
|
+
* Validates the cloudId before constructing the ARI, preventing invalid
|
|
10
|
+
* ARIs like `ari:cloud:platform::site/None` from being sent.
|
|
12
11
|
*/
|
|
13
12
|
private createQueryContextHeaders;
|
|
14
13
|
makeGraphQLRequest<Key extends string, Data = unknown, Variables = unknown>(body: Body<Variables>, options?: Options): Promise<ResultResponse<Key, Data>>;
|
|
@@ -6,9 +6,8 @@ export declare class BaseGraphQlClient extends BaseClient {
|
|
|
6
6
|
setServiceUrl(serviceUrl: string): void;
|
|
7
7
|
/**
|
|
8
8
|
* Creates query context headers if cloudId is available and valid.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* `ari:cloud:platform::site/None` from being sent.
|
|
9
|
+
* Validates the cloudId before constructing the ARI, preventing invalid
|
|
10
|
+
* ARIs like `ari:cloud:platform::site/None` from being sent.
|
|
12
11
|
*/
|
|
13
12
|
private createQueryContextHeaders;
|
|
14
13
|
makeGraphQLRequest<Key extends string, Data = unknown, Variables = unknown>(body: Body<Variables>, options?: Options): Promise<ResultResponse<Key, Data>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/teams-client",
|
|
3
|
-
"version": "4.32.
|
|
3
|
+
"version": "4.32.5",
|
|
4
4
|
"description": "A client to retrieve team related data",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@atlaskit/feature-gate-js-client": "^5.5.0",
|
|
57
57
|
"@atlassian/codegen": "^0.2.0",
|
|
58
|
-
"@atlassian/ptc-test-utils": "^0.
|
|
58
|
+
"@atlassian/ptc-test-utils": "^0.13.0",
|
|
59
59
|
"@atlassian/react-compiler-gating": "workspace:^",
|
|
60
60
|
"@testing-library/react": "^16.3.0",
|
|
61
61
|
"@types/faker": "^4.1.8",
|
|
@@ -102,9 +102,6 @@
|
|
|
102
102
|
"enable_edit_team_name_external_type_teams": {
|
|
103
103
|
"type": "boolean"
|
|
104
104
|
},
|
|
105
|
-
"teams-app_client_fix-invalid-ari": {
|
|
106
|
-
"type": "boolean"
|
|
107
|
-
},
|
|
108
105
|
"ptc-enable-team-type-permission-enabled": {
|
|
109
106
|
"type": "boolean"
|
|
110
107
|
}
|