@trycourier/react-provider 1.53.1 → 1.53.2-internal.fb685a3.0
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/dist/hooks/use-client-source-id.js +46 -0
- package/dist/hooks/use-hash.js +31 -0
- package/dist/index.js +9 -15
- package/package.json +3 -4
- package/typings/hooks/use-client-source-id.d.ts +9 -0
- package/typings/hooks/use-client-source-id.d.ts.map +1 -0
- package/typings/hooks/use-hash.d.ts +3 -0
- package/typings/hooks/use-hash.d.ts.map +1 -0
- package/typings/index.d.ts +2 -2
- package/typings/index.d.ts.map +1 -1
- package/typings/transports/base.d.ts +1 -1
- package/typings/transports/types.d.ts +24 -9
- package/typings/transports/types.d.ts.map +1 -1
- package/typings/ws.d.ts.map +1 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _useHash = _interopRequireDefault(require("./use-hash"));
|
|
13
|
+
|
|
14
|
+
var uuid = _interopRequireWildcard(require("uuid"));
|
|
15
|
+
|
|
16
|
+
var _react = require("react");
|
|
17
|
+
|
|
18
|
+
// this hash or clientsoureid is used to help create a managealbe sized property to store information in localstorage
|
|
19
|
+
// its possible we will just have the "authorization" as an identifier and that is a huge string
|
|
20
|
+
var useClientSourceId = function useClientSourceId(_ref) {
|
|
21
|
+
var clientKey = _ref.clientKey,
|
|
22
|
+
userId = _ref.userId,
|
|
23
|
+
authorization = _ref.authorization,
|
|
24
|
+
id = _ref.id,
|
|
25
|
+
localStorage = _ref.localStorage;
|
|
26
|
+
var clientSourceKey = (0, _useHash["default"])(authorization ? authorization : "".concat(clientKey, "/").concat(userId));
|
|
27
|
+
return (0, _react.useMemo)(function () {
|
|
28
|
+
if (!localStorage) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var clientSourceIdLSKey = "clientSourceId/".concat(clientSourceKey);
|
|
33
|
+
var localStorageClientSourceId = localStorage.getItem(clientSourceIdLSKey);
|
|
34
|
+
|
|
35
|
+
if (localStorageClientSourceId) {
|
|
36
|
+
return id ? "".concat(localStorageClientSourceId, "/").concat(id) : localStorageClientSourceId;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
var newClientSourceId = uuid.v4();
|
|
40
|
+
localStorage.setItem(clientSourceIdLSKey, newClientSourceId);
|
|
41
|
+
return id ? "".concat(newClientSourceId, "/").concat(id) : newClientSourceId;
|
|
42
|
+
}, [localStorage, clientSourceKey, id]);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var _default = useClientSourceId;
|
|
46
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
A string hashing function based on Daniel J. Bernstein's popular 'times 33' hash algorithm.
|
|
12
|
+
*/
|
|
13
|
+
function hash(text) {
|
|
14
|
+
var hash = 5381;
|
|
15
|
+
var index = text.length;
|
|
16
|
+
|
|
17
|
+
while (index) {
|
|
18
|
+
hash = hash * 33 ^ text.charCodeAt(--index);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return hash >>> 0;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var useHash = function useHash(input) {
|
|
25
|
+
return (0, _react.useMemo)(function () {
|
|
26
|
+
return hash(input).toString(16);
|
|
27
|
+
}, [input]);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
var _default = useHash;
|
|
31
|
+
exports["default"] = _default;
|
package/dist/index.js
CHANGED
|
@@ -25,8 +25,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
25
25
|
|
|
26
26
|
var _createReducer = _interopRequireDefault(require("react-use/lib/factory/createReducer"));
|
|
27
27
|
|
|
28
|
-
var uuid = _interopRequireWildcard(require("uuid"));
|
|
29
|
-
|
|
30
28
|
var _reducer = _interopRequireWildcard(require("./reducer"));
|
|
31
29
|
|
|
32
30
|
var _middleware2 = _interopRequireWildcard(require("./middleware"));
|
|
@@ -37,6 +35,8 @@ var _usePageVisible = require("./hooks/use-page-visible");
|
|
|
37
35
|
|
|
38
36
|
var _useTransport = _interopRequireDefault(require("./hooks/use-transport"));
|
|
39
37
|
|
|
38
|
+
var _useClientSourceId = _interopRequireDefault(require("./hooks/use-client-source-id"));
|
|
39
|
+
|
|
40
40
|
var _transports = require("./transports");
|
|
41
41
|
|
|
42
42
|
Object.keys(_transports).forEach(function (key) {
|
|
@@ -105,19 +105,13 @@ var CourierProvider = function CourierProvider(_ref) {
|
|
|
105
105
|
userSignature = _ref.userSignature,
|
|
106
106
|
wsOptions = _ref.wsOptions;
|
|
107
107
|
|
|
108
|
-
var clientSourceId = (0,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
var newClientSourceId = uuid.v4();
|
|
118
|
-
localStorage === null || localStorage === void 0 ? void 0 : localStorage.setItem(clientSourceIdLSKey, newClientSourceId);
|
|
119
|
-
return newClientSourceId;
|
|
120
|
-
}, [localStorage, clientKey, userId]);
|
|
108
|
+
var clientSourceId = (0, _useClientSourceId["default"])({
|
|
109
|
+
authorization: authorization,
|
|
110
|
+
clientKey: clientKey,
|
|
111
|
+
id: id,
|
|
112
|
+
localStorage: localStorage,
|
|
113
|
+
userId: userId
|
|
114
|
+
});
|
|
121
115
|
var middleware = [].concat((0, _toConsumableArray2["default"])(_middleware), (0, _toConsumableArray2["default"])(_middleware2["default"]));
|
|
122
116
|
var useReducer = (0, _react.useCallback)(_createReducer["default"].apply(void 0, (0, _toConsumableArray2["default"])(middleware)), [_middleware]);
|
|
123
117
|
var transport = typeof window === "undefined" ? undefined : (0, _useTransport["default"])({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trycourier/react-provider",
|
|
3
|
-
"version": "1.53.
|
|
3
|
+
"version": "1.53.2-internal.fb685a3.0+fb685a3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "typings/index.d.ts",
|
|
@@ -15,9 +15,8 @@
|
|
|
15
15
|
},
|
|
16
16
|
"license": "ISC",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@trycourier/client-graphql": "^1.53.
|
|
18
|
+
"@trycourier/client-graphql": "^1.53.2-internal.fb685a3.0+fb685a3",
|
|
19
19
|
"buffer": "^6.0.3",
|
|
20
|
-
"graphql": "^15.5.0",
|
|
21
20
|
"react-use": "^17.2.1",
|
|
22
21
|
"reconnecting-websocket": "^4.4.0",
|
|
23
22
|
"rimraf": "^3.0.2",
|
|
@@ -32,5 +31,5 @@
|
|
|
32
31
|
"dist/",
|
|
33
32
|
"typings/"
|
|
34
33
|
],
|
|
35
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "fb685a38120347c41a964e7a1379fbe960adb9a6"
|
|
36
35
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const useClientSourceId: ({ clientKey, userId, authorization, id, localStorage, }: {
|
|
2
|
+
clientKey: any;
|
|
3
|
+
userId: any;
|
|
4
|
+
authorization: any;
|
|
5
|
+
id: any;
|
|
6
|
+
localStorage: any;
|
|
7
|
+
}) => string;
|
|
8
|
+
export default useClientSourceId;
|
|
9
|
+
//# sourceMappingURL=use-client-source-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-client-source-id.d.ts","sourceRoot":"","sources":["../../src/hooks/use-client-source-id.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,iBAAiB;;;;;;MAMnB,MAwBH,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-hash.d.ts","sourceRoot":"","sources":["../../src/hooks/use-hash.ts"],"names":[],"mappings":"AAiBA,QAAA,MAAM,OAAO,UAAW,MAAM,WAI7B,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
package/typings/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Brand, ICourierContext, ICourierProviderProps, IMessage, WSOptions } from "./types";
|
|
3
|
-
import { ICourierMessage,
|
|
3
|
+
import { IActionBlock, ICourierEventMessage, ICourierMessage, IInboxMessagePreview, ITextBlock } from "./transports/types";
|
|
4
4
|
import { Middleware } from "./middleware";
|
|
5
5
|
export * from "./transports";
|
|
6
6
|
export * from "./hooks";
|
|
7
7
|
export declare const registerReducer: (scope: any, reducer: any) => void;
|
|
8
8
|
export declare const registerMiddleware: (id: string, middleware: Middleware) => void;
|
|
9
|
-
export type {
|
|
9
|
+
export type { Brand, IActionBlock, ICourierContext, ICourierEventMessage, ICourierMessage, IInboxMessagePreview, IMessage, ITextBlock, Middleware, WSOptions, };
|
|
10
10
|
export declare const CourierContext: React.Context<ICourierContext | undefined>;
|
|
11
11
|
export declare const CourierProvider: React.FunctionComponent<ICourierProviderProps>;
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
package/typings/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAGtD,OAAO,EACL,KAAK,EACL,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B,OAA0B,EAExB,UAAU,EACX,MAAM,cAAc,CAAC;AAMtB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,eAAO,MAAM,eAAe,oCAAmB,CAAC;AAChD,eAAO,MAAM,kBAAkB,8CAAsB,CAAC;AAEtD,YAAY,EACV,KAAK,EACL,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,GACV,CAAC;AAEF,eAAO,MAAM,cAAc,4CACkC,CAAC;AAE9D,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,iBAAiB,CAAC,qBAAqB,CAuKxE,CAAC"}
|
|
@@ -18,7 +18,7 @@ export declare class Transport {
|
|
|
18
18
|
/** Setter method for a listener */
|
|
19
19
|
listen: (listener: {
|
|
20
20
|
id: string;
|
|
21
|
-
type?: "
|
|
21
|
+
type?: "event" | "message" | undefined;
|
|
22
22
|
listener: (courierEvent: ICourierEvent) => void;
|
|
23
23
|
}) => void;
|
|
24
24
|
intercept: (cb: Interceptor) => void;
|
|
@@ -9,15 +9,15 @@ export interface IActionBlock {
|
|
|
9
9
|
url: string;
|
|
10
10
|
openInNewTab?: boolean;
|
|
11
11
|
}
|
|
12
|
-
export interface
|
|
13
|
-
event
|
|
14
|
-
type
|
|
15
|
-
error?: string;
|
|
12
|
+
export interface ICourierEventMessage {
|
|
13
|
+
event: "read" | "unread" | "archive" | "mark-all-read";
|
|
14
|
+
type: "event";
|
|
16
15
|
messageId?: string;
|
|
17
|
-
|
|
16
|
+
error?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ICourierMessage {
|
|
18
19
|
blocks?: Array<ITextBlock | IActionBlock>;
|
|
19
|
-
|
|
20
|
-
title?: string;
|
|
20
|
+
body?: string;
|
|
21
21
|
data?: {
|
|
22
22
|
channel?: string;
|
|
23
23
|
brandId?: string;
|
|
@@ -33,12 +33,27 @@ export interface ICourierMessage {
|
|
|
33
33
|
trackingUrl?: string;
|
|
34
34
|
clickAction?: string;
|
|
35
35
|
};
|
|
36
|
+
error?: string;
|
|
37
|
+
event: string;
|
|
38
|
+
icon?: string;
|
|
39
|
+
messageId?: string;
|
|
40
|
+
title?: string;
|
|
41
|
+
type: "message";
|
|
36
42
|
brand?: Brand;
|
|
37
43
|
}
|
|
44
|
+
export interface IInboxMessagePreview {
|
|
45
|
+
type: "message";
|
|
46
|
+
created?: string;
|
|
47
|
+
messageId: string;
|
|
48
|
+
preview?: string;
|
|
49
|
+
/** ISO 8601 date the message was read */
|
|
50
|
+
read?: string;
|
|
51
|
+
title?: string;
|
|
52
|
+
}
|
|
38
53
|
export interface ICourierEvent {
|
|
39
54
|
type?: "message" | "event";
|
|
40
|
-
data?: ICourierMessage;
|
|
55
|
+
data?: ICourierMessage | IInboxMessagePreview | ICourierEventMessage;
|
|
41
56
|
}
|
|
42
57
|
export declare type ICourierEventCallback = (event: ICourierEvent) => void;
|
|
43
|
-
export declare type Interceptor = (message?: ICourierMessage) => ICourierMessage | undefined;
|
|
58
|
+
export declare type Interceptor = (message?: ICourierMessage | ICourierEventMessage | IInboxMessagePreview) => ICourierMessage | undefined;
|
|
44
59
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transports/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transports/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;IACvD,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE;YACZ,iBAAiB,EAAE,MAAM,CAAC;YAC1B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,eAAe,EAAE,MAAM,CAAC;YACxB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,cAAc,EAAE,MAAM,CAAC;YACvB,cAAc,EAAE,MAAM,CAAC;YACvB,gBAAgB,EAAE,MAAM,CAAC;SAC1B,CAAC;QACF,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,eAAe,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;CACtE;AAED,oBAAY,qBAAqB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAEnE,oBAAY,WAAW,GAAG,CACxB,OAAO,CAAC,EAAE,eAAe,GAAG,oBAAoB,GAAG,oBAAoB,KACpE,eAAe,GAAG,SAAS,CAAC"}
|
package/typings/ws.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,qBAAqC,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAqB,SAAS,EAAE,MAAM,SAAS,CAAC;AAEvD,qBAAa,EAAE;IACb,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,OAAO,CAAC,aAAa,CAIlB;IACH,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,sBAAsB,CAG3B;IACH,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,SAAS,CAAC,SAAS,MAAC;IACpB,SAAS,CAAC,eAAe,MAAC;gBAEd,EACV,aAAa,EACb,SAAS,EACT,OAAO,EACP,cAAc,EACd,aAAa,GACd,EAAE;QACD,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,SAAS,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;IAoBD,KAAK,IAAI,IAAI;IAQb,OAAO,IAAI,IAAI;IAmBf,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,OAAO;IAyBf,OAAO,CAAC,UAAU;IAwBZ,SAAS,CACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,IAAI,CAAC;IAsBhB,IAAI,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,IAAI;IAS3C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAiBjD,YAAY,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAgB5C,cAAc,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI;CAOpE"}
|