hangman-react-game 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -5
- package/dist/index.d.mts +0 -15
- package/dist/index.mjs +0 -223
- package/dist/index.mjs.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hangman-react-game",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"
|
|
3
|
+
"version": "1.0.5",
|
|
4
|
+
"type": "module",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"types": "dist/types/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -18,9 +18,6 @@
|
|
|
18
18
|
"react-dom": "^19.0.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@rollup/plugin-babel": "^6.0.3",
|
|
22
|
-
"@rollup/plugin-commonjs": "^24.0.1",
|
|
23
|
-
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
24
21
|
"@types/react": "^19.1.13",
|
|
25
22
|
"@types/react-dom": "^19.1.9",
|
|
26
23
|
"rollup": "^3.29.0",
|
package/dist/index.d.mts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
|
|
3
|
-
declare const Game: () => react_jsx_runtime.JSX.Element;
|
|
4
|
-
|
|
5
|
-
declare const useGame: () => {
|
|
6
|
-
newWord: () => void;
|
|
7
|
-
hasEnded: boolean;
|
|
8
|
-
hasWon: boolean;
|
|
9
|
-
failedAttempts: number;
|
|
10
|
-
guessLetter: (letter: string) => Promise<void>;
|
|
11
|
-
guessedLetters: string[];
|
|
12
|
-
word: string;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export { Game, useGame };
|
package/dist/index.mjs
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
// src/hooks/useGame.tsx
|
|
2
|
-
import { useEffect, useState } from "react";
|
|
3
|
-
var MAX_FAILED_ATTEMPTS = 10;
|
|
4
|
-
var wordDictionary = [
|
|
5
|
-
"apple",
|
|
6
|
-
"banana",
|
|
7
|
-
"cherry",
|
|
8
|
-
"date",
|
|
9
|
-
"elderberry",
|
|
10
|
-
"fig",
|
|
11
|
-
"grape",
|
|
12
|
-
"honeydew",
|
|
13
|
-
"kiwi",
|
|
14
|
-
"lemon",
|
|
15
|
-
"mango",
|
|
16
|
-
"nectarine",
|
|
17
|
-
"orange",
|
|
18
|
-
"papaya",
|
|
19
|
-
"quince",
|
|
20
|
-
"raspberry",
|
|
21
|
-
"strawberry",
|
|
22
|
-
"tangerine",
|
|
23
|
-
"ugli",
|
|
24
|
-
"vanilla",
|
|
25
|
-
"watermelon",
|
|
26
|
-
"xigua",
|
|
27
|
-
"yellow",
|
|
28
|
-
"zucchini",
|
|
29
|
-
"abstract",
|
|
30
|
-
"breeze",
|
|
31
|
-
"cactus",
|
|
32
|
-
"dolphin",
|
|
33
|
-
"eagle",
|
|
34
|
-
"forest",
|
|
35
|
-
"giraffe",
|
|
36
|
-
"horizon",
|
|
37
|
-
"island",
|
|
38
|
-
"jungle",
|
|
39
|
-
"kaleidoscope",
|
|
40
|
-
"lighthouse",
|
|
41
|
-
"mountain",
|
|
42
|
-
"nebula",
|
|
43
|
-
"ocean",
|
|
44
|
-
"prairie",
|
|
45
|
-
"quasar",
|
|
46
|
-
"rainbow",
|
|
47
|
-
"sunrise",
|
|
48
|
-
"tornado",
|
|
49
|
-
"universe",
|
|
50
|
-
"volcano",
|
|
51
|
-
"whale",
|
|
52
|
-
"xerox",
|
|
53
|
-
"yacht",
|
|
54
|
-
"zephyr",
|
|
55
|
-
"albatross",
|
|
56
|
-
"butterfly",
|
|
57
|
-
"chameleon",
|
|
58
|
-
"dinosaur",
|
|
59
|
-
"elephant",
|
|
60
|
-
"flamingo",
|
|
61
|
-
"gazelle",
|
|
62
|
-
"hippopotamus",
|
|
63
|
-
"iguana",
|
|
64
|
-
"jellyfish",
|
|
65
|
-
"kangaroo",
|
|
66
|
-
"lion",
|
|
67
|
-
"monkey",
|
|
68
|
-
"narwhal",
|
|
69
|
-
"octopus",
|
|
70
|
-
"penguin",
|
|
71
|
-
"quail",
|
|
72
|
-
"rhinoceros",
|
|
73
|
-
"squirrel",
|
|
74
|
-
"turtle",
|
|
75
|
-
"umbrella",
|
|
76
|
-
"vulture",
|
|
77
|
-
"walrus",
|
|
78
|
-
"xylophone",
|
|
79
|
-
"yak",
|
|
80
|
-
"zebra",
|
|
81
|
-
"astronomy",
|
|
82
|
-
"biology",
|
|
83
|
-
"chemistry",
|
|
84
|
-
"democracy",
|
|
85
|
-
"ecosystem",
|
|
86
|
-
"fossil",
|
|
87
|
-
"genetics",
|
|
88
|
-
"hypothesis",
|
|
89
|
-
"innovation",
|
|
90
|
-
"jurisdiction",
|
|
91
|
-
"kinetic",
|
|
92
|
-
"laboratory",
|
|
93
|
-
"meteorology",
|
|
94
|
-
"neuroscience",
|
|
95
|
-
"observation",
|
|
96
|
-
"physics",
|
|
97
|
-
"quantum",
|
|
98
|
-
"robotics",
|
|
99
|
-
"synthesis",
|
|
100
|
-
"theorem",
|
|
101
|
-
"unicorn",
|
|
102
|
-
"velocity",
|
|
103
|
-
"wavelength",
|
|
104
|
-
"xenon",
|
|
105
|
-
"youth",
|
|
106
|
-
"zenith",
|
|
107
|
-
"bamboozlement",
|
|
108
|
-
"flabbergasted",
|
|
109
|
-
"hypothetical",
|
|
110
|
-
"juxtaposition",
|
|
111
|
-
"labyrinthine",
|
|
112
|
-
"nebulousness",
|
|
113
|
-
"quintessential",
|
|
114
|
-
"sesquipedalian",
|
|
115
|
-
"transcendental",
|
|
116
|
-
"unpredictable",
|
|
117
|
-
"verisimilitude",
|
|
118
|
-
"whippersnapper",
|
|
119
|
-
"xenotransplant",
|
|
120
|
-
"yesteryear",
|
|
121
|
-
"zigzaggedness"
|
|
122
|
-
];
|
|
123
|
-
var useGame = () => {
|
|
124
|
-
const [word, setWord] = useState("");
|
|
125
|
-
const [guessedLetters, setGuessedLetters] = useState([]);
|
|
126
|
-
const [failedAttempts, setFailedAttempts] = useState(0);
|
|
127
|
-
const [hasEnded, setHasEnded] = useState(false);
|
|
128
|
-
const [hasWon, setHasWon] = useState(false);
|
|
129
|
-
const censorWord = (w) => w.split("").map((x) => (guessedLetters.includes(x) || x === " " ? x : "_") + " ").join("");
|
|
130
|
-
const newWord = () => setWord(wordDictionary[Math.floor(Math.random() * wordDictionary.length)]);
|
|
131
|
-
const guessLetter = async (letter) => {
|
|
132
|
-
if (!hasEnded && letter.length === 1) {
|
|
133
|
-
if (!word.includes(letter))
|
|
134
|
-
setFailedAttempts(failedAttempts + 1);
|
|
135
|
-
setGuessedLetters([...guessedLetters, letter]);
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
useEffect(() => newWord(), []);
|
|
139
|
-
useEffect(() => {
|
|
140
|
-
setGuessedLetters([]);
|
|
141
|
-
setFailedAttempts(0);
|
|
142
|
-
setHasEnded(false);
|
|
143
|
-
setHasWon(false);
|
|
144
|
-
}, [word]);
|
|
145
|
-
useEffect(() => {
|
|
146
|
-
if (failedAttempts >= MAX_FAILED_ATTEMPTS)
|
|
147
|
-
setHasEnded(true);
|
|
148
|
-
}, [failedAttempts]);
|
|
149
|
-
useEffect(() => {
|
|
150
|
-
if (word && !censorWord(word).includes("_")) {
|
|
151
|
-
setHasWon(true);
|
|
152
|
-
setHasEnded(true);
|
|
153
|
-
}
|
|
154
|
-
}, [guessedLetters]);
|
|
155
|
-
return {
|
|
156
|
-
newWord,
|
|
157
|
-
hasEnded,
|
|
158
|
-
hasWon,
|
|
159
|
-
failedAttempts,
|
|
160
|
-
guessLetter,
|
|
161
|
-
guessedLetters,
|
|
162
|
-
word: hasEnded ? word : censorWord(word)
|
|
163
|
-
};
|
|
164
|
-
};
|
|
165
|
-
var useGame_default = useGame;
|
|
166
|
-
|
|
167
|
-
// src/components/Hangman.tsx
|
|
168
|
-
import { useEffect as useEffect2 } from "react";
|
|
169
|
-
import { jsx } from "react/jsx-runtime";
|
|
170
|
-
var Hangman = ({ failedAttempts }) => {
|
|
171
|
-
useEffect2(() => {
|
|
172
|
-
}, [failedAttempts]);
|
|
173
|
-
const hangmanParts = [
|
|
174
|
-
// ROD
|
|
175
|
-
/* @__PURE__ */ jsx("line", { x1: "20", y1: "230", x2: "100", y2: "230", stroke: "black" }),
|
|
176
|
-
/* @__PURE__ */ jsx("line", { x1: "60", y1: "20", x2: "60", y2: "230", stroke: "black" }),
|
|
177
|
-
/* @__PURE__ */ jsx("line", { x1: "60", y1: "20", x2: "140", y2: "20", stroke: "black" }),
|
|
178
|
-
/* @__PURE__ */ jsx("line", { x1: "140", y1: "20", x2: "140", y2: "50", stroke: "black" }),
|
|
179
|
-
// HEAD
|
|
180
|
-
/* @__PURE__ */ jsx("circle", { cx: "140", cy: "70", r: "20", stroke: "black" }),
|
|
181
|
-
// BODY
|
|
182
|
-
/* @__PURE__ */ jsx("line", { x1: "140", y1: "90", x2: "140", y2: "150", stroke: "black" }),
|
|
183
|
-
// ARMS
|
|
184
|
-
/* @__PURE__ */ jsx("line", { x1: "140", y1: "120", x2: "120", y2: "100", stroke: "black" }),
|
|
185
|
-
/* @__PURE__ */ jsx("line", { x1: "140", y1: "120", x2: "160", y2: "100", stroke: "black" }),
|
|
186
|
-
// LEGS
|
|
187
|
-
/* @__PURE__ */ jsx("line", { x1: "140", y1: "150", x2: "120", y2: "180", stroke: "black" }),
|
|
188
|
-
/* @__PURE__ */ jsx("line", { x1: "140", y1: "150", x2: "160", y2: "180", stroke: "black" })
|
|
189
|
-
];
|
|
190
|
-
return /* @__PURE__ */ jsx("svg", { height: "250", width: "200", children: hangmanParts.slice(0, failedAttempts) });
|
|
191
|
-
};
|
|
192
|
-
var Hangman_default = Hangman;
|
|
193
|
-
|
|
194
|
-
// src/components/Game.tsx
|
|
195
|
-
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
196
|
-
var Game = () => {
|
|
197
|
-
const {
|
|
198
|
-
newWord,
|
|
199
|
-
hasEnded,
|
|
200
|
-
hasWon,
|
|
201
|
-
failedAttempts,
|
|
202
|
-
guessLetter,
|
|
203
|
-
guessedLetters,
|
|
204
|
-
word
|
|
205
|
-
} = useGame_default();
|
|
206
|
-
return /* @__PURE__ */ jsxs("div", { children: [
|
|
207
|
-
/* @__PURE__ */ jsx2("h1", { children: "Hangman game" }),
|
|
208
|
-
/* @__PURE__ */ jsx2("div", { className: "word", children: /* @__PURE__ */ jsx2("p", { children: word }) }),
|
|
209
|
-
/* @__PURE__ */ jsx2("div", { className: "hangman-illustrtion", children: /* @__PURE__ */ jsx2(Hangman_default, { failedAttempts }) }),
|
|
210
|
-
/* @__PURE__ */ jsx2("div", { className: "guessButtons", children: "abcdefghijklmnopqrstuvwxyz".split("").map((x) => /* @__PURE__ */ jsx2("button", { onClick: () => guessLetter(x), disabled: hasEnded || guessedLetters.includes(x), children: x }, x)) }),
|
|
211
|
-
hasEnded && /* @__PURE__ */ jsxs("div", { className: "game-over", children: [
|
|
212
|
-
hasWon && /* @__PURE__ */ jsx2("h1", { children: "Yay, you won" }),
|
|
213
|
-
!hasWon && /* @__PURE__ */ jsx2("h1", { children: "Too bad, you lose" })
|
|
214
|
-
] }),
|
|
215
|
-
/* @__PURE__ */ jsx2("button", { onClick: newWord, children: "New word" })
|
|
216
|
-
] });
|
|
217
|
-
};
|
|
218
|
-
var Game_default = Game;
|
|
219
|
-
export {
|
|
220
|
-
Game_default as Game,
|
|
221
|
-
useGame_default as useGame
|
|
222
|
-
};
|
|
223
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/useGame.tsx","../src/components/Hangman.tsx","../src/components/Game.tsx"],"sourcesContent":["import {useEffect, useState} from \"react\";\r\n\r\nconst MAX_FAILED_ATTEMPTS = 10;\r\nconst wordDictionary = [\r\n \"apple\",\r\n \"banana\",\r\n \"cherry\",\r\n \"date\",\r\n \"elderberry\",\r\n \"fig\",\r\n \"grape\",\r\n \"honeydew\",\r\n \"kiwi\",\r\n \"lemon\",\r\n \"mango\",\r\n \"nectarine\",\r\n \"orange\",\r\n \"papaya\",\r\n \"quince\",\r\n \"raspberry\",\r\n \"strawberry\",\r\n \"tangerine\",\r\n \"ugli\",\r\n \"vanilla\",\r\n \"watermelon\",\r\n \"xigua\",\r\n \"yellow\",\r\n \"zucchini\",\r\n \"abstract\",\r\n \"breeze\",\r\n \"cactus\",\r\n \"dolphin\",\r\n \"eagle\",\r\n \"forest\",\r\n \"giraffe\",\r\n \"horizon\",\r\n \"island\",\r\n \"jungle\",\r\n \"kaleidoscope\",\r\n \"lighthouse\",\r\n \"mountain\",\r\n \"nebula\",\r\n \"ocean\",\r\n \"prairie\",\r\n \"quasar\",\r\n \"rainbow\",\r\n \"sunrise\",\r\n \"tornado\",\r\n \"universe\",\r\n \"volcano\",\r\n \"whale\",\r\n \"xerox\",\r\n \"yacht\",\r\n \"zephyr\",\r\n \"albatross\",\r\n \"butterfly\",\r\n \"chameleon\",\r\n \"dinosaur\",\r\n \"elephant\",\r\n \"flamingo\",\r\n \"gazelle\",\r\n \"hippopotamus\",\r\n \"iguana\",\r\n \"jellyfish\",\r\n \"kangaroo\",\r\n \"lion\",\r\n \"monkey\",\r\n \"narwhal\",\r\n \"octopus\",\r\n \"penguin\",\r\n \"quail\",\r\n \"rhinoceros\",\r\n \"squirrel\",\r\n \"turtle\",\r\n \"umbrella\",\r\n \"vulture\",\r\n \"walrus\",\r\n \"xylophone\",\r\n \"yak\",\r\n \"zebra\",\r\n \"astronomy\",\r\n \"biology\",\r\n \"chemistry\",\r\n \"democracy\",\r\n \"ecosystem\",\r\n \"fossil\",\r\n \"genetics\",\r\n \"hypothesis\",\r\n \"innovation\",\r\n \"jurisdiction\",\r\n \"kinetic\",\r\n \"laboratory\",\r\n \"meteorology\",\r\n \"neuroscience\",\r\n \"observation\",\r\n \"physics\",\r\n \"quantum\",\r\n \"robotics\",\r\n \"synthesis\",\r\n \"theorem\",\r\n \"unicorn\",\r\n \"velocity\",\r\n \"wavelength\",\r\n \"xenon\",\r\n \"youth\",\r\n \"zenith\",\r\n \"bamboozlement\",\r\n \"flabbergasted\",\r\n \"hypothetical\",\r\n \"juxtaposition\",\r\n \"labyrinthine\",\r\n \"nebulousness\",\r\n \"quintessential\",\r\n \"sesquipedalian\",\r\n \"transcendental\",\r\n \"unpredictable\",\r\n \"verisimilitude\",\r\n \"whippersnapper\",\r\n \"xenotransplant\",\r\n \"yesteryear\",\r\n \"zigzaggedness\"\r\n];\r\n\r\nconst useGame = () => {\r\n // Should fetch random word from a dictionary (maybe vary by language)\r\n const [word, setWord] = useState(\"\");\r\n const [guessedLetters, setGuessedLetters] = useState<string[]>([]);\r\n const [failedAttempts, setFailedAttempts] = useState<number>(0);\r\n const [hasEnded, setHasEnded] = useState(false);\r\n const [hasWon, setHasWon] = useState(false);\r\n\r\n const censorWord = (w: string) => w.split(\"\").map(x => (guessedLetters.includes(x) || x === \" \" ? x : \"_\") + \" \").join(\"\");\r\n const newWord = () => setWord( wordDictionary[Math.floor( Math.random() * wordDictionary.length )]);\r\n \r\n const guessLetter = async (letter : string) => {\r\n if(!hasEnded && letter.length === 1){\r\n if(!word.includes(letter)) \r\n setFailedAttempts(failedAttempts+1);\r\n setGuessedLetters([...guessedLetters, letter]);\r\n }\r\n }\r\n \r\n useEffect(()=> newWord(), [])\r\n useEffect(()=> {\r\n setGuessedLetters([]);\r\n setFailedAttempts(0);\r\n setHasEnded(false);\r\n setHasWon(false);\r\n }, [word]);\r\n \r\n useEffect(()=> {\r\n if(failedAttempts >= MAX_FAILED_ATTEMPTS)\r\n setHasEnded(true);\r\n }, [failedAttempts]);\r\n \r\n useEffect(()=> {\r\n if(word && !censorWord(word).includes(\"_\")) {\r\n setHasWon(true);\r\n setHasEnded(true);\r\n }\r\n }, [guessedLetters]);\r\n\r\n return {\r\n newWord,\r\n hasEnded,\r\n hasWon,\r\n failedAttempts,\r\n guessLetter,\r\n guessedLetters,\r\n word : hasEnded ? word : censorWord(word)\r\n };\r\n}\r\nexport default useGame;","import { ReactElement, useEffect } from \"react\";\r\n\r\ntype HangmanProps = {\r\n failedAttempts: number\r\n}\r\n\r\nconst Hangman = ({failedAttempts} : HangmanProps) => {\r\n useEffect(() => {}, [failedAttempts]);\r\n const hangmanParts : ReactElement[] = [\r\n // ROD\r\n <line x1=\"20\" y1=\"230\" x2=\"100\" y2=\"230\" stroke=\"black\" />,\r\n <line x1=\"60\" y1=\"20\" x2=\"60\" y2=\"230\" stroke=\"black\" />,\r\n <line x1=\"60\" y1=\"20\" x2=\"140\" y2=\"20\" stroke=\"black\" />,\r\n <line x1=\"140\" y1=\"20\" x2=\"140\" y2=\"50\" stroke=\"black\" />,\r\n // HEAD\r\n <circle cx=\"140\" cy=\"70\" r=\"20\" stroke=\"black\" />,\r\n // BODY\r\n <line x1=\"140\" y1=\"90\" x2=\"140\" y2=\"150\" stroke=\"black\" />,\r\n // ARMS\r\n <line x1=\"140\" y1=\"120\" x2=\"120\" y2=\"100\" stroke=\"black\" />,\r\n <line x1=\"140\" y1=\"120\" x2=\"160\" y2=\"100\" stroke=\"black\" />,\r\n // LEGS\r\n <line x1=\"140\" y1=\"150\" x2=\"120\" y2=\"180\" stroke=\"black\" />,\r\n <line x1=\"140\" y1=\"150\" x2=\"160\" y2=\"180\" stroke=\"black\" />\r\n ];\r\n return (\r\n <svg height=\"250\" width=\"200\">\r\n {hangmanParts.slice(0, failedAttempts)}\r\n </svg>\r\n )\r\n}\r\nexport default Hangman;","import useGame from \"../hooks/useGame\";\r\nimport Hangman from \"./Hangman\";\r\n\r\nconst Game = () => {\r\n const {\r\n newWord,\r\n hasEnded,\r\n hasWon,\r\n failedAttempts,\r\n guessLetter,\r\n guessedLetters,\r\n word \r\n } = useGame();\r\n return (\r\n <div>\r\n <h1>Hangman game</h1>\r\n <div className=\"word\">\r\n <p>{word}</p>\r\n </div>\r\n <div className=\"hangman-illustrtion\">\r\n <Hangman failedAttempts={failedAttempts} />\r\n </div>\r\n <div className=\"guessButtons\">\r\n {\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map(x => (\r\n <button key={x} onClick={() => guessLetter(x)} disabled={hasEnded || guessedLetters.includes(x)}>{x}</button>\r\n ))}\r\n </div>\r\n {hasEnded && (\r\n <div className=\"game-over\">\r\n {hasWon && (<h1>Yay, you won</h1>)}\r\n {!hasWon && (<h1>Too bad, you lose</h1>)}\r\n </div>\r\n )}\r\n <button onClick={newWord}>New word</button>\r\n </div>\r\n )\r\n};\r\nexport default Game;"],"mappings":";AAAA,SAAQ,WAAW,gBAAe;AAElC,IAAM,sBAAsB;AAC5B,IAAM,iBAAiB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;A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","names":["useEffect","jsx"]}
|