@taruvi/navkit 0.0.34 → 0.0.35

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taruvi/navkit",
3
- "version": "0.0.34",
3
+ "version": "0.0.35",
4
4
  "main": "src/App.tsx",
5
5
  "type": "module",
6
6
  "scripts": {
package/src/App.styles.ts CHANGED
@@ -29,8 +29,8 @@ export const appStyles = {
29
29
  },
30
30
  rightSection: {
31
31
  display: 'flex',
32
- gap: '10px',
33
32
  alignItems: 'center',
33
+ gap: '10px',
34
34
  },
35
35
  modal: {
36
36
  display: 'flex',
@@ -108,8 +108,9 @@ export const getAppStyles = (mode: ThemeMode) => {
108
108
  },
109
109
  rightSection: {
110
110
  display: 'flex',
111
- gap: '10px',
112
111
  alignItems: 'center',
112
+ flexShrink: 0,
113
+ gap: '10px',
113
114
  },
114
115
  modal: {
115
116
  display: 'flex',
@@ -152,7 +153,8 @@ export const getAppStyles = (mode: ThemeMode) => {
152
153
  minHeight: 40,
153
154
  },
154
155
  appLauncherLogo: {
155
- height: 24,
156
+ width: 20,
157
+ height: 20,
156
158
  },
157
159
  appLauncherHover: {
158
160
  display: 'flex',
package/src/App.tsx CHANGED
@@ -4,10 +4,11 @@ import IconButton from "@mui/material/IconButton"
4
4
  import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
5
5
  import { useState } from "react"
6
6
  import { AppLauncher, Profile, ProfileMenu, Shortcuts, ShortcutsMenu, MattermostChat } from "./components"
7
- import { Box, Modal, Card, Typography } from "@mui/material";
7
+ import { Box, Typography } from "@mui/material";
8
+ import DraggableResizable from "./components/DraggableResizable";
8
9
  import { getAppStyles } from "./App.styles"
9
10
  import { NavkitProvider, useNavigation } from "./NavkitContext"
10
- import taruviLogo from "./assets/taruvi-logo.png";
11
+ import taruviLogo from "./assets/logo.svg";
11
12
  import type { Client } from "@taruvi/sdk"
12
13
 
13
14
  const NavkitContent = () => {
@@ -69,7 +70,7 @@ const NavkitContent = () => {
69
70
  <Box component="img" src={taruviLogo} sx={styles.appLauncherLogo} />
70
71
  )}
71
72
  </Box>
72
- {isUserAuthenticated && userData && <Profile userData={userData} onClick={() => setShowProfileMenu(!showProfileMenu)} />}
73
+ {isUserAuthenticated && userData && <Profile userData={userData} onClick={() => setShowProfileMenu(!showProfileMenu)}/>}
73
74
  </Box>
74
75
  </Toolbar>
75
76
  </AppBar>
@@ -93,17 +94,15 @@ const NavkitContent = () => {
93
94
  </Box>
94
95
  )}
95
96
 
96
- {showChat && siteSettings.mattermostUrl && (
97
- <Modal open={showChat} onClose={() => setShowChat(false)} sx={styles.modal}>
98
- <Card sx={styles.chatCard}>
99
- <Box sx={styles.chatHeader}>
100
- <IconButton onClick={() => window.open(siteSettings.mattermostUrl, "_blank")} sx={styles.chatOpenButton}>
101
- <FontAwesomeIcon icon={["fas", "external-link-alt"]} style={{ fontSize: "10px" }} />
102
- </IconButton>
103
- </Box>
104
- <MattermostChat jwtToken={jwtToken} mattermostUrl={siteSettings.mattermostUrl} width="100%" height="100%" />
105
- </Card>
106
- </Modal>
97
+ {showChat && siteSettings['chat-url'] && (
98
+ <DraggableResizable onClose={() => setShowChat(false)} initialWidth={Math.min(1200, window.innerWidth * 0.9)} initialHeight={Math.min(600, window.innerHeight * 0.8)}>
99
+ <Box sx={styles.chatHeader}>
100
+ <IconButton onClick={() => window.open(siteSettings['chat-url'], "_blank")} sx={styles.chatOpenButton}>
101
+ <FontAwesomeIcon icon={["fas", "external-link-alt"]} style={{ fontSize: "10px" }} />
102
+ </IconButton>
103
+ </Box>
104
+ <MattermostChat jwtToken={jwtToken} mattermostUrl={siteSettings['chat-url']} width="100%" height="100%" />
105
+ </DraggableResizable>
107
106
  )}
108
107
  </>
109
108
  );
@@ -27,9 +27,9 @@ export const NavkitProvider = ({ children, client, onThemeChange, appName }: Nav
27
27
  const siteSettings = useRef<SiteSettings>({
28
28
  shortcuts: [],
29
29
  logo: '',
30
- showChat: false,
30
+ 'show-chat': false,
31
+ 'chat-url': '',
31
32
  frontendUrl: '',
32
- mattermostUrl: ''
33
33
  })
34
34
  const appSettings = useRef<AppSettings>({})
35
35
 
@@ -50,7 +50,7 @@ export const NavkitProvider = ({ children, client, onThemeChange, appName }: Nav
50
50
 
51
51
  const checkIfDesk = async () => {
52
52
  const fetchedSettings = await settings?.current?.get?.()
53
- const frontendUrl = fetchedSettings?.data?.frontendUrl
53
+ const frontendUrl = (fetchedSettings?.data ?? fetchedSettings)?.settings?.['navkit.frontend-url']
54
54
  if (!frontendUrl) return false
55
55
  return window.location.href.includes(frontendUrl || '')
56
56
  }
@@ -97,7 +97,14 @@ export const NavkitProvider = ({ children, client, onThemeChange, appName }: Nav
97
97
  // App settings not available, continue without app settings
98
98
  }
99
99
 
100
- siteSettings.current = fetchedSettings?.data ?? fetchedSettings
100
+ const rawSettings = (fetchedSettings?.data ?? fetchedSettings)?.settings ?? {}
101
+ siteSettings.current = {
102
+ ...siteSettings.current,
103
+ 'show-chat': rawSettings['navkit.show-chat'] ?? false,
104
+ 'chat-url': rawSettings['navkit.chat-url'] ?? '',
105
+ frontendUrl: rawSettings['navkit.frontend-url'] ?? '',
106
+ logo: rawSettings['navkit.logo'] ?? '',
107
+ }
101
108
  if (isUserAuthenticated) {
102
109
  const userDataResponse = await auth.getCurrentUser()
103
110
  setUserData(userDataResponse?.data || null)
Binary file
@@ -0,0 +1,3 @@
1
+ <svg width="20" height="20" viewBox="-4 -4 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M18 0H2C0.9 0 0 0.9 0 2V20L4 16H18C19.1 16 20 15.1 20 14V2C20 0.9 19.1 0 18 0Z" fill="#9DE5FD"/>
3
+ </svg>
Binary file
@@ -0,0 +1,9 @@
1
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
+ <rect width="23.9828" height="23.9828" fill="url(#pattern0_182_203)"/>
3
+ <defs>
4
+ <pattern id="pattern0_182_203" patternContentUnits="objectBoundingBox" width="1" height="1">
5
+ <use xlink:href="#image0_182_203" transform="scale(0.002)"/>
6
+ </pattern>
7
+ <image id="image0_182_203" width="500" height="500" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEsGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI2LTAxLTEyPC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjMxMzY5MDI1LTc5NjQtNDE1OS05ODZjLWFkNTdiY2UyYTQyZjwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5UYXJ1dmkgTG9nbyAtIDc8L3JkZjpsaT4KICAgPC9yZGY6QWx0PgogIDwvZGM6dGl0bGU+CiA8L3JkZjpEZXNjcmlwdGlvbj4KCiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0nJwogIHhtbG5zOnBkZj0naHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4zLyc+CiAgPHBkZjpBdXRob3I+SmVmZnJleSBDdWxsaXRvbjwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIGRvYz1EQUd0VlRGVlFtdyB1c2VyPVVBRjZvbllrYTJZIGJyYW5kPUJBRjZvcDdFYTJRIHRlbXBsYXRlPTwveG1wOkNyZWF0b3JUb29sPgogPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9J3InPz7Ltw9XAAAgAElEQVR4nOy9d7RlRZU/Pmv9vuv3m+/MOM44Yxgdc2DMY85hzBFFzFlRRwXMmBHEgGIEQel+99xHQwOKGDCCKKJgAEQxoIgioeuc+zqQWoR/Tq361T73vub2ffeeW1X7s6vOe68+a+31mqbfqb13pXOq9v7sv/u7jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjA5iYau5ZW/J3KsYmP8pVP38otT79kr9AStH2T9/yf7dD4qy/on9eW6h9AX27y60Py+2Py+1P5X9uc3+vNr+vM6KGRf7jL/2lL7K/nmr/bnF/vdfrPzRyu+s/LKn6nN6ZX22ff5p9r+Pt//ms0Wl39uv6tcVldnLyiOL0uzR22JultpPGRkZGRkZyUCbYb8yT6YN0m6WH7Yb6wl2A/1xs6kqfeXkBrwKZOvwZaD+vv1z375IHGhfCl7RH5jHLA7MHVL7OyMjIyMjIwjHbDV3pg3bbnJvtPLx5ou6rH9q/7zUgc03iVjbLytUfabd7DfZP3/Qbv6vbjb8beZWqfsrIyMjI2Odo79k7tQrzTPtBvUu+2V9rN24zrd//lvqzXO1CZ1KNCcUSh9t/3v/vjKPyxt9RkZGRgYcmypzO7vJPKOo9LvtpnOc3Xx+Yb80b0i9Ea51sb6+pijrs6yvN/Qq/eaeMo8//hrzr6nHQ0ZGRkbGKkCx3dyagtDoqNxu3N9bpXfaa1ps31xuN/qv2r55f68yT7F9dpPU4yYjIyMjIzHovpvuc0d3u5el3qyyBG/yv6Ro/IXKPGeTMv+WelxlZGRkZAjjqG3mn2jRb45x8wa+ZsVu7r+2Pw+j+/jUYy4jIyMjA4TFgXkQHc8297Ed2GyyRJfrClV/y77A7be4xdw19XjMyMjIyHDEhsr8e7+qX9pT9UkjApXUG0qWDklDpNNE1Js97Vj5h9TjNSMjIyNjDIuV+S+7UL+zYU/rwKaRZZVIk61Qf7NX1q/pD8zNU4/jjIyMjHWJXmkeYRflw4hhLfnGkGVNSE/VP6P0RHpBTD2+MzIyMtY06Ji0yQXPR+lZpIW48Sv9yX5pHp563GdkZGSsCdCCahfXL+RNPEsyUfoSoqxdWDJ3TD0fMjIyMlYVepW5vV1ID6aFNPli3mHplfXXrI/e3qv0/xZV/RL78vMsqtC2MDCPdRH6t83v2N9tnkHPKuuvp7ar29Lw8u+XWesyMjIyZmDDVeamw4ImVLoz9aIdRS4tVH2Gtblo0urspmo3i9O9nqH0geh+oDKtPjoQo94wq4BSA3W/p+ofrpccf2vrV4jXAN0HGRkZGasSRN9JC2PqxVlArhtF3W8elkmt92m+nluObe1G+Am/DUUfC+8PpY/ztPPQWc8iW5ua7tZ28sGwvnr9szVXxEbpq3uV/jzVsEf3R0ZGRkanceySucXoi+7S5IsxQOwG9ath4RaqvGaeTgVdQvxin/FWvw29/hm6bwpVn+tp+35Btlbm9uSrUbW64+ymeEHqfoSMBdsn/bJ+1UlbzP9F901GRkZGZ7AwME+jvN/Ui274Yq2votMECpAqKrMXOr2JCsN46WS/DJHtE4ZVztx1QB852+fdnXzb1E0f+npVpiVavf9KFMOFMvdF+icjIyMjGRaU+c/h4qy3pF5kQxfmJohMmYdK+8puZI/01W/zleafUe1THIO3fwbmwaj227Cw1dzHbpDXpx4PQaLqc6kIUGamy8jIWJXoleZ+djH7UvLFlL8Y/zyWz5pNy1M/5CkB3QH7tk9f1Kj25+pHtehTjweG0OkHleZd3GZuFctnGRkZGcFoalSr+ozUi6fD4up0YkBR6LF8R8VD/O0wj0e13/Sd74YeMTebytw69tnlqceXgyzGfBnKyMjIcEavql9mF9LfdWChnLWBX2NfNE62m8LrNypzt35p7u/4e2+N5UO6nvC3q34Fqn3iNPf27XZza1T780C0rC46NbEaVi/b3y+3/32ClW2px99MoUpwlXl0LB9mZGRkTAXVF28is5Uuky+M0xfLM+wm8N5p97xNGpnThmmeHsufVCnOe0Mv9btQ7VNeu3f7W8zNUO3PQ1PL3kGnvtLvW/G7W819hmO1/lbycTl9rJ5bVGbvWL7MyMjIaLB4tfkXuwgdamVn8oVwxQZX/4hYz2hzbLPB/tsj3Z5p9ojl15CgtKIlD9wXdkP/jHf7281NUO3Pg/Mdv6pPbnsOBRLSyYYdK99NPV5X6q4vKar6tbF8mpGRsU5BX2MU1NOk5KRe+HaT+iz7c3/Kb3e1hSg8XZ4t6c9JhBy5E889qn37InSMb/uxA7xcdKKa567PIwrX4VWDJ0ufsDR1261ekr7MyMhYh1jYam5pF5jPDetHp1/sdttQtpi7htjkaMsVaF+2oT8w9wjwwYmo9u2mdkos/wfr6Hi9Q6dIvs+mF9bU43nKxn55v6pfJ+HLjIyMdQTayO2icnjqRa114Tbm733tco8mr38q4ddZ6C+Zh3j7QNXfQbVP1xW+7VNwIap9F7gy2S1W5lFhz+/eS2uzsSu9JZSVLyMjYx1jw3bzH8RNnXoRc5EQ+yjQzW0RrU9C+7YNC6V5YsCGfgaqfaIt9d7QB+YxqPaddCzrbzjpFngPbX93R+oxPWdjr/pKvwHt14yMjDUG4p9uWN1WSfEMSkULsdO+rLzZbbPUn0H7uA0U5ezvh/osVPshxC290jwT1b6Tjkof7aaX/kTQ81dJpbjmjl3Vz0P7NyMjYw2AvmjsQrE18QZd2Z8XOv+O0mWIrXYxPMrx+W9H+7kNVNTD22+qPhfVvvX/r73br+qXoNp3gW3zILcNr/5G4POdxx/xLozGbMLNvf6JfRF8INrPGRkZqxDENJaaEMYuvj+2m9mLSB/PwKyLQmy2bZzm8vyFsn4B1ttz9FL6bf6+078Ctv9b7/5T+vWo9p10HL54uvjljyHPt1+95zj7XtVfod+hsUtjOOkcomp/lbk91tsZGRmrAsQBTgFVKRchK4uT1ah8ymjSEXGI7XRc6fZ88wiMtx31CopbqM+DtV/qXwb0ISwP3klHx/gHkpDn2znxg9Dxt6jMf1ON+qRzqtKfRBbsycjI6DA2KfNvduIfkWzBUbokJq9ZDGP231zr/qywgDDX5y8OzB1YzvbWyz8X2m4qZ8PaV/XPvdsffaXGwkJlHuCqG+X1+z7f84Ro27RnEKmR3djfn+o43rZ7ZeyTk4yMjMggvvUiVRQvbRZz7lvpy8JzM/O+J920w9zG9fnhng6DbfOKAL/+ANV+0LGx0r9Fte8CysBwHh8BpV17pT7ex34KJG193nDOnZ9kzpX1eXRqEO7tjIyMzoHu1lIxYdEC6bqo0L/zfP5mX19QXfMubui0MQT5GJuH/v0QHVDtu4DqB7jqRdzvvs+3v7fRx3YiA3J5Ll3fUBpkko290p88dsn8o7+3MzIyOoVepd8TmyxjRA17qC8taL+qX+rZ1sHe/lD181xt8H02BxRLEORr4JG3fen7ZpAOkYOxPMahNxELpW16+t8rdYyuAUb0yXFTQ5VWMQsNZWRkAEGpLHYS/ybqolHqHXR3SEVGQnSmhc5vI6lf7O8X/RbH50+9H5WC64vGlIV6A0qHgoIUA3Tol+YJKB0c9XTcbPVHvZ9d1S/xGoP2BSDEhlGBo4OtjlfF3djrk+naIkTnjIyMyKCjtSI+XetWytmed584D97VrwLyb+n40fH5UXnc6UUoxPe9Sn8IpkOpPxHY//uidHCBbe86R98c4/vsxYF5kN+GXn+NZct2cxMqgWtle6z5SqdPVt7I0TsjI0MYxcD8DxVziLgwXE6lSmH6K628dAgo3Wl/r+/4/KAc91DQl1NgH8D4ve3zDgjU4SiUDo56bnPcbL2DJn0DM+2YvRhhE9Uk6Ff6Ta7FZyDzV9U/i11cJyMjYw5oMSjifpVvQxeK8K10RSlBIe0UZf1Vx00KRtjipldY9oHdtF4I00HVrwzc0H+H0sFJT8dsAIraD3y+F2Mi92RqHDSXrT/f0aSexdrYK/1mlP4ZGRkMUGoOfSVEmvzXNXfklfkHuB0ehCHDDb3+YUg7lLvu1ka8Smu9JXOv4D6pzCNRevQr8+RQPSj3GqXHPBALnJNegSl1xI/vY3tfmcehbaQ4FIoBiBY8p+ofUEon2o6MjAxH0P1ppI2cvog/O4sMBmKLXbz8FqCwYLDCNScYmN/toNO+of1CJW5RevSXzJ2Cx0hl9kLpMQ+unPNUcjTo+aUuPO0/GGziLvQH5uZWn89FmuPX2HH/cilbMjIypqAozR7OGxNEzJ7yNvl9FYUeE7rSviLLks6Dbe9LgX1zrYAuoZvBZ9G6zNaxPs9Jp8DUQwpS87I/wssfvTDFmu8U6EeMktI2ZWSsexSBgUvMCf4acbs8c+VDGbDco4njHbkXjkFeU3SE8biP6fKHsDGif4nWZRZ8qsKFPd883m9D19ejbZxEv6pfF3neb+uX5lnSdmVkrEsMCSmSVXQ6TNI2u3A83HPz2B7aVuGa8hRY+MUXTZGcwH6hCltofTy5zHeXgKyDEDjfoVsJYUgbBZn62a7MwyRsXQYjpZAnSn9B0q6MjHWH/sA8106sq5NM6FK+AEdR6Xd76VPqLwa35b6QReEo7yv9BsZiC6/XbvvikFB9+so8A63PNNj+v8x5rATGfbgHT46k0u9F27mbPpwXLfb8pxMRs4ekfRkZax7EW528HONw4/iNpJ10vO21cVT168Lbcl7E/oS0cbY+4Rz7vco8Gq+P2ZMxTmCsdW2wG/qSq06hrGj+RD/1T9B27qZPqX+feB24rl/Wr5K0MSNjzYKOoSOQxOxwbUPMzoG5ua/ex2w1dw5py7MAijhT3KiUbXD/0QsfXCePanSTwrkK8UETje2oU0gJ1aaN0jzC137JQDIn/yu9JQLj3GaJtNWMjDWLSOlom4+/xvyra0EO+4JxWwlbbfv7eG4al4e2NaLFdW1rK9LOafC1fcIPv5fSy+cLeFIWBuaxUnotw2uTrcztgtvxDNSk4kJIO5fhnk5YnzIiaNosuXbYF4c/bxyYe0rYmpGxZrCwZO7YU/U5kpORqCXtovu05Tbt353gtFgJkGcQiJ7T04ZeaFs+wU5E6IG0cxq8uetBfnDQ6+vBi32pPyel1zK89GFUgrNz8due9p+ItHMZroQ/40GSRNREbIqia0lkDv+MjFUD4mGXDnyzi+3CZCRy83dOCyOOs30Znl/MIxvMMzlt+rQlebQ4qrYV3pdV/TIp3Twq0k0T0ZMN3ysaDvGOrx/oKgBp6y49Sr2/kw4TEek01+3f9yTXFCtfQlLfZmSsehQMpjC3TVBfPusL2y5Cn3ZcLOABTwtl/QLPBfNKbps+x6iSdb7t198rWP263dxaSrfQ2uw3jjfzCCnd6KjXRxdOnAG9DPjaLlFKlqrGOc7zj0/9fWUeT/frYmuM0hdIzpWMjFWDwr36V6gc3vYG7RrNS7m/eNvrU/02Cn5VL6/60wHlWV3hGrsQqy8mwSoOovRnpPSiO3ofXbjt+V6L2L45HmHnOArHYjG27XfOegadholSyCp9tdS1XEZG50EBaVRgRGqCNRSnDmQXxALn+szFbeZWKPsp+th/0eCTd3iVaB2YpyJsnURIZP/E4ilO9lGo+svBYy+QQ90Fds48z0cXdntl/ULPvrmBrlMQthIWB+YO7m3P52GnYj7O9Mdh6867ULZnZKwKjNjBLpWaVFa+5HrU6JN33C/rF6F84Jvni9okKL/cvc36FYg2p+jgmeM8oVdlniKh1+468q4ErI7PltCr8LieQtxpj8qZ/tXLfqVfj7CVQLnfzu1W5kkuz6S1oRA8GSQiqnyvnrEuQHds3guE60RqSi3W+3jps2Qe4rFQwe7Rfdi+houVPgTRLpHkeLR7AKLNSXDSwqzslNBpEpuvNP/MGo9CxW2s7z7ovrHoCtFm4RlYRpkqiHYJPsRSC1vNfbyeXZpnSgXi2n76Xb5Xz1jTsJPzrRKTZ7TZXhBCz0h5uh7tXITwg+89KMlGZe6GaNtuND93brfSn0S0OdH+81kLZaWPQes0U9eyPo2jq0SusrX/8+4bq/4zok06pva1vT8w94C0XeorXNsMqUlPwZUctsI5a9LVMXgJMjKigwK6RCZNyc/99WkLcY9eOOa+3yi4ymd2Qz3T3a/111Dt7mrfk+Z2xUYRiS+dAKjwtRGtk1eQGpCPP+De+XBum5716a/jtMVMVZzTD/Urub7IyOgEhvdVftHczhuO0tcQgQRXR5/FinuPPvwi8LS1MntzbdzVvqq/49H2hah2CVTyldvfSH3m6svMlW90DiyOMgt2k77EYyM5F9Vuv9Jv8rKbrr+Y1ee8mAQBLy8Llbm7GGe80h/h6peRkRRNyVOP2s1+C0Z9NoqO1T7r+x5tsxjKKKXJ01bIMf8yqFKbT/vItq3tm1h9rvRnkfq46VyfzBuns1OpgvTxar8+HdUukQzZZ+7wtJ0V8W2fcaLHevB1lK32eRtl1qzwKokZGUnRK8397CAeSEwM9EJZ+AT9KH11aDv0xTcM3PNalL2C/ObBmUhn2c+gwJ5jl8wtuH1OX/gIXXzQBE5x9FZaoXShGBHP9hdRbQ/b1wd7th/MmtcUElL6eudxCnzZc2WPDBsP9bkhd/0ZGclA95w+kzFEiCBlw1Xmpgh9qZazV9uB9Ku9Sr/H00ZIlPJutir9dh8dFkrzRFC7vicTkwI9/vfSvdTbWGMVRFPr/XIBPualjci7YEtgyVHf/He6EkDYSMGnkuvWSK6g1F2EvhkZoihceZcRAlqwAmpgBxWh8N0Y7JfCOxD2jcObbrbUb+S2STW5uX3dV/oNCPtDQJSiHN05FfLGYcf721L7zD73cE/bfxfSjm/RIlQ0OfeKxdkvFP9TmUcjdM7IEIFPjixK6CiXqzdVefNq136lEJWkTxtFVb/Ws42ruUFF0/XwS0FCHGXaZxzNWvxKvT0lUYcXW9kssf3P1YMY8vz8xivkMw2eaZ6NjFc3dMGwrLHnGAEEH46uCaOuX76+yciIArvofiL2ZCDpl/pjCP3ts3Z6LSBV/WLXZzf3gZ7xBFQTHmHXJDxTgSjY6Eec9kI2gClyMMj8YFAKH8cGxPVJUdY/8Zsb5v4I21fq4Vlv3DMC3TddEMeiWH8l5tq1S4BZLBkZbNjNvEgyEYayE/El67tYFqr+lod/PuC1QNkvUomv8xtt9dKFVRedG9lOQl9sKNtDQYU3AGN1f44OvnEpiNOraehtM3fxtd2+EL3a+fn2JdLr2ar+NtemxS3mrpHXrUn/vJBrQ0YGG4gFmz8Z+AURfBi4drXrcMxHRDS+ke0+i18ICs+7fFrsQtqhvF5A/x6Jtj8UnrS508bpEnGjh7RNzGu+7aHtH4d9/mFetitdudhOqajeflX6owB7pKs+usz713DtyMgIhm9Os6AMuLZQpSbvCVjp/537XM+cVjupf8G1ZR5sv/3Ky1ZVPz+oHVWfxO1bOrJH2x8Ku6k+l79oh6VbFlX9Es92/oK2fxxEGOXNya/0gXPtLPUB/n41e3JsCan7LiWoaP2MDC/QkXPqwT8uFL3NsSckXWVeBC9xeXvbAiiROg8BfXeYfxvmYYB+heZRI8D9SreyI6S8qH/aX32WhP3joJMkz/nyN9o859jpzoQ3Ei4dM71oxFijnKXS7+bYk5HhjIYxStVnJB/0k6LqM7m2FZ5MWCT2q+0xs5/nR3lrF7zjuTY42nmkn1719wPa+AO3T7uYq1tUZi/+WPWv2ud/r6yPlbB/il6/QNne8Fd4+hKREmh1KqOsUT52CQXFZmTswmgzdy7u4bjw/JqCWhDP4m4AvrmvQ6m/Ou1Z3lXFlL5+0w5zG47+rgiIIr7K5/n0hQHoz6Bc/xjwvrKY2t9+JzEBJYdFSt9OIugkpjKPnG5j/T3v9YNJp0p16xFrDwXVEh015lm75GCObRkZMzHkcq7PQg5YmgBUd/qYrebOkGcq/RmOjb6McctCeezjz9mkzL8Vnl/7faXfx+shDzsDFmEKcHN5dpPT78kmNtUfS+ZO0n4IRU+ZxwPG6x+c21sy9/L2X2WeLOmD3fQr9fGe8/SSSV4BehkPnPNv4+ke8hK/UhYH5kFkE+rjZFkQAb8ZGbthmEftmdY1dyLW3xlvw/7dEfxnhvOsE+wm8pCgdiv9qfHn+C5w9gv4Txy9fUGkON4Li0MAIMEuaD9kL2JKf1raB1x4lTGdvVg7BcgRW5/vs4mdT9oHy6B7cWI+89Rxt/KqIVkmQx+a+4XqHUJgM0N2O00qPIrKOI6T/UJtzMjYDc1bZ1n/GDxAFybb6Q/Mzf0Ll6wU+yX5HI69AQtTQ+NIJxj0+8T85Pv79HbP0TkEtt1LPfU8Yd4zffm3Z8hOdMlRCYR8Na8QpW9wieL3zRbwvSJBgFKuvMd9ZR5Fv9uUqQ2r/bCNo7P9/X0B43XFCV3jD88iSA5j5fUcWzMymi85+Gau9IdntYehjq1P4djM4HLel8hgfANsUn2Nkp88F5Sy7XmjSnJ+aUzT/fHWWD7gAlGVy4UUxT89rD4jhv2T8A2WpdS6YVyOX8Ggsd8vWPqW9U/5640+Ytbz7Vh+P+D54/36So69GesYEpu5lX3b2qQN0U6CK7ntUI5sqN2+AWNji8sfAxb4S1NxlBeVPsTXRuI0n/k8pTdw+8367/cRXcAGnSo1nPvcedFC/RmUTpnoJXEUP+H1pW37/HO0sYf4jXgBQnUNIbBZIdbWeWx83jUc5tlc1i8KtTljnWK0mUMjNu2XyCtc2oZESDO4kan+N9Lu1smpzONC9eTCOwq/WcCmfyEUA/NUyBhZhdWnCsyx7Y5ZudQhG4I002AbQr+2Q4Tz4k4nQezx2nLauFtbVf1ipN3ca8WMdYairE9DDkBKDXFtu7lP47ap9CaO/fSlKL0YTYsjiInAqOIVqWSj2Af2UbuVzSn8gAAkja2sT5/2bPsS9eWABf8BsX0wofO50vPHtvEDlo6AIF8frvyAEs3t64cyj+fYn7FOUPhWUmqddPqGfmme4KsD4G5yB8cH0mVgG17rALYwNAJ0v3blM+pvAnxyHZftKyUWlHkoZGxU+i2Tzw7IPzcpS802OiMCBufNIcesi2kAUb16v4DSWohI6Wzst+NiUZn/DvVBxjoAlSIFTrqddgA/PESPQpn7ctvnfKUEUbZ6SMwc4TaEXKuM128OiWye7o/6dSn9gIBdYI+CLNR2M1x+Jo0T72cofUFKPywjlNPBVTgV+ELqNqz0cxhFM62JhWep5pljpdRLdEUY6oeMNQwqCgCbcBQYw+Qk76n6HJYOdkHhtF8AqEtn6PWp+a3HAVWpCrChR79LZECINMMYnOMxQPe5dtwrwCL9++WqZIG52TOjrmMDfXV3o4/q7/H0Yp5CKv0bVvtE7BSWpjdNl4uJyIqjT8YaAxU2wU02u8jPoHb0ATe4hghOWO2X+mD8QqR/xfULEiFfgJSFQL9r/fszwGJ0Q5cZ4XwRwkU+Q5qSsdbXW3x/lxP5jQZ9RYfYMF/qfTh6FZ7lg1fMgUq/h+sbysHHvBAPKzQu82BkrHNQpDVsotECDYrcRkSbc9ovSrMHchGiyRtaV1wKzVdliC04essofOMxUYBYwkJzmClIMbUPxkGkSch5RMI5bicKY3bfbDN3QfimWXtBd+pUQRGhU8Yqxih45TrUREOnYdlnns/SJ/AO/8b2gdz1HSWFYF9tBEv9k9S2S4BY7qx9W9P4VF+U2v5pKECMbCP5EksXZl44+pStCZQD+ca+BB6H1C1jFWFBmf9ELjx03IjWkR1Yo/TbOe2DqExJOls5zOp2mNDm0rYo/m0aXeZaQQj9L2hBPzq17bNAVdFA6wzro8E+Y5GlAzM2ZxqAVzUkB6P1y+g4hvzsiNzZ0SQTurejwgs83aaXNvVBwXzpsX6+jCrKIfwhAfBi4jZe1kBU+zwgaGED/PrS1HbPwqgg0EWsuaT0n7l6UBAZbz6HF4NpA62hsLHQ0dPADCH0VP0V1OCh1CVJXQteAMuA236v0h/i+Ud/DuEHKdDLRtSNZ6LK3lrFKD7h0pi+JTrT1Ha3wW6mBzLnklN1ulkAkFZtRfliGnpV/TLUWMjEM+sEBTB62252b46g7wkcHV2qWbWBCE/4fup2rqhdKH8ZY8Ox7WzfUJl/T21vLASX4w0T9surJEalSln519z0LO59dYw7aqqqBhoP11IAoLS+GQlhv8yfB1uclf5oDJ3p+IinZ/08TvuUVkWTg6nDSSh/SMAuIp+Jsemsx68GaYKVXcKkO5YGnVQx15ur2ooDuYBbJyLWlQadREDmW6kvX80MjBktaNjXQGQGdnIdG0tvSvVi6VvpQ0LbHlVkugIzucwjkH5BYqE0T5TecIiFMLWdqWBfSs8U92+H78/7A3MPkJ2XUjBvqB6+deUnhftC4QMioIL4TOkLKH4hlt4ZEdAcGwNYrMYGyUdi6l8wUut6Zf21kDY3bDf/QUE4KJ/RsTbaL0hwfDzXdlWfk9q+lKBNyI6la6T8S9JltjAqpAJcey4OzbXnzGc6IUD7pVXXSr8Z57Oco75mQDSS6OpHdpP8bkwbOHXZqU65b3tURalgRuTOmFgvl/APAvTiI7HR0ELIjWNYCwjiZXeW7tLn9irzFAGbL/SNxRhF2XN8fKqUj6aBrlCg87DUR8XUP0MIBTfvcvoifWVUG5h3vF5tbTe3ppcAkYVX6bKrFI2oQisrxopd0FPb1hVQ/WyRcVXpd6e2bRYKiRfjoVxIVdNc9eiX5v7MuRv7VPJC+FwUzkjKEAZxHgtNJnb0uJcdzMA4onF1aYfITgrQnXmLHCzsriDQFQN8AYkUOLmaYBfVH6H9vLhk7p3armmwL8b7Sc4lO77+tGmHuY2TLlX9Yk5bMTny+b76KhEAACAASURBVKcJLT4bq+aXsYpAtXJhPMHTBkZlnh3LloWBeSxv4punz2uDNn2qUy65ADVi+6SrR9B2Af4dbrHlFcdZqxilQQ5gfi719tQ2TQMdiduxfrX4fLIv4C4FfkK58XdJZR4Yw28EKm4l5S86fcxBcqsMG64yN7Ud9xfJiUSEK7HsYUe6l3r/tuePGOlYFZi8pIPkKtzqdrvbp9V6yjf3xUJlHgAdTx0qybuMQuCqr0UG87487XpYcNqguJpovqv0W4T9dUIsWzIAoA1DfhLFCxJpAvsYutq380/PenaTsoWqTewh/dI8K5b/5gG9gBChSmqbug77FbY3eEwdmtqmZVCKZuz5ZDfsv7aVbeZG2sf0X8Ek03LzV/3qmDZlBKKv9PsiTaKdMe0qGF/Qs4hdkEQ7AXJFFwLk7Hh5A3ah0G9MbdNqgfXXQVDfK/3h1DYRCrlAuLky60WZ7tsZfv1TZP/BrmRmitI3bByYe8a0K8MTxMQVdQLFvFdS+oJwXVeW6rR/fwBr8aQvAqb/UgeNoTdz6qOU9qxGIOMWRn1wYEp7uPNqeRxxfn9a8R/eXK9/FMt/o8Bc3Hhol4u68FGRMQWjcqg7Ig4GdnlSH3DYtibfsLn3aVb+QKxRFJDE9eFiZf4rlg9380Gl3yMxJijeIYU9qxHU90JzM8nxe0OgU+q/MdeU5qXQbqLf4DzHzvnPLutFpDs8neLFvPTL+lVCY2KWbI5lW4YHJNJh5kt9Siz7iO2IMbkblieqtgTw045lCkh+Ol2aaHDAC81seyp9TGx7VitsPxwv1g9l/TUqkxzVHkAVx97APJieRZHYdt7+mumD7xXbzU341LP8MsyuQBPKuM3Z+mWx7MtwgB0Eb4s9CJqBoPQ10WxkBoocs9XcGUEY0y/Nw8f1ItY8/jPrF8XwYVM+MgKveEzO69UKSpOUn6P1ebGKc4AY4Y4cf+bo1JF3n6z0bwFlSaNFhRfyPBjTZGfXK0KuG8RZGFoWb2X+O46deiNzYrNzYomcYlKvhpCF/+ytVF5S0n90FM4JDPLyU6kXJG1ZC7B+2hylL5TeQoWZJG2he1iq7MXUs6Kv6clnNyl+gnwajtKX9N8uW+Pen0/M2frsGDZmzAG9hacc7HYivyuKnajqQ6HSQv24UNYvALSxKOU7OlWIRPKxS7pKntMFCN6dz5LrFgbmaVL2QMrvVmbvWc+3m80LE8/9L0j5bhzwIFVPoQypGHZmzEABTnsJG+z1mVFsjVSze7rMz7m3/+ab3HaIEQ/tN/uF85w04yLOIrgaUUTIM54mErnHDSMlfw2ZWw2MXqhTzf9YJ07cQECEEOd9DFszJkApY5hO5G9Em680/yxur90gkgxypX/rQpVIRV0KbglSpS9BBjJR0Y7Ei8NtUbasFQBrg4eOMWiREUDa3bWu9/ypNrye0scifTbbPl6GAIQdVOmLicgrhr0ZI5DDEQFedqAeR3e37EFQmb2kbS7iUkkuyw6fYBHKfwW0eRjCX7Zvj07grxXjC2HLWkIcFsc5/QLKRGDzo5d+pwajoiXwKmQO8iWEv9rQMFYy9RwVWLoUMG+PlrY3YwxEZcoepPZNbPnLk+opM5+3UdzmUn8x+kRW5mH+eobXbl8W7rEXIn0IJhHJh7oOxKKNEjtOv86xZaMydwPo8H3fdunUp4hZdwHgKxfwrxTr0+g5o7oUbJv7yjxD2uaMvwNW4hmLfKXANubztkrb3eSUxp3ELwzSc5u5C79vwhjXmi8YVZ8R008OC80Klr71CjgrHHuc1WeEVt6ifmWO8RtC0xvt7z0o8logHgFux8ZlTD33XX5Wv9Jv4tust/cH5ubSdq97IFKPJvm2IalvLYURQHazSCa8/KP0+1m6lvqdgD56p0+boxzzc2P5yEcoMI/jz7UA0HUMXlT9cxo7PrbQ+sEe35V+M8efUYM9lb6Yo6uDLfzqe9vNrcefScRC7D4q9fGSdq97WCcfyu+k+mvTns19URinWpSAHVxLMSYv6t7X+vkXfH3MHi5t0Zu09c/vxXzCp/O8BOHT1Yqjtpl/4tIEs/ugfcz/muhRXWwZkb2wgj97qv4Zwq+Ak0VXuRah7yz0S/0xnn71eZPPbF7wESQ1A/NUSdvXLRDpIbSozJq49v8fxlwUtkjaH2XiqvoMmL7K3JfdXw4Ln/RmTmUn+6V5Av85+m0o3642UBEerv+GZX4FWf6U/o3Lpk733vz23F5UnXxb6WPEfDImkpHf9MLL0W1W/jjFAHHtpnU99FomowXcCkSjibTnrOcjahjbt/eHStgeg0GJ7jc3XGVuitTbLjYfYuvWUgBntJnL3csqffEyg51t55fMheGa9XgnR/fE/L4YfoH1tpibcRf/OX30a2pjli1FVb+W24YEeUmMOhYLlbk7Wu+h7vwgtrYyqHbefhBg/+EStq9bFICShC65lAWTN1nq2L2ozJOEJ+yAjhIldGd/PVPw0JQKZtKbORW0oQC/G+3gs3VRURgJH3cZVMCI6zfb189dft6IZe5awX6fevw+Omrfyez/X0n4mF5CrN5/lvLJUHfzTAndi0p/ktlfc2u100kfewwumYdI2L/uQHnQgAG5zYX8BTC4rhLxQan3E5ysO3tL5l4SehNoIrAXE1WfM/5M4rzGnNi0yJSUPdum4j6XIpSlfN010P0joC8unXxuvzJPlu17O7YmeNXp6oXd94J1H+iltxB80ZG6Mir4KXgHzWvDrkF3KvikV6KBgesGiHszVx5nyD19ZZ4N90GpD5eaqHQ/jNZ3EnRygVxQpCumUU3maXaA0mFEvtK6CBBz1+unPRvRF+39VJ9NRVeoLUyZYP1RaX9DYj1m9wOcyphyvdlz1W7WLm0RgQ/AD3NfHjJaUJT1PoAF1OuYs2AyMUmQMEhtYLQoonWdBkQ1qmHFKUovrL8qtmiRT0r9sTY7CgCpx2Ta5FqEtfEDbD8pXbW1IU+HXJ86igFgffm6HAujIPWiI5GLbte1k2PqhLj+kYolWPOgeyxuhaymdOKUkoRtQKSCoIOfCu5x0TTfgOgvXYFgCbN981eJxWpM5lJcglKFdh67ZG4Rw+8p0FyTIUp+Vvotc9tS9beFxwTr3nxohyxHxUqf6OPgflD6eqSOzfrO12nq6c0sEGc+uz8jFeNac7Abzue5HR5SvWsU/MJdiN6L8sPikrk3enJO3knHgshCg/OJU24w5VSDSrGKlYtNDcSXEKWYuhTqoZSimKRL3pKo6p5t+3y0LcgYALu+v4etjychUNNuWb+G2+54kGaGAxA5zJyJZBek01mLETAnHTEAJ2TnJKtSLNBbOZdgREIoQrgtXWkSdmwdiGi3r8zjJP2dAlSoCNInpX6Xa5ubdpjbxCJe8hKlS98TQhQQUfkrxmtVvw6lX3N6ytMnuGAMN82Prg9RflgXABT4uHQ5oCWo/ap+GXfwo+g+7bP6yEkZytGOgvXti6Mspq7+UPrK8fQ0F4xYqNgRxbQwcMZp10B+gWysSl9NJyE+bS9sNfcpBK6meP0rk+rlip6qXwG1B3RNZ1/69ubPW/P00PabqHfulZB9qUf4Ys2jUPXzuZ29WJlHcXQgViTu4mAn0w8x/uCnSt0o9VcROnFhXyq+G3txnSX90jw8xAa6VgHpcATav6lQgEr8+vL4L6NXmaekHk9jNnwR7d8QQGMM7FoE0umHTF3YxbDs/H031x9S3B1rCoCjGEgpU/ucHn8C3FjRLQSIEo3jk8CVr1oaGPYwxAJVvzzUBrrfJZ9C9IgcNCUBVGlUimzn0IxSemPqcUXBmwtbzS2R/g0FJBBsTIjYh6MPghnO+vcTCN8Q3S9Tj068tHUWAJq+nRsq8+8IXSAVgJTexNHBPmNf2CKj6lcg/IIChBaW1zef4dpgn7M/pG9KfZlLAFhXMQoUhJwkUcwIVx9aaFOOrVjpoK6gaHDYOlLq/Vi6lHozVwfUlzGC7rtXmUcjdFlz2FSZ2wEG3P5Indg1j61w0pMopx0yEQPri0uCNjD6Gou1yO6+KNXfR9lRICo6kVT6kyidYsMu8p8D9c1FCH3oCx9T7W9tzDUCjhq2PiVUhw3bzX8A2v8m0i8FM0ZpPRFFeaFQ9ZeZE+k3aJ36Zf0i7gC0Hf7xkLaHixKmZGRXo6kR8RIB4+SS5YIrCCADj+iLAaVXLFC8Csp+ZN34ZJHvUyiDuwAqTAWaPzeEnibZl4pPs9uvzJOQfqETXW4aKjL6f02A+K25Hd0fmMdI6FYAmMHozdS7XVT6j6q/LeEXFGJUihqT6+w4uQfcBlAeNMWPhOTWpkIT1c6PeRmKqn8O1w+wrnhKp7kF7NftWZBxGkBvjTiBtS9of5TwC23ITN22reYrMzgA1KbBOYnzgKCwtNLzbhdEwtL1KkGjdKMoC64Ezz4BcRe3S0dVf0VCRwkgaXgpZkVERwAPu1u/db88LjBwcW7lykkUgLtzK/tK+KXRT9XnsnziwZuwpoEoKEBcyVKVjCAUhWVzguD1ZVgg8pxBqXPSsJPhKPFFVzhvFLRgDaWqXyupKwKI2uBji+GCrK76U9Lja7Xw89OdL2AuXe3XJiCyXekrpTgb6NqIG89DlTY3XGVuKqHfqgI0eMWT29dZR6WP5g9I96Nvqg6H8AeVmZTwBxrSZDPW9ydJ29CkByl9PWgcX9/lIhCkG8pWSvGK8WUrzX1g14j3S9uAABFLQeytzFNc20Qc9VNWjIQ/EPnoY2PgwxI6rhpQEIzA5IITdYxqDQM63DzepT06dgW09we0HyRANLT0diu20Jb6l7Hut+wm93aY7kr/NobOIeDm7+7WP5V+cwydN19p/tmOhd9LjTOSrl9vLQMRLOj6ktwvzbMQvpXI66erA+gYsC+5a7no0lxYJ1wkMbEkKokhCk4UDpssDQjQ4FoV1ISFqn8gMQaacVDq7bHZnJCbBqWDxdTdBVavI4D2/S6m7iPKT0RhnVlz7hIqFhPTphDYjeyzCHvncX40qamlvgwwTuBXMpT+JjQODkfruipALF1iE2so0EA5uzE8FDTpWzda+28OQLSzsGTuiLRfAnaivkNyDKT4Yioq80CoDco8I7YNs0D82UjbpALhWm2ozKOF151+bJt80RuYB4PWsre1tYOKXaATUqT9gCDs9nG9HilhCxQhR7schNQZxYvcWzL3mukXpS/mTzR8ChAaFMQo2vdC8RQuQAZhNcE2AWmPaFCMALhS3qGpbKFjfsmxh8ynl4LV81KArTNPHGGZH0y2zSl2Q4tdTZ2zpS6QOnceBZDSdJ7QHQ5Mb9zX1x+mRWwSAQxkQAkFkCBBOaXCfZ/sS6nheVf6EtwCUf8olS3LAPMFQBjhgm2p9DGSY49ewrp+l4oI9CVZGJjHTj6biJsK0AfbMVvNnWE2l/qNwmvOLqE6HCi9O4+YlJ8URcstKLCb7mX9DZBeK97iUJG4lG+KslcC9gv2kBh9T8QiqWyEH+1an6WyBd1fKfuFqutFWns2p7LRBYgS0cN1rP7eimeD1jHkly4VQIrU78vS+asXCACsPP4DQ+k/UZQrRP/S3B+n140FUzYOzD1Rz/WtJR0TTcpTrH5PzLOM+graJQPzP7FtQJ0a7ZJKfyq2DeOg7IFY46+rlMsEZMVDWhOXn9ur9HtQzyUdEbYSS51kJs0sWRd36YioxxAJYTeabUP9NZxe5unNM1HHgB0tDrEMRMEbTxFjl5pr63ZzE2Q9ezrZQlUTdMGo9Cab+nhM/z+npMiEphW6zcVLUtnqAlRMBK2Hw+fVrwGOlaNRdqIobwP6n13RsdOIENneKqhglcUlc29gp1+P4m0fTgR5EpVQICe8h+xMeZ+JIgm6UerTYulu2zodqTsxcsXSfYUtxHcAKnbkNx+7SzZi5+PZMDtL/S6o72x/IWykSPzYfT7mk7/1tpibIezoJAqhvHNnUfpqFEGBfd6XktoyaxB1dAEZ5dez6WyDfCLAS+CDAkkLW8bhjSbmM7DOSXPq6UU31ZxExvAgIR0cyBBILjfyGpMh0EyrzmChrF/Ac0x9GoTzW9XfQdhTlGaPDgyWFdIv61ch7EODyCGS+iZhWUuqBwAPBBW0B1kSlYRiWKR4uF1AJTfTzsv61FS2twFUeAouqBM1RLwEvdgSARLjGTvWZCU2plN2HdchGNvGg9FYNoEqoiHF2vY8hG1IiOecu03MX6f0ATq4zM6nyyVKrTbFiID3/iTjQVMpQC8UqcdfF+sqFBHTh93Hiv4YxDZAZsYyQx271kSl34KwqTOwX7N78pxb/2T5WQ2doKrPYXbWVgpY4tpFOZKpJ8CKCdEhZrFlRK55PnuCVvp/0/pBfxxrU30KWkf6mgT7/QC0jj6A3+2Gjr1S/z6lH6ahqOqXpPbLhOykF0quXQ3FL39u7XaqUnCIeOwLMtemTsE65zyWcyvzpPHnUXUm+9a9hTXBlP4swjZ6o+zARNglXctBt323d2qfjPX5VRJftT6AlK/cXfZH6YasPNWIqn+A0i0ExLCXIhCuRZJlXEwDvfx3wCdj46WdStYV3Dx4evmaTP2ljwHmXHglwrbk4BI5UHnVac9d2GruY///daxnt1CwuoLuBu1ALJNPhpEgmfEQKDAUkzBJHZxFvNToTYauNLh6Ee892Nc7UJHKobA6nJh6vE3xCftkEAWhapehAqkOyT0NplS+WfnvnDiY2IWIxGANOZ7X0WbPWc8GHOWfhbCxX9Yv6sCEGA4cUHwAAsSnntof04TSDlP6hQIXoX1e6r9wNgqi6uSeeK0ch0N+hVSIUIQlzC+Vfk9Kv4zDfiy9OrU/dgmANGnRmL8vuJSzlXnkrOezeQwSEENBQTl4rMHv8FbDLoRRmb0htnbnnjhKfWkXxKT49RtX6bnRC1WfDLbrxFBdUFSdY3Ik0lchsDr8IfU4mypKX92VqOfoRDuzBVIZs6/0+5h6tMZ7DOO3whnnlgl4Vi3Yuayqfr5LO5z0BGKvQtgKJZvhSSfyHouy3kfEPqVvQDwndTbAhqvMTdFfxeRzXz0EFvUL6UtJwmeu6Ff6TV0aa1Oe+/aU/lkGFXESsc/PF9dv2mFuw7WFGBQL1hVsfbpLO/bfHsSxF0VnmwTMLzTnikx0L9kwroW3BQlWKSr9yeQTpNSLCFu4EKH4tS9u9i38DaDnXZHaR/CCEXYO9AfmHq7tw+/N7Qbo074ERpW+diLsobHGTbedIdtSv/QQrB4nCNjmJda/7wDZciRDh+1Ec+zSTnM9xYuBOQxhb3Rwo5t974Ktk/djtAdJY2sC5OLUeW8bnL/k2sEFqpLTCqnMXvR8YBBi0pSqxldgcg/agFw2CypWVIADFmkDjOGzNhB/NsSPSm+h59kXlOcKzdXkEe8UzS1km5uA6k70tpm7sMatZyAx68OtQ1cuXihUfUbwZLJvTIFtnsto84MIu7uQCoKwgwOrw4WSk9/+9/6IZ9pF+5rUaWyEXln/GOyrL8xvU38R2aa14esxfNUGTP7xrvXgjcvPlajQRidYCV3V3AfD56ivDwbmwQhb7MffV8LXgPor3u1V5vYcu6niKMLuaKBjN1ZHB/KRcxjJqG46Hacg7C/K+qspJ0pKZi6pF5rJt+gCVQUscTlPApVZpDd3pL/aChHBo+yVrlBzh4MCVF+B7Bl/rtRXun0JemEqX/VK8wgJmzwEEjhp7bgfQ4edrkftK9tlVdy8EGF7NHA51zkFVGzbnwhuW+mPIOy3m89tmXf6vIVC6bci7AiBRKlCojld0U6l34J6fhfqFlOaF9hvO2kcTrYjkQffluoTC8yFfVJWkPVIZGykpCMGRIRzZDBJ3BIKu7F+I1QPzhURpaBxfEBU0Aj7xTHKBQwPSlH1lzntc4he6CsdQT1IKFLyJCdi6BIgJxlKpd892dboyBBVq3tzCn9NolfpzyP91lP1z1a0UepfgvvmkBS+mgTRQ0N8Vuql6c/nRTfPklQLu10jfi4yV11sBpFfLVTmAcF6qPpctg85V4uqPhnhA3GwA6IAb/ssMn3QVzqBE0fAFQp6QtnhYS86t7qRWdWX7P87ANUGfeHF9tck6GUYHVU9fn1l//xpbN/cWGMhJXqVeTbMphmFNCi1SmJsp4g9oBNQCVsc5QSUHXa9+VZ4P5sHctvn0sGiqsqJgr4Og41U+rdAPUID5K5D3QduqsztClAKja/QvR/CBlfQXZSQLTNJJxqih1JvR7RjF9bvxfTXLDTxJ+D8Z/oKtJveU8D9ci2N79T+Ilh/XYwZA3qpLQKZc7zbJog8bC9/SXFEzBOlS9SHBueKherAI3QYnQaHx750hI9gJrjRfyHEGLNAb2DBHa70+2F6qPqVSSZPWX8TZYObnfpACTtoI2prF3kXuDAwj43krlZQFCzUh0pXqBefXTJKIUwNZICf9dE729oS5D6PSgYFz6pwFGQJ2eDTQKWvp6I9MD0YTKVdrMC3GziLul10rkSTLTB45Lci9aDNNcUEogAopB1twLOeNbJtXrtN/W5Qe3ahOzuGr1xApVFTjBlH6af2zzIaHnuETUrfQOx989qz//ZauD/tl2sMXxFY9848G+emUrqiIRIL1aPS70XpQVhYMnfk+cU8DKkPFESjGmoYqrD9OIrS7BGqD7J2Nt1ZcTiAGTZ8HmVDq30D8zQhG45waR8ZTNaVr3S6XyuoOlfkMTN3TNGLW0cqhiGLi7iWU7YvEIWIbwfmqdL+IhQp2OGUvoSOp1E22L46OlCXHajo+t30YVzF2PG0gNYHgsXKPIrT6fSmI6FX6Fe6HTR/QupBEzbBRLqeOI6Rdky1rdSbJfR3JZ7gMkXtPsE69JVemb2ij5k50qV0GyS9MF0XurTZL80ThHwrfurBvxINk8WBeRDKBlaszpRsGQToKoHhn+skXjLY4Ly50p2OlF4ckht0bXH7zMOiT6hKfxJpwwy74MeQy9SbroAGLHWozGEh9LIU2CdHp/bHMoqqfi3Orvokr7bBJECN2GdK+WoZFAyWYMxAOTEoTTJQF5Gv8116MeioKQ5ESq8gjHLPwyvd2MkpqV8RyCBFZSXRutjF45zYkyqUDckF/Jr0s3yvj/LRg47KcYvQyvztVBhxrm+NPWam9Mflxy6Zf0ztj2UUwJoJC8o81Kdtu0kdJ+LjOQGgPH+FXz+GjxmJ9VNfGaSP0Nf5MujKmOGnzpwKNuhX9Us5He8SjMLBwlZzn1Dd0OXumlQ2iTf8NgEGpEyikPqCrMyTfHVBkqZ05S6dwDzSg0h/YB6T2g/LQGYBhLy8UVlnIT9vlPAXgcN3HihXoOmAGRS810ofay9W5r84/qLfl9TPC3awfJsxobyOu0LBYJI6FK0LHeVHnlwQIoVpoAInAvpeF6JLUdUvgemg6jPBrmLB6rQx+phZnqOl/lxq+8cBzaiozN6+7dMHiJCfp7LUcZHkhVAgepvBcXI4Wpep+pX1eYy+hxQHY4M7uHuleWYMPakQQqCOc1OnwvRhcM6HyR/QNlCAlISutq++H6oTsLQqrBoUAvSFIVJjfv5C8xdkhDIX3NPA3UTpS0L1gFPoCo255soGOCcc/fo2pA2EjcrcLVSfY7aaO6P1mQZmCW/4+hwE5lfRjqi6Bt5FSrGu2Te606NONHCAHKX6CC0IwfS7RAqE04NXVwANbiZJiFBVrtR2jwNaypTB1GV/d4PQHIVy4xeR09Qoqwip/y47gmuQ16dK6DMNvS3mZhzfbRyYe8bSdbYRvDJyTnnGKIRGSFIEtYQ+dMdEXwkxJxwyghtG6rFCzJ6hOqEpaGO93bvC6nRkxPES5ajSFeiUMVqAQ3VB5sDvppP98kf5i1XTIkzOR5OD7bKl1EshOlE5Zwl9ZurJi1U4OKauK0BRr6wBIHSvOwtN3ekEk78No7S68AwBX1G6RFSUo41OSkduVD6yHr1vtL00mqN3GVa+Sbsv71p+rO3X02D2KX0cR5fekrmXlO8R87O/ZO4UuYTzNqkyxIw6BFdI6DNHV06hoLTH7pxoT/q6S6EzFeEI1HlfKZ0EOaKni6q/xdXZ9t8bhfQLCogbB0XII3VCR+tysVCaJ0qPkZ4yj09t5zjQGyjiKkHK9wtl/QK2v0r9K+kxsps/BeNNgsnBKv0hKZ1a9WWwgtq94O4pdB4pXp8UvmDgCqD4wG5mLw/Ttz5HVC+hessz7Sn1uzj6UtlHGd3qsxD+hAaQKX0gQickkKcQU2RmhbtUsOvFsUD7LkTohKryNmVusuhAGdSooXMWVlRrEkQzHK6X2UNKrzZQVgij7z+QQufl0pV/C1U81ZsIHSOG6ix9nxo7V9R+hT09VNdCjmcckotLRBIwP5V6O0InJEalefH+V/p6qaPTUHCuymb0534IvaTKqdoN+dehOvWVfkOs9WMkonEW4dX06vMk9WrVeWAew5h/sBLiXmDyTF+UROll3UPJUIS/1IYvSfUvIk7G60JerMQ2k7JZbN+B8OWouAlON2E2wxAUEqc64GpUCNgx8XGYfVTfAERkFR55PV9CgsuQbIluIh9BHho30av0m6V1a9dbbwv3a4KTBUZp0mR3G7t0Dw+yEA9aoIAwql8dcWIOfMusMhibHMZG/WKUL4tAyt+povQFKL1QIMpStP+RhTRQADMr9mB6lfoAqXnQXzIP8dKlMo8sIgbXUi1v6ap7VFgq2H8Dc3NJ3eaB2DmDfZviOpozyXqluV90hScQGrhAwTnSuhFVLec6I0C8NnXru49K6UKpSSg/oolvurbZFar+Dr4P6lNS2zUOdOoVsg97qn6F1DzwKd9Mm3nM9YKuoFyr03EQHHir6jOkdZsHToqldLzWChCtH2NAXBpV2RmweiyGOVt/OIZ+zPSHENnm+qJFRRek9FhcMvdG+tG+eCqgfrCvOy5Ej1cFaDtDQZUYUXatqpLIjvUXKA4mcnpatPER2vepj9uXcm36JQAAIABJREFUwYl2j3rCQLyzwYMhQjlPF4RumLaT/hxLR2KyijpRS73T+uXR8/QKJXlwkYWt5pZIH9r++jRuIdPXE5UmUr9QWF1+I9UHSHITDii+A2zbwUj9iEdDrg/mV+CC0uC66gW8EmsDizMkwumBCyhbIdQG6ttoinJI6PuleXg0RVtA/NThky3elQHRoMaetG2VxjhZAi6CzvkWuGcW4yNwRaHqV4qPA1W/PLWdaGrh3jZzF6R+3Apbc2RrW9vIevDO/gNlB7iA6qiHjVv9m1g6zgMjVkuMQncFOIEKUtWEQhF8B8ngGg8BsZXFnrxUoWmqzwS/ShoRCLQpgLWzk6WV7G7PpeJjQOmLU9pIUd7QYDiBhd5+nNxWsg9mFcWx/29f8f6fkL7S70P7rw32o/GnIXqmDrieRPAYtr8XRUHOMU/XaDSt014faMfl0XUNvPNnTeKyftUKPXjpinOFUvcEfHcYVM+Ed8xE4hFtDCT8Sg8lgJo5lgU2JKJolfT/5IkCvezaDeuYaP2/rEepP4H2XRvo2i1U1+4FrupNnV5nitAc7pJHZCKBTTvMbUJtoUj02PpymPmC+6zSnx/fZAUpX4cTUqC4g/2Suj9Yz0W0jq6IWULVtvXHVHaGfqHNEuI2R+vIrmUxTyrzyF3+qMwDY3D4T5Ej0X6bh6LSbwnSVekytq7zEGxL0//YyntTYQfVleELRP1jcQU9EUrkkupoRyZVaV6/6cvpLrrxl7Vbsq3Fq82/yPgNWtXuOomThHmwY/U10fu+ql8W286FJXNH7PitfyGhJ7dc5jyxL6LPonbQpxXOflP6WAm/zUPwcbvSR6fQdxZGBayCuQGkxu0uEAE/e6B0JMp9GcSdG2hLMrY7KcrJuQtMVb+Ow1PsIsTwJuIzpT+M1BNRQMPbhohf58uS4isdWtO+xLEPTqLYbm4tPd/si+hnYvd547NEmznr1HRgnpZC52loTm+U/i23H9BZP7uBsflNDtR4IflzsKjMf4faQVGuqfS27Z+QZKILE1gQrayEvyi/HatrXAKWcE5rgFT1S2La2rCQAfWn4DUJPZsSpan6RFDomk3CXy6w7e8fpHOp/5pK52mAfXRJxrEQAw9q0NjN8FFiinoi+G4qMe+11aGXevKjRfIlCX0HGbOsqm3vwmT9EjGyn2JTkLpzCp3MA/4lMb0QC6SUv1xg95gzw3Svv5pS73FAuS8k43WQjER0F093ZWLKesDqszHQjvNT647O1U0tLsQ2wb4qdQHVN1LBFjpKTN0vs9IY0YAWYillI7Q59J5dFG5JZbY/B+bmweNT6Tek1H0ZzTUJsk+kiMyoWIDAILqIiEpEFPbAQmWeE2rD4sDcIbX+FA2ZejHADeD6eVJ+ontvsK4/lNJ1HNRO6n6xX0Cnx7EVe4qyUJonSumagqlNSrqwIXI2Q4ksBl8wKdFny3ZzawFl9dsklKW7BriyniA6z2D9lX5rav0JCWhiRUSSjUoib5iCeKT0JYgT+fiIMveVtJVYJLH66usl9aVgu+R9gpDIMRKzwCD6uiS17sQZwOFubxORjxy78X5NcFBFz3WcYl9YIYBIX2kuSEEHiR+8snd4HNriGYvJ22X1BZaA5ctmSVvRjIhUREhUX+xdaRqpzF6SPnIFh1I6ZRAfga4KJDNQKLMIrrR98A7JgWWVfidcaR/7Kv3eUN1jBkfNg13EXph8keCNgy9K+gfNjS9Z6pAi/lP3x6Rs2G7+Q8pe+/xt2L6RPT2jTIfU/REsSt+ALFXMBec6bDlfPwUoPY2KGQn31QVQpYvS7BFjkFF9YajiHuCwiaUg32hDX5lnJF8wQn0pXOnLvk0/Bq2zVKnDFIV5HOQgCVup4BFa140Dc08JXW/UWf+xA/0RIju7VCKXUHDScAXqP7hgWG8Al/nVJtAqj1H5oyuzN0xxbzsDvxBU/eVUOs8CpQVGr5MMEmnfFAz2phn9L5IrymFlFJSBiK2Vfg9Yz20Seo6jA30RIjtS0FbPg9Xr2jB76rPS6VyfHq3fBuapQMUjFwapzJNgynuA2JFC9O0aqcEyRlGXOzuwiPiJRFTnGNBMexLXBFR3Onk/zJ6f8HvX8PzjmX1SoHUch3DpVCkZ0GmrpF9CQJkIwTYpfWAKnaPX1UBW+LQb3Z8iK3+DZLrJTDs5i2iil5B5GKUbYr9IhYXqCEv6xLZxAFRfpa/B61j/BKdf/TOovWX9fait281N4GNI+PrOvoA8P/U88ZSt6HrwKFjdjgi1i9a32PrasfWV+P0HOomggK9Ug1B6YZ8Ep9Y7DcqYuvpgtKmvni914bduIq8RGKswQhxKD0PqRjEV6C8K5OZAQU3o/pCmZS4q/ank88R9PqmubuaE0AhxiRfpubom2cybPrwBZIB5fMrBKEk0Mg0UURikZ6n/ElNPX4zymQPvqSL3uTA3gUTZS2I4Q+mHLIBjF72KntnEVADt7Zf6Yyh77Zz7Arg/dqJ0m4XQNNfoonTZBdKVWegPzD3C51z99Vh6UlAanUyl7EtIkCelk4UrUZ+KMKSv9PsAfeJmL4NKdaEyd4+lZwisfg+gt9rki8x82SrtC+L4Rups58nvgLrhCCrGairbxf03QJuvgNkLzuFFXwlMA30xdWCetPtB6S29ytxe2hcc2PH57lD7+pV+UwwdmzKoSl+M6RfGnogIvrUPOjFUgQ2V+Qc6+8dMUn08oG/mgnn8d0AMHTmguuarIfpdeiGy42kBrTOiUhw65dD293/eaDO2nvrCwDyWa+9GZe4GHz/IAKIp4FRojDZ/Sr2dNiJJPyDAiRWh4jjS+hF7Ie4Fuz7rpC3m/zLG9WfYBtkHXRQ2oIbF2YmIwv73VsxErX9ALwlso1rAooEt6x9L6oZCMTD/k3rBcejrV4r6QIBVj7iouXpRxDxKn0mmtGYxUfpqoM09rr3EIY7uh15pnsnVqw1EWJN8frTZbzegrp8WEjgxS/TCIq0fZXMg+2Q5e4f2xqDnqPpMlkGctwlrwNHLz0GSediO/NWxS+YWvK5qh23n/FD9pEhG0Ogp8/TUC09rP1f6GEn7hb6yWKUOOfSXMxaA50+2gbyft7KTyDU4NoemirbJwlZzS45O82D9+q3U82PmvFH6mi7mmU8Dh9+EgjwldaPjfGjf2I+o5WfT3hj4nGtZRtk3lEcGGzBRWrJApgopXdLRMcu4FnA4mulYU0ovNOzLx3NTL0BtfSxtv8DVw0UsfbAETlM3297APBhpMzdolcpDQvUp9eUcfZx0LvVfk8+P6XPm+hRpXKGwY+fbjH5+o4RO9BFrx+Rx4DG5W1lazukgK1uB85ZCAViTzys49H7TjBPiai5Ks2f4pKq/I6GTFOwLyKuTL0QSg9cBqPiO3XTeYm7G0AfJPDXztAC6iar65FB7mWmiM9YE4S83dEU4oPSVeZyk7UhwrjZJJNISF7eYu1JwK7RfprCIsmiOp5y6OaNgMMRNdZj9Ygi+P5gp9Vc3XGVuGmzkFHAHG5R3NwKszgelWoTaRDqKVSBdKpiiEc330La4U9YIqh27AP4t2P+cF+dZ+ij9/lB9nHTuJr9+9PReLjgkXnbMLaH16Zf1qwowARfVpaAv/mntMZ57aLCRoTnZVKJy1jNHQXLQqkpWrkAfwXNePKjiGVKXGLB691ItRi3j6HRJm0XqWY+liXnpoupXAPVoTfujyHekzaHVruzvHor2P20UIbo464xN/UPJvpI2S4BOdhj2noDSYxS3IlGieFtbZUJr/8/DnlufGmxs8KQaC4ib+twhyYnEwIZVgrIL8yfD7Zc99pMCETVEXojmi2AlJWQU69iEOy1EFyS/vH1R+YRDez+Ctaf0sSE2o/nbSSRja7pYzhZJ8BMLw5Na/bfw8Y2JUyK6bqk65vPGIdVwD5xrVZCxdJ8QPMgcjkoFA7L+QMF8QUaP68fJB1b6em77KdAEhMCvRJgLlh0nUvZKRLqHTDh0dDvd885rExzFG8TMJlFNTjLLxC7++6WeDxNyopStkuhV5tkcu2lv4rS/uM3ciu62pfqFarvP9QFnLIV85CwMzNOCJ1VpnuDShkQO6pgsblLm37wNH4F7j04vBKFtpwQNdmKYirAYOYlEJbNlwNPEAiccLQDA9p1Y9oi4B2qzZ3EikYA44aqHyFMNtq2q/hk3ZTAVOKmKwV+oN7ZNHAJiFNiu0fe0R4a2YX/3/t6GF5V+S2iDm3aY23i0c4jYwB+SaATfL9m3uHMZ7fdD200NymMtulKhTenrZwWWIEAEFWidp2V4zNHheGD7zmQvSPpbym/3s9k8QmCsXOCjgw8otz35XFj2tX3hphciKVulUfAKRQWdSozG2x9E+8aDoZD2yPC5FhCjZSfoUYENeie/S9BwTk70kPKmdD/FmHRX+rbXJaApSDkieeweHpzS0veegVlI7nafkyHkyzSlwnnZLJEuyUihc/BV8AcOWHauBha4WaB1mNfH+vU+7TXFXwSP18fEmzWxCH2xCalGGZoT21P1Od6NDdv7qrTT7SJyNlWPc9ZpYJ7KanOMHWg1glKAIkwEhwG8MpcThYJRq2D2ONMfdG2/4dbHteuVQrY4MA+C2u3BG2D//WECY+UwH/t9IPHiF9bHsrS20uCmirrmn4+quElEr0/pk/prYb4IOwEm4hv/xkp9RVBjDMpOu6mfEmdi1D/pl/WL5ukDuGPdGOqLrgAZfR0sSt+A5hrYZZ/SH8ZPcPd7f9r8ce36LyzEyAe0fX/ndiXmuufXmyvoRSX5HBjKwRL2xQTlkDPsnxsfMgy4w1T5dJP6m8G+CIwl8P5opmALhpGsimOReZIHdOzYVtmL9Wau9NUcX3QBTXAgrHRguEhR6tpn7w/X1755O7fPi9OYbNe7vGJo+szUPlL1t93t1r+FjxG7mPva7+QjgZe+gL79loRtMQE4EfrS1OcOGd4+QLS/MfvEZ7xPQ3DpWN99hcrShRqJiO6O+4a1a8L8nIhGJktgcu7RSRYq8xyuP1JjeA+VtuQqXZdI2EZV3fC6uvGJU5EhZLttRBazQOMTqYOz30u9A+33hdI80dd+R12DTiuBculqY5+cBvvy+CHmvNpv+VnNJq70+4mNLU2fMAheRuDwYHgFRXImOYJjd0QR+/1UE8gOkt9TUCDRKfaq+mWsZ6n6K1x/dAHoWtpBvhTgdkdvaMvi1DYwXc03KG0ZlLeNtNu1RrrMvDWPCPFBq38Y6UUwuwbmwWi7UoCbVUFzdbSJ/yppf9i9CZEy2Fsy9wrVwYVr4saGSv2u0IaQKUYFuJhLKlm82vwLyicpQQx4SX0ZSKvaBvqqS9Xn9t8dCWwzOE2yQKbzOETgjuif4T6nohehPmjxzeakY17pt6FtSgE470E62YzyCfFVBI91Vb/Cw/mB92oCJS9F89QjDgJi5qKvfbqSoC+JjQNzTyp4L5ljjQYNQPuy95eEfrwCbRMyynx3MXvMaxuZB05XB6E+sL+/EWf3fOpbVrWpFtmozN1CfTANXHIprnDvaFOD/EcbOTEy2nXj4yl9CemPUn8A7SOqXy+uS3hkc/0TtMEjfV6YujOFBwrVV76ouWZQepPt5I/a/96Xil4EsQIJAp3q5CuuLISuGKW3wPVcrMyj2trlvJ1P9cuSuVOoD7jXSpNjeX575ikSPqeiM6E+mAaKmk81zok8hirwIe1BgNg3iXiqX5knj+p6H9zwiKj6O1SUi65+JCh9kwrVmQ8sQDQPwQXQlP6CcyOhfN7EeCVhNGH0JYWu0raa5FLbL99tisbYhcYuio/m1N7mgI4BU/kBPcbsRL2tiK6V2butXQ618gqfMOkw7UvaHbB91H70jXyBGBf0BkjpQanGOaIeBQf0IUG1t0d31sfTnjD68Ejjj3Qy8GV+9EFo+iZ9dHs0ogdBxntQ34WA3sDTRTV2VrbaifcD+/OIXqX/l47zN1TmHyT7gUBHq0nsVfoGZAU2uuuW0JM2rXb/QUuHsstJWr8qlD7zijP1q/p1Ej7n+mAczZVYivFdytd0H0dzHE61ye3aTdUW6Qs7ld3dk/qnIZkjPrDtHB40Ruw+6NNI2EAUyhWeol8/fWd3W5qjr+EEfT8dcaKJWYiLOPT+h21bpd+MtEVExzlzAVnog4ocAXyAZMxrfcGw/39fCZ9zfTAOZH6+17hR9c+QdiyDXlyJJdO2cYCVzakjxVeBHCnRD5OwL1JvD9Rv4NQAp+Yv+n6zDR0sZdh9GZKYHEb3X4ivePul9dIUdoSmaM2CkJ6trGnIvP7+knkI1wd2Pr0TN870xXNsF7my4fpgGfTym4R3QekbuKVBl0F33ZR2a5+5wT77oui2rGLxiiBnglNG3KkBTtQvajC6go6XJaplrRehr4HmTr4ye4fWkQ7l/OcK3UEjxtCxS+YfRXxrN8hZbVJxDWRbiEwJdtGMCWk7EQpmyIrgh0a/VDEi1i+hOlM0OR2dU9U7aPbEehKlVewgZOIYCNWX4n/mNkCLe2gDKdiMmjfRUhfJB8OakPo84iCgIClX/1N0dSJd2UxNBKmymG1pJeCgsD8g/EDzCGl/G8EM+UbC52QDwhexKURHcqG3nso83f5en4IiE+i7poSIxKTqRbSBE5TrdDJHAS2hDUSwfyYoKpQY3lIPjDUk59P9jsuXeyqua8SJkNQLCaUetvjrs8C22AFxY3rhNgY7dlraERkvTl8sc1CUZs8kY3lOmuMu/SrzpFFRD05N8SzLouqfU2Agd9xwEKq7E614KAEA5U1GsH0uikq/N/kgWWNC9LXEOzzL56Nj663x9dKf5Y4XyqkV0u3DM8doWf8E1k7L0b4vhrnEMB/MfNGQIosiTgG2DxJcIc2rkkd02vSCyKxUlmXc50pfZX/uyx0vCDCCi+dXNyRik8CHnx/BdieMjjGOTF1QZK0J5aHS9QbFWazwuVAq0hy5ll4mOGNFiimu9ci91H+DtWW/2Dj276bXkNAIo1dLYBzRw4qMh8o8kGM/OrbBVaaRAi1uM7ei66+cposXO84/7VXcRBhFaNCiS5o4gyUOcqeJBN2J9JV+XxGaV5+lbTBdQMVFxv1t//7C2HrYBe+NnDEiVnxjRoAT+og/NJhxGohIBKnbrCA1qaA464vH8OzXX0gwfj+xuw7mYQU2hTDLjXKEdF55COye++OgsVPpz8s9XOnjItgeDPvCsU9B98LpB9WakmHcgtmTfMxJwWAIKyiMU8KwVWYU1YAyxJV6O8f2ScBpcGd8MUtFkVOQWKjtKVLV6MRrOZCPfEU1z2O2v16EIv+7uJEvw/b7yYG2zY+fsYP6N0EPr/QnI9jOBhXNaO7wlL449UBbS0JHg73SPNP++dLo7TOOne3v7y+k19T7OQaRxEpR9c/DZ8JK0Bc11AczCsZI+ZyufUJtt+P3HbHHLR39Nlc+eSPHi6rPIK75VPTYPihCqy6q+jtzH07BbUGDs9TvimA7FEO+Yn1gr6zPTj4A14gkCdxxGdgzUARSL871wwxyCnCKJSzCfZc/gBSwtGFN90H9aqGxcFio3aHrHss/ed3BidI3WH9+z/bjW7v8NT4N4TEl9U/nPzwwHYKO6tHlC2PiqG3mn+jomPIRi8ystAplfrnSaZD7OhpeQ6xoDxnhXukP8Ub9VH+cCdPPLrDT2qB0GxGfq/rkQJuhsQNZ4siIQOewhdI8kTfq04ECMUNf7Oi6c24DAEcf0cWyf74g5qXRvTsFqFyRevBmmTO4XQJEpqCQenmbUS3Lvo1fjWqjX9av4o3yqf7oAf0wlW+6GJj/EfG50heE2Jy0qloWZ7Eb2GXNCZd9AUORCKVCQ+TEDMKcW2Xxh8b8H4jjlb6SKn9F8k0UNHWAhwFNB42qmyUf4FnGROnrQ14kpfShal2TbaEru1EJXczovhF23r4H6osplfEKZe4r4XOXWuxTdHlY8rGbZWVfqvqHdGXTpMPal+Njl8wtMCM8LShOpYnXQLzY2zWvtbFFY/4e2yn61/3SPDySr6Ii9YDPMkUq/V6fPhyewsjoMu0ejxipkG1QOWHciB75hAp6AHXsLZl7xfS778LfkCalHrdZVghuRHcHlGKLpultbXB4jyzQQUpvWm2BCvNQlPU3Uw/6LCvEraTgCH1lHiely7T27Eb2bOk2uOiV5n5IHa2PnzHZBjyafkymkR7NwjFbzZ07MGazTAiVfcaO6rSg6pZ2M/+LhK9OMub/ndlwk4sp1VFKX0+1uekUIKIvxWDteT1uAOs/ZlY7kC89Sh9SHXEhPaa+WFAELnDMXI4bzTeCvnCRvphVq31EvYn3/YxUuak6DANgk4/Z1S4j5kNYLIrd0F8DG9AJMSr8JEoS1MqUSXeQ4gOAStRV9Usj+lUEm3aY28B8MsrhL7abWzcBQ/SyYP/ODuzv2j9fknrCripR+reufWgXouNl9KjPm9ZegUyRA+egT+gJ8wXVhpjahu0nCd/b9hZcbKT8ZEp1Sj5eV5HYl7A/05pE7HYUI9WsVXbNGo2Zg1DtEO0tcjynwOiDT76AzpQYlV1oBnmswVHWZ08LHFpNsAP7VyB/7JxXy5mOQomJjU457L/fXGTWu5lCR1wu/WcnXSmjQ/3Vqe2V9SmoNuYV9OAAec9n58gXp7ZBL6sCvqfTLhcbxfjk14TU51FFN6LN7pfmWdPiIMYxir3aBuk/VZ8TMma7glHqc7Sqn60lX9E1kZ2k0p+iu/uIPocBWdd51tHkPCwOzIMo2MI+owd8wVjlUp8+t++2mbsI6nDEtDahX6VKfyFkvLgAWhBkxklCgU2P201cvvAK0Aa02sW+WP2CUj5H0eRBxW3sc/aF6TSjBkLXQb6zvvxR7P5rzeyhCjRJBpX9IuiX9Ysi+h+ChSVzR9zE0pchdKK35Z4yjyfSEbuxnZV6wUgl82ocC7KV0Xh+67Q2kXESbdXcuECWUZ2VKzsqmiTT/6p+frt9uPiX1SaUDmZ/HsQtZDMOJMseoqZ9TNCRdyH4cjpPWvPxU23o44ONmHMi9gcbRL8H84GqX47Wr8l7pA1e6Q9L3Vt2UeYVC7IvPMdItU18BZPtoXPQObzl82Cf30fqOtX/4PS4CTmy1b51VMeBvsAL8Aa+Wz8CX4zpC1dCRyn0KvMUuWs7N2mttoiOcA3vWP0Jbp3rWCiQx02lvkha31GqzgGhVfVWlYwCdmb0mxj7H/l4sr3FLeauyDaIPlVqjND8g+o6JV9eilymkZbASLoTTj4uhcXO7e/bF9Y3b6rM7aTGyDLsi/OfUHpLvqQiQbFmcgG1nnNrq7nlTEVDN3Qq40hpNNhBqS+jL8uI/RQE9KkGfblE1b3Sb0lRmCKGWLs+Os3uxYG5g2S709rsleYRyDYWBuaxUuOCCHqQulIRpMk27Nj7B8k+mHUUOTpyTj420dJsrEq/vjVICoyiql+CtIFOsWLpHgryMTGhQvtumLYclHHRyu8yypsLUeh3I0q7jwsM1o2brzT/HLHPvGEXiZOQEzOFDcPozLX11U65ztN4DwrsqcrkXJhaMAFNKmPn6n2kxsIoyBLnk8o8ZWo7ki+SU66vRE8Fkkl96iz/SgP5EUdR9SlscMUw6A0YLLprbuj3NM8v9daQ36f06ZlKU3RokFJ2Q9/1jCVzb+i9Mgnlrk9hnOoK+kvmIeBOTsaDTxuF1eEE2UUoptT7TNpoX8B+JtUevdxN8yuRZSDbaZ3ITPSq+sVQv8yIDZFKXWv6YUqlN/v3i+nHI0z6Katb9iv9JqQ984JYU4Gufu3LxtHw8anqbxMF8nI7oS+3rUGE9PkeNnlu3NB3KVjVLysC3zpmt1N/vatRkOCKTYN5eenSoCPdmPmUYqL0b8btsi9fdxJtbwafPLroCR1ZS/U95fFj561+x7R27P87TLIvxo8jKXgo+ViE+LL+xUJlHiDV9y4YRXbvgNml6jNS2jMLRJwjcJX8l54yT59sKzQWYfylYAWQG3rzPKKSZZaIm9Heu4D9BgG8pnJH8jHpjt3qc630QiUp4/WSRdOlyukR7o0flf4Msh3JPoefOM1gi4OfBEy2O5Y+iI4LSCDbKKJcst9dMUyJxdnWtdNX4kUR+Sov9QdntRn68UTxQDMNYRy5t7IzFZXZqwBvCkSiQsf74d2Gh9XrQqB9f2uL0o4Jiq1YzcFE48evyKjcaTLrKLwYsvth7FH6KuH+vg/U/5U+Zlo7w+s50b4/f8z/YlkN0kKsgDGD3dqA5N4Y2qZ/ldqmcVBxH3QhFTpOn1d1NDSVsvULPTQojvjG5zmKjsqLsv4JfMB35EuWIJASc0Jqm8aB/sqMKURfSdHWom0ofeVM35X1abC2lFaS/Ux3s1C/lPV3Z/tFtt+J14K+AFOPP8aYer9kX/vC9uU3oPYlCuibBvTJw7D/6q+4vIzZf3tpyPNbr6AZaWuXuTrNbsCH4Ad+/dPWo4eIII56pG2LlXlUapvGQYx+o+pK0Rc3lii9CZ1fPWUcfnOW3wpVn4tqx5WvPBSUN471/exCMpIBiqN+/8hqLHVs+/ivvdI8U7KffVEMzFOxNnaDSKY5dQDOz2XxyasPDYqbxvGwC6GBI6SMjwNpk6KvDLADr5Uk23AF/P5R6V+ntmkSoyPZgeSCJiTQIM0VMiMgjoAMMJQ+poQXaWoherHj+9OSfWJ9tdSBcecrg64VrmoKsIArP1IditR2LZT1Cwp0jJDSFxSl2cNHjyJ0PW27lg0lSaFJ4+tIIpWn0H2ByTC1MEZMWB2ORNq0nKvYJdiXsv8qcoGL3aSvzONm+Qubc13/RLJvKcMCOn5bTvBGC2ryvuuQbPXdDGKgX+qPge1Mv04LBGwXc2iHZ+oSmDXQSiwTWm2t7e7QwRB86oqqz0wZRDKKkoSSZtAGmsqeWaB7aQrQEpgUq1LaqgYWyK8AVf9Aum+RfmlbH6RZ+1aT0FzqD8w9pPsy7lITAAAgAElEQVTWF0SqArWz1JenTMulD1eRqx5VvzJUpyJwfWilfqWv5kBjrg01hCD0ln5hypx1Sl/C2lP/NJUtbSD2LbsQXSOxwK0uqc9r9RO2rdPE+xXsn9a28Ndvq04aVsOOZe0sA81HYdflJ6SyZRTwCc14oBNqio7n6BUal9RanIVTEYpjzNAgc78CTURjv5KnFcqIBar4BbZnalnO1KBKTpKL3WoQOpKc5R88b3l9qnSfov3T1pZk5bvVIsT1L92nIRCI/O6lsmWUJokjxGn6Tf+y9djbEaHtt5dPJSKYwAdzDSJQDi8FgUEdbjf1VBHwI39iX1KWzL1S2DIP0iQhXZdx8ppJoKsYUuyJdH/adq5D6kynfzPbUvXLU/dfUqnMXtL9GQKr1yOhdipdpqrLQZs5vKiKnYcIxsYR816YDlvMzWY+mJwd+uDWNwUPkIPQuY50pNeagC8IKnoCHUSl/qMk7ScHVrcPiC9+HZW2PhmVrAWO5/pb4n0JvkZpu/6Cp8mtLjlAui9D0Fy/oq9CKvOkFLZQxoBArM9hKP1CGVpJWivUERF96IPRtXcFjqv/nIp5DV071z5vIYUdLiiAjGirRYhFr9Un8Cpf9SkR+hF6NEkEL23tNSUkO9CXUcdNl+exfWkE25vkqH1xi7lrgT4lrfSbkTpyiJzaAnH/7ghj/r/QB0tEZ1JJPfCguhB1kuCDYYqerpC29Kv6pbHtcEGTr1rW56EXvy7LvNoC6CjhGBs6On97XrlX297nUvdj3DHTDVKVaaBiOuD5cTkdK0e3ozK3R2cbWVv2Q+vJYbCcVh56F35ozP8JNnRgHow2lFCAv/goiIFOIiR0bbWjMk9CLwpdjYqlIyT0C0yXZV7pR/uF/jDoGI5zhw7lGJhXIWw107MGyBVtMQUpAb83t0JkW7HtaFKwwUQ4RVW/VkJX++Lx6FCdTjLm/2l9eLCxA/M/EsY2Bpf6i9hBJp/2Mw227cORdtDbZ2tQRELgv0o7K4N5vuBM2FTj1y6GVyN1nreo09FhB/oyhlzXxVxzwuiLFnrXbJ/34dh2NGOpYWsD2iFY4ZOT4jz34fYf7Qx6uHCkZqHq74AH2nGS+k4DHY+gczrn3d+mhN149hFeHLsgi/P8QAxy0DbjEMuErQOzxH75zW1T1Wd0oD9FpQv01NNAp5boDCPiR09hC80PpB12zT5KVN+qfkmgbtvmPzww6b5X1q+RNHpIR4mt1tav9JskdZ4GfIBUmpcTV1j9FqUWxy5IT5mnz/UB+Lolxv0r3FcOJ3gUbJS6P0Wl0p+U7rdQQKsBLo/TbeYu0e2wPobaoeovR9D5LWG66YvnP1zp3wQOVvEyppTX3QRYQDvMPExa70n0lX6fwIJxcGw7XAF/8++O7HSxH38/LMvlToD7yiFlCV1ru0tCVKPSfRYKIWKffWPbQacfUBvsXhhD72FFwKAxdc7ch9u3/x8HPbzUn4hg+3KlL2SnlUT8EUP3cVBJSfgkYnAJS6K/ZO60Kkuuzh87m1zsp+soZLtOE5kJtK/ontCp3dAPim7LjsVt5lbSfRYC6+8D0fbaPeT7se0gwq0CSIZEsQToVOxZsO1tDNPTIZaGQeoy9y4RBarJDR2ELfWapUDHURKLRxtjWUpQmp2EvSnF5bidYDfg54HbPl+6v/D+Mns6+arUH0zdrwLj5PHS/RUC+gAQsHcnMX7GtKMp9wuOaCc662j6l/XXAvU8cf7DA3O/6UUggu27UIAjxq1sjKk/gXIa4YuH/RKel/ObCla/EwQWkCRCb/CudtvF4bngtn8t2U/o8qkk5AOXtql0aOq+hdrdwvGfElQgRcbe+kWxbaETAagdSr89sv5nB+r5BYeH60+EPJyUimD7bqAKZMiO7FXm2bFtgNPcDmXQxZrKRC5hx9dfJBaSBOLMfGUXz2eB275Qsp84FNCzxHVDJ9CVQgf6ly8JTv5cQIVg7Dz8q4DN/di2UOwW0gY79r4S3YZSXxSka6k/OPfhVNErzBH6TxFs3w10xwEemDta68sKQIQzedjZ2ymiPqYtLqDFRGwBjSg+JSDRQXHSc41KMsL95bGh23+/f+r+hfRTgijveaArOaF4loti15hAZwxZv1yWonhMaN2EflW/bu7DQ2uT0yCJYPtKfcGRjbGvDgiLlXmUyIJCA6UyD4xtzzxYvT4ttYhGkrlkMrvZW5mnpGzfF1SdEO0znw1d4oUitqRIiZ0HdHDmLlH6hhRVIG3bFyLtkGI7bQOntLJTDA+H+i8VnSHdJSA7ll5qottQ6oOEFpfriKkstj1taPjelb5YyN4Y4lVpib6KwO07pcuFYlQ3Guozunbw0aEo6292oJ8DpT5Lqm9CIZnj31f6DbHtKSp9CNiOJFXvqGhRqM690txvbgOct3MqUxfBByt1bgqChN1DzJCtlPMe247QlMG5ovT1PkfEMYDmN48pvtSdCwPzWLQOUv1CIJpWtL6uGQHLEMgMiCP0tZqoVPMs9JQ+WspeitCObQ/+hbM+PbYNy+AEJ9JJllMjwQ1U5snC9s/WGcwdTmQLsW2gmtFCwSpDm1T9itg2tcEufhukbBXzYVn/wttOgYIXFIku0ScEOFVtGZZOieaTjySdqW/eHOeCKbN3mwtKb2mtxy0EmoNAO3YuKPOfsW1YBid10LmRJqAqoIF+Wb9K0Pa5CGXcmSUpcrrt4r+36IJjN9HYNs0CLQahYy2ZKP16XzvtgvFQtB6SZYApZxytL51S+Oqx6kqqKv1bge4IAgX3SjM0prhztmPinVAbEn/k2D56f5Depf6LeyOl/lVII0RpKmi7q+6/g3V2qS+PHblJQMcErJT6vJRvpeNYVYQzSl8fEgVLpUPRukiyWMGJm5q5ZB7hqwecFVJYUmxw09CcVgpkzkzMhQNj27W4xdwVa0f9zdg2TCL0OoSuZz0aqb8d6KDTWwuuR8DiwDwI2empiCFEqGHHB4TSV4Z8NUmAKsaJLj44CcqzpXrpaF0kS3BSOgx8vAVuduDjVcn5dDS6H0JANbvl7U2zESIJZJqrze3m1insWEZzQhl+ijKfJW4ZRTC3rG4qwKROlepV+vPIAbxRmbvFtoHoE23b28QnZ4I37UmsGnawwHE94pmG6kIvruh+2KVvIBdFmzhF5E7Tpaxfk7zf58u2FHfJ46Aa4KEsn379qP+YJlcbHiS5f2wbxtEEw3FOUXwq94We60/IQYL+aAVNrgK4GaYoNkCQCKaaLvVZFJCXwsZl2DH30Ti2Bo8B72C4ZSxW5r/gOjmUIw2FRMEOikwO0YWC/0KJN6KNjap+GboPfEAxGpEYGK9LwUDZUBEDrxCsr34Z24Zl0Ak2IjaE0hCdGy1U/XyI41R9Dt17CPpnJijYATqYK7NXCjuECihM6auGhCaJjYQRf/gghq1BouqXh9p2zFZzZ3h/leaZSP+Pwz7/MLwPwzcCOzY/m7z/Z4+LpPSuQqWYp4+5yjwlhY3wl/1EJ8hNLA2If8Mro8x+rd0fPBgOS0E6Ay7FeIVkqlAbQCcmrnLEsUvmH1PYGef+L0Ds1wHHLgnmNc4LxjwUnCu3GUIldEP1oSuv5GNgll2leTjS966goFY7Bs6IOAe8szsQQPe9/To+PrYNVDrXtruQbD5JFGeg6lSxq9jAGboqfUhM/cdh2+9Fm7z2S9mJJ1gAdEcX0U7Xfn8Lx6Zm8cXrJXYHaDeKL6P15UblF2V9avJxMCEpCnnQ2mznyMeJwCbi+P9UbDuXAX9piRgIRx9GvUp/SII731sZuwFXIpOg1JfHvHPqlfX3oPpHYIFq0jMoH13pjzQZB0qX0Sbv7nKRL2UnFwsD87REtk7vb6Wv5KYuUk6wwDz6AMrnk0DPGZIN281/cHQqBuapqcfCpHBOHYJ8oOpXpuBtoI8x+rK18i76SIp12krVL8G2eFE2c2Db2rcQCmq2/fB7b4XspP6R6CChjV3pt1J0poA/x+ww9wPrDi0RSMcxtHkPy9bWZ0kyxYX3VZM6dCjdsTvTDTJA6Y+pbd5lu9If5dpjXwj+XUCvTyN8PQ0UNITWl3zA1kuYKMVTxDcHmmuj4lOHhnKDCM6Lyq4L36UvUCIikiA6Ap/WXSv9IkLPpxdt29ZWWf/Xp3grV8Q74t1Jud6SRyH2zfZkpM4U5BSiB93B053bqFDCl+ilJvXEDJGR3idQRSkK9ED3l0SaV7AAxiXVgRfQTaz2tETENCKtiyq2JR8PQ9lKfYrw9TgoFZHmlH3+iatybVD6Evtzs5V9KQ6L4wt8ULN+L6qfJkEnqk2qdLxrEP+XSTpeiT8o6lOpI9Ff7ei0Icr3nNfmwpK5Ix1XU0Ab3bVRDevkE05I6FShOaa1kwaV1WAnx6bUdlk5AWFLYw/c5/XXUbqt0FWAQx3FuAgOdA0SVGlUenFt1ochYcp1qe2CS7PB1ecVw4/D/e0L2WNcX4Tsv78UqMtWNOFZb4u5mV333mj77uzofq3q13orLFY711Gss75IGyJqc6fnYfW7kSiDKrNRSodt44N2AJ9m//+1KX2XXGjRVfpADiFPF8hmqE49YuwR4IExqj4DpdskJHyJ0o2qtiUe2yVLf9rEm2NqaHXIVSXNdWtZf8P64T3EpzD5sgeng2YGtS6DrhXsZvoSumpI6r+QcthELZm643cZoOpz7M9DKfcu9E0fbQ8FJowCRX6f2j9dFrqPpVzZkKN5+/snptS9r8wzQsbaNKCDmaTIMSQyXApg/XZ6yU88nvfz1nlYjvYgKxem1L3LQjECdGzdMANiaa+3hqYb01f46MP28C6cDC1LcIBpasVbOv+XVgrKjfQhCZBIx8ni0W9KX0mFZ1w399QvlRSoGDRxpsA+6zKwfpeidBsHRW4L+HKA0o8oLxOOCWc76HSHSjB3neVurYtrNgh9KNKXr12f3mZ/74QOf6iFvxx32KiVHUdRl82XfH0KbRrD42998ISckFrPLCNR+gK6c58XYIi+KvHTEccChqwCOBLYV+84JCrDUfwISr/RnWyS8TDv65yu4Ubrzro9Tu+a2P44qpjYB0ZXHj2qFU+ZE6uphLNXlbWVk6eJWExuRJa1LVRtbRaVYeqvdFQwjV08zkXrhtBrhZ6VeRK8f0v9K4RuFE+TbozqLbP0sovsC7uWVpZlzcrhwROImN06YECWdSKjE6H9J6s5FQlfLHvKPD54Au02l+oz0bpJ1LSXqYVen43QTeJlw13qfcZ1aaohVvoQ2ujT6ZRlvQllgQVPIFrMUhuQZV3KdUQ3SXXEm3G4zdwllS50hMrch0Zzqf42XrewkqRtsM/dH+/H+jSEbnbz/HCScaD0xcs69JV5nNXjuFTjMcs6F2XuGz6BKMovtQFZ1rUQSx29WCa7S1f1DxCbkX3Wl9C6EQ0nQrdxjO6AsX0I4jyXZq+cLfU+FIC7KslesqwpYU8i+5ArghpX+vrUxmdZQzJkoUrR7vWAvejvmqwMsG50PI7QbRz2uUei9aRob5BuqcZeqloKWdaiBO+N9XnsSUSMVIGKX9srzSOK0BeCLFk6IgvKPJQ/j/Tn0HqhGMsm9JQ4CTmSqxelgaUeB1mycISyPUZ74s6g3y/1AnuCF0NChDADtpm7NJGpSm9I7cwsWRhyAHceNfUKwHrRnTJ7gk9gREOK1bPUH+fqRSmOHRgHWbKESaU/SRkzHAZMopplT3CqpBOswFiZ1Cb9SNXfSu7YLFk8hWgq2fNI6QPheil9NFevSUikXxFfOV+vtHSbWbIEyon0Ybs8jvtl/argZynzMO48IqrF24YqQFR+K55HBP1Yar8sWaRlB3ceSaSAooLNxiGRhkVlkrl6Feu9PkKWVSb1qdNYTO3/2xj6TFSBI1qMVIgCbYQSCwPztFGd7Q44P0uWdgktmbsM+3L7v2idWKxRMyDiv5DqUGNYqMzdU/d/liwu0lxZVeaRM+eX0r8NfO4vOHNodyUYRTLmEeMXA/NUiRzdLFmQMn59FAJ4BamhXMTRaRJCddvZ0fhN2lgHxkCWLLOlPr1tIydwmA57Sn+WM4cmJpTeN1QR+yX+WJc2epW5vVX6o/Z3Buk7J0uW3WXa9ZHfHAqPRZmpk9JXcnSahBiBj31p5+hVDOtpJx8DWbJMCmWBuRab4jAd2o/e53Hm0G4gRqpwg92q3UwYvtd6DqCzPvvrqDrX+aP66ieM0p4Otj/fWTRsXvU+9OVjX4SeTQOFXpzGhRitrA+fb78MXzf6nUPtoDhpxCm+LbWNq024fORNJScBvTg6TYK+MCR0XByYB3H0Wk1FojokW0dlp4nQ6FArB9Ba0KwJdm2YXC9oDaG1ZEj925yI7D9aNw4erT0n2s3re/bn+SOCnes6YGMiqc+iuBCKL/OaX0p/JLTNxW3mVpw5NG1S/TVIGVWfGdpmsd3cmorTS6TSJJKB9ccZBQVGVPq9zb1qZfamQMHFJXNvshfYZfN8exPaZCiX2eqz2KV6v12VY5fMP4b6W+oeOLg28rQxMaz9DNdxU2VuF6rT4tXmX1L3e9dllJnQo7WS8vVhwVMOoDVrYau5T/MRMTDPHZa0blIMeyNmv62p/QMRqsxW1q+xa8AtQn1lX7B+Fta2vgTZZw2aO4JAZyAGGBXsIGJ6Yp0qOlqe0E6svw11a76q+1YO6lX1iynaMeYkC8UmZf6Njnao5KB9A/1zan92TVyvj6bB9v+/i+jF4XaeQF/pN0joyKlYZ186n5K63zsoF1o5nF7A6IUH1f9SoLvj3sA8mOJQimH50mOajzSlL7ZyQwf8OWVe6d/SNRt9cKH2r1Bd7Fp8LKIfdkMxrCUb5pzKPAmtj30bvLn96nmOff5hoxzVGIx0l1Jksf25mUg9KNGf7gdpUSXee7SNqUFv3nRlkr/eRxOr0u/h+FNEL+DcKjhzfJYofTVLp0ofkrrfuyBNRlDz5Wv2QPV3V0Avu00teWWeTjXni+EVAR3xn11Ir+v265fKN9OmSXUMrB7PPP4a869oGzkxNHRVgtaHVXmNWLLgCk0BHYnSm2BfmWfQl3HzxVHpd1NB+9FX53H26/kUOvamlwDK423+TukN9uenm3KIpX6H/f+vpI6lRP7FLeauEh282kDEQBRpaeWq1ItbwkWVRTBjx9YSXK+qfgmqj2mO4H2mf8/Tqbm3Td73SUTpkj4c+kvmTqg+Xq2g00N6memX5uFWnkX3/Mt3/NOEPkTonruJNRqY59L+Zf34kObqa7u5NZ0axNS/oBOVwHFAay9cIU7IvZXz4QplJEMTjCfAKNZ14UaVi5x0KP02VL/SCy5ev/oMlk6hsTurWVT9LfqgQPVrRnqEBnbaNecaMaWKJuo6cDFcg0fS6x3Nm+86i0Cm9MpQf0l8bSJPv0ZHnGifbQ7VZ70RytBpocjXWEZSUOBq8JgA0E7PxChPPHCwAvPoMjoFut5YN7WiK7NXsJ+UPlZApx6sH0v9RwH9DgvVh64Tkvd3HDmR86KY0W3QFW7o2KCYAjHFmnzF0EGr9CYxxTKSgyKZRwF0gbV+V4ko/ZFQH1HFJbxO9TdRfUjHe2j9ODzu1tefSd7fgmLny++onCaq/zK6Cbuhnxw6RiiGS1a5QEIBO3i3iyqW0QkMi/nUp6ZeLOWkPjXUN/b3D4Dro+qfI/ptWNpRYtOqXxjur/qs9P0tJMDYh4xuowisf27lUnHl6Ew/eHIPzIPFFczoBOwL3LuSL5oyC3FwGpbdfF8uoBNk0hP5i4S/iDQp3F9r8rTnCleq0IzVD052GJdu2gkFg9ed8vzEFczoDCjFhFJvOrCIQiWU+UyEJMVueoi+IvIjCV9tVOZuIfqsyYA4VX8np8CuLxSV/lT4mDF7iivILOCQ09fWGSjCc81FwgcGxnFqIrQJgsmKSD0kdCOGrCB9hqxi6fsaJ31uH2WsPhBxTeiYiZYrbxu7NFRJOMl8RucxJIUIT3nsnAQGxjW1CQT0WVgyd+T2Ua+sXy3gpxtC9SkYRBxdEypuwu2fjNUHCmgLnzvhNVC80XDcBioqQmOX0Xk0xWBk8pwTCCswDq7PgjIPZfdPpd8N141RVGLtjBV9MLdvMlYnGtbR0HFj52M0RYfUe8GL4WnRFM3oFOhoOLjiULdkR6gPCpHStfy7Nt5d33ShTTlYn64W7fARRopjxuoHZaCEzx1zv3iK2q8tzkBfDRWCMmSw4Spz057Sv06+2DJl0w5zmxD7Rehfq/q13H6xz9mM39Dqk8N0MXuk7l+uEC8+t08yVi8WlPnP8Hmjy+gKN0VOwif6y6MrnNEZUE1hIVayaLIwME8LsV2E/lXp93H7ZFTyF72pBd0dL5T1C1L3L1OC6W4z1gb6lX5T7HnDAi+ntj4lusIZnQJRXUowk0WTSr83yO6m4h9cnyO4/WG/Ci5A6xX6olEMy2em7+Mgqc/i9kXG6geHFMmujY+OrjCnYDvJSVvM/42udEanQLW80y/AgZOu1F8Ms1mC/lV/idsX9kWjEtjc9gnSpay/m7p/g8aE0lfS6RO3LzJWNyiTizOGkinOofikY7Vkimd0BsWwfnHyxThA/hBorwT965mAfoD7KPRawv7uoAP96y1JvqwyOoe+0m8In8v6C8kUt2/Srwke/GX9tWSKZ3QKEve3MYT4z31t7an6FQK6BL1cLIPYyyT80y/N/X11oS/c1P0aJDHTjDI6Dbu3/YgxZ56QTPERYUjwJMg0iBmEJkhO6SuTL8qeElKbQIL+1fruKo7/F6v/v70zD7OkKBL4/qniiYouuoCuup6wHuu6iKB4o6LrgSCisODyiSAgAq4rggKi4gEoR8+res0MM4siglzLKSgrsOoICMJyDshk1es5mAMd+Cfzy4143TN0v1dVL6syo6Jevfh9X3yf0j2dERlZEXVkRthXkszRGrttWV3G8zOMvsln/oX2gEWePK5jvtftm4mVvt7jYvgCt/5CM8ByqvyBuZxUKZJEVf7VZ+7xVXFTdIoScwy3X8sI6Ltpumd38Jl/oT30W0hXX08Rt/5owCGVDQjU+lFoB7CWlnEH6JLy47I24vl1Cl2qnotHuj37cQKdKhXfGbc1EKXm4KrzLrQPWL8rqq8l+z5u/fvNN3wuCPIG7sLYgAWH4rHaEFXtiBJJYvGoLOV1U54vd1Wcm7v4/ers/2urzrnQPuAafKvHenqMW/8tRIm+rnIgSs2J3PoLzQHW0t78gdpx7SbmL5VspDh/37PvrzrnMcFJg0jpGyrqwu5XZxtX25dVnXOhfcTKTFVeT/BvufXfgk+RGQiKD3PrLzQLnxrIdQu+oSpvn7kvuC5K7191vn2aLRVI6bPx0Yx9Lbc/S4h3MR+hPeCJF7zBr7qe8Ome24YtYN9Wn2YKrFv1hcaB3cMaELCdpJPYd5e1D3dFh9YDN5NVnW94mv45gT6ly1eOUcnXjXJCR5hPnOp9Pa6VFdz6D+FT0hICygXc+gvNAtbF+Q0I3KMlNUeUtS1K9C8I9Ph+9bmuXqYyV5Q5rvy8mG+w+9PNti9VnWuhncA1faPHmjqeW/8hfM+Pdnv2+dw2CM0Ba72zB243WVTWNvw3BHpUbggC//ae0PpU2f1N8aYguCijqs6z0E4WKfsKnzWFZ9e5bcgElFtVOQAk5svc+gvNApLCuewBfKSULyoSKfMtAj2urjzPyqwLrU8ntR8tq0dMcGMRXCq8kRHaDb4d87hum9vMB5LyqVUNk81xwiDj0Be7yk53SKBHEuhxa/V5Dj8v06l9WxP0CDrHcOMjTaWEQWBtbKy8rlL9OW79c5mesa/zuWC6Pbsbtw1Cs4gSfSl3IB8pJUucRqneL7gOFV8Fo+4Uc4LlZMvo0Vlld2T34yhJzTerzLHQXrqJ3sfrOllvn81tQyGxX2GI87n1F5pFnNpd2AP5CCm70x3PjFPoUWV+p5X9RwpdsM9DGT3gJudT3H4cJbLPRxgEOx1WXU9jsRk8Ss3hXhdOhYYOQruBhX8LdzAvvDBhzZexp5PaN1LoUeVun6oZSlk9ImVO4vZjoY+VOaesTUK78X0j3YhSr6OYWmefFSvzuIehp3DbIDQLklfUIYN9as4qYw8286DQo0oZ5W6qP02gy6qyesCTzs+4/Vgoyu5U1iah3cQep1XgBvEBbv2diRLT8bh4HptK7dO4bRCaBUm51GDBXv+yjC1LZuxWFHp0E7tzhXkNvkEvrlDHHR4C7mT3Y75/pYmUsIB4jX2G35oyR3Hb4Myinn2NV2BS5vPcNgjNAi6AH7IH9hyBpLiygj2VKyvm6pHaj5TWIzGnBNcj0b+uoAe7H3PjUaIPKGuP0G5gXRzts6aWPmqfyW1DKeJE31zZYGUe5NZfaBa+xRuopaw9uCs9uB4VjsBEiYlD64EFYsrogIU1uP1XIBvLzqnQfvAmvvL1Adcct/6l8altOxsU7Ae4bRCahWd5RVIp274UAsIfQ+vQVeY/y84p3HhfFnwuSm4go9r1H8av5WvSC+0G34R5XaeJfQO3DZWAi2FN9aBQrf2i0F66qf537gCfH/j13mVsiZW+niCRnlZ2Tkk62ylzcikdUnMEt//ybbH/UnZOhXaDn5Sqr6cx3o8Re36fw2IT3DYIzSFaabdmD/B5yTQxXy9li9IXEOjxX6XnNDErgs+FMkeW0QFuAM7m9l+OPFJ2PoV2gxtPva6NVO/HbUNlFqd2O88g+RNuG4RmESf6qgYE+qy1uqyUHQRJDJ4cris/nwRzUTJoUbytCOTT75SdT6HdwI34FZXXkzKPcuvvjW+rSDyzy22D0Bwg+O/PHehzkunycnaYk4ProcwdZXTA46EUc9Hp2T1KzkXC7b9sn5bbFyG0G9+qitiUidsGb3xfUYCcwW2D0By8z39SiTKPl7JDmaMI9OiV0YGqwE1H2beUmgtu32UIBN/7y9ggtB98Y+yzplpTOhhbTFa+sBKzCZwRq6EAACAASURBVL+dctsgNAd4Gr6SO+BnybIN9jklbPg3Ch3KzCMk9H+i0AGPGDrPw4x9LbffcuLOqWXmUmg33sdmlTmb24Zg4BE0r4tLma9x2yA0B7g4vsQd8DMltW9ytQH7hVPoUKZgRTe176XQYSq1z3P2ZWL3ZPdbhnQT+y5XG4T2A2si8llP566yf89tQ1DAqHuqTgaW/cQa8dw2CM2gsU91Sn/C1YZOz76dQocye07wqB2FDmV82dQja2VsENpNgMJH7esi6tsEIkrNidw2CM0B1sQq7qA/tEYTc6yz/sruRKOD+0Yu0PeQ4OPDzXdJP57B7bdh0VeVsUFoN7Amzve6JuABhNsGErzKXSrzRNkey0J7gfWwmD/wDyUz5wppvkc683Ww73TVASvLBR8/MSvK+VFfzu23jFjzpTI2CO3Fu0Vqoq/ktoEMMPAwz4BZuhKW0E58SwuTJNNEX+OqP37rJtGhxGv/ODXfJ5iDUsf34Abgbm6/DdnQ1icqoTQ+585Ruj27G7cNZFyw0j4VjFzrM0H4ZMNth8DP4rX2RdyBfziZlutxTKJDag4uMX43vA76Wu458PThujL6C+0lTu0uXutpnMu8uhIrc5znRdfltkFoBrAWetwJYFDK6I/JI7gOqfmK8/ieRZ9ygtiFruM38aYMbkiuLuNDob14dQxN+iclPsxtAzlnrrZP9w1k2G+d2w6BH5KE5CnldpmHr6MO8t0S81e9yUS+ON9wez8BEYhsvhWQrrIf9FpHibmN24bagKeIr3pNltJXcNsg8OO7jmgSgt3VWf/E/CH4+InpOI+vzB3B5yA133cd3/fkC4VgIHfVX2gvcB3d65ejJqj9Nz6lQzBZ73Xx9ew7uO0QeMHiH9wJYCghQJJy1T9W+pehx4eb3Z+7j+9x6iRv/BJd5yh22ftKmaI4QjuB6/IzXutImdu5bagdPLPrOWl3ctsg8ILFhrgTwKBgknLVH5NvcB2Uvt55/MRsCm5/ar7oOj78/iJuf80XmI+HXXUX2ov3jW5q38NtQ+3M7Xhf7XUBKv1ZbjsEXnxfjYVPqGbKVfeYYpd5iacDkqRY4prEDWjs/lowd/pnrroL7cS3ciGs/1u4bWAjQMepVdPWPoXbDoEPkqdcL3GvMkZxDhzkEZexp1fbF1LYX2Znb+xRDppITnDVXWgfS2bsVtiz3Gv9K7s7tx1szD2le5XwLPPNTmgfcAGe1IBEMF/ucdYd1m7o8eFv/sVl7G7PvprCfqxR72p/A3y1UJTey1V3oX34xpIo0Tdy28BOiOYMU2vs33LbIfDQtIpx+F3aXXeaxiQuY0eJfSvF2PCE/gaX8eFpaBtuXw0Klvl09Z3QLmDd/p33tV/ihEtr6T+le25CiJS+gNsOgYdOat/InQiGklrPPt9F9zjRB1KM31llXzBqbN9ztrlJcaV9uYvtUc++mdtPg+Kit9BO/GtaSEGiLYR4ymp1zVwhl6nUPo07EQwlVLjJcNG9k+hPEo3/qlFjex/NyRvb4WYCwZrz3H5aIMrc56K30D6woZHv+pFiZwPg7kDPSb2L2waBhygxf2ZPCPMkSuyHXPSOe/b9FON3E7vzqLHxeBnF2K6bVKPUHM7tp4WiL3HRW2gfcDP3oN/1bn7EbUPjwG9v/oHUHMJth1A/TTv+5Nogheo7tkuVKooNeSiuPoPxv8Ptp4HYcaqr7kJ7wFa5ftea2bBsg30Otx2NBCZo2uvCVGa9VHqaPLDcKXdCGJATXPTurLI7koyf6n1HzpkyPyAYe62zz5Q5rwF+ejIwJ+ZQV92FdoBHN/FUiOfa+QK3HY0FNxMFqF4l3dgmjAAd/ELLIhe9OzP2JVzJKSYoaoPNZtx9Fr7srZfuqf2Iq+5CO8DN1J7r5v+4bWg82P7RP7DYt3LbIdQHJIf9uRPCQtGXueiNb5MoxncpPws6XhQ8KSrzR2efQTDk99OT4rqRUWgHcWL39F4zJWouTDRYU9lzsp2LewjjT4hdqkETW2JuddEbN5CR6JCa740aG2u+hx9b3+zsM4I68j6C5+JddRfGm35zMM+CZnhDzG3H2ICvvwIE1WO47RDqYZGyr+BOCAPSc9WdYnyXFqp40xF+bH2ti81zAZXbRwvE1V/C+BMpc47vepnu2R247RgrvJ8glHkcq/9w2yHQ08Sz6K66B9iUk7H29YUO464IPS4W53CxuWk3YBDg73f1lzDexKndJcCaOYHbjrGjv2FImSf8Jt7tW6Yw/vg2VQgua+y2LnrD7/YIEus1DvO1jsDupS4247dHdv8snC+pwT0B4CcuvHnzWity81cd3NzjfbFKi9WJwPdCDZ8k7Otd9PYtapGToJaPHJfGbrfd/UQV8jzmy+nNgjDe4N4S37UiG+E8iT1bLOLmG/ne0X4wiXEnhvnSTe17XfSGhH5H8ASlzANFYy591D6TxG5lfuhiM1WVusrzlZpzXfQWxhesnui9ThKzjNuOsSeEI+JE38Rth0ALvmbmTgwLk4Tez0lv/5LHWVJY4GVxarcjsVmZk9xsblbLWyyy46K3MJ70X7X7lodWZv1iZZ/LbUsrwDto/wBr/oPbDoGOAEUiwooyRznpnejrKMYvGpOqQp3rNQa/u4jdPwt9dZyL3sJ4Aj4+I8DadirnLDjQryCnzAZvpzh+1xTGj6YlCaxV7qI3JPRLKcbHnf+5Y6Z2VxK7U3OEm6/0Jdz+GfCVlH1tKUE2YCr9O247WgcEvoMCXLj3Yv91bluE8HQT823uxDAg0y56w+/9lGT8gl32IapkZV5frk1paD4zVBeH2vfC+IH1DgIUKcOWwDty29JK4M7+f7yDjrS6ayVYSIg9McwXpS930jvA56Rssf+QNyZVL3T8uy42U+zs9wrYPbuH6zoTxgfcxBYgXzi9aRMqcO4q+/f+Z9PddyAL4wO+NuVODAtF/95Fb1jPUyRJStm35I6ZmMMoxoQn70842czum4F4kNh3ua4zYTzA48r+67n4tIgQgECBuyc9bNtFiE8yQZNbYh520Rt+93SSJFVw0xqivkPmmMp+cJS9+MmL2zcZeu9eYqkJDQcrEYboFSANe2oCgvdv/AOuFJNoE91Uf5o7MSxcX+YvLnrjKz0SHZTeq2DMU0kSo8OTLpZj5vbNoEixkHYB6/tP3tdvak7ktmNiiFK7PUz6X/0DkD6A2xYhDN2e/Th3YhgUPP86Sm8IPt8gGT/Vn8sbMyY6EeDStnha2X/k9suQ3qndtex6E5oJ7pHyXg8l2gALgcCA5R+AzKZotX0Zty2CP/i6lzsxDMrUGvu3o/SOU/NVovGPzhuT6sy+yytKfIrn9suQpHaXsutNaB4hunT217HsauchTvTVvs6DpH73khm7Fbctgh9NTBSLevY1o/SGp4EjKcYuemUI181VFGN2e/bVo+xtWh33vt6J3bnsehOaRb+ZV2I2eq8HuMHmtmViWbzWvgic8Jj/RS3N6sedQG0RQye43UbpDTeUhxCNf0bumETnwF3edsHvfYHbL4NSdCJAGA/wNbn/WnA7mSIQEmozlJSGHW8gob+JOzEMSWr/daTeiT6QJLkWNBzBt1IUY2KN+JH2KnMcu18GpDtj/7nkchMaBKznjvc6UOYJ3B3PbYvwN/27/vODXNhyHnVsAd+9gTsxDCXVRB80Su8Q52Vzxr44b0wIXopiTKc9A0TH9LxEvqGPLVGqPxVmDeRvIhVqButWYxGAAI7diMVruO0RyoOvTdkTw1BSNceO0hvLjpKMr/T1eWPikTqKMeE6fN5IexOzlNsvgyLn0MeT6Rn7ukDXyoXctggDBDsOo8ydRY0thGZC1nDEQ+Am81sj9Vb6EyRjJ3p53phU9k6ts88aZW+c6Mu4/TIkqX1P2fUm8LL0UftMuL7u979OzIp4jX0Gtz1CBnGgkpYQZH/ObYtQjkjZd7InhmH58Ui9Ax21GRJl7ssaDyskUtnr0vgoRD+G0AJr5wNV1pzABzxV/yrMdWJ34rZFKACS8RVBLvLEfJnbFsEdSIzv404Mw4nCnDdSb0gmJGMnZiZrvOme3YHKXhc/wY3GHdx+GZoruKkqu94EPsBn3TB+N4dz2yKMYHq9fTYE0pWBLnSpIDUmULUE9RN9ySi9seY6ydjKPJ45T/BEQmWvi5/gRuPP/H4ZuM4dm8oI/MSBjj1Gib6S2xbBESwUEeZCN492lH0xtz3CaOLUfow7MWQkihtG6Y0bsqjGzxyvZ3erc7whPymzntsvQ35K9afKrjehfkIVj8IHPmnONWbgufIgzk/MrS7fBgVeuonehzsxZKyd20bpPZ3at5GNv9JuPTge5ZsMFz9x+yRznpT+bJU1J9QHnhGPgxQRc+s5IDQQ7KgW5qLXl3HbIhRDVaDFS5R5cJTeWNSEanz8Xj44HjyN7kc13ihbcWcyu0+y5QsVl51QA51V9gXgo4cC+fowbnuEipy52j4dnpLuDbQQIm57hHwgeR7VgMSwQGDtrRmlN2VBnKwmEzFh6VUHWxvXOhUF+8NXXXcCLXgUMthGSmUWc9sjeIKFYkIV0pAeuc0lTs03uRNDRgB5YpTewYpjZElGBbRQn6KyZJStndS+it0n2fLdqutOoCXUMUf8dMptixCIsEeD9IHc9gjDgG/OaEBiKJ3k4sT+A9XYnZ7dI2OeTuGydbpn/4nbH5mizFTVdSfQgadEAvl4tUtZYmGMCNt32u7JbY+wEHydxp4YMgS/Gxfp3Z2xL6UaO0r03oPjwZPKmVTjjfRRz76D2x/Z82R+4rP2hPCAX6Jg/u3ZN3PbIxCAFeBCLRJ4+nk7tz3CkwS8mw8ra+y2RXpTflfupvrfB8fDYjdU443yUZTYD7H7I0PkTHKzCPn5LErNwdz2CERgjXZw8l1BFosyj8udX3OAoPxr7sSQJdMr7cuL9J5ebV9IOP7RGfN0KdV4o3zUxKOFs6Jv9ll7QjjghvPIgL7tctsjENPfJKfMuhALBv7Ohm7PvprbJqH/Kvk2/sQwLNg0qFDvlXZrqrGzNnFisRuq8Ub7SB/E7Y/MeUrM3T5rTwgD3PAdEM6v+iZue4SawMICAQNCrzNjX8Jt06QDQflh7sSQnSyKi1hgpyey8ZX5YcY83Uo13kgfhX36Cuij7Lr3Qn10UvvRgOv+vqyiSkKLgSfrjwdcQA8umbHbcNs0yXAnhTzBWu1FevfP2dIlqnhwPEiqD1CNN9JHyhzH7Y+qugt0YPvagL5cixtNuW0SGADnHx1sISlzp9wV8rBY2edyJ4Q86Sb2w0W6U7YzjZS+YHA8+O+rqcYbVSIZrpGTuf2RJ3KsiQd8gwU3npuC+FGZJ/BoJLdNAiNxoFZ8swHU/BGfuLhtmjSiGfta7oSQH2T0XkW6T6X2eXTj66sGx6O0dcmM3arQT8r8gN0fOYIV+3zXoVCOTmrfGKroF0pW3QVhAokSfU2oRQV/azmWnOW2aZII/MourCj9mSLd5+pUE40/vHub0tZRZ+6j1JzF7o+861bZD/iuQ8EdLEuMm4pD+S/riKYwoeCTBT5dhwsO+pZpa5/CbdekAElzf+6EUDXQ4Dl1svGVuXP+WN2efT6lrdPr7bMLbU3MNLc/cq/ZRB8UYi0Ko8ESwNiaOuA6H9r8KUw4eB4Y++SGCxL6Wm6bJgXK+uS+0k3NF4t07yj7YrokZR6ePxYe2aS0FfcyFNkKv3M+tz8K5urrAZaiMAKsyxAH3McBD09XcNskNBSsqx32zlH/N7dNkwAE4x9xJ4SCRHFMke7Y4pRsbFjLC+fJvp7SVvx8UOynUO2MCUSZs0OsRSGfuWTeC7e+9Q3yJlQoJFZ2J1gsj4UL6Po3eNaY2642AzdOF7InhPxEcVyR7pS13FEWjNWzu1GONWqnOG7SY/dH/nX6ixBrUcgGC3DBPK8K6K/lWPmT2y5hDOgo+xYs7RowqN8hx2LogDv133InhNzAo8xJRbrPPbWQjT9/LGwqRDnW4rX2RUW2wo3X9dz+KJA/hFiLwjB4giDwN/M7Ru3XEIQFYPOVwAHjkWi1fRm3XW0kSsyaBiSETOkm5ttFuk+n9pWU48//rh2nel/SsVK7XbGf9G+4/ZEryqwPtR6FJ+k/HCVmY0A/3YebO7ntEsaQ0E80eJeKZy+57WoTeEKBPRkUSWq+X6T/op59DeX488sSw43PIXWNlUWT36SgYJGfUOtSgCdzZXfHYi+h/APr98/yplPwIvRTTb+QQs++g9uutoDNT7gTwQg5vUh/6qI4+Pe3jJWYY0jHGvEGCn7nDw3wR65IcZlwEHzeWYWnNLjtEloA9tQNHvxS+xFuu9pA0KYOFEkuNWcV6Y9JhFQHZf9l81gh+0xnCb5tKLIVv31y+6PQV0p/ItS6nGQI4uXG+TemguANLNLDwwfb4ipiwmjikPX4aWRRkf6BO/8NSSex794yFnHp1VF1tLFNaQP8USRD/eOFcoCPTw3sk8fkzYlAAizWQ4MHkdQcwW3XOANJ6pwGJIIi6RbpD8HqXZTjz38TBP8/Ih5r1xG+Iuv0FkR/WEuh1uUkgs2AAvtjHX5S47ZLaDFdZT5PEEgKjzYJ+WBFPu5EMEKWFutPe5QsSvV+T45lfko7ln1fka1N7Vm/Rf9EXxNqXU4SWGcDi7wE9sdarPfObZswAUASOTB8MBnuXS2MBnvRcyeCQr9mtDCdTyfRn6QcH29AN4+FZTJJ7U3tvxbZ2viErsz9odblpAA3cdtjz4DAvliLhWi4bRMmiG6iDwgeUBL9myUzdhtu28YJ7iTg4NPCCmQU62hAtnwXBl1upBwLbNmnyFZI6Cu4/TFKQq3LSSBS9p14fj+wD1ZhCW5u24QJBALk3sGDijIJ1tzmtm0coD7DHUJgjVxZZAPFJ5wBOWHzWJBQb6MdSx9YZGvT36agjNqpL8wSKXNk8PlXRmEpZG7bhAmGKKk/IUdoRkP9ujqML/X1RTaAr48iHT8139s8FvWmNNw0WmRr0zfFzflrr1Drs62An38Sft6Nwtf33LYJwt/Eqf0YRXAZVTZ00olScyJ7Ahgp+uZCG5T5GuX483duxwGbY+RI4bEv/EbN748R85WYb4Ran20jXmO3hfX8e4I1+oAkc6FRYPW3OGCXti2i9C+lEUE2UaIv5k4AoxOEXl5kAzyZnEysw9J5Y4VrOJSdDAt7isPP7+X2x0gblP55qPXZJqZT+7Y4YB/zeWvmtmil3ZrbPkEYYq4MafBFD/IQtnXltq9pYKMG7gQwUpS5Y4QNPyRNUPM25dVg7ylFto5BYRlMMPeGWp9tgeR7+ezavAZ7MXDbJwi5TPfsDjEm4PCJ4XH8ZsxtX5PgDv6OfitM6PSFcfS1OA6+5anB3uK69Yn5E7s/HCTkGh13SL6XJ6OPcwpCY8CjZ2R1q+GJjtu+JoAnAbgDv6O/bi+yA36+mHZ8/b84Tjexf0dtKwT/zghbG13LfbNIdbK5B5Pw58s3yxnc9glCKYiqJ80FTn3jpLcRxDr43IHfMcndWmhHoi8i1WHuDUEnta8it1fpnxX7zNzO7Q8nn6X6UyHX6riB1Qux7CrR9fBlbvsEoTIQ5C4kuTDggusq+0Fu+7iAwPAd7sDvFsBGbYrT15PqoMyDOA42TqG3d/b1foHPiM/BB7u2vhVyrY4T4KMf0c2r/iy3fYLgDSzmUwgD0ES+vsINNdyB30mU/l2xHeZW0uSUmBkcZ+4UBm0iHHXz0vB+6E+KvirkWh0HsDob2R4HZdbDw8fu3DYKQjCwUAwWjCEK2n+atHKJYPdG/sDvEsxmv2HnUUM51Mdmx7EforYVzxMX26qXs/vDzY4NIddq04lT/TnCI433yBlzoZXgRi4IFivJAlGiD+K2sQ6mV9qXcwd9d9E3FdlC9a1yvvTHoahoOLT+zJpiW/Vv+f3hJp0Z+5KQa7aJ4MkHPHdPtx70L+RYmtBqFiv7XAzyhBfRxcs22Odw20kJblriDvgl/HFjkS116DBt7VP6T2E1jFVsq76Z2x/Ofmt56WXsXQ929gjn8ARuGwWhNmJlpsguJmzwouw7uW2kAp5qT+MO+O6Sv1Fs6aP2mXXogDeRVMVBBqXoiSxW+lf8/nCW79KsXn7QNqp5ixKzqZvYD3PbKAi1E6XmYAlK5aF8wxFclP7vPDsWp3a7OnTAM+jUNeM3S0fZFxf47Vp2f7j7rbCpzjjS/1RFWAtgtt/9ZO3lEYQFQLDdGXci0wUmczueQea2MyRUmwtpglx+P/TOKrtjHTpMp/aV2OinjrGK2o/izQ23P9z9Zv5Cs3p5oG7TC+v8urZ/6hMEJ7BITKT0LaRBSpmT8Vsqt62+zNXLZw/47vOeX2xl7jtmDcmpX1XvjFrsTe0uefbCE/ol7P4oJeP/tIk7zHEfB+n6Ss2J3HYKQuOgLOowJ490U/tebjt9qGtzV7Bgl5hlubYkds96dLBvBT3iOsYqKnZEVWSJzJZUf5pmFdcDJNrDwY6/Es7RY3HPvp/bTkFoLJCw9qV/pawvKvrW2WRA/0Xcgb6kTOfZgpWzaklMiX0XVZONobEKkiD8/L8a4I8yUthspqngmwXqfSaRMn/sztiXctsqCI0HW6WSFxzBQhLKHMVta1lA97saEOjLBL5zCmw5uhYdUvsReDq+vBabC9YU/Hya2x8l5Q80q5gOiBvHkq+nxCy7YKV9KretgjA2zLa71FfVELSwktOu3Pa6EK20WzcgyJeTgu54ddWj7yZ6H6pGQcNjmW/n2QtzcTa7P8rKGvsMmtUclrn9GPfUMCeHcdsqCGNLnJqv1hS8zp9ebV/IbW8ReL6VPcCXlKJGH3FtT6z6QKwpX5PN3Tx7x6t+wKw0fc8J3HBsC3qeTz4XyiR4IofbXkEYe/qdspR5kPqixaM6TX4NDzc33+MO8BUC4XG59tT0Ghz8eihZ440h0Zfl2Ys3N+z+KCup+SbNavYHfHpM/5qlXj/KLMEiSNz2CkJrmErt06LUnFVTAri7iZXmsNEJe4AvP5e5/Z9rtAe/1T9Uy1gFzWhgLr7O7Y/S/lP6BprVXB08SRDX8Hodm9TEqf0Yt72C0Fqi1L4PLrZVNQXnC5uyG75fj7wBAb50UISn4zybaui0tlmOB1ldk70rCuw9htsfpUWZJ2hWdHn6NRhqKp+LhWKa/glOEFpBvzZ3oi+uMbAdz12UBvspswf3SqIPzLOpjtelKHNV4ijPI89LBGZTnr3w88P4/VFe4Kb2LTSr2g0sEQxPy+fVZW83NV/ktFcQJhJMFnUlBRjnz92e/Tifrf2nTPbgXn7e9N5Z9uCxnxr1OL1Om/OONHUTfQC3P6r5MP+zCSVYSrVO34Gdt7ahOp4gjC3TPbsDJPara7volb4FX/vXbSe+AuQO7NXmy34gy566GrPM6lDf011/vNRun2VzJ9Gf5PZHJXsK6vFTMLXOPgvLqdZ1s47SVeY/67RREIQCsH9zTNvfeCBJ6Fvi1L6nLvv6hXAaENzLSqdn355pT2rfVJ8e9dZQx1MZWTbPbeZi90kFWUu6uOfAJ3L8PFJnIoeblWs6M/YlddgnCEIJ8M6etM96VkBQ+reQtPagtAtrkTcgqFeSTmrfmGnT7ObGuoL2r2u1OWc94M0Ntz+qSjexb6Ba3xyJHKSHDwFUNgmCEIj+0x9h3+Ns0b/Hwi809phvcgf06pL9TbLO78lYd7vmtZC5EbDetxKBJTVfCb2u5yofnlJzIsf1cJqcKxeEMQOPTMXYEanOYJGYW7F2eEg7xvH8+WZZvNa+KMsm/GZZox6P1Glz3vfYTmpfxe2PqhLyPHpnlX0BlgSmb8I0YEOil+PRt1B2CIJQM3iWFC7mn9YeABNzNyTivXz1n9vpyx7Qq0rekxD87Mc16lHvTV1qzsq0ebZMKbtPqsqZq+3TfdYy2s9R/na2QIw5wkd3QRAaBFZ+q6N8bIbcA4l9/6p6400BdyD3kVy7En0Rt25UgjUSsmxeMmO34tbNzy77oSprOFptX4Zd93h0NjHM+zZV9BYEoeHgt8C4piIjCwKLMim+isUn7lL6JibiDuQeNq/LtWuMPyOMlILyr+y6+cmPS63dnn0H3NxcyqFrv1+5NFMRhPbTf/Wp9IU8wd48Pvu04lbAIq6pZCmRPFRgV63ftesULEKUa7cy67n1q2yXMve7rNlI6c+Cnbcz6bghlhangjB54Dlyptfws6L05Xg2OU+/bs++mjuI+9lnbs+de27diCXPbkz23Lr5SN6ZbXytDT8/Huyb4dINX6/DNfP8clFAEIRWga/CsQY3YyCagSeLk7oz9qXz9YpSczh3APeyK2dn9FzwZ9ePUqZS+7ws2+s/ThlW4Fr5/MI1aneN6+hHXiD4eh1rNYSLCIIgjDV4Z8+xA3c4OOkbuqn+NOoUJfpKbn38RF+UNdexsjvx60YrnVV2xyzb0b/cuvkIbvjDzX1wE3oI3JzcyaqLMvd3E70PZVwQBGGMmasxPs0dOEE2NkAHX1mUNcdxz76/AbqRSje17820fdx39yvzRN2FYDKkF6XmYNpIIAhCa8AiIDW3aG2dYDnPrLmFef03bt3IJeeoIiTDDrtuYyrwRP4ozN+xpBe+IAjtBXtBj/trUkY5OmtOITB/rQG6kUpetThISN/h1m3sZPZkyLewVwPt1S4IwkQw+5pY38Qe3MZKsmuaT8RTqjJTObYfy67buMhsIj8tb4OhIAiCF9hgA/tDswe7MZC8ymJ19q/ns11fmWX7RHxu8JfVkMyPkydyQRBqActZxmNcxa0OiXr2zVlzBz/7P27dapC7MtcN3OQ0QLdGCjyNPzB4LE4QBKE2sPnL3HfRNuxKDxugU7t91pzhq1Ru3chtT8ymLNtxTwa3bs0T/XvpTS4IQmPATlTwhHEkJKuEP0A2Q6atfcrgPM31wGbXrRb719tnD9k/+2aHXbcmCH6W6Cq7qCHHIgAAA8xJREFUez1XqCAIQgWw2AUEqxu5AyazbMyamyixr2+AbvWIsjsN2o/tZNn1YhQ8ww43vj8YrIooCILQaOZqsS+ahFfMQ4FbmQey5iRO7J7cutUleXX6Y4Zufw2Qu/D7OFaZo73qBEEQCMFXr/Bk8mWQFQ0IrLVIpPQtWXMBc3Aot261zUFiDsmZg3u5datvDvTF8lpdEIRWMvuEqq/lDrQ1BPJLs+033+XWrS7JrZTX/kJFq3GjKJZRpr2aBEEQGsB0z+4QpebESJmVDQjAwQWS1hV4AmDQbgj0P+HWrbY5SMyyIb/3T0Xoa7h1oxF9VZzaj9VzBQmCIDSQTs/uAQnwAv6ATJDUlFkXK339XCI/faI+O8zaenrfdqV/1Z+LBugV2L8rwb6vd5R9Mfd1JAiC0BiwxGWszFHxZBReERljwZuUTmLfzX3NCIIgNJ44tbtAcj+7jU91IuMpuNExSs3hWefrBUEQBAdwlzAmdwiqq7iDusikif4fTOLxGrst93UgCILQKjo9+/YoMWdCsO3xB3uRVgp+70/MoUtm7Dbc610QBGEiiFK7KwTeH0EQfoQ9CYiMtyj9yzjVn5NWpYIgCMxMz9jXxan5Cr4iZU8OIuMg2Ezop5DE95U2pYIgCA1l2Qb7nH49eWXOg6C9tgHJQ6QZ8kj/c01q38O9RgVBEIQKdBO7c6zMyVGilzcgqYjUKUr/DpL4NyCJv4l7HQqCIAgBwSNHndR+dG5j3T3sCUckmETKPAoJ/PI4NV/FzZMXrLRP5V5vgiAIQk3gcSRIAp+JUnMuJIT7uZOSSCm5C6QbJfog7OzHvZYEQRCEBnHmavt0LGrTTc0XIVlMx8rc3oDEJZKYxyBxX4f1/7FUsGxkEwRBECqB32DxWBO+qseKYZPY471GuQfbjuK+B3x7Eiu7E7f/BUEQhBaDr3nx2BMk+VPnWsI+1IBkOBYCc7ZpbpPi0v4379R+VF6bC4IgCI0CW8NCctqtm+gDcId1pMySuW5j+I3+r9zJtEb5K9rc73+uzBQk7iPwyFiU2u25fSQIgiAI3iyZsVtNr7Qvx0p3nUR/EhNdNzHf7id+eNKHm4A/xQ0+P4+7yWd1BF2VOW9O9yPhiXtvvJFZpOwr0EbueRYEQRCExrA4tdt1Z+w/45NtnNg94Ul/r7ld+Qdj0xBIrMdCkj1+LqmeBnIO7tiPsQpaoi8BuRrfDvQF/zf8N2z9Ober/xz8N/C7p+DfwL/V/5vwt2e/XcNYOCaMjTqgLtzzIQiCIAiCIAiCIAiCIAiCIAiCIAjE/D9z4II2lL+g1AAAAABJRU5ErkJggg=="/>
8
+ </defs>
9
+ </svg>
Binary file
@@ -0,0 +1,5 @@
1
+ <svg width="20" height="20" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M10.9921 20.9849C16.511 20.9849 20.9849 16.511 20.9849 10.9921C20.9849 5.4732 16.511 0.999268 10.9921 0.999268C5.47322 0.999268 0.999283 5.4732 0.999283 10.9921C0.999283 16.511 5.47322 20.9849 10.9921 20.9849Z" stroke="#9DE5FD" stroke-width="1.99856" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M10.9921 11.9914C12.6478 11.9914 13.9899 10.6492 13.9899 8.99357C13.9899 7.33791 12.6478 5.99573 10.9921 5.99573C9.33644 5.99573 7.99426 7.33791 7.99426 8.99357C7.99426 10.6492 9.33644 11.9914 10.9921 11.9914Z" stroke="#9DE5FD" stroke-width="1.99856" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <path d="M5.99569 19.6479V17.9871C5.99569 17.457 6.20625 16.9487 6.58106 16.5739C6.95586 16.1991 7.4642 15.9885 7.99425 15.9885H13.9899C14.52 15.9885 15.0283 16.1991 15.4031 16.5739C15.7779 16.9487 15.9885 17.457 15.9885 17.9871V19.6479" stroke="#9DE5FD" stroke-width="1.99856" stroke-linecap="round" stroke-linejoin="round"/>
5
+ </svg>
@@ -0,0 +1,150 @@
1
+ import { useRef, useState, useCallback, useEffect } from 'react'
2
+ import { Box } from '@mui/material'
3
+
4
+ interface Props {
5
+ children: React.ReactNode
6
+ initialWidth?: number
7
+ initialHeight?: number
8
+ minWidth?: number
9
+ minHeight?: number
10
+ onClose?: () => void
11
+ }
12
+
13
+ const HEADER_HEIGHT = 28
14
+
15
+ const DraggableResizable = ({
16
+ children,
17
+ initialWidth = 900,
18
+ initialHeight = 600,
19
+ minWidth = 320,
20
+ minHeight = 240,
21
+ onClose,
22
+ }: Props) => {
23
+ const containerRef = useRef<HTMLDivElement>(null)
24
+ const [pos, setPos] = useState({ x: 0, y: 0 })
25
+ const [size, setSize] = useState({ w: initialWidth, h: initialHeight })
26
+ const dragOffset = useRef({ x: 0, y: 0 })
27
+ const action = useRef<'drag' | 'resize' | null>(null)
28
+
29
+ // Center on mount
30
+ useEffect(() => {
31
+ setPos({
32
+ x: Math.max(0, (window.innerWidth - initialWidth) / 2),
33
+ y: Math.max(0, (window.innerHeight - initialHeight) / 2),
34
+ })
35
+ }, [initialWidth, initialHeight])
36
+
37
+ const onPointerMove = useCallback((e: PointerEvent) => {
38
+ if (action.current === 'drag') {
39
+ setPos({
40
+ x: Math.max(0, Math.min(e.clientX - dragOffset.current.x, window.innerWidth - 100)),
41
+ y: Math.max(0, Math.min(e.clientY - dragOffset.current.y, window.innerHeight - 50)),
42
+ })
43
+ } else if (action.current === 'resize') {
44
+ setSize(prev => ({
45
+ w: Math.max(minWidth, e.clientX - dragOffset.current.x),
46
+ h: Math.max(minHeight, e.clientY - dragOffset.current.y),
47
+ }))
48
+ }
49
+ }, [minWidth, minHeight])
50
+
51
+ const onPointerUp = useCallback(() => {
52
+ action.current = null
53
+ document.removeEventListener('pointermove', onPointerMove)
54
+ document.removeEventListener('pointerup', onPointerUp)
55
+ }, [onPointerMove])
56
+
57
+ const startDrag = (e: React.PointerEvent) => {
58
+ action.current = 'drag'
59
+ dragOffset.current = { x: e.clientX - pos.x, y: e.clientY - pos.y }
60
+ document.addEventListener('pointermove', onPointerMove)
61
+ document.addEventListener('pointerup', onPointerUp)
62
+ }
63
+
64
+ const startResize = (e: React.PointerEvent) => {
65
+ e.stopPropagation()
66
+ action.current = 'resize'
67
+ dragOffset.current = { x: pos.x, y: pos.y }
68
+ document.addEventListener('pointermove', onPointerMove)
69
+ document.addEventListener('pointerup', onPointerUp)
70
+ }
71
+
72
+ return (
73
+ <>
74
+ {/* Backdrop */}
75
+ <Box
76
+ onClick={onClose}
77
+ sx={{
78
+ position: 'fixed',
79
+ inset: 0,
80
+ zIndex: 1299,
81
+ backgroundColor: 'rgba(0,0,0,0.5)',
82
+ }}
83
+ />
84
+ {/* Window */}
85
+ <Box
86
+ ref={containerRef}
87
+ sx={{
88
+ position: 'fixed',
89
+ left: pos.x,
90
+ top: pos.y,
91
+ width: size.w,
92
+ height: size.h,
93
+ zIndex: 1300,
94
+ display: 'flex',
95
+ flexDirection: 'column',
96
+ borderRadius: '8px',
97
+ overflow: 'hidden',
98
+ boxShadow: '0 8px 32px rgba(0,0,0,0.3)',
99
+ backgroundColor: '#fff',
100
+ }}
101
+ >
102
+ {/* Drag handle / title bar */}
103
+ <Box
104
+ onPointerDown={startDrag}
105
+ sx={{
106
+ height: HEADER_HEIGHT,
107
+ backgroundColor: '#e0e0e0',
108
+ cursor: 'grab',
109
+ display: 'flex',
110
+ alignItems: 'center',
111
+ justifyContent: 'center',
112
+ flexShrink: 0,
113
+ userSelect: 'none',
114
+ '&:active': { cursor: 'grabbing' },
115
+ }}
116
+ >
117
+ <Box sx={{ width: 40, height: 4, borderRadius: 2, backgroundColor: '#999' }} />
118
+ </Box>
119
+ {/* Content */}
120
+ <Box sx={{ flex: 1, overflow: 'hidden', position: 'relative' }}>
121
+ {children}
122
+ </Box>
123
+ {/* Resize handle (bottom-right corner) */}
124
+ <Box
125
+ onPointerDown={startResize}
126
+ sx={{
127
+ position: 'absolute',
128
+ bottom: 0,
129
+ right: 0,
130
+ width: 16,
131
+ height: 16,
132
+ cursor: 'nwse-resize',
133
+ '&::after': {
134
+ content: '""',
135
+ position: 'absolute',
136
+ bottom: 3,
137
+ right: 3,
138
+ width: 8,
139
+ height: 8,
140
+ borderRight: '2px solid #999',
141
+ borderBottom: '2px solid #999',
142
+ },
143
+ }}
144
+ />
145
+ </Box>
146
+ </>
147
+ )
148
+ }
149
+
150
+ export default DraggableResizable
@@ -84,7 +84,7 @@ const MattermostChat = ({
84
84
  }, [mattermostUrl, isWindowFocused, onNotification, onUrlClick])
85
85
 
86
86
  // Construct iframe URL with JWT authentication
87
- const iframeUrl = `${mattermostUrl}/login?oxauth=${jwtToken}`
87
+ const iframeUrl = `${mattermostUrl.replace(/\/$/, '')}/login`
88
88
 
89
89
  return (
90
90
  <Box
@@ -8,6 +8,7 @@ export const profileStyles = {
8
8
  trigger: {
9
9
  display: 'flex',
10
10
  alignItems: 'center',
11
+ gap: spacing.sm,
11
12
  cursor: 'pointer',
12
13
  },
13
14
  avatar: {
@@ -67,6 +68,7 @@ export const getProfileStyles = (mode: ThemeMode) => {
67
68
  trigger: {
68
69
  display: 'flex',
69
70
  alignItems: 'center',
71
+ gap: spacing.sm,
70
72
  cursor: 'pointer',
71
73
  },
72
74
  avatar: {
@@ -1,8 +1,15 @@
1
- import { Box, Avatar } from '@mui/material'
2
- import AccountCircleIcon from '@mui/icons-material/AccountCircle'
1
+ import { Box, SvgIcon } from '@mui/material'
3
2
  import { getProfileStyles } from './Profile.styles'
4
3
  import { useNavigation } from '../../NavkitContext'
5
4
 
5
+ const ProfileIcon = () => (
6
+ <SvgIcon viewBox="0 0 22 22" sx={{ fontSize: 20, display: 'block' }}>
7
+ <path d="M10.9921 20.9849C16.511 20.9849 20.9849 16.511 20.9849 10.9921C20.9849 5.4732 16.511 0.999268 10.9921 0.999268C5.47322 0.999268 0.999283 5.4732 0.999283 10.9921C0.999283 16.511 5.47322 20.9849 10.9921 20.9849Z" stroke="#9DE5FD" fill="none" strokeWidth="1.99856" strokeLinecap="round" strokeLinejoin="round"/>
8
+ <path d="M10.9921 11.9914C12.6478 11.9914 13.9899 10.6492 13.9899 8.99357C13.9899 7.33791 12.6478 5.99573 10.9921 5.99573C9.33644 5.99573 7.99426 7.33791 7.99426 8.99357C7.99426 10.6492 9.33644 11.9914 10.9921 11.9914Z" stroke="#9DE5FD" fill="none" strokeWidth="1.99856" strokeLinecap="round" strokeLinejoin="round"/>
9
+ <path d="M5.99569 19.6479V17.9871C5.99569 17.457 6.20625 16.9487 6.58106 16.5739C6.95586 16.1991 7.4642 15.9885 7.99425 15.9885H13.9899C14.52 15.9885 15.0283 16.1991 15.4031 16.5739C15.7779 16.9487 15.9885 17.457 15.9885 17.9871V19.6479" stroke="#9DE5FD" fill="none" strokeWidth="1.99856" strokeLinecap="round" strokeLinejoin="round"/>
10
+ </SvgIcon>
11
+ )
12
+
6
13
  interface UserData {
7
14
  full_name?: string
8
15
  first_name?: string
@@ -25,9 +32,9 @@ const Profile = (props: ProfileProps) => {
25
32
  return (
26
33
  <Box sx={styles.trigger} onClick={onClick}>
27
34
  {userData.pfp ? (
28
- <Avatar src={userData.pfp} sx={styles.avatar} />
35
+ <Box component="img" src={userData.pfp} sx={{ width: 20, height: 20, borderRadius: '50%' }} />
29
36
  ) : (
30
- <AccountCircleIcon sx={{ ...styles.avatar, bgcolor: 'transparent' }} />
37
+ <ProfileIcon />
31
38
  )}
32
39
  </Box>
33
40
  )
@@ -4,12 +4,13 @@ export const shortcutsStyles = {
4
4
  desktopContainer: {
5
5
  display: { xs: 'none', md: 'flex' },
6
6
  alignItems: 'center',
7
- gap: 3,
7
+ gap: '10px',
8
8
  ml: spacing.md,
9
9
  },
10
10
  mobileTrigger: {
11
11
  display: { xs: 'flex', md: 'none' },
12
12
  ml: spacing.sm,
13
+ color: '#9DE5FD',
13
14
  },
14
15
  shortcut: {
15
16
  display: 'flex',
@@ -23,7 +24,7 @@ export const shortcutsStyles = {
23
24
  },
24
25
  },
25
26
  iconStyle: {
26
- fontSize: dimensions.iconSize.lg,
27
+ fontSize: '20px',
27
28
  color: colours.text.secondary,
28
29
  },
29
30
  }
@@ -1,9 +1,15 @@
1
1
  import type { AppData } from '../../types'
2
- import { Box, Link, IconButton } from '@mui/material'
2
+ import { Box, Link, IconButton, SvgIcon } from '@mui/material'
3
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
4
4
  import { shortcutsStyles } from './Shortcuts.styles'
5
5
  import { useNavigation } from '../../NavkitContext'
6
6
 
7
+ const ChatIcon = () => (
8
+ <SvgIcon viewBox="-2 -2 24 24" sx={{ fontSize: 20, display: 'block', position: 'relative', top: 2 }}>
9
+ <path d="M18 0H2C0.9 0 0 0.9 0 2V20L4 16H18C19.1 16 20 15.1 20 14V2C20 0.9 19.1 0 18 0Z" fill="#9DE5FD"/>
10
+ </SvgIcon>
11
+ )
12
+
7
13
  interface ShortcutsProps {
8
14
  showChat?: (showChat: boolean) => void
9
15
  onMenuToggle?: () => void
@@ -38,22 +44,19 @@ const Shortcuts = (props: ShortcutsProps) => {
38
44
  />
39
45
  </Link>
40
46
  ))}
41
- {siteSettings.showChat && isUserAuthenticated &&
47
+ {siteSettings['show-chat'] && siteSettings['chat-url'] && isUserAuthenticated &&
42
48
  <Link
43
49
  key={"chat"}
44
50
  onClick={() => showChat?.(true)}
45
51
  sx={shortcutsStyles.shortcut}
46
52
  >
47
- <FontAwesomeIcon
48
- icon={["far", "comment"] as any}
49
- style={shortcutsStyles.iconStyle}
50
- />
53
+ <ChatIcon />
51
54
  </Link>
52
55
  }
53
56
  </Box>
54
57
 
55
58
  {/* Mobile view - trigger button */}
56
- {((shortcuts?.length ?? 0) > 0 || (siteSettings.showChat && isUserAuthenticated)) && (
59
+ {((shortcuts?.length ?? 0) > 0 || (siteSettings['show-chat'] && siteSettings['chat-url'] && isUserAuthenticated)) && (
57
60
  <IconButton
58
61
  ref={triggerRef}
59
62
  onClick={onMenuToggle}
@@ -61,7 +64,7 @@ const Shortcuts = (props: ShortcutsProps) => {
61
64
  >
62
65
  <FontAwesomeIcon
63
66
  icon={["fas", "ellipsis-v"]}
64
- style={shortcutsStyles.iconStyle}
67
+ style={{ ...shortcutsStyles.iconStyle, color: '#9DE5FD' }}
65
68
  />
66
69
  </IconButton>
67
70
  )}
@@ -1,9 +1,15 @@
1
- import { Card, MenuItem, Typography } from '@mui/material'
1
+ import { Card, MenuItem, Typography, SvgIcon } from '@mui/material'
2
2
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
3
3
  import type { AppData } from '../../types'
4
4
  import { getShortcutsMenuStyles } from './ShortcutsMenu.styles'
5
5
  import { useNavigation } from '../../NavkitContext'
6
6
 
7
+ const ChatIcon = ({ style }: { style: Record<string, any> }) => (
8
+ <SvgIcon viewBox="-2 -2 24 24" sx={{ fontSize: style.fontSize, color: style.color }}>
9
+ <path d="M18 0H2C0.9 0 0 0.9 0 2V20L4 16H18C19.1 16 20 15.1 20 14V2C20 0.9 19.1 0 18 0Z" fill="currentColor"/>
10
+ </SvgIcon>
11
+ )
12
+
7
13
  interface ShortcutsMenuProps {
8
14
  showChat: (showChat: boolean) => void
9
15
  }
@@ -22,16 +28,13 @@ const ShortcutsMenu = (props: ShortcutsMenuProps) => {
22
28
 
23
29
  return (
24
30
  <Card sx={themedStyles.menu}>
25
- {siteSettings.showChat && isUserAuthenticated && (
31
+ {siteSettings['show-chat'] && siteSettings['chat-url'] && isUserAuthenticated && (
26
32
  <MenuItem
27
33
  key="chat"
28
34
  onClick={() => showChat(true)}
29
35
  sx={themedStyles.menuItem}
30
36
  >
31
- <FontAwesomeIcon
32
- icon={["far", "comment"] as any}
33
- style={themedStyles.iconStyle}
34
- />
37
+ <ChatIcon style={themedStyles.iconStyle} />
35
38
  <Typography sx={themedStyles.menuItemText}>
36
39
  Chat
37
40
  </Typography>
@@ -81,7 +81,7 @@ export const zIndex = {
81
81
 
82
82
  export const dimensions = {
83
83
  navHeight: '60px',
84
- avatarSize: 30,
84
+ avatarSize: 20,
85
85
  iconSize: {
86
86
  sm: '18px',
87
87
  md: '24px',
package/src/types.ts CHANGED
@@ -41,9 +41,9 @@ export interface UserData {
41
41
  export interface SiteSettings {
42
42
  shortcuts?: AppData[]
43
43
  logo?: string
44
- showChat: boolean
44
+ 'show-chat': boolean
45
+ 'chat-url': string
45
46
  frontendUrl: string
46
- mattermostUrl: string
47
47
  }
48
48
 
49
49
  export interface AppSettings {