-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.html
318 lines (296 loc) · 95.7 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
<!DOCTYPE html>
<!-- Created with https://packager.turbowarp.org/ -->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<!-- We only include this to explicitly loosen the CSP of various packager environments. It does not provide any security. -->
<meta http-equiv="Content-Security-Policy" content="default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: blob:">
<title>Zedexi v1.8</title>
<style>
body {
color: #ffffff;
font-family: sans-serif;
overflow: hidden;
margin: 0;
padding: 0;
}
:root, body.is-fullscreen {
background-color: #000000;
}
[hidden] {
display: none !important;
}
h1 {
font-weight: normal;
}
a {
color: inherit;
text-decoration: underline;
cursor: pointer;
}
#app, #loading, #error, #launch {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.screen {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
cursor: default;
user-select: none;
-webkit-user-select: none;
background-color: #000000;
}
#launch {
background-color: rgba(0, 0, 0, 0.7);
cursor: pointer;
}
.green-flag {
width: 80px;
height: 80px;
padding: 16px;
border-radius: 100%;
background: rgba(255, 255, 255, 0.75);
border: 3px solid hsla(0, 100%, 100%, 1);
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
}
#loading {
}
.progress-bar-outer {
border: 1px solid currentColor;
height: 10px;
width: 200px;
max-width: 200px;
}
.progress-bar-inner {
height: 100%;
width: 0;
background-color: currentColor;
}
.loading-text, noscript {
font-weight: normal;
font-size: 36px;
margin: 0 0 16px;
}
.loading-image {
margin: 0 0 16px;
}
#error-message, #error-stack {
font-family: monospace;
max-width: 600px;
white-space: pre-wrap;
user-select: text;
-webkit-user-select: text;
}
#error-stack {
text-align: left;
max-height: 200px;
overflow: auto;
}
.control-button {
width: 2rem;
height: 2rem;
padding: 0.375rem;
border-radius: 0.25rem;
margin-top: 0.5rem;
margin-bottom: 0.5rem;
user-select: none;
-webkit-user-select: none;
cursor: pointer;
border: 0;
border-radius: 4px;
}
.control-button:hover {
background: #ff4c4c26;
}
.control-button.active {
background: #ff4c4c59;
}
.fullscreen-button {
background: white !important;
}
.standalone-fullscreen-button {
position: absolute;
top: 0;
right: 0;
background-color: rgba(0, 0, 0, 0.5);
border-radius: 0 0 0 4px;
padding: 4px;
cursor: pointer;
}
.sc-canvas {
cursor: auto;
}
.sc-monitor-root[opcode^="data_"] .sc-monitor-value-color {
background-color: #ff8c1a;
}
.sc-monitor-row-value-outer {
background-color: #fc662c;
}
.sc-monitor-row-value-editing .sc-monitor-row-value-outer {
background-color: #e25b27;
}
</style>
<meta name="theme-color" content="#000000">
<link rel="icon" href="data:image/png;base64,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">
</head>
<body>
<div id="app"></div>
<div id="launch" class="screen" hidden title="Click to start">
<div class="green-flag">
<svg viewBox="0 0 16.63 17.5" width="42" height="44">
<defs><style>.cls-1,.cls-2{fill:#4cbf56;stroke:#45993d;stroke-linecap:round;stroke-linejoin:round;}.cls-2{stroke-width:1.5px;}</style></defs>
<path class="cls-1" d="M.75,2A6.44,6.44,0,0,1,8.44,2h0a6.44,6.44,0,0,0,7.69,0V12.4a6.44,6.44,0,0,1-7.69,0h0a6.44,6.44,0,0,0-7.69,0"/>
<line class="cls-2" x1="0.75" y1="16.75" x2="0.75" y2="0.75"/>
</svg>
</div>
</div>
<div id="loading" class="screen">
<noscript>Enable JavaScript</noscript>
<div class="loading-image"><img src="data:image/png;base64,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"></div>
</div>
<div id="error" class="screen" hidden>
<h1>Error</h1>
<details>
<summary id="error-message"></summary>
<p id="error-stack"></p>
</details>
</div>
<script src="script.js"></script>
<script>
const appElement = document.getElementById('app');
const launchScreen = document.getElementById('launch');
const loadingScreen = document.getElementById('loading');
const loadingInner = document.getElementById('loading-inner');
const errorScreen = document.getElementById('error');
const errorScreenMessage = document.getElementById('error-message');
const errorScreenStack = document.getElementById('error-stack');
const handleError = (error) => {
console.error(error);
if (!errorScreen.hidden) return;
errorScreen.hidden = false;
errorScreenMessage.textContent = '' + error;
let debug = error && error.stack || 'no stack';
debug += '\nUser agent: ' + navigator.userAgent;
errorScreenStack.textContent = debug;
};
const setProgress = (progress) => {
if (loadingInner) loadingInner.style.width = progress * 100 + '%';
};
const interpolate = (a, b, t) => a + t * (b - a);
try {
setProgress(0.1);
const scaffolding = new Scaffolding.Scaffolding();
scaffolding.width = 480;
scaffolding.height = 360;
scaffolding.resizeMode = "preserve-ratio";
scaffolding.editableLists = false;
scaffolding.usePackagedRuntime = true;
scaffolding.setup();
scaffolding.appendTo(appElement);
const vm = scaffolding.vm;
window.scaffolding = scaffolding;
window.vm = scaffolding.vm;
window.Scratch = {
vm,
renderer: vm.renderer,
audioEngine: vm.runtime.audioEngine,
bitmapAdapter: vm.runtime.v2BitmapAdapter,
videoProvider: vm.runtime.ioDevices.video.provider
};
scaffolding.setUsername("player####".replace(/#/g, () => Math.floor(Math.random() * 10)));
scaffolding.setAccentColor("#ff4c4c");
scaffolding.addCloudProvider(new Scaffolding.Cloud.LocalStorageProvider("cloudvariables:[email protected]"));
vm.setTurboMode(false);
if (vm.setInterpolation) vm.setInterpolation(false);
if (vm.setFramerate) vm.setFramerate(30);
if (vm.renderer.setUseHighQualityRender) vm.renderer.setUseHighQualityRender(false);
if (vm.setRuntimeOptions) vm.setRuntimeOptions({
fencing: true,
miscLimits: true,
maxClones: 300,
});
if (vm.setCompilerOptions) vm.setCompilerOptions({
enabled: true,
warpTimer: false
});
if (typeof ScaffoldingAddons !== 'undefined') {
ScaffoldingAddons.run(scaffolding, {"gamepad":false,"pointerlock":false,"specialCloudBehaviors":true,"unsafeCloudBehaviors":true,"pause":false});
}
scaffolding.setExtensionSecurityManager({
getSandboxMode: 'unsandboxed',
canLoadExtensionFromProject: (url) => {
handleError(new Error('Missing custom extension: ' + url));
return Promise.resolve(false);
}
});
for (const extension of ["data:text/javascript;,%0D%0A%2F%2F%20Made%20by%20CST1229%0D%0A%2F%2F%20Modified%20port%20of%20an%20extension%20from%20a%20mod%20I%20worked%20on.%0D%0A%0D%0A(function(Scratch)%20%7B%0D%0A%20%20%22use%20strict%22%3B%0D%0A%0D%0A%20%20const%20CaseParam%20%3D%20%7B%0D%0A%20%20%20%20LOWERCASE%3A%20%22lowercase%22%2C%0D%0A%20%20%20%20UPPERCASE%3A%20%22uppercase%22%2C%0D%0A%20%20%20%20MIXEDCASE%3A%20%22mixedcase%22%2C%0D%0A%20%20%20%20TITLECASE%3A%20%22titlecase%22%0D%0A%20%20%7D%3B%0D%0A%0D%0A%20%20let%20splitCache%3B%0D%0A%20%20let%20matchCache%3B%0D%0A%0D%0A%20%20class%20StringsExt%20%7B%0D%0A%20%20%20%20constructor%20()%20%7B%7D%0D%0A%0D%0A%20%20%20%20_initCaseMenu%20()%20%7B%0D%0A%20%20%20%20%20%20return%20%5B%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20text%3A%20%22lowercase%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20value%3A%20CaseParam.LOWERCASE%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20text%3A%20%22UPPERCASE%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20value%3A%20CaseParam.UPPERCASE%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20text%3A%20%22Title%20Case%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20value%3A%20CaseParam.TITLECASE%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20text%3A%20%22MiXeD%20CaSe%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20value%3A%20CaseParam.MIXEDCASE%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getInfo%20()%20%7B%0D%0A%20%20%20%20%20%20return%20%7B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%20id%20%22text%22%20could%20conflict%20with%20Scratch%20Lab's%20Animated%20Text%0D%0A%20%20%20%20%20%20%20%20%2F%2F%20for%20mods%20which%20implement%20it%20or%20if%20it%20ever%20comes%20out%0D%0A%20%20%20%20%20%20%20%20id%3A%20%22strings%22%2C%0D%0A%20%20%20%20%20%20%20%20name%3A%20%22Text%22%2C%0D%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22letters_of%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22letters%20%5BLETTER1%5D%20to%20%5BLETTER2%5D%20of%20%5BSTRING%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20LETTER1%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%202%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20LETTER2%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%204%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22apple%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22split%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22item%20%5BITEM%5D%20of%20%5BSTRING%5D%20split%20by%20%5BSPLIT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ITEM%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%203%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22apple%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22p%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22count%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22count%20number%20of%20%5BSUBSTRING%5Ds%20in%20%5BSTRING%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SUBSTRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22p%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22apple%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22indexof%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22index%20of%20%5BSUBSTRING%5D%20in%20%5BSTRING%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SUBSTRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22p%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22apple%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22replace%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22replace%20%5BSUBSTRING%5D%20in%20%5BSTRING%5D%20with%20%5BREPLACE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SUBSTRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22world%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Hello%20world!%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20REPLACE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22fellow%20Scratchers%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22repeat%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22repeat%20%5BSTRING%5D%20%5BREPEAT%5D%20times%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22apple%20%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20REPEAT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%203%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22unicodeof%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Unicode%20of%20%5BSTRING%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22A%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22unicodefrom%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Unicode%20%5BNUM%5D%20as%20letter%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NUM%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%2065%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22replaceRegex%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22replace%20regex%20%2F%5BREGEX%5D%2F%5BFLAGS%5D%20in%20%5BSTRING%5D%20with%20%5BREPLACE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20REGEX%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22.%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20FLAGS%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22g%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Hello%20world!%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20REPLACE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%24%26%24%26%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22matchRegex%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22item%20%5BITEM%5D%20of%20%5BSTRING%5D%20matched%20by%20regex%20%2F%5BREGEX%5D%2F%5BFLAGS%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ITEM%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Hello%20world!%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20REGEX%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22(.)%20(.%7B2%7D)%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20FLAGS%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22g%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22testRegex%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22%5BSTRING%5D%20matches%20regex%20%2F%5BREGEX%5D%2F%5BFLAGS%5D%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Hello%20world!%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20REGEX%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22hello%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20FLAGS%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22i%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22identical%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20%5BOPERAND1%5D%20identical%20to%20%5BOPERAND2%5D%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20OPERAND1%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22A%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20OPERAND2%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22a%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isCase%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20%5BSTRING%5D%20%5BTEXTCASE%5D%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22apple%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TEXTCASE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22textCase%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20CaseParam.LOWERCASE%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22toCase%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22convert%20%5BSTRING%5D%20to%20%5BTEXTCASE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22apple%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TEXTCASE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22textCase%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20CaseParam.UPPERCASE%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20textCase%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20this._initCaseMenu()%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20identical(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20%2F%2F%20Purposefully%20no%20casting%2C%20because%0D%0A%20%20%20%20%20%20%2F%2F%20types%20ARE%20differentiated%20in%20this%20block%0D%0A%20%20%20%20%20%20return%20args.OPERAND1%20%3D%3D%3D%20args.OPERAND2%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20unicodeof(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20const%20chars%20%3D%20Array.from(args.STRING.toString())%3B%0D%0A%20%20%20%20%20%20return%20chars.map((char)%20%3D%3E%20char.charCodeAt(0)).join(%22%20%22)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20unicodefrom(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20return%20String.fromCharCode(Number(args.NUM)%20%7C%7C%200)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20letters_of(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20args.STRING%20%3D%20args.STRING.toString()%3B%0D%0A%20%20%20%20%20%20args.LETTER1%20%3D%20Number(args.LETTER1)%20%7C%7C%200%3B%0D%0A%20%20%20%20%20%20args.LETTER2%20%3D%20Number(args.LETTER2)%20%7C%7C%200%3B%0D%0A%20%20%20%20%20%20return%20args.STRING.substring(args.LETTER1%20-%201%2C%20args.LETTER2)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20count(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20%2F%2F.toLowerCase()%20for%20case%20insensitivity%0D%0A%20%20%20%20%20%20args.STRING%20%3D%20args.STRING.toString().toLowerCase()%3B%0D%0A%20%20%20%20%20%20args.SUBSTRING%20%3D%20args.SUBSTRING.toString().toLowerCase()%3B%0D%0A%0D%0A%20%20%20%20%20%20return%20args.STRING.split(args.SUBSTRING).length%20-%201%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20_caseInsensitiveRegex(str)%20%7B%0D%0A%20%20%20%20%20%20return%20new%20RegExp(%0D%0A%20%20%20%20%20%20%20%20str.replaceAll(%2F%5B%5Ea-zA-Z0-9%5D%2Fg%2C%20%22%5C%5C%24%26%22)%2C%0D%0A%20%20%20%20%20%20%20%20%22gi%22%0D%0A%20%20%20%20%20%20)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20split(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20args.STRING%20%3D%20args.STRING.toString()%3B%0D%0A%20%20%20%20%20%20args.SPLIT%20%3D%20args.SPLIT.toString()%3B%0D%0A%20%20%20%20%20%20args.ITEM%20%3D%20Number(args.ITEM)%20%7C%7C%200%3B%0D%0A%0D%0A%20%20%20%20%20%20%2F%2F%20Cache%20the%20last%20split%0D%0A%20%20%20%20%20%20if%20(!(%0D%0A%20%20%20%20%20%20%20%20splitCache%20%26%26%0D%0A%20%20%20%20%20%20%20%20splitCache.string%20%3D%3D%3D%20args.STRING%20%26%26%0D%0A%20%20%20%20%20%20%20%20splitCache.split%20%3D%3D%3D%20args.SPLIT%0D%0A%20%20%20%20%20%20))%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20regex%20%3D%20this._caseInsensitiveRegex(args.SPLIT)%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20splitCache%20%3D%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20string%3A%20args.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20split%3A%20args.SPLIT%2C%0D%0A%20%20%20%20%20%20%20%20%20%20arr%3A%20args.STRING.split(regex)%0D%0A%20%20%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20splitCache.arr%5Bargs.ITEM%20-%201%5D%20%7C%7C%20%22%22%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20replace(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20args.STRING%20%3D%20args.STRING.toString()%3B%0D%0A%20%20%20%20%20%20args.SUBSTRING%20%3D%20args.SUBSTRING.toString()%3B%0D%0A%0D%0A%20%20%20%20%20%20args.REPLACE%20%3D%20args.REPLACE.toString()%3B%0D%0A%0D%0A%20%20%20%20%20%20const%20regex%20%3D%20this._caseInsensitiveRegex(args.SUBSTRING)%3B%0D%0A%0D%0A%20%20%20%20%20%20return%20args.STRING.replace(regex%2C%20args.REPLACE)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20indexof(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20%2F%2F%20.toLowerCase()%20for%20case%20insensitivity%0D%0A%20%20%20%20%20%20args.STRING%20%3D%20args.STRING.toString().toLowerCase()%3B%0D%0A%20%20%20%20%20%20args.SUBSTRING%20%3D%20args.SUBSTRING.toString().toLowerCase()%3B%0D%0A%0D%0A%20%20%20%20%20%20%2F%2F%20Since%20both%20arguments%20are%20casted%20to%20strings%20beforehand%2C%0D%0A%20%20%20%20%20%20%2F%2F%20we%20don't%20have%20to%20worry%20about%20type%20differences%0D%0A%20%20%20%20%20%20%2F%2F%20like%20in%20the%20item%20number%20of%20in%20list%20block%0D%0A%20%20%20%20%20%20const%20found%20%3D%20args.STRING.indexOf(args.SUBSTRING)%3B%0D%0A%0D%0A%20%20%20%20%20%20%2F%2F%20indexOf%20returns%20-1%20when%20no%20matches%20are%20found%0D%0A%20%20%20%20%20%20return%20found%20%3D%3D%3D%20-1%20%3F%200%20%3A%20found%20%2B%201%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20repeat(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20args.STRING%20%3D%20args.STRING.toString()%3B%0D%0A%20%20%20%20%20%20args.REPEAT%20%3D%20Number(args.REPEAT)%20%7C%7C%200%3B%0D%0A%20%20%20%20%20%20return%20args.STRING.repeat(args.REPEAT)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20replaceRegex(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20args.STRING%20%3D%20args.STRING.toString()%3B%0D%0A%20%20%20%20%20%20%20%20args.REPLACE%20%3D%20args.REPLACE.toString()%3B%0D%0A%20%20%20%20%20%20%20%20args.REGEX%20%3D%20args.REGEX.toString()%3B%0D%0A%20%20%20%20%20%20%20%20args.FLAGS%20%3D%20args.FLAGS.toString()%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20return%20args.STRING.replace(%0D%0A%20%20%20%20%20%20%20%20%20%20new%20RegExp(args.REGEX%2C%20args.FLAGS)%2C%0D%0A%20%20%20%20%20%20%20%20%20%20args.REPLACE%0D%0A%20%20%20%20%20%20%20%20)%3B%0D%0A%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0D%0A%20%20%20%20%20%20%20%20console.error(e)%3B%0D%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20matchRegex(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20args.STRING%20%3D%20args.STRING.toString()%3B%0D%0A%20%20%20%20%20%20%20%20args.REGEX%20%3D%20args.REGEX.toString()%3B%0D%0A%20%20%20%20%20%20%20%20args.FLAGS%20%3D%20args.FLAGS.toString()%3B%0D%0A%20%20%20%20%20%20%20%20args.ITEM%20%3D%20Number(args.ITEM)%20%7C%7C%200%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%2F%2F%20Cache%20the%20last%20matched%20string%0D%0A%20%20%20%20%20%20%20%20if%20(!(%0D%0A%20%20%20%20%20%20%20%20%20%20matchCache%20%26%26%0D%0A%20%20%20%20%20%20%20%20%20%20matchCache.string%20%3D%3D%3D%20args.STRING%20%26%26%0D%0A%20%20%20%20%20%20%20%20%20%20matchCache.regex%20%3D%3D%3D%20args.REGEX%20%26%26%0D%0A%20%20%20%20%20%20%20%20%20%20matchCache.flags%20%3D%3D%3D%20args.FLAGS%0D%0A%20%20%20%20%20%20%20%20))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20newFlags%20%3D%20args.FLAGS.includes(%22g%22)%20%3F%20args.FLAGS%20%3A%20args.FLAGS%20%2B%20%22g%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20regex%20%3D%20new%20RegExp(args.REGEX%2C%20newFlags)%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20matchCache%20%3D%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20string%3A%20args.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20regex%3A%20args.REGEX%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20flags%3A%20args.FLAGS%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arr%3A%20args.STRING.match(regex)%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20return%20matchCache.arr%5Bargs.ITEM%20-%201%5D%20%7C%7C%20%22%22%3B%0D%0A%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0D%0A%20%20%20%20%20%20%20%20console.error(e)%3B%0D%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20testRegex(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20args.STRING%20%3D%20args.STRING.toString()%3B%0D%0A%20%20%20%20%20%20%20%20args.REGEX%20%3D%20args.REGEX.toString()%3B%0D%0A%20%20%20%20%20%20%20%20args.FLAGS%20%3D%20args.FLAGS.toString()%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20return%20new%20RegExp(args.REGEX%2C%20args.FLAGS).test(args.STRING)%3B%0D%0A%20%20%20%20%20%20%7D%20catch%20(e)%20%7B%0D%0A%20%20%20%20%20%20%20%20console.error(e)%3B%0D%0A%20%20%20%20%20%20%20%20return%20false%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20isCase(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20const%20string%20%3D%20args.STRING.toString()%3B%0D%0A%20%20%20%20%20%20const%20textCase%20%3D%20args.TEXTCASE.toString()%3B%0D%0A%20%20%20%20%20%20switch%20(textCase)%20%7B%0D%0A%20%20%20%20%20%20%20%20case%20CaseParam.LOWERCASE%3A%0D%0A%20%20%20%20%20%20%20%20%20%20return%20string.toLowerCase()%20%3D%3D%3D%20string%3B%0D%0A%20%20%20%20%20%20%20%20case%20CaseParam.UPPERCASE%3A%0D%0A%20%20%20%20%20%20%20%20%20%20return%20string.toUpperCase()%20%3D%3D%3D%20string%3B%0D%0A%20%20%20%20%20%20%20%20case%20CaseParam.MIXEDCASE%3A%0D%0A%20%20%20%20%20%20%20%20%20%20return%20(!(%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20string.toUpperCase()%20%3D%3D%3D%20string%20%7C%7C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20string.toLowerCase()%20%3D%3D%3D%20string%0D%0A%20%20%20%20%20%20%20%20%20%20))%3B%0D%0A%20%20%20%20%20%20%20%20case%20CaseParam.TITLECASE%3A%0D%0A%20%20%20%20%20%20%20%20%20%20return%20!%5B...string.matchAll(%2F%5Cb.%2Fg)%5D.some((match)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20match%5B0%5D.toLowerCase()%20%3D%3D%3D%20match%5B0%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20default%3A%20return%20false%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20toCase(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20const%20string%20%3D%20args.STRING.toString()%3B%0D%0A%20%20%20%20%20%20const%20textCase%20%3D%20args.TEXTCASE.toString()%3B%0D%0A%20%20%20%20%20%20switch%20(textCase)%20%7B%0D%0A%20%20%20%20%20%20%20%20case%20CaseParam.LOWERCASE%3A%0D%0A%20%20%20%20%20%20%20%20%20%20return%20string.toLowerCase()%3B%0D%0A%20%20%20%20%20%20%20%20case%20CaseParam.UPPERCASE%3A%0D%0A%20%20%20%20%20%20%20%20%20%20return%20string.toUpperCase()%3B%0D%0A%20%20%20%20%20%20%20%20case%20CaseParam.MIXEDCASE%3A%0D%0A%20%20%20%20%20%20%20%20%20%20return%20Array.from(string).map(%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20(char%2C%20index)%20%3D%3E%20index%20%25%202%20%3D%3D%3D%200%20%3F%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20char.toUpperCase()%20%3A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20char.toLowerCase()%0D%0A%20%20%20%20%20%20%20%20%20%20).join(%22%22)%3B%0D%0A%20%20%20%20%20%20%20%20case%20CaseParam.TITLECASE%3A%0D%0A%20%20%20%20%20%20%20%20%20%20return%20string.split(%2F%5Cb%2Fg).map((str)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20chars%20%3D%20Array.from(str)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(chars.length%20%3C%201)%20return%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20chars%5B0%5D%20%3D%20chars%5B0%5D.toUpperCase()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20chars.join(%22%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D).join(%22%22)%3B%0D%0A%20%20%20%20%20%20%20%20default%3A%20return%20string%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%20%20%7D%0D%0A%0D%0A%20%20Scratch.extensions.register(new%20StringsExt())%3B%0D%0A%7D)(Scratch)%3B","data:text/javascript;,(function(Scratch)%20%7B%0D%0A%20%20'use%20strict'%3B%0D%0A%0D%0A%20%20class%20Fetch%20%7B%0D%0A%20%20%20%20getInfo%20()%20%7B%0D%0A%20%20%20%20%20%20return%20%7B%0D%0A%20%20%20%20%20%20%20%20id%3A%20'fetch'%2C%0D%0A%20%20%20%20%20%20%20%20name%3A%20'Fetch'%2C%0D%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20'get'%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20'GET%20%5BURL%5D'%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20URL%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'https%3A%2F%2Fextensions.turbowarp.org%2Fhello.txt'%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%5D%0D%0A%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20get%20(args)%20%7B%0D%0A%20%20%20%20%20%20return%20fetch(args.URL)%0D%0A%20%20%20%20%20%20%20%20.then(r%20%3D%3E%20r.text())%0D%0A%20%20%20%20%20%20%20%20.catch(()%20%3D%3E%20'')%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%7D%0D%0A%0D%0A%20%20Scratch.extensions.register(new%20Fetch())%3B%0D%0A%7D)(Scratch)%3B%0D%0A","data:text/javascript;,(Scratch%20%3D%3E%20%7B%0D%0A%20%20'use%20strict'%3B%0D%0A%0D%0A%20%20const%20audioEngine%20%3D%20Scratch.vm.runtime.audioEngine%3B%0D%0A%0D%0A%20%20const%20fetchAsArrayBufferWithTimeout%20%3D%20(url)%20%3D%3E%20new%20Promise((resolve%2C%20reject)%20%3D%3E%20%7B%0D%0A%20%20%20%20const%20xhr%20%3D%20new%20XMLHttpRequest()%3B%0D%0A%20%20%20%20let%20timeout%20%3D%20setTimeout(()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20xhr.abort()%3B%0D%0A%20%20%20%20%20%20throw%20new%20Error('Timed%20out')%3B%0D%0A%20%20%20%20%7D%2C%205000)%3B%0D%0A%20%20%20%20xhr.onload%20%3D%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20clearTimeout(timeout)%3B%0D%0A%20%20%20%20%20%20if%20(xhr.status%20%3D%3D%3D%20200)%20%7B%0D%0A%20%20%20%20%20%20%20%20resolve(xhr.response)%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20reject(new%20Error(%60HTTP%20error%20%24%7Bxhr.status%7D%20while%20fetching%20%24%7Burl%7D%60))%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%3B%0D%0A%20%20%20%20xhr.onerror%20%3D%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20clearTimeout(timeout)%3B%0D%0A%20%20%20%20%20%20reject(new%20Error(%60Failed%20to%20request%20%24%7Burl%7D%60))%3B%0D%0A%20%20%20%20%7D%3B%0D%0A%20%20%20%20xhr.responseType%20%3D%20'arraybuffer'%3B%0D%0A%20%20%20%20xhr.open('GET'%2C%20url)%3B%0D%0A%20%20%20%20xhr.send()%3B%0D%0A%20%20%7D)%3B%0D%0A%0D%0A%20%20%2F**%0D%0A%20%20%20*%20%40type%20%7BMap%3Cstring%2C%20%7Bsound%3A%20AudioEngine.SoundPlayer%20%7C%20null%2C%20error%3A%20unknown%7D%3E%7D%0D%0A%20%20%20*%2F%0D%0A%20%20const%20soundPlayerCache%20%3D%20new%20Map()%3B%0D%0A%0D%0A%20%20%2F**%0D%0A%20%20%20*%20%40param%20%7Bstring%7D%20url%0D%0A%20%20%20*%20%40returns%20%7BPromise%3CAudioEngine.SoundPlayer%3E%7D%0D%0A%20%20%20*%2F%0D%0A%20%20const%20decodeSoundPlayer%20%3D%20async%20(url)%20%3D%3E%20%7B%0D%0A%20%20%20%20const%20cached%20%3D%20soundPlayerCache.get(url)%3B%0D%0A%20%20%20%20if%20(cached)%20%7B%0D%0A%20%20%20%20%20%20if%20(cached.sound)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20cached.sound%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20throw%20cached.error%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20const%20arrayBuffer%20%3D%20await%20fetchAsArrayBufferWithTimeout(url)%3B%0D%0A%20%20%20%20%20%20const%20soundPlayer%20%3D%20await%20audioEngine.decodeSoundPlayer(%7B%0D%0A%20%20%20%20%20%20%20%20data%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20buffer%3A%20arrayBuffer%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20soundPlayerCache.set(url%2C%20%7B%0D%0A%20%20%20%20%20%20%20%20sound%3A%20soundPlayer%2C%0D%0A%20%20%20%20%20%20%20%20error%3A%20null%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20return%20soundPlayer%3B%0D%0A%20%20%20%20%7D%20catch%20(e)%20%7B%0D%0A%20%20%20%20%20%20soundPlayerCache.set(url%2C%20%7B%0D%0A%20%20%20%20%20%20%20%20sound%3A%20null%2C%0D%0A%20%20%20%20%20%20%20%20error%3A%20e%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20throw%20e%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%7D%3B%0D%0A%0D%0A%20%20%2F**%0D%0A%20%20%20*%20%40param%20%7Bstring%7D%20url%0D%0A%20%20%20*%20%40param%20%7BVM.Target%7D%20target%0D%0A%20%20%20*%20%40returns%20%7BPromise%3Cboolean%3E%7D%20true%20if%20the%20sound%20could%20be%20played%2C%20false%20if%20the%20sound%20could%20not%20be%20decoded%0D%0A%20%20%20*%2F%0D%0A%20%20const%20playWithAudioEngine%20%3D%20async%20(url%2C%20target)%20%3D%3E%20%7B%0D%0A%20%20%20%20const%20soundBank%20%3D%20target.sprite.soundBank%3B%0D%0A%0D%0A%20%20%20%20%2F**%20%40type%20%7BAudioEngine.SoundPlayer%7D%20*%2F%0D%0A%20%20%20%20let%20soundPlayer%3B%0D%0A%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20const%20originalSoundPlayer%20%3D%20await%20decodeSoundPlayer(url)%3B%0D%0A%20%20%20%20%20%20soundPlayer%20%3D%20originalSoundPlayer.take()%3B%0D%0A%20%20%20%20%7D%20catch%20(e)%20%7B%0D%0A%20%20%20%20%20%20console.warn('Could%20not%20fetch%20audio%3B%20falling%20back%20to%20primitive%20approach'%2C%20e)%3B%0D%0A%20%20%20%20%20%20return%20false%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20soundBank.addSoundPlayer(soundPlayer)%3B%0D%0A%20%20%20%20await%20soundBank.playSound(target%2C%20soundPlayer.id)%3B%0D%0A%0D%0A%20%20%20%20delete%20soundBank.soundPlayers%5BsoundPlayer.id%5D%3B%0D%0A%20%20%20%20soundBank.playerTargets.delete(soundPlayer.id)%3B%0D%0A%20%20%20%20soundBank.soundEffects.delete(soundPlayer.id)%3B%0D%0A%0D%0A%20%20%20%20return%20true%3B%0D%0A%20%20%7D%3B%0D%0A%0D%0A%20%20%2F**%0D%0A%20%20%20*%20%40param%20%7Bstring%7D%20url%0D%0A%20%20%20*%20%40param%20%7BVM.Target%7D%20target%0D%0A%20%20%20*%20%40returns%20%7BPromise%3Cvoid%3E%7D%0D%0A%20%20%20*%2F%0D%0A%20%20const%20playWithAudioElement%20%3D%20(url%2C%20target)%20%3D%3E%20new%20Promise((resolve%2C%20reject)%20%3D%3E%20%7B%0D%0A%20%20%20%20%2F%2F%20Unfortunately%2C%20we%20can't%20play%20all%20sounds%20with%20the%20audio%20engine.%0D%0A%20%20%20%20%2F%2F%20For%20these%20sounds%2C%20fall%20back%20to%20a%20primitive%20%3Caudio%3E-based%20solution%20that%20will%20work%20for%20all%0D%0A%20%20%20%20%2F%2F%20sounds%2C%20even%20those%20without%20CORS.%0D%0A%20%20%20%20const%20mediaElement%20%3D%20new%20Audio(url)%3B%0D%0A%0D%0A%20%20%20%20%2F%2F%20Make%20a%20minimal%20effort%20to%20simulate%20Scratch's%20sound%20effects.%0D%0A%20%20%20%20%2F%2F%20We%20can%20get%20pretty%20close%20for%20volumes%20%3C100%25.%0D%0A%20%20%20%20%2F%2F%20playbackRate%20does%20not%20have%20enough%20range%20for%20simulating%20pitch.%0D%0A%20%20%20%20%2F%2F%20There%20is%20no%20way%20for%20us%20to%20pan%20left%20or%20right.%0D%0A%20%20%20%20mediaElement.volume%20%3D%20target.volume%20%2F%20100%3B%0D%0A%0D%0A%20%20%20%20mediaElement.onended%20%3D%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20resolve()%3B%0D%0A%20%20%20%20%7D%3B%0D%0A%20%20%20%20mediaElement.play()%0D%0A%20%20%20%20%20%20.then(()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%20Wait%20for%20onended%0D%0A%20%20%20%20%20%20%7D)%0D%0A%20%20%20%20%20%20.catch((err)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20reject(err)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%7D)%3B%0D%0A%0D%0A%20%20%2F**%0D%0A%20%20%20*%20%40param%20%7Bstring%7D%20url%0D%0A%20%20%20*%20%40param%20%7BVM.Target%7D%20target%0D%0A%20%20%20*%20%40returns%20%7BPromise%3Cvoid%3E%7D%0D%0A%20%20%20*%2F%0D%0A%20%20const%20playSound%20%3D%20async%20(url%2C%20target)%20%3D%3E%20%7B%0D%0A%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20const%20success%20%3D%20await%20playWithAudioEngine(url%2C%20target)%3B%0D%0A%20%20%20%20%20%20if%20(!success)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20await%20playWithAudioElement(url%2C%20target)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%20catch%20(e)%20%7B%0D%0A%20%20%20%20%20%20console.warn(%60All%20attempts%20to%20play%20%24%7Burl%7D%20failed%60%2C%20e)%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%7D%3B%0D%0A%0D%0A%20%20class%20Sound%20%7B%0D%0A%20%20%20%20getInfo()%20%7B%0D%0A%20%20%20%20%20%20return%20%7B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%20'sound'%20would%20conflict%20with%20normal%20Scratch%0D%0A%20%20%20%20%20%20%20%20id%3A%20'notSound'%2C%0D%0A%20%20%20%20%20%20%20%20name%3A%20'Sound'%2C%0D%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20'play'%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20'start%20sound%20from%20url%3A%20%5Bpath%5D'%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20path%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'https%3A%2F%2Fextensions.turbowarp.org%2Fmeow.mp3'%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20'playUntilDone'%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20'play%20sound%20from%20url%3A%20%5Bpath%5D%20until%20done'%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20path%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'https%3A%2F%2Fextensions.turbowarp.org%2Fmeow.mp3'%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%5D%0D%0A%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20play(%7B%20path%20%7D%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20playSound(path%2C%20util.target)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20playUntilDone(%7B%20path%20%7D%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20return%20playSound(path%2C%20util.target)%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%7D%0D%0A%0D%0A%20%20Scratch.extensions.register(new%20Sound())%3B%0D%0A%7D)(Scratch)%3B%0D%0A"]) {
vm.extensionManager.loadExtensionURL(extension);
}
} catch (e) {
handleError(e);
}
</script>
<script>
const getProjectData = (function() {
const storage = scaffolding.storage;
storage.onprogress = (total, loaded) => {
setProgress(interpolate(0.2, 0.98, loaded / total));
};
storage.addWebStore(
[storage.AssetType.ImageVector, storage.AssetType.ImageBitmap, storage.AssetType.Sound],
(asset) => new URL('./assets/' + asset.assetId + '.' + asset.dataFormat, location).href
);
return () => new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.onload = () => {
resolve(xhr.response);
};
xhr.onerror = () => {
if (location.protocol === 'file:') {
reject(new Error('Zip environment must be used from a website, not from a file URL.'));
} else {
reject(new Error('Request to load project data failed.'));
}
};
xhr.onprogress = (e) => {
if (e.lengthComputable) {
setProgress(interpolate(0.1, 0.2, e.loaded / e.total));
}
};
xhr.responseType = 'arraybuffer';
xhr.open('GET', "./assets/project.json");
xhr.send();
});
})();
</script>
<script>
const run = async () => {
const projectData = await getProjectData();
await scaffolding.loadProject(projectData);
setProgress(1);
loadingScreen.hidden = true;
if (true) {
scaffolding.start();
} else {
launchScreen.hidden = false;
launchScreen.addEventListener('click', () => {
launchScreen.hidden = true;
scaffolding.start();
});
launchScreen.focus();
}
};
run().catch(handleError);
</script>
</body>
</html>