@alia.onl/sdk 22.8.0 → 22.10.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/CHANGELOG.md +13 -0
- package/README.md +14 -3
- package/package.json +9 -2
- package/src/ask-eager.ts +4 -0
- package/src/character.ts +2 -0
- package/src/components/AliaAvatarIcon.tsx +5 -6
- package/src/components/AliaAvatarProvider.tsx +21 -0
- package/src/components/AliaChatScreen.tsx +4 -5
- package/src/components/AliaChatSheet.tsx +4 -5
- package/src/components/AliaSharedConversation.tsx +4 -5
- package/src/lib/alia-avatar-still.generated.ts +3 -3
- package/src/lib/character-runtime.native.ts +16 -0
- package/src/lib/character-runtime.ts +2 -2
- package/src/voice-messages.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @alia.onl/sdk
|
|
2
2
|
|
|
3
|
+
## 22.10.0
|
|
4
|
+
|
|
5
|
+
- The eager Ask provider and hook are available from `@alia.onl/sdk/ask/eager`, preserving
|
|
6
|
+
the root entry's eager sheet and voice behavior. `@alia.onl/sdk/voice/messages` exposes
|
|
7
|
+
voice error messages without importing the voice call. `@alia.onl/sdk/character` exposes
|
|
8
|
+
the character parser and default runtime URL, without importing the chat.
|
|
9
|
+
|
|
10
|
+
## 22.9.0
|
|
11
|
+
|
|
12
|
+
- Native avatars can use the optional shared GPU companion `@oxy.so/bloom-avatar-native@^0.1.0`. Their default asset URL pins the installed companion manifest revision; Alia retains previous releases independently of web deployments. Hosts without the companion retain the WebView fallback, and web imports no native GPU graph.
|
|
13
|
+
- Avatar icons nested inside a chat preserve its explicit `characterRuntimeUrl` override.
|
|
14
|
+
- Regenerated Alia's bundled still with the smooth avatar runtime; idle icons retain the same character and dimensions without fetching the 3D runtime.
|
|
15
|
+
|
|
3
16
|
## 22.8.0
|
|
4
17
|
|
|
5
18
|
- **Streaming dictation (ADR 0024).** `@alia.onl/sdk/dictation` gains
|
package/README.md
CHANGED
|
@@ -33,12 +33,17 @@ content, safe areas and keyboard clearance. Hosts should not add window-height c
|
|
|
33
33
|
scroll container to make an embedded chat visible.
|
|
34
34
|
|
|
35
35
|
Alia's avatar is Bloom's 3D character (`AgentAvatar`). It draws through a runtime of
|
|
36
|
-
static files (
|
|
36
|
+
static files (loaded on demand), which the chat loads from Alia's own origin
|
|
37
37
|
(`ALIA_CHARACTER_RUNTIME_URL`, served with CORS open), so the app hosts nothing and mounts
|
|
38
38
|
no avatar provider. To serve your own copy instead, serve the Bloom
|
|
39
39
|
package's `assets/character-runtime/` directory unchanged and pass the URL of `runtime.mjs`
|
|
40
|
-
as `characterRuntimeUrl` to `AliaChatSheet` or `AliaChatScreen`;
|
|
41
|
-
|
|
40
|
+
as `characterRuntimeUrl` to `AliaChatSheet` or `AliaChatScreen`; nested avatar icons
|
|
41
|
+
preserve that override. Native URLs must be absolute and reachable from the device.
|
|
42
|
+
For native shared GPU rendering, install the optional `@oxy.so/bloom-avatar-native@^0.1.0`
|
|
43
|
+
companion with its Expo GL peer and rebuild the native app. The SDK then pins its default
|
|
44
|
+
URL to the companion's full runtime manifest revision under `/bloom-character/releases/`.
|
|
45
|
+
Alia retains those assets across deployments. Hosts without the companion keep the
|
|
46
|
+
WebView fallback; web does not import the native companion graph.
|
|
42
47
|
|
|
43
48
|
A web app with a Content-Security-Policy composes the SDK's into its own instead of listing
|
|
44
49
|
Alia's origins by hand: `@alia.onl/sdk/csp` exports `ALIA_SDK_CSP` and `withAliaSdkCsp(extensions)`
|
|
@@ -154,9 +159,12 @@ one is the same conversation in the others.
|
|
|
154
159
|
| The chat with the call (`AliaChatSheet`, `AliaChatScreen`, `AliaChatContent`) | `@alia.onl/sdk` | yes |
|
|
155
160
|
| The same chat, text only | `@alia.onl/sdk/text` | no |
|
|
156
161
|
| One "Ask" sheet at the app's root, loaded with the first `ask` | `@alia.onl/sdk/ask` | yes, in the sheet's chunk |
|
|
162
|
+
| The root's eager Ask provider and hook | `@alia.onl/sdk/ask/eager` | yes, loaded eagerly |
|
|
157
163
|
| The same, text only | `@alia.onl/sdk/ask/text` | no |
|
|
158
164
|
| Data only: conversations, the stream, the model | `@alia.onl/sdk/runtime`, `@alia.onl/sdk/model` | no |
|
|
159
165
|
| Her face on a button | `@alia.onl/sdk/avatar` | no |
|
|
166
|
+
| Character parser and runtime URL | `@alia.onl/sdk/character` | no |
|
|
167
|
+
| Voice error messages without the call | `@alia.onl/sdk/voice/messages` | no |
|
|
160
168
|
|
|
161
169
|
`voice={false}` hides the call, but the code still ships: the root entry and `@alia.onl/sdk/ask`
|
|
162
170
|
bundle the call (its socket, protocol and audio engine) because their chat can open one. A
|
|
@@ -200,6 +208,9 @@ Mount it from `@alia.onl/sdk/ask`: that entry is the provider and its hook alone
|
|
|
200
208
|
loads with the first `ask` (fetched in the background once the person is signed in), so the chat
|
|
201
209
|
stays out of the app's entry bundle. The root entry exports the same two, with the whole chat
|
|
202
210
|
(its provider imports the sheet statically).
|
|
211
|
+
For hosts that need that exact eager behavior without the root barrel, import the provider and
|
|
212
|
+
hook from `@alia.onl/sdk/ask/eager`. The character entry exports `readAgentCharacter`,
|
|
213
|
+
`DEFAULT_AGENT_CHARACTER` and `ALIA_CHARACTER_RUNTIME_URL` without the chat.
|
|
203
214
|
|
|
204
215
|
**On web, load the chat through ONE async boundary.** Expo's Metro serializer hoists every module
|
|
205
216
|
two async chunks share into `__common.js`, which loads at first paint. The SDK draws no async chunk
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alia.onl/sdk",
|
|
3
|
-
"version": "22.
|
|
3
|
+
"version": "22.10.0",
|
|
4
4
|
"description": "Alia AI chat SDK — the conversation runtime, chat UI, voice calls and dictation for Oxy apps",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"react-native": "src/index.ts",
|
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
"exports": {
|
|
10
10
|
".": "./src/index.ts",
|
|
11
11
|
"./ask": "./src/ask.ts",
|
|
12
|
+
"./ask/eager": "./src/ask-eager.ts",
|
|
12
13
|
"./ask/text": "./src/ask-text.ts",
|
|
13
14
|
"./avatar": "./src/avatar.ts",
|
|
15
|
+
"./character": "./src/character.ts",
|
|
14
16
|
"./content": "./src/lib/content-utils.ts",
|
|
15
17
|
"./csp": "./src/csp.ts",
|
|
16
18
|
"./dictation": "./src/dictation.ts",
|
|
@@ -19,6 +21,7 @@
|
|
|
19
21
|
"./text": "./src/text.ts",
|
|
20
22
|
"./tools": "./src/tools.ts",
|
|
21
23
|
"./voice": "./src/voice.ts",
|
|
24
|
+
"./voice/messages": "./src/voice-messages.ts",
|
|
22
25
|
"./package.json": "./package.json"
|
|
23
26
|
},
|
|
24
27
|
"files": [
|
|
@@ -76,7 +79,8 @@
|
|
|
76
79
|
"expo-file-system": "^57.0.0 || ^58.0.0",
|
|
77
80
|
"expo-web-browser": "^57.0.0 || ^58.0.0",
|
|
78
81
|
"react-native-css": "^3.0.7",
|
|
79
|
-
"react-native-audio-api": "^0.13.6"
|
|
82
|
+
"react-native-audio-api": "^0.13.6",
|
|
83
|
+
"@oxy.so/bloom-avatar-native": "^0.1.0"
|
|
80
84
|
},
|
|
81
85
|
"peerDependenciesMeta": {
|
|
82
86
|
"nativewind": {
|
|
@@ -84,6 +88,9 @@
|
|
|
84
88
|
},
|
|
85
89
|
"expo-clipboard": {
|
|
86
90
|
"optional": true
|
|
91
|
+
},
|
|
92
|
+
"@oxy.so/bloom-avatar-native": {
|
|
93
|
+
"optional": true
|
|
87
94
|
}
|
|
88
95
|
},
|
|
89
96
|
"devDependencies": {
|
package/src/ask-eager.ts
ADDED
package/src/character.ts
ADDED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AliaAvatarProvider } from './AliaAvatarProvider';
|
|
2
2
|
import { Avatar } from '@oxy.so/bloom/avatar';
|
|
3
3
|
import type { BloomIconComponent } from '@oxy.so/bloom/icons';
|
|
4
4
|
import { useAliaActivity } from '../hooks/useAliaActivity';
|
|
5
5
|
import { ALIA_AVATAR } from '../lib/alia-character';
|
|
6
6
|
import { ALIA_AVATAR_STILL } from '../lib/alia-avatar-still.generated';
|
|
7
|
-
import { ALIA_CHARACTER_RUNTIME_URL } from '../lib/character-runtime';
|
|
8
7
|
import { aliaIsBusy } from './AliaAvatar';
|
|
9
8
|
|
|
10
9
|
const DEFAULT_SIZE = 20;
|
|
@@ -24,15 +23,15 @@ const STILL = { uri: ALIA_AVATAR_STILL };
|
|
|
24
23
|
* (`characterIsLive`), and keeps her a still under reduced motion. The still stays under her
|
|
25
24
|
* until the first live frame.
|
|
26
25
|
*
|
|
27
|
-
* It
|
|
28
|
-
* the
|
|
26
|
+
* It inherits the chat's explicit runtime URL; outside a chat it uses the SDK default
|
|
27
|
+
* (the companion's immutable revision on native). The
|
|
29
28
|
* colour (`fill`) is ignored — the likeness is painted — and it is never interactive, so the
|
|
30
29
|
* button keeps the press.
|
|
31
30
|
*/
|
|
32
31
|
export const AliaAvatarIcon: BloomIconComponent = ({ width, height }) => {
|
|
33
32
|
const state = useAliaActivity();
|
|
34
33
|
return (
|
|
35
|
-
<
|
|
34
|
+
<AliaAvatarProvider>
|
|
36
35
|
<Avatar
|
|
37
36
|
character={ALIA_AVATAR}
|
|
38
37
|
characterStill={STILL}
|
|
@@ -40,6 +39,6 @@ export const AliaAvatarIcon: BloomIconComponent = ({ width, height }) => {
|
|
|
40
39
|
activity={aliaIsBusy(state) ? 'working' : 'idle'}
|
|
41
40
|
alt="Alia"
|
|
42
41
|
/>
|
|
43
|
-
</
|
|
42
|
+
</AliaAvatarProvider>
|
|
44
43
|
);
|
|
45
44
|
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AgentAvatarProvider } from '@oxy.so/bloom/agent-avatar';
|
|
2
|
+
import { createContext, type ReactNode, useContext } from 'react';
|
|
3
|
+
import { ALIA_CHARACTER_RUNTIME_URL } from '../lib/character-runtime';
|
|
4
|
+
|
|
5
|
+
const RuntimeUrl = createContext<string | undefined>(undefined);
|
|
6
|
+
/** Icons inside a chat inherit its explicit host URL instead of replacing it. */
|
|
7
|
+
export function AliaAvatarProvider({
|
|
8
|
+
runtimeUrl,
|
|
9
|
+
children,
|
|
10
|
+
}: {
|
|
11
|
+
runtimeUrl?: string;
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
}) {
|
|
14
|
+
const inherited = useContext(RuntimeUrl);
|
|
15
|
+
const resolved = runtimeUrl ?? inherited ?? ALIA_CHARACTER_RUNTIME_URL;
|
|
16
|
+
return (
|
|
17
|
+
<RuntimeUrl.Provider value={resolved}>
|
|
18
|
+
<AgentAvatarProvider runtimeUrl={resolved}>{children}</AgentAvatarProvider>
|
|
19
|
+
</RuntimeUrl.Provider>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
@@ -21,8 +21,7 @@ import type React from 'react';
|
|
|
21
21
|
import { useCallback } from 'react';
|
|
22
22
|
import { View } from 'react-native';
|
|
23
23
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
24
|
-
import {
|
|
25
|
-
import { ALIA_CHARACTER_RUNTIME_URL } from '../lib/character-runtime';
|
|
24
|
+
import { AliaAvatarProvider } from './AliaAvatarProvider';
|
|
26
25
|
import { KeyboardAvoidingView } from '../lib/keyboard';
|
|
27
26
|
import {
|
|
28
27
|
type AliaChatAgentRef,
|
|
@@ -109,7 +108,7 @@ export function AliaChatScreen({
|
|
|
109
108
|
isDarkMode,
|
|
110
109
|
voice,
|
|
111
110
|
labels,
|
|
112
|
-
characterRuntimeUrl
|
|
111
|
+
characterRuntimeUrl,
|
|
113
112
|
}: AliaChatScreenProps) {
|
|
114
113
|
const insets = useSafeAreaInsets();
|
|
115
114
|
// The screen owns the whole window, so it keeps its composer out of both
|
|
@@ -142,7 +141,7 @@ export function AliaChatScreen({
|
|
|
142
141
|
);
|
|
143
142
|
|
|
144
143
|
return (
|
|
145
|
-
<
|
|
144
|
+
<AliaAvatarProvider runtimeUrl={characterRuntimeUrl}>
|
|
146
145
|
<View
|
|
147
146
|
className="flex-1 bg-background-full"
|
|
148
147
|
style={{ paddingTop: insets.top, paddingBottom: insets.bottom }}
|
|
@@ -169,6 +168,6 @@ export function AliaChatScreen({
|
|
|
169
168
|
/>
|
|
170
169
|
</KeyboardAvoidingView>
|
|
171
170
|
</View>
|
|
172
|
-
</
|
|
171
|
+
</AliaAvatarProvider>
|
|
173
172
|
);
|
|
174
173
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AliaAvatarProvider } from './AliaAvatarProvider';
|
|
2
2
|
import { AvatarFlightLayer, useAvatarFlights } from '@oxy.so/bloom/avatar-flight';
|
|
3
3
|
import { BottomSheet, type BottomSheetRef } from '@oxy.so/bloom/bottom-sheet';
|
|
4
4
|
import {
|
|
@@ -15,7 +15,6 @@ import { useWindowDimensions, View } from 'react-native';
|
|
|
15
15
|
import { useSharedValue } from 'react-native-reanimated';
|
|
16
16
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
17
17
|
import { BREAKPOINTS } from '@oxy.so/bloom/styles';
|
|
18
|
-
import { ALIA_CHARACTER_RUNTIME_URL } from '../lib/character-runtime';
|
|
19
18
|
import { AliaChatLabelsProvider, type AliaChatLabels } from '../lib/labels';
|
|
20
19
|
import type { AliaToolRenderers } from '../lib/tool-renderers';
|
|
21
20
|
import { useShareHandler } from '../hooks/useShareHandler';
|
|
@@ -137,7 +136,7 @@ const AliaChatSheetBody = forwardRef<AliaChatSheetRef, AliaChatSheetProps>(
|
|
|
137
136
|
isDarkMode,
|
|
138
137
|
voice,
|
|
139
138
|
labels,
|
|
140
|
-
characterRuntimeUrl
|
|
139
|
+
characterRuntimeUrl,
|
|
141
140
|
onShare,
|
|
142
141
|
headerMenu,
|
|
143
142
|
recentConversations = true,
|
|
@@ -298,7 +297,7 @@ const AliaChatSheetBody = forwardRef<AliaChatSheetRef, AliaChatSheetProps>(
|
|
|
298
297
|
// The provider wraps the sheets AND the flight layer: both draw avatars, and an avatar drawn
|
|
299
298
|
// outside it would fall back to the host's own `/bloom-character/runtime.mjs`.
|
|
300
299
|
return (
|
|
301
|
-
<
|
|
300
|
+
<AliaAvatarProvider runtimeUrl={characterRuntimeUrl}>
|
|
302
301
|
<BottomSheet
|
|
303
302
|
ref={mainRef}
|
|
304
303
|
detached={detached}
|
|
@@ -364,7 +363,7 @@ const AliaChatSheetBody = forwardRef<AliaChatSheetRef, AliaChatSheetProps>(
|
|
|
364
363
|
</View>
|
|
365
364
|
</BottomSheet>
|
|
366
365
|
<AvatarFlightLayer flights={flights} />
|
|
367
|
-
</
|
|
366
|
+
</AliaAvatarProvider>
|
|
368
367
|
);
|
|
369
368
|
},
|
|
370
369
|
);
|
|
@@ -6,13 +6,12 @@
|
|
|
6
6
|
* which can hold the person's own data, and there is nothing to vote on, play, edit or regenerate.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { AliaAvatarProvider } from './AliaAvatarProvider';
|
|
10
10
|
import type { AiChatThreadHandle } from '@oxy.so/bloom/ai-chat';
|
|
11
11
|
import { Loading } from '@oxy.so/bloom/loading';
|
|
12
12
|
import { Text } from '@oxy.so/bloom/typography';
|
|
13
13
|
import { useMemo, useRef } from 'react';
|
|
14
14
|
import { View } from 'react-native';
|
|
15
|
-
import { ALIA_CHARACTER_RUNTIME_URL } from '../lib/character-runtime';
|
|
16
15
|
import { type AliaChatLabels, AliaChatLabelsProvider, useLabels } from '../lib/labels';
|
|
17
16
|
import { AliaRuntimeProvider } from '../runtime/config';
|
|
18
17
|
import {
|
|
@@ -73,15 +72,15 @@ export function AliaSharedConversation({
|
|
|
73
72
|
token,
|
|
74
73
|
apiUrl,
|
|
75
74
|
labels,
|
|
76
|
-
characterRuntimeUrl
|
|
75
|
+
characterRuntimeUrl,
|
|
77
76
|
}: AliaSharedConversationProps) {
|
|
78
77
|
return (
|
|
79
|
-
<
|
|
78
|
+
<AliaAvatarProvider runtimeUrl={characterRuntimeUrl}>
|
|
80
79
|
<AliaChatLabelsProvider labels={labels}>
|
|
81
80
|
<AliaRuntimeProvider apiUrl={apiUrl}>
|
|
82
81
|
<SharedThread token={token} />
|
|
83
82
|
</AliaRuntimeProvider>
|
|
84
83
|
</AliaChatLabelsProvider>
|
|
85
|
-
</
|
|
84
|
+
</AliaAvatarProvider>
|
|
86
85
|
);
|
|
87
86
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// Generated by `bun run render:avatar-still` (scripts/render-avatar-still.ts). Do not edit.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Alia's still: `ALIA_AVATAR` drawn by @oxy.so/bloom
|
|
5
|
-
*
|
|
4
|
+
* Alia's still: `ALIA_AVATAR` drawn by @oxy.so/bloom 15.78.0's character runtime as Bloom
|
|
5
|
+
* runtime manifest 7e44cfec2bd9e1490fb90270028fd84b12fcbc019f09709af9a1b9187b36b577. It draws a paused portrait with reduced motion, 64 px at 2x, 15415 bytes of PNG.
|
|
6
6
|
*/
|
|
7
|
-
export const ALIA_AVATAR_STILL = 'data:image/png;base64,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';
|
|
7
|
+
export const ALIA_AVATAR_STILL = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAQAElEQVR4Aey86ZMdR5If+PPIzHfUfaBwFm6AIAiQ7B6Szeme7h3OatakNZuv7G8yk0ky2u7sjq30Zb9O9b+h/0DN3Q+rWVnLZlcSZqwl9TTJ7iYJ8MJ9o1Co+3hXZrh+Hvny1atCVaEKBAh0A1nxS/fw8PCIdPeIPB5Ih5fHC+2BlwnwQocfeJkALxPgBffAC375L3eAlwnwgnvgBb/8lzvAywR4wT3wgl5+cdkvd4DCEy8ofZkAL2jgi8t+mQCFJ15Q+jIBXtDAF5f9MgEKT7yg9GUCvKCBLy77ZQIUnnhB6csEeMECv/5yXybAeo+8YPXfywRQqOiEOn3/fEn/8n7f3P96fXjxr+6OLf3l/b0r/8vNA7X/486h2v9+7+jcBzeO3/8XN0/Mr8PcP79+bPZf3Dk8/S9vjS/9yyt72D5y/y/P9+lfXSzTbkw45RgvQi78XiYAJiCXpi8lC+ODfQvZ4r4EybE0TV/LtPH9hsO7zVb2k1az9Y+84h/Hkf5jFBDyhBf8T5DWn5Yi94M0Kr+Bsh4vpQN7JlsyiPtTFVy4ENsYeAGO5z4BlCtRJ9TpBx8nV//Z1Yp+cKdnbu7awL5scNitxHsV8ZEU2alY3BmBfC8SeRuKH3KP+Ilz+FMH+VNVeS9ASCHvUfY/iMiPMtF3gOxN792rED1SSst765KOLg6PDDy48XWv/pWWP+a4+r5GExMTf5C7gsNzfChUMAHBBcSzGO4Zi3VwLsFYT7N/nxN/WJ0/Ic69ysCfUegbDOr31OtbrL8NyLui7l0Af0wLOYw3CN6l7B2ovqWQN0X1jIecEsHxmk8PMaH2xaXB0cnW5ODR8tHqrfFbpb+48xcRJpgm4Jzwh3M81wnQdrObHb5SrfrekTSKD4riVB2N77Uk+4GK/oAJ8D0G83UG/TT1XyE9TnqUYTpE+UHWxwUYp2yc9QAROQjIEYEed4JTCpx1iL4HJ38kXr4XWUKkzZORz8ZbtcXRaDnqHa8lpU/ufBL9DD8T/AEdz3UCfPj+h+7atWtxxQ32tZLmuETutQj6QxH35w7yF07cP2EsfgSR1xV6kjhIfoyyfrYlpILwx5OsgskRs9rL9l1c0IdF5ayq/xPn8WdQ/I+ZgreI6O1I/Wnn5EAcZ0M9A6OV0eZo9Nr7rwn7/cEU9zxeiU6oI0rv7/1Hvf2VeLSF2gHwQU8gp1XkLODfUO9f5w7wKgN5WIB9EOyCyCCvpxeQMgMZQcIf1hwCCA+emSDSq9AREd0r3BEgeIX0tDg540TPwumZSHE6ynAiSzE+WCrv/ifDPx6e/qvpAXv7mPo/p/pn/9Xs0K3/7dboguGDO7sWNgLb5v/1zZHZf3V1yPrd/Nc3q/qBJvr+z2leBd/BsdkQbrOGZyyPF6du9y/Iyp5SEh2Di/mQ5l8D5BUG/7AIdou4PrFAAyUIEvLcHBABsGsS3q1FhDUrBTU+h0l4B6Cu8h1B2V9Q4q2glw3DothPteMCed2J+wGf/t6F99+PHE6ry47BLx1cyBr7yovN/Wlr/ljV4WQrklO0sDESvIK0dQKZHl6IF/eNtHR4rudaL3rfScBdjmM9s+Ke2cgbDKxQ+TlXxcz0TMU7P+SyaB/S9IRIxgSQkyp6RCF88scQg14BNAbyoKswmEJpATzyyDXBPmBfJgITxpKgj5IRAAecynHKzhJvirizHv41CF5JvBzXSI9q5I8lkpx0GV6NvD/txb/mPXW6QRkyfxq+dEqy6KSmydFU5WDUKO2Z5u62MPDDwfv8lnHvn37aa2854a3DdkD6gnN46uW5SQC1C34f7v3e95NK5Hv5MLaL7/EH4dxJxucVVT3CydpWPSQqVXrGVjsYkAABwEBh24dS00DSLrYj0KaWWe9j0yjntJ9jHeXYfEPQ01B/RhV8Y9Azou41zpEgD0L1rGY4y35r4SlTd5bGz4iwD29jUDmlmZ5w8EcyaY0jW9ynvQNjvT0YsrcO+8aBCdgl4Wkf7mkPsBP7l5YuxfPV+Wqt2Rry0L3KVz0oTjIAx4Ur3wNDXPU9CuX9WzefuwAwYMeH9WISoESmyrEHONaoQPaRP+bgXhXFG1D3fVp+y/OVk3K+RuJ19TgrbRgfYA+XXs6G5xXFG0ye74nKW1B9m3vOH0Uavxm55GxFyqeqkGMlkf3I6oMjGCnbGwfHeOplcyc+9aFXB6CTw/v+YN9g4rOVfu7Du5xGBxzkKEROgls/4IcFsNXpVnsaRykMxgNClgWAnQ1Ye3CJMmgdmVDPwCRjXNjIEtpJTU4+EqCXavvJnyK+D5U/hsePAfmRMgmIN1l/XVS4M3TBt3nvXofie87LO0yCnxB/xnkS+h6c/Ji3r3cV8Zu0dyKS1liWLfTYGwe+g2OdM7+DETcb4gKksrtZltiPePX7+HHmABNjP4O/WyCDEKmwa0QIsXUxjW5srb1pK8cX8E+BElT6qTgKyF5RjENxmCv+kKjwNuH2iLrdUKwFdDcCTB6eXQ5Q5zBNHmPCneIud5r0DBPI3mzOaupe1TQ6Ai/7+koyfOeDOz36vkZ4isfzkQATdPMZSOyqVTqEr3R6mE4/wOse5WqxVU+fsSZdILumcEnBgEIpb11by2XhzAEYjLDqlYN0ZIHpOhV6UFGCLYXJral0JiIP9VFNOGSvQEbANw7yRzWTV5kIZzihM3HLnXJeD1dQ23V3+K5dP008nfLME0AneC+/g2jy8mQ5yxr94vlOrsLgy146h69kkjz2pQt7doPVTYsFetPGJ90gdlup8BligJaZBHbN4FdO4SumvKLQV3wqx1ppdCBJ06Gb79t3g48Tpa8UvGGw03bLo/SeaQIoL4gTdKhNlnpj7Wm2msMisoexsF1gTCDmoDUJIOxgINmksDcMmzSbmM1KnbDyyZM1aY6i3k2tpV23PgYTbQvtfmEM462T8sam/PYAVODRJyqD3AVG+eC4j7vAUVF3womcSLw7jEz3jfTrMJaPVsHfRDARdhY8qeOZJYBCLY7OVv4S0OtL6ZCD2+UQ8b7JeyZkmBdpD18x6eMVZbeNQDFMbnQ72Inuo+yZLWUQFXwLRKzg5yNFRRT21jHEhDjAV8RjTIaTBqc4utLC/plsdhD9D57428EzSYAQ/AnIrflbSQ9f+3ypNZClbncUxVz9uoc+HGV2DNBNVfIRqZUA1tcWLh3eN/msRVcab61kjRiMNRhvUEZ+wxVsSpsh78gxyJiOEY5ldjYEx7CyEcL41kA7NNGxSTvCa7ZP2GO8niOi/Oqp/KgEPa2aHnOVaHSplVXfar4VmS6n8ETKM0mATz74JMb0TN9o2jPqpPcAv7kfdzFe9aqviMg+YojOsODHjDrZLa6VjjR/duDpU5ORcjWxwr5W7wZFa4q1rRGsq1i7oRAbbyjq6+n6NquvQyf4Ns92G1d+zOD28jYwot7vV69HfYpT8O6EtmRfXVeGF6JbPfjphfA8sH7Yx6k/kwR4Kz5Unmqu7Gm0Vk5k4t4Av7fz4e/HzHz+Pu/5i572q/BjD0PPAuGp7SOqMKasmANzcE3xk6FmpIaCN0pYEnAr7fQLTmL/ImFyG+ttdtdpNyixZ1e/ov+G1FTZh8HkuHn/gs/nQ0NhbmwjtbmvykPnmPU+77EHXk9o5k9lmR6OWdeaH5pFtQr+NE3Nb12eagLoRP6r3r1/eq9XP5gZtF/Klv7y/t6lLDtUjnCc29yrIsoXQDkLASlO8Ip2Md5ViETkAVZQHPRbYI0abPUQ2o2MGqyDtJBvGCTrX4BdtlXW6xd1o90GrL4ROC9LhPXzYa6Aqx0d6hH5TKt8ABzim8I+JsE46X6vOtb0OpjCVa81R3P/dI/7GPxTTQDOJ/yqN9irY8vR8uG4pKdEs+/7KHtbVL4fxQy8gj/04BgE4yIySsoHP0kYd1ZpYX1RCojgMFs95tQARUeWdfFBhx1IETzc7k+RVdcHY7XeViAxmQXOYPxDoMmHZO1+hdz6GriykSdmPkcGF4ZVGY15ekH5rcDzwZABp40R+mO0lSqfjVqDmrR6qln1+UoAXo4ETHDV8+uVTmg8N3eth5cz2pLWQYWcyjy+7zX7Eyf4E4i+rfwBRSIcE6f7JZIhcehh1BNeviOEffOiJG2wDwIYUO89soAsUM8BfKbwoY0dPPsVYJWOpLMpK/huSnFo75ZtwNvYPozpOSbHVcJn8IygwdoLbGSvO+mM74BzNv08iXn1Ho4OtVtBmUnTy+sadiLDWYYBzx/DEr+4ZQLY5WwHbjtKj9JR8JVugpN+71wU3lXHb5Vw40G10ioPcovfDwd+zwe/deNH/Ozz53TQn4tzPxAn/HlVDpEOEyUCTIAAwOJP0HTOIw88PZbR4SnRylI001ZAK03RondSImMi5I7U0IcndNc5vhlbBTTnSa0t16WIycO4gkOywkImY8BTouU5riFrwXiDzcna1ySCb8+hbQtWD6C9QNlOyiDDxi2ojes9n4Q8hLTE18E+tg2Kuv646aqRlp6fBMAE5Nq5c6WZA+M9S5XJofnFbO9yT/1Ixi9agLwKtX/Jo6/xkk9DeBsQdxTAOGM8xvogKe/5iEgRgPbBuATOKGHBSRn0RtrAcnMZ841FzNRmMV2bwWx9Dgusr7RWYO0pE8FzpSp3BHNmN+hIBNAmDJ6jkDK+CHVWQ6Es1Nlu/TPaa2QNLLWWMNOcxVRjOuBBg+M357HQWsTy+vG9MrA0Sxs2ZhiDvF1LqBtvOmzI51roc3BrU7WdIPGq/ZzDEOfTryJVp0kU5vgtT09kB7hw4UI8NHSk4jQarsf1cS/Rq/TVH6vDj1XlXa72NyFygiHewxVegYQ/QKQLAFilqxCgdABhq8JgzsoYVAvuEoM/U5/FveVJXF+8iWsLN3Bz6TburUxiholgQWilTXjbCSwBCnhzLmF2DevrJtsCtsoXW8u433iA6ys3cXn5asDV5eu4uXIbk7X7mGnMMUFWuBu1OL7CAm3zL2DXYXxOeamcQ85Tl7y15QC8V2GbcEoJ+GMUbQ0xEQbomWoN9WebAJxu+Nc7+oEm40l/r+uLd2klOugid9I5PcOpv6nwb8KFh7wjENkLCFe72D2ebIg2Njx4hSB44aAH6QhPh6aop3XMNxcxVX+AW7W7uLZyA1eXr+EKcY1BuMGg3K7fYYDuY7ZpgVhGPauHvp4ZyRVEeyy2sgq0xwltlNm4BehwKPu1uM0vpyvB5mTjPse+E8YuEsDGv8rxLSlu12z8B1jgLlHnbtHijhXG5sWw0J4ip5wHGRaop4ywcfN5sB4acu9wivxiyLcCoMdJVHHQkmu4J7J4H8sIpyd43/71zjvJXPNaLzekUe2Vwy5xp6LYvS6Rex3iTgncEQD7FBgVQR8gZcIxGfDQQSUY2g05q2DGI+X9vgj+/foUbtRu49LKZXyzcgmX6ldwuX4VF0kv1i7jIuVXatdwq8FAtKYYiMWQBLZ70FjubDqXBYYw5rrAg9SOdAAAEABJREFUc9WhCErGBKilNdxvctz6bVxZuY7LK1z5HMPGMf4S6xeXL4f5XFy5EnYHS9IFJmuNSdtJAgbZAlzYXqW8aM7B2sIcbWKEcnL0g60UodMi+i2GapzBRSg5k+PbHu6xDEyAg1+I5oAKIj7oJW6Pc3LUVjvpGXHuVSocgf12DhkWQS/5MntFBJuw+cEr5nVzebCQt1VoW6+twBmu6rsNbvu1m0wABr12BdfqN3C9cRNX69dCIlyqX8al2tUgN93ZdB4WhJRJlDucQ9PZFuQwjvEcJ/BtamOarq1cW/2L6TLu1idxrXYDV2vXA65zDjdqt3CjfivIL3PMS+GWcAXXqTfZmMJ8awErrRqa3EEy3o5sTLO7lnI+HJfxDhdsY9tc8jrbWOg/oYrjyZF33A5EstrWfmS/7ZTHS4ALkLvDI3Hqop5UWru8wzgcTjgGngE+zUmeALd8znBQ+MACcNvnCRsdvDK74NBE3i7cwExnUWRcFg3fxEK6iAfNB7hdv0sH34Q5/CpX4c3Wbdxu3cGN1i1cbVznjnCVuByS4UbjFqabM7DkSflNNbcb/Bxs88SiOcLqJN9FU27fjawJC+Rt3lqucKWHcevXcbtxG3ea93CncY/8nTCnqyvXcJmwW8E9JqolrI3dpA1LpoeCbxMi1gedIk4yeOSpnx4vAYY/cRXUknLk+iIBv1ThMCd9iMHmd31+vgRGRNDH54AKXZrwKmwc5gO5RxUmgSUE7cEc5rly67yP21P3JFfVJO/Bk837mG7NYDadw0K2iAW/iPlsAbPZHB60pnG3OQkL/i3eBqZbs1jOVmDBVAuuGW6veuYWrGor0sYMYJvpmX6DgbMHyjk+4U/yFmB2J9tjz6cLWMqWsMjEtOSca81jtjXHt4MZWNLZfOcpW+HYnQTgtVmwbUyjNq7xNm6oW7v5h9SIyTsIgkefdqphgdlpH6A86JJWT0kjHYpcbIE/Ktzuebu037UTBj3P4OJCukcwWTesjXVzgMEuOFBPEwyYvfOv8B48xdV/j6vtAekiHZ9qyk1GrHcH9rzQ1BaDsgTb/u9wt5jhDrDCLTxlIgWH06bZtyBvBntesKCF4DOIM3zlM8xzS19mQBu+gcyMdUbOGbtuT3lTm53ksLnbLSxrZ1sgNodwfexnvGUBfWDXvgZsDnXqGvs0sKMEUPDDBL/yzcygHJfRC4240vUA4Md54bu46nv5wSJCcTE2Y+ONGrp5qxtM1gULTtHf+IxZZQ+AswzCg+Y0ZnlPt1VlH1ysezc4P6RMjJqvY456tvpn0znMh9W6jDrlllDenG4wxxtdB9Op8wneVreNOdV6QBvzDKrZaKDFMWxuhofHz2Dj224wzV3KktVsmU0bLvQprpedTRaul/xDxfQeEj5ZgduROT75361/UvaS9NZbfhjej3mo/dOt3bwIrn6tqkpIALvQboS9VnlF66DsaCChirVzRsz4oq9nAthqXGgtYY4rcImrucZbQmZLiardxexYP0sOW3U1X8N8No/pbJaYIb+IJr/emY4BReA5p+7dIOVuYSt3Np3HvdZ9TBILvNU0tBESzPraWN1jG09fMDlaIVHsreEebxeWCLZrWALwAk0twPobQoWnbpsmpyco3aREm8gfQ7yjBLiAC1FP/1i5FEd9IjrsBbsEsosTHiHtFdUyLzIkgAW0AwaUO+PD07OrbMMcEHRMt5AxQJYAKR/gbNVb8FeyGoPYpKopbmSSs+HAlgS2Vc8zcDMpEyC1BFhg3xanSB2OwbiTpw0zRVhOGVJ+cKoxyezePsXV/4B9l/wy+3JczWjd+tMAu3YXZeeU7St+BdZnijvWAnefOm2ZnB3RQXfHLl5tUu26jRAgnKbC098+E3j6QzWqWlNb8/HJjhLgTO8Zl/RpJRbXzyFHxGOUU+NOIPxMaasf/GIF6VykTbENuy5D0Wa8AV5hq48RDdQcsKbOdl4wGnwgs621wTeCVtiCGTFOoiihXzBYSBBW6xKfFzoJwBXdZH/TBXVZjKyCJm1sW6113ucX2dceLOf4cGljp0g5Tbug1TG6OWvJOLc6bzVzvPXMMvHsFbJOW56JYe1rMiAXdJtY5W1yoaY8zGua0lOWvSngMmbjVr1Dz+2cdpQAk9lk5Hyl4uH6GbhhqB/2Gfo4vTJXvwXfcd5CL+XXSYd2eOV0CLbDYHIuGBhyno1tfQuCZhrajPftJLBEMAd7dqI2DW5dMmRY4W1ggW8Icwy+BTTVFudG22agDZrLx+LEjM/Hy+jjZrif12zrR8pLtglap43HVTrCEy3uWBZ0uwXZA2HG4Hva3rgXpYXJglIUivUxwIKPOie+QtQ8fNOXvU0mqH2b044SIOFPkCtZo9pCZjuA/edbAxy8xEk58J3PnBfSlZO2wAUU/HrKoIZ2XoZRxopBoAtD4EmtPfC0bvx653BgK8V4xndDxPLQ88GvEV4DbSeo8fZhW7H1gc2nGzZGFxhtDpxblJyEM7uwK+dHJtgJ0kefzIZhvaZdlsHkHdpmhPdZG4ZtLc5nUTI3p57vvPC1jB+4Kf/WZUcJIL38opu52HktZ973MOAVIlYvwnw0jyNfzYBaYO1CSE22BpTzwqjE+dPp1qakXCjsp8gpm00WQD3rwH4wsLqdYqsu5YpvcttvEE3y3ibGzh0zxhAhmJyr0RxU6i7U6a4+ijcbm+oUmVDQNYoCkTUCiAoPF6l4fnqRHtG4P06joal/PtV/8X++WP75+z+P6LV1vdba2Ky2swRozjPSIgy+QwZCHLdqYfAYfE4hBKtNLWBWJzVnUCcPrskIZjQMbKac06PzwYrF5yFdytcHPtg0ObtuVEI7O3nqeFKlYQPId+tztpTk0TWelVWVXLyqvr6+2tLhlON1KoExq4ZVs0HcPlnUDIDkf0JOBCICHsLDqWgV4secuIMQd0wiPaGOtLZ0YM9Qb/87ve8kHz7m/2dgRwnACYGvV8J7mtCxDLwXcxiTAMWqtdVcgD6Hoag/RM2hDHwIOB1nusYHm0wSikL/QG1w0ze6TQj16TTEiAie+YYqkNA7PwOmE8ZrD5KHKpcLdSPmuWN/4ynFTo5gknN4ZB9paxjtguS8iKAMkREI9nMzOOLgjsPpCSbCwVopHRxopaVjw8dc28qOyGN14upHCCYvLg8aGChWLGjbBb0Tgk39EICQCJw7zeRy8myzFWUIOhSxGaFO/lHFgl+WEqr8cF2NqqiQRpYE9Kj1Nf+CXkVxBOOskNLJTJqIrzUJETMNImoKG3dSaMjUjRSw+gawKeWQMI5QRwVBBPAiFIMA9jBhD5EeF7iTHu6wa+lQw/eWBm8OOjzGsbNO/PkPfIi2BOA9Hz7jegm/cinCdm4BI4xfBVAkSUgaBrqgQc6ugZq8SAqTGU8KgixC0HNm25cZSYzeqAeD8SCGkyH0x/1IXJL3F2lTQNp/aB9Wj7jqS/R7VSqoEAltOaaBtbXVNiU2V4PNvYNNtTdoEMoIFutuJKKkTPQT9tHtIIXH4d0hfhcYSjQtVfoqjm07Lo/VKeMwnhlggbNgGs3BhGAC2Aru3BZCknTJu9sLntSu1GwU9qyeo5MBIQksBzj8tooFzYI/VtqFvaU9GC2NoByVIc5B6MH8RFPGk4TC4RxcWPUVlNHneokelChxwn4QbPegKary2nkhlhA5uCDyBraxmLkNQSEnKUJKNZoAfZMQA/TBXlU5SsuHY9XBFFkpqcw4U9spdtTJNoCmjRAyAAwIH68seB2wkSvZApmDU2S9PXnkMvajzHheTJBZuyVNoDQRqDmJEDo84Wbc43rQF/WiJ6qgJAmlYpobIne0cg1H6GW/4XgII8kwBqN8B8h75mcaesiGJUBJyuiVPgyHvyFUuQvEtCiQh/Q7As4375twXEucXoTdw5KHSWXXhZ0eXcPxuiKiQhP8DoNR7rK7M6+7NctGXX2g/+o/u1r5+fs/j9i+7eK2rVkotvgVIMugqectgMG0Fe59CKQFsQNl8OkQTpht5JkkgQ9y1o1SBqOEmbd2cxJbrUpXC90W8R5exa7SKPaUd2M0GUFf1IeYW7LpbwTwMLljb7vvWxLYSq66KmL+gZaxxRGBY6KCQf7twW6M8a9HexFrwodGPve252smbJwCQru269j89ia7sa+0F8PxMCx5zSbojw6sM2ELfCPQFALCWNYR+aGcgucjoNcSd9kB8XIgcnKYjXuxjKF3+EZAftvFbVuTin7JqxeX8utfAyorvA0sM/aE1sg32Ziybv6AenawyZMagVqdYN1WfqizWrSFTlYvGsibQyNuu1Wu+l3JaHDoWLKL9/QBlHl/tgCbDlU7xeomT7hLVLiKe6QaAtDD4JdZj5gUUmh3mEKQU+tfQhl9/BuWEdgu0I9+VJkUCRKmRwThX64NcoKID5dlV+LK78FwNIT9DP6BZB9GIkuAKiL+4XGPwndGaYMpyC+uPoFqPzFOfx7JIAcq3o0ON131P7/3n7f9fzx3tLftUhuuZbKCuvOykGXpNAe+D/X3+Qo4zYAvetUGt6XMdgGLowU3BJYMCzaC6XVPwBxrMJmIwBzbE/VgNwNvK2o3V1bh1IS7gCsCas4hrG5BshU/4PphtLcd/IRJIcJLFoCm0TlYRxeENs2Gbd/90odBGSQGYHyRBKIMAy/Irk/YuSwlBr8Xwwz4nng3xpNxHEj2Y5T1XulBxL9iZwMP62MA++bAmkNYM5CsKRwSXGQOnhfvYb/BjENxjNvxIXGtPSvIBk4fPF3GHQ44wd0CnOgaC2srbm1161rvVG+aRvUlVXnAed/ixV9j4K+RGs8k8NwVuDExEJTx/kB7gSe1Qh4G49djvZxXLyKIXISeqApb+fuTvbCtdVc8CgtuVSpI6AcHx+kIz44bfAxb7ZYkpjcYDbDegxIDFDH4gvZBhuYhYgxlJAgQiAgcdc22JYEl0ZAMYRhDYBrAkiCif+1aBMIxI1S50wy5QeyJxxj8/TicHMSBeD9sHj3SQ+2o4w887mE+yiH0L5//mACq46o4yrkc9uL2q89GNNaeu7ib4ALkUUO5Ryl0t3809lELK71zUm7egUQXueK/4HL/Al4vEneJeS5z+24dLpaTzLtz0sYrZxkErAe62YnTFhGIk5AAVSbALu4Atq1aEuxJxmArrc/1ocS/iCFwcDxHsJU4yJW/L9kD07d7sN37I4lgh4jQK0K2DSOs5SWvUAU2tiWBJaD1H3XDGJNdGJFh9GkfEo25vCQgQRIScne8C+Nc+UdKh3EkORQSYNiNhOSImAL5GF1nAaSNDsM6DMgPEYEIdxtWzW3mR7rRBDF3Wj4M6gEuwmMicsSpjEtUHnPeDVSb1RKG4TABwRaH26LtoaaffvjT7Oi5o/UDY68upC56kKjcQao3U693Mq8z3vsVrn/mhELDAx7zwGZtlowWKOpGCxTTLCjlwrlbEOzd3XaBIb7P72bwD5T24XDlIHEIBxOyXswAABAASURBVMsHMF7aj0OlcRwuH8Kx8hEcrxwNOFgex2g8gh6+CUTdARAa7yp0HnKAFADbWeCcIGLiVF0Fo9EI9sf7cCA6QOzHvmgv9kZ7AvZF+0KwLfgHmQCmtyvahUE3wOBXmB4JI8GYcam2A8gY0hlW2qCAzsKGYLc1cvpWGHTHPiVV6RfFCHvuEtVdzmejoulAs9EsowxH+ZblkQob9v4G2ucbmWv5umjEt0OdheoS700NVWSkrHLO4YFvNRlgF8sTJblZ1nMG9LnAggAB1gD5IRSWXDm8yx+uHsbrvWfwdt/38EfEO31/hB8O/AA/GfghfjL4I7zb/w7O9r6GI5XD2MWHx17Xy0DG+Zw4JueYGy3OlBVshwo4orCfQ5XPEGPc2g+VDuJk6TjOlE/j9eQs3kxex5ulN/BG6SxeK53GieQ4DsXjGGPwq1Kh912wQU+EsXnpgTKA2BzU5uJ5qD2j1wyhbVWHuy7g4cRrhdfVH2UYlJYfiPlxCPduOTziNuDwOMcYtKVLWSSVeormPCcw7b3OMivniWXlwyAp3xXJcVZQDrIeFK0pdHinbryhIyDDeiIx+qN+7CmN4SiT4JWek3i1+gpOV0/hbM9rsKCf6TmNU5Qfrhyi3m4MxAMoM3EiOBrZXrFELGA7UNmVMEg7u+3hrjSOo8kRJsIJnCq9Qpwkf5yywxiPDzD4Y7wdDMCeOZyNyes2F5gPjIbAmoyLI/CdgKKTFHzLgi2iAqt6TALTD4bIm50cjiLuBr7quTbVZT2pS5PJyow7N3VOtrrq7Xul28oZ6HI6mK3EUpc0nlM+FBKTIpik2hQvdp6hbyrnSN7ObcLZUmFN6Z4eeRGBiAGkAASdI5IIlajMoPbDVva+0h6M8xZwiLeDQ9zuDzI4dnvYk+zGSDIckqXK7dsSR6TLEHh0T8WausFmKyLC24BDcQsa4KfkXfEI9iZ7cDA5gMPcEexhb5z83ngP7DYx4Pphq9++U4hN3sYhHgqiBbIbtroJT3R0jS/QpQvjaRN0MB3LokwAjUUloajsVUuCNHL1SN7D1sfjJcAE9FbtVkbHNOqZLkTQKSd8HgBucbjbgNxnAqxwIilnR8KpKkCeJ5b1vFC2UaGcMYD50SAiiLkLlLmie6MerspBJsII3xBGMZqMwL7324rvjXpR5bZd5so1fVvFYgaw+SFsonmICIReEWc0RxQ5JFGCalxBf9wHG8feSvZwR7BkG+PD33A0hH7Xh4qUEfPP2epHftAXdAD59nUXAS5WuAWdOygM1hbqDLzVc9B1tmMU/VVhBhlsI2y05wv+NA/esSCRZAYIRwTeey+QzU681M2aNpcLn33fO/detq+yr+GqbpEfyOy18CacuwKRK/z9+jYnNy+KBrekjHUVTnNTi3ZhVAAhHQhEBDyxSA5HaqA8chFKLkFv3IO+mAGPKmBCwrGNBds9hIoGEhbhOCAKCl6SQJzAERHHLEcl9EZV2G4wlAzCHkyN76GsJAnHd4Agv1q7rg64EdrKXY+sLTeaKjzBB2msQbsPjLbt0b8cJC+Bb8t5O86F2zxzttvUXKcmTAL5ULKTvzjZqDhdSGM/qdDr6nCJDrgkghtc+lPstkA0KPOgkDwg2NmxTl9EaEKY7hEs6KX2So/EBXlnp8HODppd7SCAiKzCCRwRMQlszDLHrHAnMpSlhESSMB8RyYMPHu2gWIA68EBn5ZPxBv6i6g0W4G6wk+0eYZnTFgvs2gKleeONfBu4b9O56DvXipqV1E1rjJu8oK+5IZ1X9Rfoi4sQ8NlAFjnplDxAoQidxILiWM9bvY2g2uZhtOgTrp5WWWfi8cxiVQPZ3FOs0Im5A9fx7f6UBs66GG80BwcLg4PDkgc6lAxEJMCkOZAfbSPKcdegO7DG24rvgqfMs27UbgPsHqadG330uT0ssMOI7lB944mc6DuRpn2VpUyj6bK4u8LvAyo6CcG0iCxx/2/CiRcBDOg+KOuu7oS3izYnhwhapbvz+np3W8GbjoH1NgHnCnBOYZ5GQ4UiE1jdKHiQ5xmh2uatHmDGiCKIfCNiMJUrP0cIMAMe5KSrQbdOIXWDmTWnYoyCWuMqz2nbTYNfZdS3nJOW/S+mxiq7FOfOmeameCIJgA/hxzHeHGxlNYFfoVPqnEQmtC7cNlnajlqdMYw1FFMz3rC+3i0r2kjpKp4fLiY3dFqs0o2iwWQF30WFEzOAFyEiQPsaIICInXIqIu06KQRmLoAnC3whsAQN4Na/GnjFKs+Ahz48YaNDKDSQFGV9VdQWV5NTqsG5ZZG0lqVRijlm19h7mxkO1nh5gX6rk4Br/kPJGnFvmpXTjA/BEHEJBGW6hlQi8vItB1ntrmS7wWooJgvMI05b6dksCRZwzqBT25QSKyYgRRtGAg8eZpewBHgYDHrRZslQ8Oy2vgSbFBq14YJ9VkR4CnLSUOh3EQ8Ru73WxcmSUyyIuKUYUfNW5RpH+ZA9Ni9u86adt7ghx0jHkRNX4mT6nUThf2gE0UQgPGhTNkYhphoCUEgKinDQjVxcvK5Qa59YDQ5vV6lQcIFl8yplhSWvG9PWtMkJxwwQAVkrpAIRIWXpogL+tevoOor55aZ59mzkQlTSzqrnZMOuYLMgD1Jao+JqEWPDyRgDK1ZsTFaFTuUUwtZPUROQZZpZcA6zKLmFltSa4xjIcOZ9TgKbHk82AeoPBL4i4lwszpUgKHP7jx0rnKRsOoutGorpG12Htu8QqNlY1w6rm3wjbNW2kf5Gsm4b5ENQO5SpYIHn5Fg4R2uwUFP+0MToGivmJFKQglTyE0TIiU1AAFIRUVJCUzjUmQtL4mQOIjNeohlE0UJS1QbOnPH4ayi2ONwWbd+qSay3WQ+MVYgu3thusHVtsWkTwal0pF2G8TmlIykLK6rQoZetPYBKFNPpNBkY6rfb2cQK5UVptwc5ZSE81C3qubIpsXFVSC5otpvJUyV0K+ZF+vDDnULsT8SM5TDeqptQoX5QXNfOKu/70lDBAkSm+cr9wJC1GjOo1RZ2HTrVYD8P4XmLYiHaovnbNeXGOQOWR02kM5KSM5DQy20HkwTvGmUD261q7RZwo2vgqWOg3hr5RnWqrimm0y2wegBPLN32bA42fgcMuiWlfYwJlPosnLQVBYMGFL4gFbETRaQsMMBEbRjfAQBrN8B+BxTJKKgJgw8n97j183Vbp30qCyO9J2oAUvw1mB/cLbD5kcdo8/bHbuGEwAlC1o/AiwOhMKd0gYKHHBoE1DHKgNp9FIWTgz5PJifpBIG6XI8IML4NCjgibZEJbZvQoMQTTVKDTFcxmVUDtRNhczKE7YZjWSebS0fPGF6vCE+8cCOBI8MCESGoRGqMkH2omLAbdhkCJgCW2ecur+cWP8DdE3Uz0tNTw362TUDFbhUPGVsrWB+eta1PqFbMfVNz2m4x2oXgz3DCqn/ZHkQ8sQS5rbgAtsHApFhTN5lhI3l76DXEdNcIWDEZYWPaGEYt0B1YYoZ2nkw9J+RWi5gjWBURxg1EQY3PATFqJ6NAqKNzmNVMRLi9K4OvMxC9zeesG1EU3fNlzCXVpCET4oUNnV5bMG6LtsdrKrNbRGxW7BK2QHCoObMDIGynrOerP68rg2nyAEaDBTm4HsgEO+upRc7mteX4tG86psv+RkK1OAUZDbBYW6jaXFi3uZiajZ1bUYigDSElGC3Q6yLCBpZAhW0AhCXUCyqwKgQIQEjrBmO7JOLsI9td2rouEW7wtf9+Uo0W6ov1FDs4OJUdaD+mqrKfwRxGFoGaYB3MmdZmNA8wVRn4tTwDHGRGrb0bbRntmg2ztQYWKKIjs8lQt1M33mQG4w3kzVYB07UABxTzYOPa4LMTi4hFDhARAoAABhEyVjoU2EpubZbdHKZFLHCse0yCy3DyNfPpsjp3q1p1D6K4tTw5PPl8JID5GTwseOa0AKvzCoLzjHY70OoGduQFYhUWYAvsNmE2Cjxkn7aKNk6oMw/jDWxDB5wsS8gBO7XRaSaT96dNzpmqoatRgwgjzMiJkFphpMTAuojAeHD5iQhAiAgJQZ0gJzUdA3hwOGimDc2yKfIXFfKROP9xFCXfJNXSHY2G5oZnj9Xe2v9WRvVtF05h27qPVPT27blVV+f5LAr+FGz/MghoMXQZJ01CE7oOdJ4lSYAphaDlTtXAK7z9SELQAeaEtWjr5Lrsx8sPtswux6JJFHWECnUox0bg1EKxNjKmbnrKk4nygLPWGdNsWYtRdmgXESEnDGggpAJYodwCKvR6AOsh2KQipgAEPSeetAWRFbbb+/0kgJuc/2X17itezxcK/4Uv4aLE7u6IlBj84RrO8Ml/gpOl8nYLp7Jd1UfreX57TqIo5fTrgF/gJc2r+hqn1CK8BYmU16EwXunhDjpObbetq9s7dQHra7zRgCI5ij5F3Wghs7E8YOPxhNDPZGqyjcB5hHYqsJ89f6BdNxtkWWWbFau03SPCqyYfCFkJKxlYQ0WQ1wsKIOhJkLNmD3rL4vBARK4iwueU/VfA/T1n9SsBPnVwV9GSKZe0ltA71wQ+zDABFd4bsIPjiSZAVsmYnKWsCWmqjxbpqEXxUmOwUjqcVU7fAqJth9Ox7AC25eis3rYeA2irP7QXfDelLWunfQRYG2VBnzTISPMxbEzaLcYmxRYIMW23c+IICLZoo6BUMnnhb5GcEyFjxYJaUHparN6hAtaV8OKQEg1xssLX50Xh51xxMsmkuEF845x8JjF+7ZH9mhP5HbLsm8ynd8ulobmh/rSGe79N8eH7nhZtxvkktnnmdLapuQ21tDfVpWzROyaA99mKZhL+gSifXVNu36qF47agFjTq5ts+9UKAuwIb2k1OmN5DNk2XWCNvB4qE/tMuFElhMuMNxtOPVtgh2Am8tXWjrdfOIpHcQSJkCGGwQZYBBNp1k+WgiO0SQcUx+JGriZMF4YpXkbsQXIfDZY7wNekFhARwvym76HcuwldNlG6g2jNztfdqDaMnWo8bfPBwxJMr14BqWvHaYthUWnRey3tk6j3D5ZkAdKDvhubBsJVvQWvDtENwi/pm1KxuAG3LjOarn+PYuBZQC2bgOY92HZR1g+J8XpQHnvZyW2aHoFCJjuMYYONFGHGCBQisQISwYBsVig1Wp+cp8gx6A04XiLvKoMPhM3HysYp+JOI+5mr6XCX6KoK7kvT4Wwdbp+4f//+Pzx/88GDt7X/zdksmxMsOt310Ha6Lf2Jsi5ayLOO27KHMABZSOny9I1kPwQ4U1KdzO8H2+S6Q+fDQ5wtKXX0Eum2abj4+bTPwsL4MngXw4eSgTgg6KXU77UEGsFsOtvESQ84YDWA0IYCYRwkRgYiBMgFYAULgBdKhLnXOLbtI7ksiF/kT2scSuf8ogl8Q/yHV7O9i537bcAtXZ5ZqM9dvL9Vx7mft0fFEDk71idgJRtIqp6ytrOS1Rj/Pe/X8kQIP6OxpOnOOzl9mQFIChhCL7yhzAAALyElEQVQYrn5P5c6KL3ij68EIWD+S3PkMjDG0j4dhAWMgqZO3sW72WLc+oBtzW6aTw+S5jLrUW9PP+hIcKFyrzUGMY6REJMRXRAArpCICFsIoQU+LGBXAoaX8EUccJqlwnbjoRL50Ducl1s9bkp1vRfFXLS9X7uyauXNzdmbmzLkzK2998lYqmODM8cQOTuuJ2cKJ2oksXhyup17nBO66d/I1A/sVnf2Ner3OQE+RNvilWikH+Q7YFnijBiZMqIOHEoAAhIhAZBUQSrvqIgIRQXEwtIF9KJiMYC6jhgWWbrW6JQETNYzdmR8nQHUUMIMiNoZwLASEkxgvgYUADHQOAUSEAOxEtuac3BSRC4jwCfGxOPdpBr0YI7kbVbJ5zKF+4t0TLXuvf+/cexl7M2eEM8ETPZ5oAuA9+LGxsWYVIwsSle6Kd9eg7qKqv5T57JpmuMdVv+S9T+nMjEmgvr21K4PQCTovU6kAHm0CCLARZCM51h6rthjsYBuwsfJgk+cgphPmEPhcZu2sIrQZs9YsRKQLaPNdFGwnQhGoOHpEkMLJIhxuMfDfuBjnXRSfdwku8m5+qzTgZ9LenhX7D3FlQnxAfo/nzPHED/dELU5AcQbp1ftXa1KWWWmmd32rdT3L9LJm/opXf0u5O9CXNc20xZWWgbd4pYBeZlHQAunqrOhjbA1h+0YA5QQAAQ+a5pn2LQnWIoxpCch5cH4wBBnrCAg915xEaJUFuXWIsMJCJohEWDHvEmK/yol4FU0RoS4O89zyb6uTKy6KL8YV+sZnd8TPTd9eXl75aPmj1vt8rcN3cHB6T24UYabKhPi3P3m7ZU+pcWVpLhN/O22l19TL5czrDQZ+ChkWvNe6V6T0L/MCIOUplO1PSKhKSBsgXYVV2N5dOklAIXkbM4clBMcOtwFSCvOkND7X5TkvZtbAmpF8bHJW2ijmIGTE9BzTSTSjbgOQJYjMMBnuidPb9MGdOB6e3Dt8Ym7/37y9cvbDs82ffvjTTOhLfAfHE02A9fPdV3mrUa3WHiCr3NDUX0HmrniPO0yEGVEsqUeTjvbkGYG8t5DQUfSR7AhUZunugw3qDCgKcMh2oDkPcB45GJEOz3bTpiZ7sQg6NkE+ADzIi4QTgoxsoOZdZxVLAEnFOX7a1VmJ3H3novvw8iAu6+xQaWg5/IaP7/6wKT61UeVDyfYzq+uuPusFdzXLuBPoV3THV0wEPh/oXQ7O37SxQoelBNYAj3mYz7uxoRkqcBfgXFjIsJBhIcNCZsNeQciu+TzJWOCDEChYESFPABDwcJKJSIOVedI7Imr3//uRYC5qZCvyb6Ql3Dmp+Z2Xp5oAxdWUq+WWZqX5RobrXFG/BuTv1emv4eRzEVyFyJSjg0SEbAFqySpAPgD5YasyQHkmuHxpuoicUlUgsgpWYBApZFZt8xBWgJwIRFZhQpHVugh5EIGyVQBWOxCRUA0n8y4hIhmchn++xaf/y1C5HKtMohwtNSu9KZ7hwek9/dHtvxyaX5lfTqJkUiP9GpJ+5sR9RsfY/76AdVxV4DaETgGmRDAtwCwTZB6CRRXwvkmAIL++bjoiYrpzzII54cqibIEPW8ukDTg+efMpnDwC0D44SKgbbYseIta2DrSfd2szIgIW8IxAeWIhL3yqQEtEV0Rkjqk6SXoNMa5nLp7u1cpyLaplD435HQq+kwTAh/BvHXurgT4s1KH3vJavZaKXgOwrBuk8A8RkwKe87s+4M3xJR12k7KpAb0LkDgT3VqHkDasycUHnJiDXVeQqcR0it1UwBSaQCOyHFtuGQb4NhitUsPYQVrsQVFjvpgh1O4FsThEUgIKKcPZAxrktq8gstSadk1sKuaHwd7KoOddMk/qR0vQffgIIRIXPA/ZfEp89d3apZ7BnWqLkJiPCbwT4nOvEvnv/EoJfUvdXdNhvFO5zOu9LEblEXAngaxMI6lwJELlicie4ROd+5RwuOJHPmdUXxOEbtl0npuBgOwhXIh+7IJ7jcAhRFIeQMZBsq5huF4QGhR0lnAARMfue82mQ546kk3ByUwU3fKy3NZL7PRhZmO+db3w4e8Vjg+O7EtFX39VQq+Psq+zj20H1QdJqXYFmn3rnfxm56D84+H/vnPv/EOHvnJP/RvqJxOBPocJPpDlc7M670jok7rMojj5xJfm1JPIrF0f/4CL5HW18LZHYrWWW/Io4acGFVen5GgYIVEQgQoAwuk1Q3frnMC86IS9gd+U4Zp/5LXy41Slm2k1e5xWOfdVnejep9M9MzU59p+/72OSwqW/S9PTEwt1g/9/sXzn8yzdmj547e+/ofzp948BPjl0qJ8NfNUvyVeziLxibLyDuAgN3/lGg/nmN8UXskgtlV7rAmbOvXoBTUnwFwUUBrpHeZXBmGRC7J9uzQUYZqwDpjiEiECEACADa9mT4UMcHPiezarcuyLVIcEkjXBYvN2vp4uz5K+drJ35x4jt938cmxzNJgPVzEYhiAvpg8EHLtdxiFkcPSpHeQiZXGPwvIdH5rdCE/yqR0iW+Wl5vZdEt56LrLip9Hfn4MxH8mvZ/xeAYtfoNyqYZqGXKeVsQL0JuJ2BnEUE4jBSAmq2GOswx+HwOwVfq/Bdw/KFH40vc6e7W42jlvffe80Ibof8zPj0XCVD44At8kfnE1xfShcVln8y4uHIvyuR2uSQ3tkJF5dZcc2UybbmpVNLpPtKoXrkTR+k1l+Fr55QJBAZfzgPyNWN3hQG4yRjcg8g0nCxQXiOarGcAbw2WlGRCEZ67ILzHU6Ii4GpHTQXsDyaV0J7eouoVdue48mXk3DeZ02se3Pr7W7P14XoDfw0FAkiebXluEkDoMfv+fYK/gM00Zxqzs7Mr4wPzS3sinV9ZkC1hOq+OZIvL95dXrN/Q4pHl5eoyk2iJSdTkj1K45sTxoVAvqPhPnchvJf+HF19w2MsCucX6jIgsE3xwQ6aizAXkACBAG7w5MXYipiM1YQJJ3v8bKvC7hnyiwCcRot+Jc1+Ki67FPrlXiXRu16FTtbf2/7/2bEAVPBeHey5m0Z6EMBoyIf7Pzv1Zar8nCL+Lyy9ONo6eO1rfCqZjume/ONsM/T6Rlr1xHEsXl5OmzCZRfC+J9DpX49dO9FM4+QQgRH4nkAsiuCwit0UwDegCA8lE0BppfS0k1J2zhzu3JCL8VoE7IrhEvc+ZGh8zN/6biPyDjRNBLvJ3zzv1CmbvoFaTCUllYsLjOTqeqwR44n7h7+hjmKrviXReao3JVpJcKfvyp+LcRy4CgyS/ds79RiI5LxGuEHxjwH0GcxoWXMEc1kDzOmRWLFkEd2nrMpych+pHDvJLj/TvEeG/QuXzlYZclZWFqcXW4vKZM2fsdoHn7XDP24Se5HzEdhTuJrZD7Ob3h8P//vDsnv94bHLc6c0E7mqsyUWJwW8N4K1BPmMgf8vA/ka4hZN+LCIbgmY/MXAn+I2ofhZF7rx3+qWU42+StHnlwP9z4uaef3ds0sbb+7dvLtsvfDIh21r5+I6PP+gE2MyX52q3+KDXtyxJ60Hms+twkW3f/0Ugf+sc/h3r/5d69/MM+m8fhv+3KvJzwP3fCvwikui/eN+6kLSSmxVgbs+RN5r4PTpeyAT4u3N/5/c09zTqtXiR9+cHUGZEnHzTAM6nkf8tt/OPHe/jSRb/KokfhkvkH0wn8e7TRiQXoRlfPXunh5IjK9gPJtfvTwa8kAkwgQn/s3M/8x+NfdQ6tXCqNj+gS1jB3Fx5brqcDN4vRwOTC74xOY/6vfnGw1jg84TpoFp9YP3m2f/L5pcNnEGKCSh+j44XMgEsPpYE4V/enJPU7tH2lvH237y9Yl8o9/7t3mX7zWIrmI7pWj/rb28uMiFe+HBg9n9f8MImwO9LgJ72PF8mwNP28HNu/2UCPOcBetrTe5kAT9vD27T/rNReJsCz8vxzMu7LBHhOAvGspvEyAZ6V55+TcV8mwHMSiGc1jZcJ8Kw8/5yM+zIBnpNAPKtpvEyAZ+X552TclwnwjAPxrIf/7wAAAP//ciIE7QAAAAZJREFUAwAWD7JKiLZApAAAAABJRU5ErkJggg==';
|
|
8
8
|
|
|
9
9
|
/** The character it was drawn from; a test holds it equal to `ALIA_AVATAR`. */
|
|
10
10
|
export const ALIA_AVATAR_STILL_OF = {"preset":"blue_beret","accessory":"none","color":"orchid"};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ALIA_WEB_ORIGIN } from './origins';
|
|
2
|
+
|
|
3
|
+
// Literal optional require stays directly in try for Metro's optional-peer resolver.
|
|
4
|
+
// This neutral subpath contains no React Native or GPU module imports.
|
|
5
|
+
let revision: string | undefined;
|
|
6
|
+
try {
|
|
7
|
+
const companion = require('@oxy.so/bloom-avatar-native/runtime-revision');
|
|
8
|
+
if (/^[a-f0-9]{64}$/.test(companion.AVATAR_RUNTIME_REVISION ?? '')) {
|
|
9
|
+
revision = companion.AVATAR_RUNTIME_REVISION;
|
|
10
|
+
}
|
|
11
|
+
} catch {
|
|
12
|
+
// Hosts without the optional native companion keep Bloom's WebView fallback.
|
|
13
|
+
}
|
|
14
|
+
export const ALIA_CHARACTER_RUNTIME_URL = revision
|
|
15
|
+
? `${ALIA_WEB_ORIGIN}/bloom-character/releases/${revision}/runtime.mjs`
|
|
16
|
+
: `${ALIA_WEB_ORIGIN}/bloom-character/runtime.mjs`;
|
|
@@ -3,8 +3,8 @@ import { ALIA_WEB_ORIGIN } from './origins';
|
|
|
3
3
|
/**
|
|
4
4
|
* Where the 3D character runtime (Alia's avatar) is served from when the host does not say.
|
|
5
5
|
*
|
|
6
|
-
* The
|
|
7
|
-
*
|
|
6
|
+
* The engine loads character assets and working motions on demand from Alia's own origin,
|
|
7
|
+
* so hosts need not bundle the entire catalog. That origin serves it with CORS open
|
|
8
8
|
* (`packages/app/worker/index.js`), which a cross-origin module import needs; a host with a
|
|
9
9
|
* CSP allows it with `@alia.onl/sdk/csp`. A host that serves its own copy passes
|
|
10
10
|
* `characterRuntimeUrl`.
|