UNPKG

567 kBJavaScriptView Raw
1#!/usr/bin/env node
2/* eslint-disable */
3
4try {
5 Object.freeze({}).detectStrictMode = true;
6} catch (error) {
7 throw new Error(`The whole PnP file got strict-mode-ified, which is known to break (Emscripten libraries aren't strict mode). This usually happens when the file goes through Babel.`);
8}
9
10var __non_webpack_module__ = module;
11
12function $$SETUP_STATE(hydrateRuntimeState, basePath) {
13 return hydrateRuntimeState({
14 "__info": [
15 "This file is automatically generated. Do not touch it, or risk",
16 "your modifications being lost. We also recommend you not to read",
17 "it either without using the @yarnpkg/pnp package, as the data layout",
18 "is entirely unspecified and WILL change from a version to another."
19 ],
20 "dependencyTreeRoots": [
21 {
22 "name": "@akala/core",
23 "reference": "workspace:."
24 }
25 ],
26 "enableTopLevelFallback": true,
27 "ignorePatternData": "(^(?:\\.vscode\\/pnpify(?:\\/(?!\\.)(?:(?:(?!(?:^|\\/)\\.).)*?)|$))$)",
28 "fallbackExclusionList": [
29 ["@akala/core", ["workspace:."]]
30 ],
31 "fallbackPool": [
32 [
33 "@akala/json-rpc-ws",
34 "npm:9.0.14"
35 ],
36 [
37 "@types/body-parser",
38 "npm:1.17.0"
39 ],
40 [
41 "@types/connect",
42 "npm:3.4.32"
43 ],
44 [
45 "@types/debug",
46 "npm:4.1.5"
47 ],
48 [
49 "@types/events",
50 "npm:1.2.0"
51 ],
52 [
53 "@types/express",
54 "npm:4.17.2"
55 ],
56 [
57 "@types/express-serve-static-core",
58 "npm:4.16.0"
59 ],
60 [
61 "@types/mime",
62 "npm:2.0.0"
63 ],
64 [
65 "@types/mock-require",
66 "npm:2.0.0"
67 ],
68 [
69 "@types/node",
70 "npm:13.11.1"
71 ],
72 [
73 "@types/orchestrator",
74 "npm:0.3.2"
75 ],
76 [
77 "@types/q",
78 "npm:1.5.1"
79 ],
80 [
81 "@types/range-parser",
82 "npm:1.2.3"
83 ],
84 [
85 "@types/serve-static",
86 "npm:1.13.2"
87 ],
88 [
89 "@types/ws",
90 "npm:7.2.1"
91 ],
92 [
93 "accepts",
94 "npm:1.3.7"
95 ],
96 [
97 "array-flatten",
98 "npm:1.1.1"
99 ],
100 [
101 "body-parser",
102 "npm:1.19.0"
103 ],
104 [
105 "browser-process-hrtime",
106 "npm:1.0.0"
107 ],
108 [
109 "buffer-from",
110 "npm:1.1.1"
111 ],
112 [
113 "bytes",
114 "npm:3.1.0"
115 ],
116 [
117 "content-disposition",
118 "npm:0.5.3"
119 ],
120 [
121 "content-type",
122 "npm:1.0.4"
123 ],
124 [
125 "cookie",
126 "npm:0.4.0"
127 ],
128 [
129 "cookie-signature",
130 "npm:1.0.6"
131 ],
132 [
133 "debug",
134 "virtual:bd697a751d58794530b682e5228b684a9f4a00d605f65e3707c8a27de2cc1b546f75892637f679b4286599f9fd60f3f12365f3d28f27a908f0b59bd6e06dae15#npm:4.1.1"
135 ],
136 [
137 "deep-equal",
138 "npm:1.0.1"
139 ],
140 [
141 "depd",
142 "npm:1.1.2"
143 ],
144 [
145 "destroy",
146 "npm:1.0.4"
147 ],
148 [
149 "ee-first",
150 "npm:1.1.1"
151 ],
152 [
153 "encodeurl",
154 "npm:1.0.2"
155 ],
156 [
157 "encoding",
158 "npm:0.1.12"
159 ],
160 [
161 "end-of-stream",
162 "npm:0.1.5"
163 ],
164 [
165 "es6-promise",
166 "npm:4.2.8"
167 ],
168 [
169 "escape-html",
170 "npm:1.0.3"
171 ],
172 [
173 "etag",
174 "npm:1.8.1"
175 ],
176 [
177 "express",
178 "npm:4.17.1"
179 ],
180 [
181 "finalhandler",
182 "npm:1.1.2"
183 ],
184 [
185 "flatten",
186 "npm:0.0.1"
187 ],
188 [
189 "forwarded",
190 "npm:0.1.2"
191 ],
192 [
193 "fresh",
194 "npm:0.5.2"
195 ],
196 [
197 "get-caller-file",
198 "npm:1.0.3"
199 ],
200 [
201 "http-assert",
202 "npm:1.4.0"
203 ],
204 [
205 "http-errors",
206 "npm:1.7.2"
207 ],
208 [
209 "iconv-lite",
210 "npm:0.4.24"
211 ],
212 [
213 "inherits",
214 "npm:2.0.3"
215 ],
216 [
217 "ipaddr.js",
218 "npm:1.9.0"
219 ],
220 [
221 "is-stream",
222 "npm:1.1.0"
223 ],
224 [
225 "isomorphic-fetch",
226 "npm:2.2.1"
227 ],
228 [
229 "media-typer",
230 "npm:0.3.0"
231 ],
232 [
233 "merge-descriptors",
234 "npm:1.0.1"
235 ],
236 [
237 "merge2",
238 "npm:1.3.0"
239 ],
240 [
241 "methods",
242 "npm:1.1.2"
243 ],
244 [
245 "mime",
246 "npm:1.6.0"
247 ],
248 [
249 "mime-db",
250 "npm:1.40.0"
251 ],
252 [
253 "mime-types",
254 "npm:2.1.24"
255 ],
256 [
257 "mock-require",
258 "npm:3.0.3"
259 ],
260 [
261 "ms",
262 "npm:2.1.1"
263 ],
264 [
265 "negotiator",
266 "npm:0.6.2"
267 ],
268 [
269 "node-fetch",
270 "npm:1.7.3"
271 ],
272 [
273 "normalize-path",
274 "npm:2.1.1"
275 ],
276 [
277 "on-finished",
278 "npm:2.3.0"
279 ],
280 [
281 "once",
282 "npm:1.3.3"
283 ],
284 [
285 "orchestrator",
286 "npm:0.3.8"
287 ],
288 [
289 "parseurl",
290 "npm:1.3.3"
291 ],
292 [
293 "path-to-regexp",
294 "npm:6.1.0"
295 ],
296 [
297 "proxy-addr",
298 "npm:2.0.5"
299 ],
300 [
301 "qs",
302 "npm:6.7.0"
303 ],
304 [
305 "range-parser",
306 "npm:1.2.1"
307 ],
308 [
309 "raw-body",
310 "npm:2.4.0"
311 ],
312 [
313 "remove-trailing-separator",
314 "npm:1.1.0"
315 ],
316 [
317 "routington",
318 "npm:1.0.3"
319 ],
320 [
321 "safe-buffer",
322 "npm:5.1.2"
323 ],
324 [
325 "safer-buffer",
326 "npm:2.1.2"
327 ],
328 [
329 "send",
330 "npm:0.17.1"
331 ],
332 [
333 "sequencify",
334 "npm:0.0.7"
335 ],
336 [
337 "serve-static",
338 "npm:1.14.1"
339 ],
340 [
341 "setprototypeof",
342 "npm:1.1.1"
343 ],
344 [
345 "source-map",
346 "npm:0.6.1"
347 ],
348 [
349 "source-map-support",
350 "npm:0.5.16"
351 ],
352 [
353 "statuses",
354 "npm:1.5.0"
355 ],
356 [
357 "stream-consume",
358 "npm:0.1.1"
359 ],
360 [
361 "toidentifier",
362 "npm:1.0.0"
363 ],
364 [
365 "type-is",
366 "npm:1.6.18"
367 ],
368 [
369 "typescript",
370 "patch:typescript@npm%3A3.7.5#builtin<compat/typescript>::version=3.7.5&hash=270b6c"
371 ],
372 [
373 "unpipe",
374 "npm:1.0.0"
375 ],
376 [
377 "utils-merge",
378 "npm:1.0.1"
379 ],
380 [
381 "uuid",
382 "npm:7.0.3"
383 ],
384 [
385 "vary",
386 "npm:1.1.2"
387 ],
388 [
389 "whatwg-fetch",
390 "npm:3.0.0"
391 ],
392 [
393 "wrappy",
394 "npm:1.0.2"
395 ],
396 [
397 "ws",
398 "virtual:55209bb636c41a4732c94226cfcabed9379b81a9d012b20f806b7dae20306a30ad400f7552377f216257061ff4396f27acf45d25beaf7e124e00aeb469e8918b#npm:7.2.1"
399 ]
400 ],
401 "locationBlacklistData": [
402 ],
403 "packageRegistryData": [
404 [null, [
405 [null, {
406 "packageLocation": "./",
407 "packageDependencies": [
408 ["@akala/json-rpc-ws", "npm:9.0.14"],
409 ["@types/debug", "npm:4.1.5"],
410 ["@types/express", "npm:4.17.2"],
411 ["@types/mock-require", "npm:2.0.0"],
412 ["@types/node", "npm:13.11.1"],
413 ["@types/orchestrator", "npm:0.3.2"],
414 ["@types/ws", "npm:7.2.1"],
415 ["browser-process-hrtime", "npm:1.0.0"],
416 ["debug", "virtual:bd697a751d58794530b682e5228b684a9f4a00d605f65e3707c8a27de2cc1b546f75892637f679b4286599f9fd60f3f12365f3d28f27a908f0b59bd6e06dae15#npm:4.1.1"],
417 ["es6-promise", "npm:4.2.8"],
418 ["express", "npm:4.17.1"],
419 ["isomorphic-fetch", "npm:2.2.1"],
420 ["merge2", "npm:1.3.0"],
421 ["mock-require", "npm:3.0.3"],
422 ["orchestrator", "npm:0.3.8"],
423 ["parseurl", "npm:1.3.3"],
424 ["path-to-regexp", "npm:6.1.0"],
425 ["routington", "npm:1.0.3"],
426 ["source-map-support", "npm:0.5.16"],
427 ["typescript", "patch:typescript@npm%3A3.7.5#builtin<compat/typescript>::version=3.7.5&hash=270b6c"],
428 ["utils-merge", "npm:1.0.1"],
429 ["ws", "virtual:55209bb636c41a4732c94226cfcabed9379b81a9d012b20f806b7dae20306a30ad400f7552377f216257061ff4396f27acf45d25beaf7e124e00aeb469e8918b#npm:7.2.1"]
430 ],
431 "linkType": "SOFT",
432 }]
433 ]],
434 ["@akala/core", [
435 ["workspace:.", {
436 "packageLocation": "./",
437 "packageDependencies": [
438 ["@akala/core", "workspace:."],
439 ["@akala/json-rpc-ws", "npm:9.0.14"],
440 ["@types/debug", "npm:4.1.5"],
441 ["@types/express", "npm:4.17.2"],
442 ["@types/mock-require", "npm:2.0.0"],
443 ["@types/node", "npm:13.11.1"],
444 ["@types/orchestrator", "npm:0.3.2"],
445 ["@types/ws", "npm:7.2.1"],
446 ["browser-process-hrtime", "npm:1.0.0"],
447 ["debug", "virtual:bd697a751d58794530b682e5228b684a9f4a00d605f65e3707c8a27de2cc1b546f75892637f679b4286599f9fd60f3f12365f3d28f27a908f0b59bd6e06dae15#npm:4.1.1"],
448 ["es6-promise", "npm:4.2.8"],
449 ["express", "npm:4.17.1"],
450 ["isomorphic-fetch", "npm:2.2.1"],
451 ["merge2", "npm:1.3.0"],
452 ["mock-require", "npm:3.0.3"],
453 ["orchestrator", "npm:0.3.8"],
454 ["parseurl", "npm:1.3.3"],
455 ["path-to-regexp", "npm:6.1.0"],
456 ["routington", "npm:1.0.3"],
457 ["source-map-support", "npm:0.5.16"],
458 ["typescript", "patch:typescript@npm%3A3.7.5#builtin<compat/typescript>::version=3.7.5&hash=270b6c"],
459 ["utils-merge", "npm:1.0.1"],
460 ["ws", "virtual:55209bb636c41a4732c94226cfcabed9379b81a9d012b20f806b7dae20306a30ad400f7552377f216257061ff4396f27acf45d25beaf7e124e00aeb469e8918b#npm:7.2.1"]
461 ],
462 "linkType": "SOFT",
463 }]
464 ]],
465 ["@akala/json-rpc-ws", [
466 ["npm:9.0.14", {
467 "packageLocation": "./.yarn/cache/@akala-json-rpc-ws-npm-9.0.14-bd697a751d-2.zip/node_modules/@akala/json-rpc-ws/",
468 "packageDependencies": [
469 ["@akala/json-rpc-ws", "npm:9.0.14"],
470 ["debug", "virtual:bd697a751d58794530b682e5228b684a9f4a00d605f65e3707c8a27de2cc1b546f75892637f679b4286599f9fd60f3f12365f3d28f27a908f0b59bd6e06dae15#npm:4.1.1"],
471 ["uuid", "npm:7.0.3"],
472 ["ws", "virtual:bd697a751d58794530b682e5228b684a9f4a00d605f65e3707c8a27de2cc1b546f75892637f679b4286599f9fd60f3f12365f3d28f27a908f0b59bd6e06dae15#npm:7.2.3"]
473 ],
474 "linkType": "HARD",
475 }]
476 ]],
477 ["@types/body-parser", [
478 ["npm:1.17.0", {
479 "packageLocation": "./.yarn/cache/@types-body-parser-npm-1.17.0-ee6b43921e-2.zip/node_modules/@types/body-parser/",
480 "packageDependencies": [
481 ["@types/body-parser", "npm:1.17.0"],
482 ["@types/connect", "npm:3.4.32"],
483 ["@types/node", "npm:12.12.17"]
484 ],
485 "linkType": "HARD",
486 }]
487 ]],
488 ["@types/connect", [
489 ["npm:3.4.32", {
490 "packageLocation": "./.yarn/cache/@types-connect-npm-3.4.32-411ec2cbbf-2.zip/node_modules/@types/connect/",
491 "packageDependencies": [
492 ["@types/connect", "npm:3.4.32"],
493 ["@types/node", "npm:12.12.17"]
494 ],
495 "linkType": "HARD",
496 }]
497 ]],
498 ["@types/debug", [
499 ["npm:4.1.5", {
500 "packageLocation": "./.yarn/cache/@types-debug-npm-4.1.5-3464d6c971-2.zip/node_modules/@types/debug/",
501 "packageDependencies": [
502 ["@types/debug", "npm:4.1.5"]
503 ],
504 "linkType": "HARD",
505 }]
506 ]],
507 ["@types/events", [
508 ["npm:1.2.0", {
509 "packageLocation": "./.yarn/cache/@types-events-npm-1.2.0-2885f21f77-2.zip/node_modules/@types/events/",
510 "packageDependencies": [
511 ["@types/events", "npm:1.2.0"]
512 ],
513 "linkType": "HARD",
514 }]
515 ]],
516 ["@types/express", [
517 ["npm:4.17.2", {
518 "packageLocation": "./.yarn/cache/@types-express-npm-4.17.2-01365c5cb9-2.zip/node_modules/@types/express/",
519 "packageDependencies": [
520 ["@types/express", "npm:4.17.2"],
521 ["@types/body-parser", "npm:1.17.0"],
522 ["@types/express-serve-static-core", "npm:4.16.0"],
523 ["@types/serve-static", "npm:1.13.2"]
524 ],
525 "linkType": "HARD",
526 }]
527 ]],
528 ["@types/express-serve-static-core", [
529 ["npm:4.16.0", {
530 "packageLocation": "./.yarn/cache/@types-express-serve-static-core-npm-4.16.0-29fc8031f1-2.zip/node_modules/@types/express-serve-static-core/",
531 "packageDependencies": [
532 ["@types/express-serve-static-core", "npm:4.16.0"],
533 ["@types/events", "npm:1.2.0"],
534 ["@types/node", "npm:12.12.17"],
535 ["@types/range-parser", "npm:1.2.3"]
536 ],
537 "linkType": "HARD",
538 }]
539 ]],
540 ["@types/mime", [
541 ["npm:2.0.0", {
542 "packageLocation": "./.yarn/cache/@types-mime-npm-2.0.0-2a02366cb8-2.zip/node_modules/@types/mime/",
543 "packageDependencies": [
544 ["@types/mime", "npm:2.0.0"]
545 ],
546 "linkType": "HARD",
547 }]
548 ]],
549 ["@types/mock-require", [
550 ["npm:2.0.0", {
551 "packageLocation": "./.yarn/cache/@types-mock-require-npm-2.0.0-6a8db1683d-2.zip/node_modules/@types/mock-require/",
552 "packageDependencies": [
553 ["@types/mock-require", "npm:2.0.0"],
554 ["@types/node", "npm:12.12.17"]
555 ],
556 "linkType": "HARD",
557 }]
558 ]],
559 ["@types/node", [
560 ["npm:12.12.17", {
561 "packageLocation": "./.yarn/cache/@types-node-npm-12.12.17-28a9670a28-2.zip/node_modules/@types/node/",
562 "packageDependencies": [
563 ["@types/node", "npm:12.12.17"]
564 ],
565 "linkType": "HARD",
566 }],
567 ["npm:13.11.1", {
568 "packageLocation": "./.yarn/cache/@types-node-npm-13.11.1-ea46d1204d-2.zip/node_modules/@types/node/",
569 "packageDependencies": [
570 ["@types/node", "npm:13.11.1"]
571 ],
572 "linkType": "HARD",
573 }]
574 ]],
575 ["@types/orchestrator", [
576 ["npm:0.3.2", {
577 "packageLocation": "./.yarn/cache/@types-orchestrator-npm-0.3.2-0f4f0a3e9f-2.zip/node_modules/@types/orchestrator/",
578 "packageDependencies": [
579 ["@types/orchestrator", "npm:0.3.2"],
580 ["@types/node", "npm:12.12.17"],
581 ["@types/q", "npm:1.5.1"]
582 ],
583 "linkType": "HARD",
584 }]
585 ]],
586 ["@types/q", [
587 ["npm:1.5.1", {
588 "packageLocation": "./.yarn/cache/@types-q-npm-1.5.1-29b49b9eca-2.zip/node_modules/@types/q/",
589 "packageDependencies": [
590 ["@types/q", "npm:1.5.1"]
591 ],
592 "linkType": "HARD",
593 }]
594 ]],
595 ["@types/range-parser", [
596 ["npm:1.2.3", {
597 "packageLocation": "./.yarn/cache/@types-range-parser-npm-1.2.3-c06253b351-2.zip/node_modules/@types/range-parser/",
598 "packageDependencies": [
599 ["@types/range-parser", "npm:1.2.3"]
600 ],
601 "linkType": "HARD",
602 }]
603 ]],
604 ["@types/serve-static", [
605 ["npm:1.13.2", {
606 "packageLocation": "./.yarn/cache/@types-serve-static-npm-1.13.2-2f417143a1-2.zip/node_modules/@types/serve-static/",
607 "packageDependencies": [
608 ["@types/serve-static", "npm:1.13.2"],
609 ["@types/express-serve-static-core", "npm:4.16.0"],
610 ["@types/mime", "npm:2.0.0"]
611 ],
612 "linkType": "HARD",
613 }]
614 ]],
615 ["@types/ws", [
616 ["npm:7.2.1", {
617 "packageLocation": "./.yarn/cache/@types-ws-npm-7.2.1-e2c8b9e842-2.zip/node_modules/@types/ws/",
618 "packageDependencies": [
619 ["@types/ws", "npm:7.2.1"],
620 ["@types/node", "npm:12.12.17"]
621 ],
622 "linkType": "HARD",
623 }]
624 ]],
625 ["accepts", [
626 ["npm:1.3.7", {
627 "packageLocation": "./.yarn/cache/accepts-npm-1.3.7-0dc9de65aa-2.zip/node_modules/accepts/",
628 "packageDependencies": [
629 ["accepts", "npm:1.3.7"],
630 ["mime-types", "npm:2.1.24"],
631 ["negotiator", "npm:0.6.2"]
632 ],
633 "linkType": "HARD",
634 }]
635 ]],
636 ["array-flatten", [
637 ["npm:1.1.1", {
638 "packageLocation": "./.yarn/cache/array-flatten-npm-1.1.1-9d94ad5f1d-2.zip/node_modules/array-flatten/",
639 "packageDependencies": [
640 ["array-flatten", "npm:1.1.1"]
641 ],
642 "linkType": "HARD",
643 }]
644 ]],
645 ["body-parser", [
646 ["npm:1.19.0", {
647 "packageLocation": "./.yarn/cache/body-parser-npm-1.19.0-6e177cabfa-2.zip/node_modules/body-parser/",
648 "packageDependencies": [
649 ["body-parser", "npm:1.19.0"],
650 ["bytes", "npm:3.1.0"],
651 ["content-type", "npm:1.0.4"],
652 ["debug", "virtual:6e177cabfad012f413f9c41366539c04d8701f0567119998690ab02224012faa99ec3a16b9f74f4d7920ab472c12b3e70f47f8f143239c06d0e2569e60ed9f62#npm:2.6.9"],
653 ["depd", "npm:1.1.2"],
654 ["http-errors", "npm:1.7.2"],
655 ["iconv-lite", "npm:0.4.24"],
656 ["on-finished", "npm:2.3.0"],
657 ["qs", "npm:6.7.0"],
658 ["raw-body", "npm:2.4.0"],
659 ["type-is", "npm:1.6.18"]
660 ],
661 "linkType": "HARD",
662 }]
663 ]],
664 ["browser-process-hrtime", [
665 ["npm:1.0.0", {
666 "packageLocation": "./.yarn/cache/browser-process-hrtime-npm-1.0.0-db700805c2-2.zip/node_modules/browser-process-hrtime/",
667 "packageDependencies": [
668 ["browser-process-hrtime", "npm:1.0.0"]
669 ],
670 "linkType": "HARD",
671 }]
672 ]],
673 ["buffer-from", [
674 ["npm:1.1.1", {
675 "packageLocation": "./.yarn/cache/buffer-from-npm-1.1.1-22917b8ed8-2.zip/node_modules/buffer-from/",
676 "packageDependencies": [
677 ["buffer-from", "npm:1.1.1"]
678 ],
679 "linkType": "HARD",
680 }]
681 ]],
682 ["bytes", [
683 ["npm:3.1.0", {
684 "packageLocation": "./.yarn/cache/bytes-npm-3.1.0-19c5b15405-2.zip/node_modules/bytes/",
685 "packageDependencies": [
686 ["bytes", "npm:3.1.0"]
687 ],
688 "linkType": "HARD",
689 }]
690 ]],
691 ["content-disposition", [
692 ["npm:0.5.3", {
693 "packageLocation": "./.yarn/cache/content-disposition-npm-0.5.3-9a9a567e17-2.zip/node_modules/content-disposition/",
694 "packageDependencies": [
695 ["content-disposition", "npm:0.5.3"],
696 ["safe-buffer", "npm:5.1.2"]
697 ],
698 "linkType": "HARD",
699 }]
700 ]],
701 ["content-type", [
702 ["npm:1.0.4", {
703 "packageLocation": "./.yarn/cache/content-type-npm-1.0.4-3b1a5ca16b-2.zip/node_modules/content-type/",
704 "packageDependencies": [
705 ["content-type", "npm:1.0.4"]
706 ],
707 "linkType": "HARD",
708 }]
709 ]],
710 ["cookie", [
711 ["npm:0.4.0", {
712 "packageLocation": "./.yarn/cache/cookie-npm-0.4.0-4b3d629e45-2.zip/node_modules/cookie/",
713 "packageDependencies": [
714 ["cookie", "npm:0.4.0"]
715 ],
716 "linkType": "HARD",
717 }]
718 ]],
719 ["cookie-signature", [
720 ["npm:1.0.6", {
721 "packageLocation": "./.yarn/cache/cookie-signature-npm-1.0.6-93f325f7f0-2.zip/node_modules/cookie-signature/",
722 "packageDependencies": [
723 ["cookie-signature", "npm:1.0.6"]
724 ],
725 "linkType": "HARD",
726 }]
727 ]],
728 ["debug", [
729 ["virtual:6e177cabfad012f413f9c41366539c04d8701f0567119998690ab02224012faa99ec3a16b9f74f4d7920ab472c12b3e70f47f8f143239c06d0e2569e60ed9f62#npm:2.6.9", {
730 "packageLocation": "./.yarn/$$virtual/debug-virtual-53242bdd6a/0/cache/debug-npm-2.6.9-7d4cb597dc-2.zip/node_modules/debug/",
731 "packageDependencies": [
732 ["debug", "virtual:6e177cabfad012f413f9c41366539c04d8701f0567119998690ab02224012faa99ec3a16b9f74f4d7920ab472c12b3e70f47f8f143239c06d0e2569e60ed9f62#npm:2.6.9"],
733 ["ms", "npm:2.0.0"],
734 ["supports-color", null]
735 ],
736 "packagePeers": [
737 "supports-color"
738 ],
739 "linkType": "HARD",
740 }],
741 ["virtual:bd697a751d58794530b682e5228b684a9f4a00d605f65e3707c8a27de2cc1b546f75892637f679b4286599f9fd60f3f12365f3d28f27a908f0b59bd6e06dae15#npm:4.1.1", {
742 "packageLocation": "./.yarn/$$virtual/debug-virtual-471f119552/0/cache/debug-npm-4.1.1-540248b3aa-2.zip/node_modules/debug/",
743 "packageDependencies": [
744 ["debug", "virtual:bd697a751d58794530b682e5228b684a9f4a00d605f65e3707c8a27de2cc1b546f75892637f679b4286599f9fd60f3f12365f3d28f27a908f0b59bd6e06dae15#npm:4.1.1"],
745 ["ms", "npm:2.1.1"],
746 ["supports-color", null]
747 ],
748 "packagePeers": [
749 "supports-color"
750 ],
751 "linkType": "HARD",
752 }]
753 ]],
754 ["deep-equal", [
755 ["npm:1.0.1", {
756 "packageLocation": "./.yarn/cache/deep-equal-npm-1.0.1-f05565c4e5-2.zip/node_modules/deep-equal/",
757 "packageDependencies": [
758 ["deep-equal", "npm:1.0.1"]
759 ],
760 "linkType": "HARD",
761 }]
762 ]],
763 ["depd", [
764 ["npm:1.1.2", {
765 "packageLocation": "./.yarn/cache/depd-npm-1.1.2-b0c8414da7-2.zip/node_modules/depd/",
766 "packageDependencies": [
767 ["depd", "npm:1.1.2"]
768 ],
769 "linkType": "HARD",
770 }]
771 ]],
772 ["destroy", [
773 ["npm:1.0.4", {
774 "packageLocation": "./.yarn/cache/destroy-npm-1.0.4-a2203e01cb-2.zip/node_modules/destroy/",
775 "packageDependencies": [
776 ["destroy", "npm:1.0.4"]
777 ],
778 "linkType": "HARD",
779 }]
780 ]],
781 ["ee-first", [
782 ["npm:1.1.1", {
783 "packageLocation": "./.yarn/cache/ee-first-npm-1.1.1-33f8535b39-2.zip/node_modules/ee-first/",
784 "packageDependencies": [
785 ["ee-first", "npm:1.1.1"]
786 ],
787 "linkType": "HARD",
788 }]
789 ]],
790 ["encodeurl", [
791 ["npm:1.0.2", {
792 "packageLocation": "./.yarn/cache/encodeurl-npm-1.0.2-f8c8454c41-2.zip/node_modules/encodeurl/",
793 "packageDependencies": [
794 ["encodeurl", "npm:1.0.2"]
795 ],
796 "linkType": "HARD",
797 }]
798 ]],
799 ["encoding", [
800 ["npm:0.1.12", {
801 "packageLocation": "./.yarn/cache/encoding-npm-0.1.12-1a16b5c5e9-2.zip/node_modules/encoding/",
802 "packageDependencies": [
803 ["encoding", "npm:0.1.12"],
804 ["iconv-lite", "npm:0.4.24"]
805 ],
806 "linkType": "HARD",
807 }]
808 ]],
809 ["end-of-stream", [
810 ["npm:0.1.5", {
811 "packageLocation": "./.yarn/cache/end-of-stream-npm-0.1.5-78c6089410-2.zip/node_modules/end-of-stream/",
812 "packageDependencies": [
813 ["end-of-stream", "npm:0.1.5"],
814 ["once", "npm:1.3.3"]
815 ],
816 "linkType": "HARD",
817 }]
818 ]],
819 ["es6-promise", [
820 ["npm:4.2.8", {
821 "packageLocation": "./.yarn/cache/es6-promise-npm-4.2.8-c9f5b11f66-2.zip/node_modules/es6-promise/",
822 "packageDependencies": [
823 ["es6-promise", "npm:4.2.8"]
824 ],
825 "linkType": "HARD",
826 }]
827 ]],
828 ["escape-html", [
829 ["npm:1.0.3", {
830 "packageLocation": "./.yarn/cache/escape-html-npm-1.0.3-376c22ee74-2.zip/node_modules/escape-html/",
831 "packageDependencies": [
832 ["escape-html", "npm:1.0.3"]
833 ],
834 "linkType": "HARD",
835 }]
836 ]],
837 ["etag", [
838 ["npm:1.8.1", {
839 "packageLocation": "./.yarn/cache/etag-npm-1.8.1-54a3b989d9-2.zip/node_modules/etag/",
840 "packageDependencies": [
841 ["etag", "npm:1.8.1"]
842 ],
843 "linkType": "HARD",
844 }]
845 ]],
846 ["express", [
847 ["npm:4.17.1", {
848 "packageLocation": "./.yarn/cache/express-npm-4.17.1-6815ee6bf9-2.zip/node_modules/express/",
849 "packageDependencies": [
850 ["express", "npm:4.17.1"],
851 ["accepts", "npm:1.3.7"],
852 ["array-flatten", "npm:1.1.1"],
853 ["body-parser", "npm:1.19.0"],
854 ["content-disposition", "npm:0.5.3"],
855 ["content-type", "npm:1.0.4"],
856 ["cookie", "npm:0.4.0"],
857 ["cookie-signature", "npm:1.0.6"],
858 ["debug", "virtual:6e177cabfad012f413f9c41366539c04d8701f0567119998690ab02224012faa99ec3a16b9f74f4d7920ab472c12b3e70f47f8f143239c06d0e2569e60ed9f62#npm:2.6.9"],
859 ["depd", "npm:1.1.2"],
860 ["encodeurl", "npm:1.0.2"],
861 ["escape-html", "npm:1.0.3"],
862 ["etag", "npm:1.8.1"],
863 ["finalhandler", "npm:1.1.2"],
864 ["fresh", "npm:0.5.2"],
865 ["merge-descriptors", "npm:1.0.1"],
866 ["methods", "npm:1.1.2"],
867 ["on-finished", "npm:2.3.0"],
868 ["parseurl", "npm:1.3.3"],
869 ["path-to-regexp", "npm:0.1.7"],
870 ["proxy-addr", "npm:2.0.5"],
871 ["qs", "npm:6.7.0"],
872 ["range-parser", "npm:1.2.1"],
873 ["safe-buffer", "npm:5.1.2"],
874 ["send", "npm:0.17.1"],
875 ["serve-static", "npm:1.14.1"],
876 ["setprototypeof", "npm:1.1.1"],
877 ["statuses", "npm:1.5.0"],
878 ["type-is", "npm:1.6.18"],
879 ["utils-merge", "npm:1.0.1"],
880 ["vary", "npm:1.1.2"]
881 ],
882 "linkType": "HARD",
883 }]
884 ]],
885 ["finalhandler", [
886 ["npm:1.1.2", {
887 "packageLocation": "./.yarn/cache/finalhandler-npm-1.1.2-55a75d6b53-2.zip/node_modules/finalhandler/",
888 "packageDependencies": [
889 ["finalhandler", "npm:1.1.2"],
890 ["debug", "virtual:6e177cabfad012f413f9c41366539c04d8701f0567119998690ab02224012faa99ec3a16b9f74f4d7920ab472c12b3e70f47f8f143239c06d0e2569e60ed9f62#npm:2.6.9"],
891 ["encodeurl", "npm:1.0.2"],
892 ["escape-html", "npm:1.0.3"],
893 ["on-finished", "npm:2.3.0"],
894 ["parseurl", "npm:1.3.3"],
895 ["statuses", "npm:1.5.0"],
896 ["unpipe", "npm:1.0.0"]
897 ],
898 "linkType": "HARD",
899 }]
900 ]],
901 ["flatten", [
902 ["npm:0.0.1", {
903 "packageLocation": "./.yarn/cache/flatten-npm-0.0.1-abcfbff952-2.zip/node_modules/flatten/",
904 "packageDependencies": [
905 ["flatten", "npm:0.0.1"]
906 ],
907 "linkType": "HARD",
908 }]
909 ]],
910 ["forwarded", [
911 ["npm:0.1.2", {
912 "packageLocation": "./.yarn/cache/forwarded-npm-0.1.2-6143c1ba42-2.zip/node_modules/forwarded/",
913 "packageDependencies": [
914 ["forwarded", "npm:0.1.2"]
915 ],
916 "linkType": "HARD",
917 }]
918 ]],
919 ["fresh", [
920 ["npm:0.5.2", {
921 "packageLocation": "./.yarn/cache/fresh-npm-0.5.2-ad2bb4c0a2-2.zip/node_modules/fresh/",
922 "packageDependencies": [
923 ["fresh", "npm:0.5.2"]
924 ],
925 "linkType": "HARD",
926 }]
927 ]],
928 ["get-caller-file", [
929 ["npm:1.0.3", {
930 "packageLocation": "./.yarn/cache/get-caller-file-npm-1.0.3-df430e7075-2.zip/node_modules/get-caller-file/",
931 "packageDependencies": [
932 ["get-caller-file", "npm:1.0.3"]
933 ],
934 "linkType": "HARD",
935 }]
936 ]],
937 ["http-assert", [
938 ["npm:1.4.0", {
939 "packageLocation": "./.yarn/cache/http-assert-npm-1.4.0-bc4b1d1458-2.zip/node_modules/http-assert/",
940 "packageDependencies": [
941 ["http-assert", "npm:1.4.0"],
942 ["deep-equal", "npm:1.0.1"],
943 ["http-errors", "npm:1.7.1"]
944 ],
945 "linkType": "HARD",
946 }]
947 ]],
948 ["http-errors", [
949 ["npm:1.7.1", {
950 "packageLocation": "./.yarn/cache/http-errors-npm-1.7.1-e0c60942be-2.zip/node_modules/http-errors/",
951 "packageDependencies": [
952 ["http-errors", "npm:1.7.1"],
953 ["depd", "npm:1.1.2"],
954 ["inherits", "npm:2.0.3"],
955 ["setprototypeof", "npm:1.1.0"],
956 ["statuses", "npm:1.5.0"],
957 ["toidentifier", "npm:1.0.0"]
958 ],
959 "linkType": "HARD",
960 }],
961 ["npm:1.7.2", {
962 "packageLocation": "./.yarn/cache/http-errors-npm-1.7.2-67163ae1df-2.zip/node_modules/http-errors/",
963 "packageDependencies": [
964 ["http-errors", "npm:1.7.2"],
965 ["depd", "npm:1.1.2"],
966 ["inherits", "npm:2.0.3"],
967 ["setprototypeof", "npm:1.1.1"],
968 ["statuses", "npm:1.5.0"],
969 ["toidentifier", "npm:1.0.0"]
970 ],
971 "linkType": "HARD",
972 }],
973 ["npm:1.7.3", {
974 "packageLocation": "./.yarn/cache/http-errors-npm-1.7.3-f6dc83b082-2.zip/node_modules/http-errors/",
975 "packageDependencies": [
976 ["http-errors", "npm:1.7.3"],
977 ["depd", "npm:1.1.2"],
978 ["inherits", "npm:2.0.4"],
979 ["setprototypeof", "npm:1.1.1"],
980 ["statuses", "npm:1.5.0"],
981 ["toidentifier", "npm:1.0.0"]
982 ],
983 "linkType": "HARD",
984 }]
985 ]],
986 ["iconv-lite", [
987 ["npm:0.4.24", {
988 "packageLocation": "./.yarn/cache/iconv-lite-npm-0.4.24-c5c4ac6695-2.zip/node_modules/iconv-lite/",
989 "packageDependencies": [
990 ["iconv-lite", "npm:0.4.24"],
991 ["safer-buffer", "npm:2.1.2"]
992 ],
993 "linkType": "HARD",
994 }]
995 ]],
996 ["inherits", [
997 ["npm:2.0.3", {
998 "packageLocation": "./.yarn/cache/inherits-npm-2.0.3-401e64b080-2.zip/node_modules/inherits/",
999 "packageDependencies": [
1000 ["inherits", "npm:2.0.3"]
1001 ],
1002 "linkType": "HARD",
1003 }],
1004 ["npm:2.0.4", {
1005 "packageLocation": "./.yarn/cache/inherits-npm-2.0.4-c66b3957a0-2.zip/node_modules/inherits/",
1006 "packageDependencies": [
1007 ["inherits", "npm:2.0.4"]
1008 ],
1009 "linkType": "HARD",
1010 }]
1011 ]],
1012 ["ipaddr.js", [
1013 ["npm:1.9.0", {
1014 "packageLocation": "./.yarn/cache/ipaddr.js-npm-1.9.0-6f46daf988-2.zip/node_modules/ipaddr.js/",
1015 "packageDependencies": [
1016 ["ipaddr.js", "npm:1.9.0"]
1017 ],
1018 "linkType": "HARD",
1019 }]
1020 ]],
1021 ["is-stream", [
1022 ["npm:1.1.0", {
1023 "packageLocation": "./.yarn/cache/is-stream-npm-1.1.0-818ecbf6bb-2.zip/node_modules/is-stream/",
1024 "packageDependencies": [
1025 ["is-stream", "npm:1.1.0"]
1026 ],
1027 "linkType": "HARD",
1028 }]
1029 ]],
1030 ["isomorphic-fetch", [
1031 ["npm:2.2.1", {
1032 "packageLocation": "./.yarn/cache/isomorphic-fetch-npm-2.2.1-46b4db5d7b-2.zip/node_modules/isomorphic-fetch/",
1033 "packageDependencies": [
1034 ["isomorphic-fetch", "npm:2.2.1"],
1035 ["node-fetch", "npm:1.7.3"],
1036 ["whatwg-fetch", "npm:3.0.0"]
1037 ],
1038 "linkType": "HARD",
1039 }]
1040 ]],
1041 ["media-typer", [
1042 ["npm:0.3.0", {
1043 "packageLocation": "./.yarn/cache/media-typer-npm-0.3.0-8674f8f0f5-2.zip/node_modules/media-typer/",
1044 "packageDependencies": [
1045 ["media-typer", "npm:0.3.0"]
1046 ],
1047 "linkType": "HARD",
1048 }]
1049 ]],
1050 ["merge-descriptors", [
1051 ["npm:1.0.1", {
1052 "packageLocation": "./.yarn/cache/merge-descriptors-npm-1.0.1-615287aaa8-2.zip/node_modules/merge-descriptors/",
1053 "packageDependencies": [
1054 ["merge-descriptors", "npm:1.0.1"]
1055 ],
1056 "linkType": "HARD",
1057 }]
1058 ]],
1059 ["merge2", [
1060 ["npm:1.3.0", {
1061 "packageLocation": "./.yarn/cache/merge2-npm-1.3.0-a272445bb5-2.zip/node_modules/merge2/",
1062 "packageDependencies": [
1063 ["merge2", "npm:1.3.0"]
1064 ],
1065 "linkType": "HARD",
1066 }]
1067 ]],
1068 ["methods", [
1069 ["npm:1.1.2", {
1070 "packageLocation": "./.yarn/cache/methods-npm-1.1.2-92f6fdb39b-2.zip/node_modules/methods/",
1071 "packageDependencies": [
1072 ["methods", "npm:1.1.2"]
1073 ],
1074 "linkType": "HARD",
1075 }]
1076 ]],
1077 ["mime", [
1078 ["npm:1.6.0", {
1079 "packageLocation": "./.yarn/cache/mime-npm-1.6.0-60ae95038a-2.zip/node_modules/mime/",
1080 "packageDependencies": [
1081 ["mime", "npm:1.6.0"]
1082 ],
1083 "linkType": "HARD",
1084 }]
1085 ]],
1086 ["mime-db", [
1087 ["npm:1.40.0", {
1088 "packageLocation": "./.yarn/cache/mime-db-npm-1.40.0-a136b9af4b-2.zip/node_modules/mime-db/",
1089 "packageDependencies": [
1090 ["mime-db", "npm:1.40.0"]
1091 ],
1092 "linkType": "HARD",
1093 }]
1094 ]],
1095 ["mime-types", [
1096 ["npm:2.1.24", {
1097 "packageLocation": "./.yarn/cache/mime-types-npm-2.1.24-b1aaaae895-2.zip/node_modules/mime-types/",
1098 "packageDependencies": [
1099 ["mime-types", "npm:2.1.24"],
1100 ["mime-db", "npm:1.40.0"]
1101 ],
1102 "linkType": "HARD",
1103 }]
1104 ]],
1105 ["mock-require", [
1106 ["npm:3.0.3", {
1107 "packageLocation": "./.yarn/cache/mock-require-npm-3.0.3-8b30178653-2.zip/node_modules/mock-require/",
1108 "packageDependencies": [
1109 ["mock-require", "npm:3.0.3"],
1110 ["get-caller-file", "npm:1.0.3"],
1111 ["normalize-path", "npm:2.1.1"]
1112 ],
1113 "linkType": "HARD",
1114 }]
1115 ]],
1116 ["ms", [
1117 ["npm:2.0.0", {
1118 "packageLocation": "./.yarn/cache/ms-npm-2.0.0-9e1101a471-2.zip/node_modules/ms/",
1119 "packageDependencies": [
1120 ["ms", "npm:2.0.0"]
1121 ],
1122 "linkType": "HARD",
1123 }],
1124 ["npm:2.1.1", {
1125 "packageLocation": "./.yarn/cache/ms-npm-2.1.1-5b4fd72c86-2.zip/node_modules/ms/",
1126 "packageDependencies": [
1127 ["ms", "npm:2.1.1"]
1128 ],
1129 "linkType": "HARD",
1130 }]
1131 ]],
1132 ["negotiator", [
1133 ["npm:0.6.2", {
1134 "packageLocation": "./.yarn/cache/negotiator-npm-0.6.2-ba538e167a-2.zip/node_modules/negotiator/",
1135 "packageDependencies": [
1136 ["negotiator", "npm:0.6.2"]
1137 ],
1138 "linkType": "HARD",
1139 }]
1140 ]],
1141 ["node-fetch", [
1142 ["npm:1.7.3", {
1143 "packageLocation": "./.yarn/cache/node-fetch-npm-1.7.3-eb8372f991-2.zip/node_modules/node-fetch/",
1144 "packageDependencies": [
1145 ["node-fetch", "npm:1.7.3"],
1146 ["encoding", "npm:0.1.12"],
1147 ["is-stream", "npm:1.1.0"]
1148 ],
1149 "linkType": "HARD",
1150 }]
1151 ]],
1152 ["normalize-path", [
1153 ["npm:2.1.1", {
1154 "packageLocation": "./.yarn/cache/normalize-path-npm-2.1.1-65c4766716-2.zip/node_modules/normalize-path/",
1155 "packageDependencies": [
1156 ["normalize-path", "npm:2.1.1"],
1157 ["remove-trailing-separator", "npm:1.1.0"]
1158 ],
1159 "linkType": "HARD",
1160 }]
1161 ]],
1162 ["on-finished", [
1163 ["npm:2.3.0", {
1164 "packageLocation": "./.yarn/cache/on-finished-npm-2.3.0-4ce92f72c6-2.zip/node_modules/on-finished/",
1165 "packageDependencies": [
1166 ["on-finished", "npm:2.3.0"],
1167 ["ee-first", "npm:1.1.1"]
1168 ],
1169 "linkType": "HARD",
1170 }]
1171 ]],
1172 ["once", [
1173 ["npm:1.3.3", {
1174 "packageLocation": "./.yarn/cache/once-npm-1.3.3-595f0882a4-2.zip/node_modules/once/",
1175 "packageDependencies": [
1176 ["once", "npm:1.3.3"],
1177 ["wrappy", "npm:1.0.2"]
1178 ],
1179 "linkType": "HARD",
1180 }]
1181 ]],
1182 ["orchestrator", [
1183 ["npm:0.3.8", {
1184 "packageLocation": "./.yarn/cache/orchestrator-npm-0.3.8-1c272f9c07-2.zip/node_modules/orchestrator/",
1185 "packageDependencies": [
1186 ["orchestrator", "npm:0.3.8"],
1187 ["end-of-stream", "npm:0.1.5"],
1188 ["sequencify", "npm:0.0.7"],
1189 ["stream-consume", "npm:0.1.1"]
1190 ],
1191 "linkType": "HARD",
1192 }]
1193 ]],
1194 ["parseurl", [
1195 ["npm:1.3.3", {
1196 "packageLocation": "./.yarn/cache/parseurl-npm-1.3.3-1542397e00-2.zip/node_modules/parseurl/",
1197 "packageDependencies": [
1198 ["parseurl", "npm:1.3.3"]
1199 ],
1200 "linkType": "HARD",
1201 }]
1202 ]],
1203 ["path-to-regexp", [
1204 ["npm:0.1.7", {
1205 "packageLocation": "./.yarn/cache/path-to-regexp-npm-0.1.7-2605347373-2.zip/node_modules/path-to-regexp/",
1206 "packageDependencies": [
1207 ["path-to-regexp", "npm:0.1.7"]
1208 ],
1209 "linkType": "HARD",
1210 }],
1211 ["npm:6.1.0", {
1212 "packageLocation": "./.yarn/cache/path-to-regexp-npm-6.1.0-34e3bd652e-2.zip/node_modules/path-to-regexp/",
1213 "packageDependencies": [
1214 ["path-to-regexp", "npm:6.1.0"]
1215 ],
1216 "linkType": "HARD",
1217 }]
1218 ]],
1219 ["proxy-addr", [
1220 ["npm:2.0.5", {
1221 "packageLocation": "./.yarn/cache/proxy-addr-npm-2.0.5-194dbca683-2.zip/node_modules/proxy-addr/",
1222 "packageDependencies": [
1223 ["proxy-addr", "npm:2.0.5"],
1224 ["forwarded", "npm:0.1.2"],
1225 ["ipaddr.js", "npm:1.9.0"]
1226 ],
1227 "linkType": "HARD",
1228 }]
1229 ]],
1230 ["qs", [
1231 ["npm:6.7.0", {
1232 "packageLocation": "./.yarn/cache/qs-npm-6.7.0-15161a344c-2.zip/node_modules/qs/",
1233 "packageDependencies": [
1234 ["qs", "npm:6.7.0"]
1235 ],
1236 "linkType": "HARD",
1237 }]
1238 ]],
1239 ["range-parser", [
1240 ["npm:1.2.1", {
1241 "packageLocation": "./.yarn/cache/range-parser-npm-1.2.1-1a470fa390-2.zip/node_modules/range-parser/",
1242 "packageDependencies": [
1243 ["range-parser", "npm:1.2.1"]
1244 ],
1245 "linkType": "HARD",
1246 }]
1247 ]],
1248 ["raw-body", [
1249 ["npm:2.4.0", {
1250 "packageLocation": "./.yarn/cache/raw-body-npm-2.4.0-14d9d633af-2.zip/node_modules/raw-body/",
1251 "packageDependencies": [
1252 ["raw-body", "npm:2.4.0"],
1253 ["bytes", "npm:3.1.0"],
1254 ["http-errors", "npm:1.7.2"],
1255 ["iconv-lite", "npm:0.4.24"],
1256 ["unpipe", "npm:1.0.0"]
1257 ],
1258 "linkType": "HARD",
1259 }]
1260 ]],
1261 ["remove-trailing-separator", [
1262 ["npm:1.1.0", {
1263 "packageLocation": "./.yarn/cache/remove-trailing-separator-npm-1.1.0-16d7231316-2.zip/node_modules/remove-trailing-separator/",
1264 "packageDependencies": [
1265 ["remove-trailing-separator", "npm:1.1.0"]
1266 ],
1267 "linkType": "HARD",
1268 }]
1269 ]],
1270 ["routington", [
1271 ["npm:1.0.3", {
1272 "packageLocation": "./.yarn/cache/routington-npm-1.0.3-0f4b20d32e-2.zip/node_modules/routington/",
1273 "packageDependencies": [
1274 ["routington", "npm:1.0.3"],
1275 ["flatten", "npm:0.0.1"],
1276 ["http-assert", "npm:1.4.0"]
1277 ],
1278 "linkType": "HARD",
1279 }]
1280 ]],
1281 ["safe-buffer", [
1282 ["npm:5.1.2", {
1283 "packageLocation": "./.yarn/cache/safe-buffer-npm-5.1.2-c27fedf6c4-2.zip/node_modules/safe-buffer/",
1284 "packageDependencies": [
1285 ["safe-buffer", "npm:5.1.2"]
1286 ],
1287 "linkType": "HARD",
1288 }]
1289 ]],
1290 ["safer-buffer", [
1291 ["npm:2.1.2", {
1292 "packageLocation": "./.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-2.zip/node_modules/safer-buffer/",
1293 "packageDependencies": [
1294 ["safer-buffer", "npm:2.1.2"]
1295 ],
1296 "linkType": "HARD",
1297 }]
1298 ]],
1299 ["send", [
1300 ["npm:0.17.1", {
1301 "packageLocation": "./.yarn/cache/send-npm-0.17.1-aad5512679-2.zip/node_modules/send/",
1302 "packageDependencies": [
1303 ["send", "npm:0.17.1"],
1304 ["debug", "virtual:6e177cabfad012f413f9c41366539c04d8701f0567119998690ab02224012faa99ec3a16b9f74f4d7920ab472c12b3e70f47f8f143239c06d0e2569e60ed9f62#npm:2.6.9"],
1305 ["depd", "npm:1.1.2"],
1306 ["destroy", "npm:1.0.4"],
1307 ["encodeurl", "npm:1.0.2"],
1308 ["escape-html", "npm:1.0.3"],
1309 ["etag", "npm:1.8.1"],
1310 ["fresh", "npm:0.5.2"],
1311 ["http-errors", "npm:1.7.3"],
1312 ["mime", "npm:1.6.0"],
1313 ["ms", "npm:2.1.1"],
1314 ["on-finished", "npm:2.3.0"],
1315 ["range-parser", "npm:1.2.1"],
1316 ["statuses", "npm:1.5.0"]
1317 ],
1318 "linkType": "HARD",
1319 }]
1320 ]],
1321 ["sequencify", [
1322 ["npm:0.0.7", {
1323 "packageLocation": "./.yarn/cache/sequencify-npm-0.0.7-990da9f496-2.zip/node_modules/sequencify/",
1324 "packageDependencies": [
1325 ["sequencify", "npm:0.0.7"]
1326 ],
1327 "linkType": "HARD",
1328 }]
1329 ]],
1330 ["serve-static", [
1331 ["npm:1.14.1", {
1332 "packageLocation": "./.yarn/cache/serve-static-npm-1.14.1-a7afb1d3b3-2.zip/node_modules/serve-static/",
1333 "packageDependencies": [
1334 ["serve-static", "npm:1.14.1"],
1335 ["encodeurl", "npm:1.0.2"],
1336 ["escape-html", "npm:1.0.3"],
1337 ["parseurl", "npm:1.3.3"],
1338 ["send", "npm:0.17.1"]
1339 ],
1340 "linkType": "HARD",
1341 }]
1342 ]],
1343 ["setprototypeof", [
1344 ["npm:1.1.0", {
1345 "packageLocation": "./.yarn/cache/setprototypeof-npm-1.1.0-7d8becb375-2.zip/node_modules/setprototypeof/",
1346 "packageDependencies": [
1347 ["setprototypeof", "npm:1.1.0"]
1348 ],
1349 "linkType": "HARD",
1350 }],
1351 ["npm:1.1.1", {
1352 "packageLocation": "./.yarn/cache/setprototypeof-npm-1.1.1-706b6318ec-2.zip/node_modules/setprototypeof/",
1353 "packageDependencies": [
1354 ["setprototypeof", "npm:1.1.1"]
1355 ],
1356 "linkType": "HARD",
1357 }]
1358 ]],
1359 ["source-map", [
1360 ["npm:0.6.1", {
1361 "packageLocation": "./.yarn/cache/source-map-npm-0.6.1-1a3621db16-2.zip/node_modules/source-map/",
1362 "packageDependencies": [
1363 ["source-map", "npm:0.6.1"]
1364 ],
1365 "linkType": "HARD",
1366 }]
1367 ]],
1368 ["source-map-support", [
1369 ["npm:0.5.16", {
1370 "packageLocation": "./.yarn/cache/source-map-support-npm-0.5.16-cbb8823949-2.zip/node_modules/source-map-support/",
1371 "packageDependencies": [
1372 ["source-map-support", "npm:0.5.16"],
1373 ["buffer-from", "npm:1.1.1"],
1374 ["source-map", "npm:0.6.1"]
1375 ],
1376 "linkType": "HARD",
1377 }]
1378 ]],
1379 ["statuses", [
1380 ["npm:1.5.0", {
1381 "packageLocation": "./.yarn/cache/statuses-npm-1.5.0-f88f91b2e9-2.zip/node_modules/statuses/",
1382 "packageDependencies": [
1383 ["statuses", "npm:1.5.0"]
1384 ],
1385 "linkType": "HARD",
1386 }]
1387 ]],
1388 ["stream-consume", [
1389 ["npm:0.1.1", {
1390 "packageLocation": "./.yarn/cache/stream-consume-npm-0.1.1-873aebf129-2.zip/node_modules/stream-consume/",
1391 "packageDependencies": [
1392 ["stream-consume", "npm:0.1.1"]
1393 ],
1394 "linkType": "HARD",
1395 }]
1396 ]],
1397 ["toidentifier", [
1398 ["npm:1.0.0", {
1399 "packageLocation": "./.yarn/cache/toidentifier-npm-1.0.0-5dad252f90-2.zip/node_modules/toidentifier/",
1400 "packageDependencies": [
1401 ["toidentifier", "npm:1.0.0"]
1402 ],
1403 "linkType": "HARD",
1404 }]
1405 ]],
1406 ["type-is", [
1407 ["npm:1.6.18", {
1408 "packageLocation": "./.yarn/cache/type-is-npm-1.6.18-6dee4d4961-2.zip/node_modules/type-is/",
1409 "packageDependencies": [
1410 ["type-is", "npm:1.6.18"],
1411 ["media-typer", "npm:0.3.0"],
1412 ["mime-types", "npm:2.1.24"]
1413 ],
1414 "linkType": "HARD",
1415 }]
1416 ]],
1417 ["typescript", [
1418 ["patch:typescript@npm%3A3.7.5#builtin<compat/typescript>::version=3.7.5&hash=270b6c", {
1419 "packageLocation": "./.yarn/cache/typescript-patch-59b570bfcd-2.zip/node_modules/typescript/",
1420 "packageDependencies": [
1421 ["typescript", "patch:typescript@npm%3A3.7.5#builtin<compat/typescript>::version=3.7.5&hash=270b6c"]
1422 ],
1423 "linkType": "HARD",
1424 }]
1425 ]],
1426 ["unpipe", [
1427 ["npm:1.0.0", {
1428 "packageLocation": "./.yarn/cache/unpipe-npm-1.0.0-2ed2a3c2bf-2.zip/node_modules/unpipe/",
1429 "packageDependencies": [
1430 ["unpipe", "npm:1.0.0"]
1431 ],
1432 "linkType": "HARD",
1433 }]
1434 ]],
1435 ["utils-merge", [
1436 ["npm:1.0.1", {
1437 "packageLocation": "./.yarn/cache/utils-merge-npm-1.0.1-363bbdfbca-2.zip/node_modules/utils-merge/",
1438 "packageDependencies": [
1439 ["utils-merge", "npm:1.0.1"]
1440 ],
1441 "linkType": "HARD",
1442 }]
1443 ]],
1444 ["uuid", [
1445 ["npm:7.0.3", {
1446 "packageLocation": "./.yarn/cache/uuid-npm-7.0.3-2b088bd924-2.zip/node_modules/uuid/",
1447 "packageDependencies": [
1448 ["uuid", "npm:7.0.3"]
1449 ],
1450 "linkType": "HARD",
1451 }]
1452 ]],
1453 ["vary", [
1454 ["npm:1.1.2", {
1455 "packageLocation": "./.yarn/cache/vary-npm-1.1.2-b49f70ae63-2.zip/node_modules/vary/",
1456 "packageDependencies": [
1457 ["vary", "npm:1.1.2"]
1458 ],
1459 "linkType": "HARD",
1460 }]
1461 ]],
1462 ["whatwg-fetch", [
1463 ["npm:3.0.0", {
1464 "packageLocation": "./.yarn/cache/whatwg-fetch-npm-3.0.0-89ab4ec112-2.zip/node_modules/whatwg-fetch/",
1465 "packageDependencies": [
1466 ["whatwg-fetch", "npm:3.0.0"]
1467 ],
1468 "linkType": "HARD",
1469 }]
1470 ]],
1471 ["wrappy", [
1472 ["npm:1.0.2", {
1473 "packageLocation": "./.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-2.zip/node_modules/wrappy/",
1474 "packageDependencies": [
1475 ["wrappy", "npm:1.0.2"]
1476 ],
1477 "linkType": "HARD",
1478 }]
1479 ]],
1480 ["ws", [
1481 ["virtual:55209bb636c41a4732c94226cfcabed9379b81a9d012b20f806b7dae20306a30ad400f7552377f216257061ff4396f27acf45d25beaf7e124e00aeb469e8918b#npm:7.2.1", {
1482 "packageLocation": "./.yarn/$$virtual/ws-virtual-1511719ea6/0/cache/ws-npm-7.2.1-6a11e4a4b3-2.zip/node_modules/ws/",
1483 "packageDependencies": [
1484 ["ws", "virtual:55209bb636c41a4732c94226cfcabed9379b81a9d012b20f806b7dae20306a30ad400f7552377f216257061ff4396f27acf45d25beaf7e124e00aeb469e8918b#npm:7.2.1"],
1485 ["bufferutil", null],
1486 ["utf-8-validate", null]
1487 ],
1488 "packagePeers": [
1489 "bufferutil",
1490 "utf-8-validate"
1491 ],
1492 "linkType": "HARD",
1493 }],
1494 ["virtual:bd697a751d58794530b682e5228b684a9f4a00d605f65e3707c8a27de2cc1b546f75892637f679b4286599f9fd60f3f12365f3d28f27a908f0b59bd6e06dae15#npm:7.2.3", {
1495 "packageLocation": "./.yarn/$$virtual/ws-virtual-63c51cd41a/0/cache/ws-npm-7.2.3-e2147dfc25-2.zip/node_modules/ws/",
1496 "packageDependencies": [
1497 ["ws", "virtual:bd697a751d58794530b682e5228b684a9f4a00d605f65e3707c8a27de2cc1b546f75892637f679b4286599f9fd60f3f12365f3d28f27a908f0b59bd6e06dae15#npm:7.2.3"],
1498 ["bufferutil", null],
1499 ["utf-8-validate", null]
1500 ],
1501 "packagePeers": [
1502 "bufferutil",
1503 "utf-8-validate"
1504 ],
1505 "linkType": "HARD",
1506 }]
1507 ]]
1508 ]
1509 }, {basePath: basePath || __dirname});
1510 }
1511
1512(function webpackUniversalModuleDefinition(root, factory) {
1513 if(typeof exports === 'object' && typeof module === 'object')
1514 module.exports = factory();
1515 else if(typeof define === 'function' && define.amd)
1516 define([], factory);
1517 else if(typeof exports === 'object')
1518 exports["pnpHook"] = factory();
1519 else
1520 root["pnpHook"] = factory();
1521})(global, function() {
1522return /******/ (function(modules) { // webpackBootstrap
1523/******/ // The module cache
1524/******/ var installedModules = {};
1525/******/
1526/******/ // The require function
1527/******/ function __webpack_require__(moduleId) {
1528/******/
1529/******/ // Check if module is in cache
1530/******/ if(installedModules[moduleId]) {
1531/******/ return installedModules[moduleId].exports;
1532/******/ }
1533/******/ // Create a new module (and put it into the cache)
1534/******/ var module = installedModules[moduleId] = {
1535/******/ i: moduleId,
1536/******/ l: false,
1537/******/ exports: {}
1538/******/ };
1539/******/
1540/******/ // Execute the module function
1541/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
1542/******/
1543/******/ // Flag the module as loaded
1544/******/ module.l = true;
1545/******/
1546/******/ // Return the exports of the module
1547/******/ return module.exports;
1548/******/ }
1549/******/
1550/******/
1551/******/ // expose the modules object (__webpack_modules__)
1552/******/ __webpack_require__.m = modules;
1553/******/
1554/******/ // expose the module cache
1555/******/ __webpack_require__.c = installedModules;
1556/******/
1557/******/ // define getter function for harmony exports
1558/******/ __webpack_require__.d = function(exports, name, getter) {
1559/******/ if(!__webpack_require__.o(exports, name)) {
1560/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
1561/******/ }
1562/******/ };
1563/******/
1564/******/ // define __esModule on exports
1565/******/ __webpack_require__.r = function(exports) {
1566/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
1567/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1568/******/ }
1569/******/ Object.defineProperty(exports, '__esModule', { value: true });
1570/******/ };
1571/******/
1572/******/ // create a fake namespace object
1573/******/ // mode & 1: value is a module id, require it
1574/******/ // mode & 2: merge all properties of value into the ns
1575/******/ // mode & 4: return value when already ns object
1576/******/ // mode & 8|1: behave like require
1577/******/ __webpack_require__.t = function(value, mode) {
1578/******/ if(mode & 1) value = __webpack_require__(value);
1579/******/ if(mode & 8) return value;
1580/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
1581/******/ var ns = Object.create(null);
1582/******/ __webpack_require__.r(ns);
1583/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
1584/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
1585/******/ return ns;
1586/******/ };
1587/******/
1588/******/ // getDefaultExport function for compatibility with non-harmony modules
1589/******/ __webpack_require__.n = function(module) {
1590/******/ var getter = module && module.__esModule ?
1591/******/ function getDefault() { return module['default']; } :
1592/******/ function getModuleExports() { return module; };
1593/******/ __webpack_require__.d(getter, 'a', getter);
1594/******/ return getter;
1595/******/ };
1596/******/
1597/******/ // Object.prototype.hasOwnProperty.call
1598/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
1599/******/
1600/******/ // __webpack_public_path__
1601/******/ __webpack_require__.p = "";
1602/******/
1603/******/
1604/******/ // Load entry module and return exports
1605/******/ return __webpack_require__(__webpack_require__.s = 12);
1606/******/ })
1607/************************************************************************/
1608/******/ ([
1609/* 0 */
1610/***/ (function(module, exports, __webpack_require__) {
1611
1612"use strict";
1613
1614
1615var __importDefault = this && this.__importDefault || function (mod) {
1616 return mod && mod.__esModule ? mod : {
1617 "default": mod
1618 };
1619};
1620
1621Object.defineProperty(exports, "__esModule", {
1622 value: true
1623});
1624
1625const path_1 = __importDefault(__webpack_require__(7));
1626
1627exports.PortablePath = {
1628 root: `/`,
1629 dot: `.`
1630};
1631exports.Filename = {
1632 nodeModules: `node_modules`,
1633 manifest: `package.json`,
1634 lockfile: `yarn.lock`
1635};
1636exports.npath = Object.create(path_1.default);
1637exports.ppath = Object.create(path_1.default.posix);
1638
1639const contains = function (pathUtils, from, to) {
1640 from = pathUtils.normalize(from);
1641 to = pathUtils.normalize(to);
1642 if (from === to) return `.`;
1643 if (!from.endsWith(pathUtils.sep)) from = from + pathUtils.sep;
1644
1645 if (to.startsWith(from)) {
1646 return to.slice(from.length);
1647 } else {
1648 return null;
1649 }
1650};
1651
1652exports.npath.fromPortablePath = fromPortablePath;
1653exports.npath.toPortablePath = toPortablePath;
1654
1655exports.npath.contains = (from, to) => contains(exports.npath, from, to);
1656
1657exports.ppath.contains = (from, to) => contains(exports.ppath, from, to);
1658
1659const WINDOWS_PATH_REGEXP = /^[a-zA-Z]:.*$/;
1660const PORTABLE_PATH_REGEXP = /^\/[a-zA-Z]:.*$/; // Path should look like "/N:/berry/scripts/plugin-pack.js"
1661// And transform to "N:\berry\scripts\plugin-pack.js"
1662
1663function fromPortablePath(p) {
1664 if (process.platform !== 'win32') return p;
1665 return p.match(PORTABLE_PATH_REGEXP) ? p.substring(1).replace(/\//g, `\\`) : p;
1666} // Path should look like "N:/berry/scripts/plugin-pack.js"
1667// And transform to "/N:/berry/scripts/plugin-pack.js"
1668
1669
1670function toPortablePath(p) {
1671 if (process.platform !== 'win32') return p;
1672 return (p.match(WINDOWS_PATH_REGEXP) ? `/${p}` : p).replace(/\\/g, `/`);
1673}
1674
1675function convertPath(targetPathUtils, sourcePath) {
1676 return targetPathUtils === exports.npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath);
1677}
1678
1679exports.convertPath = convertPath;
1680
1681function toFilename(filename) {
1682 if (exports.npath.parse(filename).dir !== '' || exports.ppath.parse(filename).dir !== '') throw new Error(`Invalid filename: "${filename}"`);
1683 return filename;
1684}
1685
1686exports.toFilename = toFilename;
1687
1688/***/ }),
1689/* 1 */
1690/***/ (function(module, exports, __webpack_require__) {
1691
1692"use strict";
1693
1694
1695var __importDefault = this && this.__importDefault || function (mod) {
1696 return mod && mod.__esModule ? mod : {
1697 "default": mod
1698 };
1699};
1700
1701Object.defineProperty(exports, "__esModule", {
1702 value: true
1703});
1704
1705const fs_1 = __importDefault(__webpack_require__(2));
1706
1707const FakeFS_1 = __webpack_require__(3);
1708
1709const path_1 = __webpack_require__(0);
1710
1711class NodeFS extends FakeFS_1.BasePortableFakeFS {
1712 constructor(realFs = fs_1.default) {
1713 super();
1714 this.realFs = realFs;
1715 }
1716
1717 getExtractHint() {
1718 return false;
1719 }
1720
1721 getRealPath() {
1722 return path_1.PortablePath.root;
1723 }
1724
1725 async openPromise(p, flags, mode) {
1726 return await new Promise((resolve, reject) => {
1727 this.realFs.open(path_1.npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject));
1728 });
1729 }
1730
1731 openSync(p, flags, mode) {
1732 return this.realFs.openSync(path_1.npath.fromPortablePath(p), flags, mode);
1733 }
1734
1735 async readPromise(fd, buffer, offset = 0, length = 0, position = -1) {
1736 return await new Promise((resolve, reject) => {
1737 this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => {
1738 if (error) {
1739 reject(error);
1740 } else {
1741 resolve(bytesRead);
1742 }
1743 });
1744 });
1745 }
1746
1747 readSync(fd, buffer, offset, length, position) {
1748 return this.realFs.readSync(fd, buffer, offset, length, position);
1749 }
1750
1751 async writePromise(fd, buffer, offset, length, position) {
1752 return await new Promise((resolve, reject) => {
1753 if (typeof buffer === `string`) {
1754 return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject));
1755 } else {
1756 return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject));
1757 }
1758 });
1759 }
1760
1761 writeSync(fd, buffer, offset, length, position) {
1762 if (typeof buffer === `string`) {
1763 return this.realFs.writeSync(fd, buffer, offset);
1764 } else {
1765 return this.realFs.writeSync(fd, buffer, offset, length, position);
1766 }
1767 }
1768
1769 async closePromise(fd) {
1770 await new Promise((resolve, reject) => {
1771 this.realFs.close(fd, this.makeCallback(resolve, reject));
1772 });
1773 }
1774
1775 closeSync(fd) {
1776 this.realFs.closeSync(fd);
1777 }
1778
1779 createReadStream(p, opts) {
1780 const realPath = p !== null ? path_1.npath.fromPortablePath(p) : p;
1781 return this.realFs.createReadStream(realPath, opts);
1782 }
1783
1784 createWriteStream(p, opts) {
1785 const realPath = p !== null ? path_1.npath.fromPortablePath(p) : p;
1786 return this.realFs.createWriteStream(realPath, opts);
1787 }
1788
1789 async realpathPromise(p) {
1790 return await new Promise((resolve, reject) => {
1791 this.realFs.realpath(path_1.npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject));
1792 }).then(path => {
1793 return path_1.npath.toPortablePath(path);
1794 });
1795 }
1796
1797 realpathSync(p) {
1798 return path_1.npath.toPortablePath(this.realFs.realpathSync(path_1.npath.fromPortablePath(p), {}));
1799 }
1800
1801 async existsPromise(p) {
1802 return await new Promise(resolve => {
1803 this.realFs.exists(path_1.npath.fromPortablePath(p), resolve);
1804 });
1805 }
1806
1807 accessSync(p, mode) {
1808 return this.realFs.accessSync(path_1.npath.fromPortablePath(p), mode);
1809 }
1810
1811 async accessPromise(p, mode) {
1812 return await new Promise((resolve, reject) => {
1813 this.realFs.access(path_1.npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject));
1814 });
1815 }
1816
1817 existsSync(p) {
1818 return this.realFs.existsSync(path_1.npath.fromPortablePath(p));
1819 }
1820
1821 async statPromise(p) {
1822 return await new Promise((resolve, reject) => {
1823 this.realFs.stat(path_1.npath.fromPortablePath(p), this.makeCallback(resolve, reject));
1824 });
1825 }
1826
1827 statSync(p) {
1828 return this.realFs.statSync(path_1.npath.fromPortablePath(p));
1829 }
1830
1831 async lstatPromise(p) {
1832 return await new Promise((resolve, reject) => {
1833 this.realFs.lstat(path_1.npath.fromPortablePath(p), this.makeCallback(resolve, reject));
1834 });
1835 }
1836
1837 lstatSync(p) {
1838 return this.realFs.lstatSync(path_1.npath.fromPortablePath(p));
1839 }
1840
1841 async chmodPromise(p, mask) {
1842 return await new Promise((resolve, reject) => {
1843 this.realFs.chmod(path_1.npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject));
1844 });
1845 }
1846
1847 chmodSync(p, mask) {
1848 return this.realFs.chmodSync(path_1.npath.fromPortablePath(p), mask);
1849 }
1850
1851 async renamePromise(oldP, newP) {
1852 return await new Promise((resolve, reject) => {
1853 this.realFs.rename(path_1.npath.fromPortablePath(oldP), path_1.npath.fromPortablePath(newP), this.makeCallback(resolve, reject));
1854 });
1855 }
1856
1857 renameSync(oldP, newP) {
1858 return this.realFs.renameSync(path_1.npath.fromPortablePath(oldP), path_1.npath.fromPortablePath(newP));
1859 }
1860
1861 async copyFilePromise(sourceP, destP, flags = 0) {
1862 return await new Promise((resolve, reject) => {
1863 this.realFs.copyFile(path_1.npath.fromPortablePath(sourceP), path_1.npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject));
1864 });
1865 }
1866
1867 copyFileSync(sourceP, destP, flags = 0) {
1868 return this.realFs.copyFileSync(path_1.npath.fromPortablePath(sourceP), path_1.npath.fromPortablePath(destP), flags);
1869 }
1870
1871 async appendFilePromise(p, content, opts) {
1872 return await new Promise((resolve, reject) => {
1873 const fsNativePath = typeof p === `string` ? path_1.npath.fromPortablePath(p) : p;
1874
1875 if (opts) {
1876 this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject));
1877 } else {
1878 this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject));
1879 }
1880 });
1881 }
1882
1883 appendFileSync(p, content, opts) {
1884 const fsNativePath = typeof p === `string` ? path_1.npath.fromPortablePath(p) : p;
1885
1886 if (opts) {
1887 this.realFs.appendFileSync(fsNativePath, content, opts);
1888 } else {
1889 this.realFs.appendFileSync(fsNativePath, content);
1890 }
1891 }
1892
1893 async writeFilePromise(p, content, opts) {
1894 return await new Promise((resolve, reject) => {
1895 const fsNativePath = typeof p === `string` ? path_1.npath.fromPortablePath(p) : p;
1896
1897 if (opts) {
1898 this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject));
1899 } else {
1900 this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject));
1901 }
1902 });
1903 }
1904
1905 writeFileSync(p, content, opts) {
1906 const fsNativePath = typeof p === `string` ? path_1.npath.fromPortablePath(p) : p;
1907
1908 if (opts) {
1909 this.realFs.writeFileSync(fsNativePath, content, opts);
1910 } else {
1911 this.realFs.writeFileSync(fsNativePath, content);
1912 }
1913 }
1914
1915 async unlinkPromise(p) {
1916 return await new Promise((resolve, reject) => {
1917 this.realFs.unlink(path_1.npath.fromPortablePath(p), this.makeCallback(resolve, reject));
1918 });
1919 }
1920
1921 unlinkSync(p) {
1922 return this.realFs.unlinkSync(path_1.npath.fromPortablePath(p));
1923 }
1924
1925 async utimesPromise(p, atime, mtime) {
1926 return await new Promise((resolve, reject) => {
1927 this.realFs.utimes(path_1.npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject));
1928 });
1929 }
1930
1931 utimesSync(p, atime, mtime) {
1932 this.realFs.utimesSync(path_1.npath.fromPortablePath(p), atime, mtime);
1933 }
1934
1935 async mkdirPromise(p, opts) {
1936 return await new Promise((resolve, reject) => {
1937 this.realFs.mkdir(path_1.npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
1938 });
1939 }
1940
1941 mkdirSync(p, opts) {
1942 return this.realFs.mkdirSync(path_1.npath.fromPortablePath(p), opts);
1943 }
1944
1945 async rmdirPromise(p) {
1946 return await new Promise((resolve, reject) => {
1947 this.realFs.rmdir(path_1.npath.fromPortablePath(p), this.makeCallback(resolve, reject));
1948 });
1949 }
1950
1951 rmdirSync(p) {
1952 return this.realFs.rmdirSync(path_1.npath.fromPortablePath(p));
1953 }
1954
1955 async symlinkPromise(target, p, type) {
1956 const symlinkType = type || (target.endsWith(`/`) ? `dir` : `file`);
1957 return await new Promise((resolve, reject) => {
1958 this.realFs.symlink(path_1.npath.fromPortablePath(target.replace(/\/+$/, ``)), path_1.npath.fromPortablePath(p), symlinkType, this.makeCallback(resolve, reject));
1959 });
1960 }
1961
1962 symlinkSync(target, p, type) {
1963 const symlinkType = type || (target.endsWith(`/`) ? `dir` : `file`);
1964 return this.realFs.symlinkSync(path_1.npath.fromPortablePath(target.replace(/\/+$/, ``)), path_1.npath.fromPortablePath(p), symlinkType);
1965 }
1966
1967 async readFilePromise(p, encoding) {
1968 return await new Promise((resolve, reject) => {
1969 const fsNativePath = typeof p === `string` ? path_1.npath.fromPortablePath(p) : p;
1970 this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject));
1971 });
1972 }
1973
1974 readFileSync(p, encoding) {
1975 const fsNativePath = typeof p === `string` ? path_1.npath.fromPortablePath(p) : p;
1976 return this.realFs.readFileSync(fsNativePath, encoding);
1977 }
1978
1979 async readdirPromise(p, {
1980 withFileTypes
1981 } = {}) {
1982 return await new Promise((resolve, reject) => {
1983 if (withFileTypes) {
1984 this.realFs.readdir(path_1.npath.fromPortablePath(p), {
1985 withFileTypes: true
1986 }, this.makeCallback(resolve, reject));
1987 } else {
1988 this.realFs.readdir(path_1.npath.fromPortablePath(p), this.makeCallback(value => resolve(value), reject));
1989 }
1990 });
1991 }
1992
1993 readdirSync(p, {
1994 withFileTypes
1995 } = {}) {
1996 if (withFileTypes) {
1997 return this.realFs.readdirSync(path_1.npath.fromPortablePath(p), {
1998 withFileTypes: true
1999 });
2000 } else {
2001 return this.realFs.readdirSync(path_1.npath.fromPortablePath(p));
2002 }
2003 }
2004
2005 async readlinkPromise(p) {
2006 return await new Promise((resolve, reject) => {
2007 this.realFs.readlink(path_1.npath.fromPortablePath(p), this.makeCallback(resolve, reject));
2008 }).then(path => {
2009 return path_1.npath.toPortablePath(path);
2010 });
2011 }
2012
2013 readlinkSync(p) {
2014 return path_1.npath.toPortablePath(this.realFs.readlinkSync(path_1.npath.fromPortablePath(p)));
2015 }
2016
2017 watch(p, a, b) {
2018 return this.realFs.watch(path_1.npath.fromPortablePath(p), // @ts-ignore
2019 a, b);
2020 }
2021
2022 makeCallback(resolve, reject) {
2023 return (err, result) => {
2024 if (err) {
2025 reject(err);
2026 } else {
2027 resolve(result);
2028 }
2029 };
2030 }
2031
2032}
2033
2034exports.NodeFS = NodeFS;
2035
2036/***/ }),
2037/* 2 */
2038/***/ (function(module, exports) {
2039
2040module.exports = require("fs");
2041
2042/***/ }),
2043/* 3 */
2044/***/ (function(module, exports, __webpack_require__) {
2045
2046"use strict";
2047
2048
2049Object.defineProperty(exports, "__esModule", {
2050 value: true
2051});
2052
2053const os_1 = __webpack_require__(8);
2054
2055const copyPromise_1 = __webpack_require__(13);
2056
2057const path_1 = __webpack_require__(0);
2058
2059const path_2 = __webpack_require__(0);
2060
2061class FakeFS {
2062 constructor(pathUtils) {
2063 this.pathUtils = pathUtils;
2064 }
2065
2066 async removePromise(p) {
2067 let stat;
2068
2069 try {
2070 stat = await this.lstatPromise(p);
2071 } catch (error) {
2072 if (error.code === `ENOENT`) {
2073 return;
2074 } else {
2075 throw error;
2076 }
2077 }
2078
2079 if (stat.isDirectory()) {
2080 for (const entry of await this.readdirPromise(p)) await this.removePromise(this.pathUtils.resolve(p, entry)); // 5 gives 1s worth of retries at worst
2081
2082
2083 for (let t = 0; t < 5; ++t) {
2084 try {
2085 await this.rmdirPromise(p);
2086 break;
2087 } catch (error) {
2088 if (error.code === `EBUSY` || error.code === `ENOTEMPTY`) {
2089 await new Promise(resolve => setTimeout(resolve, t * 100));
2090 continue;
2091 } else {
2092 throw error;
2093 }
2094 }
2095 }
2096 } else {
2097 await this.unlinkPromise(p);
2098 }
2099 }
2100
2101 removeSync(p) {
2102 let stat;
2103
2104 try {
2105 stat = this.lstatSync(p);
2106 } catch (error) {
2107 if (error.code === `ENOENT`) {
2108 return;
2109 } else {
2110 throw error;
2111 }
2112 }
2113
2114 if (stat.isDirectory()) {
2115 for (const entry of this.readdirSync(p)) this.removeSync(this.pathUtils.resolve(p, entry));
2116
2117 this.rmdirSync(p);
2118 } else {
2119 this.unlinkSync(p);
2120 }
2121 }
2122
2123 async mkdirpPromise(p, {
2124 chmod,
2125 utimes
2126 } = {}) {
2127 p = this.resolve(p);
2128 if (p === this.pathUtils.dirname(p)) return;
2129 const parts = p.split(this.pathUtils.sep);
2130
2131 for (let u = 2; u <= parts.length; ++u) {
2132 const subPath = parts.slice(0, u).join(this.pathUtils.sep);
2133
2134 if (!this.existsSync(subPath)) {
2135 try {
2136 await this.mkdirPromise(subPath);
2137 } catch (error) {
2138 if (error.code === `EEXIST`) {
2139 continue;
2140 } else {
2141 throw error;
2142 }
2143 }
2144
2145 if (chmod != null) await this.chmodPromise(subPath, chmod);
2146
2147 if (utimes != null) {
2148 await this.utimesPromise(subPath, utimes[0], utimes[1]);
2149 } else {
2150 const parentStat = await this.statPromise(this.pathUtils.dirname(subPath));
2151 await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime);
2152 }
2153 }
2154 }
2155 }
2156
2157 mkdirpSync(p, {
2158 chmod,
2159 utimes
2160 } = {}) {
2161 p = this.resolve(p);
2162 if (p === this.pathUtils.dirname(p)) return;
2163 const parts = p.split(this.pathUtils.sep);
2164
2165 for (let u = 2; u <= parts.length; ++u) {
2166 const subPath = parts.slice(0, u).join(this.pathUtils.sep);
2167
2168 if (!this.existsSync(subPath)) {
2169 try {
2170 this.mkdirSync(subPath);
2171 } catch (error) {
2172 if (error.code === `EEXIST`) {
2173 continue;
2174 } else {
2175 throw error;
2176 }
2177 }
2178
2179 if (chmod != null) this.chmodSync(subPath, chmod);
2180
2181 if (utimes != null) {
2182 this.utimesSync(subPath, utimes[0], utimes[1]);
2183 } else {
2184 const parentStat = this.statSync(this.pathUtils.dirname(subPath));
2185 this.utimesSync(subPath, parentStat.atime, parentStat.mtime);
2186 }
2187 }
2188 }
2189 }
2190
2191 async copyPromise(destination, source, {
2192 baseFs = this,
2193 overwrite = true
2194 } = {}) {
2195 return await copyPromise_1.copyPromise(this, destination, baseFs, source, {
2196 overwrite
2197 });
2198 }
2199
2200 copySync(destination, source, {
2201 baseFs = this,
2202 overwrite = true
2203 } = {}) {
2204 const stat = baseFs.lstatSync(source);
2205 const exists = this.existsSync(destination);
2206
2207 if (stat.isDirectory()) {
2208 this.mkdirpSync(destination);
2209 const directoryListing = baseFs.readdirSync(source);
2210
2211 for (const entry of directoryListing) {
2212 this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), {
2213 baseFs,
2214 overwrite
2215 });
2216 }
2217 } else if (stat.isFile()) {
2218 if (!exists || overwrite) {
2219 if (exists) this.removeSync(destination);
2220 const content = baseFs.readFileSync(source);
2221 this.writeFileSync(destination, content);
2222 }
2223 } else if (stat.isSymbolicLink()) {
2224 if (!exists || overwrite) {
2225 if (exists) this.removeSync(destination);
2226 const target = baseFs.readlinkSync(source);
2227 this.symlinkSync(path_2.convertPath(this.pathUtils, target), destination);
2228 }
2229 } else {
2230 throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`);
2231 }
2232
2233 const mode = stat.mode & 0o777;
2234 this.chmodSync(destination, mode);
2235 }
2236
2237 async changeFilePromise(p, content, {
2238 automaticNewlines
2239 } = {}) {
2240 let current = '';
2241
2242 try {
2243 current = await this.readFilePromise(p, `utf8`);
2244 } catch (error) {// ignore errors, no big deal
2245 }
2246
2247 const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content;
2248 if (current === normalizedContent) return;
2249 await this.writeFilePromise(p, normalizedContent);
2250 }
2251
2252 changeFileSync(p, content, {
2253 automaticNewlines = false
2254 } = {}) {
2255 let current = '';
2256
2257 try {
2258 current = this.readFileSync(p, `utf8`);
2259 } catch (error) {// ignore errors, no big deal
2260 }
2261
2262 const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content;
2263 if (current === normalizedContent) return;
2264 this.writeFileSync(p, normalizedContent);
2265 }
2266
2267 async movePromise(fromP, toP) {
2268 try {
2269 await this.renamePromise(fromP, toP);
2270 } catch (error) {
2271 if (error.code === `EXDEV`) {
2272 await this.copyPromise(toP, fromP);
2273 await this.removePromise(fromP);
2274 } else {
2275 throw error;
2276 }
2277 }
2278 }
2279
2280 moveSync(fromP, toP) {
2281 try {
2282 this.renameSync(fromP, toP);
2283 } catch (error) {
2284 if (error.code === `EXDEV`) {
2285 this.copySync(toP, fromP);
2286 this.removeSync(fromP);
2287 } else {
2288 throw error;
2289 }
2290 }
2291 }
2292
2293 async lockPromise(affectedPath, callback) {
2294 const lockPath = `${affectedPath}.flock`;
2295 const interval = 1000 / 60;
2296 const startTime = Date.now();
2297 let fd = null; // Even when we detect that a lock file exists, we still look inside to see
2298 // whether the pid that created it is still alive. It's not foolproof
2299 // (there are false positive), but there are no false negative and that's
2300 // all that matters in 99% of the cases.
2301
2302 const isAlive = async () => {
2303 let pid;
2304
2305 try {
2306 [pid] = await this.readJsonPromise(lockPath);
2307 } catch (error) {
2308 // If we can't read the file repeatedly, we assume the process was
2309 // aborted before even writing finishing writing the payload.
2310 return Date.now() - startTime < 500;
2311 }
2312
2313 try {
2314 // "As a special case, a signal of 0 can be used to test for the
2315 // existence of a process" - so we check whether it's alive.
2316 process.kill(pid, 0);
2317 return true;
2318 } catch (error) {
2319 return false;
2320 }
2321 };
2322
2323 while (fd === null) {
2324 try {
2325 fd = await this.openPromise(lockPath, `wx`);
2326 } catch (error) {
2327 if (error.code === `EEXIST`) {
2328 if (!(await isAlive())) {
2329 try {
2330 await this.unlinkPromise(lockPath);
2331 continue;
2332 } catch (error) {// No big deal if we can't remove it. Just fallback to wait for
2333 // it to be eventually released by its owner.
2334 }
2335 }
2336
2337 if (Date.now() - startTime < 60 * 1000) {
2338 await new Promise(resolve => setTimeout(resolve, interval));
2339 } else {
2340 throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`);
2341 }
2342 } else {
2343 throw error;
2344 }
2345 }
2346 }
2347
2348 await this.writePromise(fd, JSON.stringify([process.pid]));
2349
2350 try {
2351 return await callback();
2352 } finally {
2353 await this.closePromise(fd);
2354 await this.unlinkPromise(lockPath);
2355 }
2356 }
2357
2358 async readJsonPromise(p) {
2359 const content = await this.readFilePromise(p, `utf8`);
2360
2361 try {
2362 return JSON.parse(content);
2363 } catch (error) {
2364 error.message += ` (in ${p})`;
2365 throw error;
2366 }
2367 }
2368
2369 async readJsonSync(p) {
2370 const content = this.readFileSync(p, `utf8`);
2371
2372 try {
2373 return JSON.parse(content);
2374 } catch (error) {
2375 error.message += ` (in ${p})`;
2376 throw error;
2377 }
2378 }
2379
2380 async writeJsonPromise(p, data) {
2381 return await this.writeFilePromise(p, `${JSON.stringify(data, null, 2)}\n`);
2382 }
2383
2384 writeJsonSync(p, data) {
2385 return this.writeFileSync(p, `${JSON.stringify(data, null, 2)}\n`);
2386 }
2387
2388 async preserveTimePromise(p, cb) {
2389 const stat = await this.lstatPromise(p);
2390 const result = await cb();
2391 if (typeof result !== `undefined`) p = result;
2392
2393 if (this.lutimesPromise) {
2394 await this.lutimesPromise(p, stat.atime, stat.mtime);
2395 } else if (!stat.isSymbolicLink()) {
2396 await this.utimesPromise(p, stat.atime, stat.mtime);
2397 }
2398 }
2399
2400 async preserveTimeSync(p, cb) {
2401 const stat = this.lstatSync(p);
2402 const result = cb();
2403 if (typeof result !== `undefined`) p = result;
2404
2405 if (this.lutimesSync) {
2406 this.lutimesSync(p, stat.atime, stat.mtime);
2407 } else if (!stat.isSymbolicLink()) {
2408 this.utimesSync(p, stat.atime, stat.mtime);
2409 }
2410 }
2411
2412}
2413
2414exports.FakeFS = FakeFS;
2415FakeFS.DEFAULT_TIME = 315532800;
2416;
2417
2418class BasePortableFakeFS extends FakeFS {
2419 constructor() {
2420 super(path_2.ppath);
2421 }
2422
2423 resolve(p) {
2424 return this.pathUtils.resolve(path_1.PortablePath.root, p);
2425 }
2426
2427}
2428
2429exports.BasePortableFakeFS = BasePortableFakeFS;
2430
2431function getEndOfLine(content) {
2432 const matches = content.match(/\r?\n/g);
2433 if (matches === null) return os_1.EOL;
2434 const crlf = matches.filter(nl => nl === `\r\n`).length;
2435 const lf = matches.length - crlf;
2436 return crlf > lf ? `\r\n` : `\n`;
2437}
2438
2439function normalizeLineEndings(originalContent, newContent) {
2440 return newContent.replace(/\r?\n/g, getEndOfLine(originalContent));
2441}
2442
2443exports.normalizeLineEndings = normalizeLineEndings;
2444
2445/***/ }),
2446/* 4 */
2447/***/ (function(module, exports, __webpack_require__) {
2448
2449"use strict";
2450
2451
2452Object.defineProperty(exports, "__esModule", {
2453 value: true
2454});
2455
2456const FakeFS_1 = __webpack_require__(3);
2457
2458class ProxiedFS extends FakeFS_1.FakeFS {
2459 getExtractHint(hints) {
2460 return this.baseFs.getExtractHint(hints);
2461 }
2462
2463 resolve(path) {
2464 return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path)));
2465 }
2466
2467 getRealPath() {
2468 return this.mapFromBase(this.baseFs.getRealPath());
2469 }
2470
2471 openPromise(p, flags, mode) {
2472 return this.baseFs.openPromise(this.mapToBase(p), flags, mode);
2473 }
2474
2475 openSync(p, flags, mode) {
2476 return this.baseFs.openSync(this.mapToBase(p), flags, mode);
2477 }
2478
2479 async readPromise(fd, buffer, offset, length, position) {
2480 return await this.baseFs.readPromise(fd, buffer, offset, length, position);
2481 }
2482
2483 readSync(fd, buffer, offset, length, position) {
2484 return this.baseFs.readSync(fd, buffer, offset, length, position);
2485 }
2486
2487 async writePromise(fd, buffer, offset, length, position) {
2488 if (typeof buffer === `string`) {
2489 return await this.baseFs.writePromise(fd, buffer, offset);
2490 } else {
2491 return await this.baseFs.writePromise(fd, buffer, offset, length, position);
2492 }
2493 }
2494
2495 writeSync(fd, buffer, offset, length, position) {
2496 if (typeof buffer === `string`) {
2497 return this.baseFs.writeSync(fd, buffer, offset);
2498 } else {
2499 return this.baseFs.writeSync(fd, buffer, offset, length, position);
2500 }
2501 }
2502
2503 closePromise(fd) {
2504 return this.baseFs.closePromise(fd);
2505 }
2506
2507 closeSync(fd) {
2508 this.baseFs.closeSync(fd);
2509 }
2510
2511 createReadStream(p, opts) {
2512 return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts);
2513 }
2514
2515 createWriteStream(p, opts) {
2516 return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts);
2517 }
2518
2519 async realpathPromise(p) {
2520 return this.mapFromBase((await this.baseFs.realpathPromise(this.mapToBase(p))));
2521 }
2522
2523 realpathSync(p) {
2524 return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p)));
2525 }
2526
2527 existsPromise(p) {
2528 return this.baseFs.existsPromise(this.mapToBase(p));
2529 }
2530
2531 existsSync(p) {
2532 return this.baseFs.existsSync(this.mapToBase(p));
2533 }
2534
2535 accessSync(p, mode) {
2536 return this.baseFs.accessSync(this.mapToBase(p), mode);
2537 }
2538
2539 accessPromise(p, mode) {
2540 return this.baseFs.accessPromise(this.mapToBase(p), mode);
2541 }
2542
2543 statPromise(p) {
2544 return this.baseFs.statPromise(this.mapToBase(p));
2545 }
2546
2547 statSync(p) {
2548 return this.baseFs.statSync(this.mapToBase(p));
2549 }
2550
2551 lstatPromise(p) {
2552 return this.baseFs.lstatPromise(this.mapToBase(p));
2553 }
2554
2555 lstatSync(p) {
2556 return this.baseFs.lstatSync(this.mapToBase(p));
2557 }
2558
2559 chmodPromise(p, mask) {
2560 return this.baseFs.chmodPromise(this.mapToBase(p), mask);
2561 }
2562
2563 chmodSync(p, mask) {
2564 return this.baseFs.chmodSync(this.mapToBase(p), mask);
2565 }
2566
2567 renamePromise(oldP, newP) {
2568 return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP));
2569 }
2570
2571 renameSync(oldP, newP) {
2572 return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP));
2573 }
2574
2575 copyFilePromise(sourceP, destP, flags = 0) {
2576 return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags);
2577 }
2578
2579 copyFileSync(sourceP, destP, flags = 0) {
2580 return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags);
2581 }
2582
2583 appendFilePromise(p, content, opts) {
2584 return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts);
2585 }
2586
2587 appendFileSync(p, content, opts) {
2588 return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts);
2589 }
2590
2591 writeFilePromise(p, content, opts) {
2592 return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts);
2593 }
2594
2595 writeFileSync(p, content, opts) {
2596 return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts);
2597 }
2598
2599 unlinkPromise(p) {
2600 return this.baseFs.unlinkPromise(this.mapToBase(p));
2601 }
2602
2603 unlinkSync(p) {
2604 return this.baseFs.unlinkSync(this.mapToBase(p));
2605 }
2606
2607 utimesPromise(p, atime, mtime) {
2608 return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime);
2609 }
2610
2611 utimesSync(p, atime, mtime) {
2612 return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime);
2613 }
2614
2615 mkdirPromise(p, opts) {
2616 return this.baseFs.mkdirPromise(this.mapToBase(p), opts);
2617 }
2618
2619 mkdirSync(p, opts) {
2620 return this.baseFs.mkdirSync(this.mapToBase(p), opts);
2621 }
2622
2623 rmdirPromise(p) {
2624 return this.baseFs.rmdirPromise(this.mapToBase(p));
2625 }
2626
2627 rmdirSync(p) {
2628 return this.baseFs.rmdirSync(this.mapToBase(p));
2629 }
2630
2631 symlinkPromise(target, p, type) {
2632 return this.baseFs.symlinkPromise(this.mapToBase(target), this.mapToBase(p), type);
2633 }
2634
2635 symlinkSync(target, p, type) {
2636 return this.baseFs.symlinkSync(this.mapToBase(target), this.mapToBase(p), type);
2637 }
2638
2639 readFilePromise(p, encoding) {
2640 // This weird condition is required to tell TypeScript that the signatures are proper (otherwise it thinks that only the generic one is covered)
2641 if (encoding === 'utf8') {
2642 return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding);
2643 } else {
2644 return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding);
2645 }
2646 }
2647
2648 readFileSync(p, encoding) {
2649 // This weird condition is required to tell TypeScript that the signatures are proper (otherwise it thinks that only the generic one is covered)
2650 if (encoding === 'utf8') {
2651 return this.baseFs.readFileSync(this.fsMapToBase(p), encoding);
2652 } else {
2653 return this.baseFs.readFileSync(this.fsMapToBase(p), encoding);
2654 }
2655 }
2656
2657 async readdirPromise(p, {
2658 withFileTypes
2659 } = {}) {
2660 return this.baseFs.readdirPromise(this.mapToBase(p), {
2661 withFileTypes: withFileTypes
2662 });
2663 }
2664
2665 readdirSync(p, {
2666 withFileTypes
2667 } = {}) {
2668 return this.baseFs.readdirSync(this.mapToBase(p), {
2669 withFileTypes: withFileTypes
2670 });
2671 }
2672
2673 async readlinkPromise(p) {
2674 return this.mapFromBase((await this.baseFs.readlinkPromise(this.mapToBase(p))));
2675 }
2676
2677 readlinkSync(p) {
2678 return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p)));
2679 }
2680
2681 watch(p, a, b) {
2682 return this.baseFs.watch(this.mapToBase(p), // @ts-ignore
2683 a, b);
2684 }
2685
2686 fsMapToBase(p) {
2687 if (typeof p === `number`) {
2688 return p;
2689 } else {
2690 return this.mapToBase(p);
2691 }
2692 }
2693
2694}
2695
2696exports.ProxiedFS = ProxiedFS;
2697
2698/***/ }),
2699/* 5 */
2700/***/ (function(module, exports, __webpack_require__) {
2701
2702"use strict";
2703
2704
2705var __importDefault = this && this.__importDefault || function (mod) {
2706 return mod && mod.__esModule ? mod : {
2707 "default": mod
2708 };
2709};
2710
2711Object.defineProperty(exports, "__esModule", {
2712 value: true
2713});
2714
2715const os_1 = __importDefault(__webpack_require__(8));
2716
2717const util_1 = __webpack_require__(9);
2718
2719const NodeFS_1 = __webpack_require__(1);
2720
2721const path_1 = __webpack_require__(0);
2722
2723var FakeFS_1 = __webpack_require__(3);
2724
2725exports.normalizeLineEndings = FakeFS_1.normalizeLineEndings;
2726
2727var path_2 = __webpack_require__(0);
2728
2729exports.PortablePath = path_2.PortablePath;
2730exports.Filename = path_2.Filename;
2731
2732var path_3 = __webpack_require__(0);
2733
2734exports.npath = path_3.npath;
2735exports.ppath = path_3.ppath;
2736exports.toFilename = path_3.toFilename;
2737
2738var AliasFS_1 = __webpack_require__(14);
2739
2740exports.AliasFS = AliasFS_1.AliasFS;
2741
2742var FakeFS_2 = __webpack_require__(3);
2743
2744exports.FakeFS = FakeFS_2.FakeFS;
2745
2746var CwdFS_1 = __webpack_require__(15);
2747
2748exports.CwdFS = CwdFS_1.CwdFS;
2749
2750var JailFS_1 = __webpack_require__(16);
2751
2752exports.JailFS = JailFS_1.JailFS;
2753
2754var LazyFS_1 = __webpack_require__(17);
2755
2756exports.LazyFS = LazyFS_1.LazyFS;
2757
2758var NoFS_1 = __webpack_require__(18);
2759
2760exports.NoFS = NoFS_1.NoFS;
2761
2762var NodeFS_2 = __webpack_require__(1);
2763
2764exports.NodeFS = NodeFS_2.NodeFS;
2765
2766var PosixFS_1 = __webpack_require__(19);
2767
2768exports.PosixFS = PosixFS_1.PosixFS;
2769
2770var ProxiedFS_1 = __webpack_require__(4);
2771
2772exports.ProxiedFS = ProxiedFS_1.ProxiedFS;
2773
2774var VirtualFS_1 = __webpack_require__(20);
2775
2776exports.VirtualFS = VirtualFS_1.VirtualFS;
2777
2778var ZipFS_1 = __webpack_require__(10);
2779
2780exports.ZipFS = ZipFS_1.ZipFS;
2781
2782var ZipOpenFS_1 = __webpack_require__(23);
2783
2784exports.ZipOpenFS = ZipOpenFS_1.ZipOpenFS;
2785
2786function getTempName(prefix) {
2787 const tmpdir = path_1.npath.toPortablePath(os_1.default.tmpdir());
2788 const hash = Math.ceil(Math.random() * 0x100000000).toString(16).padStart(8, `0`);
2789 return path_1.ppath.join(tmpdir, `${prefix}${hash}`);
2790}
2791
2792function patchFs(patchedFs, fakeFs) {
2793 const SYNC_IMPLEMENTATIONS = new Set([`accessSync`, `appendFileSync`, `createReadStream`, `chmodSync`, `closeSync`, `copyFileSync`, `lstatSync`, `mkdirSync`, `openSync`, `readSync`, `readlinkSync`, `readFileSync`, `readdirSync`, `readlinkSync`, `realpathSync`, `renameSync`, `rmdirSync`, `statSync`, `symlinkSync`, `unlinkSync`, `utimesSync`, `watch`, `writeFileSync`, `writeSync`]);
2794 const ASYNC_IMPLEMENTATIONS = new Set([`accessPromise`, `appendFilePromise`, `chmodPromise`, `closePromise`, `copyFilePromise`, `lstatPromise`, `mkdirPromise`, `openPromise`, `readdirPromise`, `realpathPromise`, `readFilePromise`, `readdirPromise`, `readlinkPromise`, `renamePromise`, `rmdirPromise`, `statPromise`, `symlinkPromise`, `unlinkPromise`, `utimesPromise`, `writeFilePromise`, `writeSync`]);
2795
2796 const setupFn = (target, name, replacement) => {
2797 const orig = target[name];
2798 if (typeof orig === `undefined`) return;
2799 target[name] = replacement;
2800
2801 if (typeof orig[util_1.promisify.custom] !== `undefined`) {
2802 replacement[util_1.promisify.custom] = orig[util_1.promisify.custom];
2803 }
2804 };
2805
2806 setupFn(patchedFs, `existsSync`, p => {
2807 try {
2808 return fakeFs.existsSync(p);
2809 } catch (error) {
2810 return false;
2811 }
2812 });
2813 setupFn(patchedFs, `exists`, (p, ...args) => {
2814 const hasCallback = typeof args[args.length - 1] === `function`;
2815 const callback = hasCallback ? args.pop() : () => {};
2816 process.nextTick(() => {
2817 fakeFs.existsPromise(p).then(exists => {
2818 callback(exists);
2819 }, () => {
2820 callback(false);
2821 });
2822 });
2823 });
2824 setupFn(patchedFs, `read`, (p, buffer, ...args) => {
2825 const hasCallback = typeof args[args.length - 1] === `function`;
2826 const callback = hasCallback ? args.pop() : () => {};
2827 process.nextTick(() => {
2828 fakeFs.readPromise(p, buffer, ...args).then(bytesRead => {
2829 callback(null, bytesRead, buffer);
2830 }, error => {
2831 callback(error);
2832 });
2833 });
2834 });
2835
2836 for (const fnName of ASYNC_IMPLEMENTATIONS) {
2837 const fakeImpl = fakeFs[fnName].bind(fakeFs);
2838 const origName = fnName.replace(/Promise$/, ``);
2839 setupFn(patchedFs, origName, (...args) => {
2840 const hasCallback = typeof args[args.length - 1] === `function`;
2841 const callback = hasCallback ? args.pop() : () => {};
2842 process.nextTick(() => {
2843 fakeImpl(...args).then(result => {
2844 callback(null, result);
2845 }, error => {
2846 callback(error);
2847 });
2848 });
2849 });
2850 }
2851
2852 for (const fnName of SYNC_IMPLEMENTATIONS) {
2853 const fakeImpl = fakeFs[fnName].bind(fakeFs);
2854 const origName = fnName;
2855 setupFn(patchedFs, origName, fakeImpl);
2856 }
2857
2858 patchedFs.realpathSync.native = patchedFs.realpathSync;
2859 patchedFs.realpath.native = patchedFs.realpath;
2860}
2861
2862exports.patchFs = patchFs;
2863
2864function extendFs(realFs, fakeFs) {
2865 const patchedFs = Object.create(realFs);
2866 patchFs(patchedFs, fakeFs);
2867 return patchedFs;
2868}
2869
2870exports.extendFs = extendFs;
2871const tmpdirs = new Set();
2872let cleanExitRegistered = false;
2873
2874function registerCleanExit() {
2875 if (!cleanExitRegistered) cleanExitRegistered = true;else return;
2876
2877 const cleanExit = () => {
2878 process.off(`exit`, cleanExit);
2879
2880 for (const p of tmpdirs) {
2881 tmpdirs.delete(p);
2882
2883 try {
2884 exports.xfs.removeSync(p);
2885 } catch (_a) {// Too bad if there's an error
2886 }
2887 }
2888 };
2889
2890 process.on(`exit`, cleanExit);
2891}
2892
2893exports.xfs = Object.assign(new NodeFS_1.NodeFS(), {
2894 detachTemp(p) {
2895 tmpdirs.delete(p);
2896 },
2897
2898 mktempSync(cb) {
2899 registerCleanExit();
2900
2901 while (true) {
2902 const p = getTempName(`xfs-`);
2903
2904 try {
2905 this.mkdirSync(p);
2906 } catch (error) {
2907 if (error.code === `EEXIST`) {
2908 continue;
2909 } else {
2910 throw error;
2911 }
2912 }
2913
2914 const realP = this.realpathSync(p);
2915 tmpdirs.add(realP);
2916
2917 if (typeof cb !== `undefined`) {
2918 try {
2919 return cb(realP);
2920 } finally {
2921 if (tmpdirs.has(realP)) {
2922 tmpdirs.delete(realP);
2923
2924 try {
2925 this.removeSync(realP);
2926 } catch (_a) {// Too bad if there's an error
2927 }
2928 }
2929 }
2930 } else {
2931 return p;
2932 }
2933 }
2934 },
2935
2936 async mktempPromise(cb) {
2937 registerCleanExit();
2938
2939 while (true) {
2940 const p = getTempName(`xfs-`);
2941
2942 try {
2943 await this.mkdirPromise(p);
2944 } catch (error) {
2945 if (error.code === `EEXIST`) {
2946 continue;
2947 } else {
2948 throw error;
2949 }
2950 }
2951
2952 const realP = await this.realpathPromise(p);
2953 tmpdirs.add(realP);
2954
2955 if (typeof cb !== `undefined`) {
2956 try {
2957 return await cb(realP);
2958 } finally {
2959 if (tmpdirs.has(realP)) {
2960 tmpdirs.delete(realP);
2961
2962 try {
2963 await this.removePromise(realP);
2964 } catch (_a) {// Too bad if there's an error
2965 }
2966 }
2967 }
2968 } else {
2969 return realP;
2970 }
2971 }
2972 }
2973
2974});
2975
2976/***/ }),
2977/* 6 */
2978/***/ (function(module, exports) {
2979
2980module.exports = require("module");
2981
2982/***/ }),
2983/* 7 */
2984/***/ (function(module, exports) {
2985
2986module.exports = require("path");
2987
2988/***/ }),
2989/* 8 */
2990/***/ (function(module, exports) {
2991
2992module.exports = require("os");
2993
2994/***/ }),
2995/* 9 */
2996/***/ (function(module, exports) {
2997
2998module.exports = require("util");
2999
3000/***/ }),
3001/* 10 */
3002/***/ (function(module, exports, __webpack_require__) {
3003
3004"use strict";
3005
3006
3007var __importStar = this && this.__importStar || function (mod) {
3008 if (mod && mod.__esModule) return mod;
3009 var result = {};
3010 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
3011 result["default"] = mod;
3012 return result;
3013};
3014
3015Object.defineProperty(exports, "__esModule", {
3016 value: true
3017});
3018
3019const fs_1 = __webpack_require__(2);
3020
3021const stream_1 = __webpack_require__(21);
3022
3023const util_1 = __webpack_require__(9);
3024
3025const FakeFS_1 = __webpack_require__(3);
3026
3027const NodeFS_1 = __webpack_require__(1);
3028
3029const errors = __importStar(__webpack_require__(22));
3030
3031const path_1 = __webpack_require__(0);
3032
3033const S_IFMT = 0o170000;
3034const S_IFDIR = 0o040000;
3035const S_IFREG = 0o100000;
3036const S_IFLNK = 0o120000;
3037
3038class DirEntry {
3039 constructor() {
3040 this.name = ``;
3041 this.mode = 0;
3042 }
3043
3044 isBlockDevice() {
3045 return false;
3046 }
3047
3048 isCharacterDevice() {
3049 return false;
3050 }
3051
3052 isDirectory() {
3053 return (this.mode & S_IFMT) === S_IFDIR;
3054 }
3055
3056 isFIFO() {
3057 return false;
3058 }
3059
3060 isFile() {
3061 return (this.mode & S_IFMT) === S_IFREG;
3062 }
3063
3064 isSocket() {
3065 return false;
3066 }
3067
3068 isSymbolicLink() {
3069 return (this.mode & S_IFMT) === S_IFLNK;
3070 }
3071
3072}
3073
3074class StatEntry {
3075 constructor() {
3076 this.dev = 0;
3077 this.ino = 0;
3078 this.mode = 0;
3079 this.nlink = 1;
3080 this.rdev = 0;
3081 this.blocks = 1;
3082 }
3083
3084 isBlockDevice() {
3085 return false;
3086 }
3087
3088 isCharacterDevice() {
3089 return false;
3090 }
3091
3092 isDirectory() {
3093 return (this.mode & S_IFMT) === S_IFDIR;
3094 }
3095
3096 isFIFO() {
3097 return false;
3098 }
3099
3100 isFile() {
3101 return (this.mode & S_IFMT) === S_IFREG;
3102 }
3103
3104 isSocket() {
3105 return false;
3106 }
3107
3108 isSymbolicLink() {
3109 return (this.mode & S_IFMT) === S_IFLNK;
3110 }
3111
3112}
3113
3114function makeDefaultStats() {
3115 return Object.assign(new StatEntry(), {
3116 uid: 0,
3117 gid: 0,
3118 size: 0,
3119 blksize: 0,
3120 atimeMs: 0,
3121 mtimeMs: 0,
3122 ctimeMs: 0,
3123 birthtimeMs: 0,
3124 atime: new Date(0),
3125 mtime: new Date(0),
3126 ctime: new Date(0),
3127 birthtime: new Date(0),
3128 mode: S_IFREG | 0o644
3129 });
3130}
3131
3132function toUnixTimestamp(time) {
3133 if (typeof time === 'string' && String(+time) === time) return +time; // @ts-ignore
3134
3135 if (Number.isFinite(time)) {
3136 if (time < 0) {
3137 return Date.now() / 1000;
3138 } else {
3139 return time;
3140 }
3141 } // convert to 123.456 UNIX timestamp
3142
3143
3144 if (util_1.isDate(time)) return time.getTime() / 1000;
3145 throw new Error(`Invalid time`);
3146}
3147
3148class ZipFS extends FakeFS_1.BasePortableFakeFS {
3149 constructor(source, opts) {
3150 super();
3151 this.listings = new Map();
3152 this.entries = new Map();
3153 this.fds = new Map();
3154 this.nextFd = 0;
3155 this.ready = false;
3156 this.readOnly = false;
3157 this.libzip = opts.libzip;
3158 const pathOptions = opts;
3159
3160 if (typeof source === `string`) {
3161 const {
3162 baseFs = new NodeFS_1.NodeFS()
3163 } = pathOptions;
3164 this.baseFs = baseFs;
3165 this.path = source;
3166 } else {
3167 this.path = null;
3168 this.baseFs = null;
3169 }
3170
3171 if (opts.stats) {
3172 this.stats = opts.stats;
3173 } else {
3174 if (typeof source === `string`) {
3175 try {
3176 this.stats = this.baseFs.statSync(source);
3177 } catch (error) {
3178 if (error.code === `ENOENT` && pathOptions.create) {
3179 this.stats = makeDefaultStats();
3180 } else {
3181 throw error;
3182 }
3183 }
3184 } else {
3185 this.stats = makeDefaultStats();
3186 }
3187 }
3188
3189 const errPtr = this.libzip.malloc(4);
3190
3191 try {
3192 let flags = 0;
3193 if (typeof source === `string` && pathOptions.create) flags |= this.libzip.ZIP_CREATE | this.libzip.ZIP_TRUNCATE;
3194
3195 if (opts.readOnly) {
3196 flags |= this.libzip.ZIP_RDONLY;
3197 this.readOnly = true;
3198 }
3199
3200 if (typeof source === `string`) {
3201 this.zip = this.libzip.open(path_1.npath.fromPortablePath(source), flags, errPtr);
3202 } else {
3203 const lzSource = this.allocateUnattachedSource(source);
3204
3205 try {
3206 this.zip = this.libzip.openFromSource(lzSource, flags, errPtr);
3207 } catch (error) {
3208 this.libzip.source.free(lzSource);
3209 throw error;
3210 }
3211 }
3212
3213 if (this.zip === 0) {
3214 const error = this.libzip.struct.errorS();
3215 this.libzip.error.initWithCode(error, this.libzip.getValue(errPtr, `i32`));
3216 throw new Error(this.libzip.error.strerror(error));
3217 }
3218 } finally {
3219 this.libzip.free(errPtr);
3220 }
3221
3222 this.listings.set(path_1.PortablePath.root, new Set());
3223 const entryCount = this.libzip.getNumEntries(this.zip, 0);
3224
3225 for (let t = 0; t < entryCount; ++t) {
3226 const raw = this.libzip.getName(this.zip, t, 0);
3227 if (path_1.ppath.isAbsolute(raw)) continue;
3228 const p = path_1.ppath.resolve(path_1.PortablePath.root, raw);
3229 this.registerEntry(p, t); // If the raw path is a directory, register it
3230 // to prevent empty folder being skipped
3231
3232 if (raw.endsWith('/')) {
3233 this.registerListing(p);
3234 }
3235 }
3236
3237 this.ready = true;
3238 }
3239
3240 getExtractHint(hints) {
3241 for (const fileName of this.entries.keys()) {
3242 const ext = this.pathUtils.extname(fileName);
3243
3244 if (hints.relevantExtensions.has(ext)) {
3245 return true;
3246 }
3247 }
3248
3249 return false;
3250 }
3251
3252 getAllFiles() {
3253 return Array.from(this.entries.keys());
3254 }
3255
3256 getRealPath() {
3257 if (!this.path) throw new Error(`ZipFS don't have real paths when loaded from a buffer`);
3258 return this.path;
3259 }
3260
3261 saveAndClose() {
3262 if (!this.path || !this.baseFs) throw new Error(`ZipFS cannot be saved and must be discarded when loaded from a buffer`);
3263 if (!this.ready) throw errors.EBUSY(`archive closed, close`);
3264 if (this.readOnly) return this.discardAndClose();
3265 const previousMod = this.baseFs.existsSync(this.path) ? this.baseFs.statSync(this.path).mode & 0o777 : null;
3266 const rc = this.libzip.close(this.zip);
3267 if (rc === -1) throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip))); // this.libzip overrides the chmod when writing the archive, which is a weird
3268 // behavior I don't totally understand (plus the umask seems bogus in some
3269 // weird cases - maybe related to emscripten?)
3270 //
3271 // See also https://github.com/nih-at/libzip/issues/77
3272
3273 if (previousMod === null) this.baseFs.chmodSync(this.path, this.stats.mode);else if (previousMod !== (this.baseFs.statSync(this.path).mode & 0o777)) this.baseFs.chmodSync(this.path, previousMod);
3274 this.ready = false;
3275 }
3276
3277 discardAndClose() {
3278 if (!this.ready) throw errors.EBUSY(`archive closed, close`);
3279 this.libzip.discard(this.zip);
3280 this.ready = false;
3281 }
3282
3283 async openPromise(p, flags, mode) {
3284 return this.openSync(p, flags, mode);
3285 }
3286
3287 openSync(p, flags, mode) {
3288 const fd = this.nextFd++;
3289 this.fds.set(fd, {
3290 cursor: 0,
3291 p
3292 });
3293 return fd;
3294 }
3295
3296 async readPromise(fd, buffer, offset, length, position) {
3297 return this.readSync(fd, buffer, offset, length, position);
3298 }
3299
3300 readSync(fd, buffer, offset = 0, length = 0, position = -1) {
3301 const entry = this.fds.get(fd);
3302 if (typeof entry === `undefined`) throw errors.EBADF(`read`);
3303 let realPosition;
3304 if (position === -1 || position === null) realPosition = entry.cursor;else realPosition = position;
3305 const source = this.readFileSync(entry.p);
3306 source.copy(buffer, offset, realPosition, realPosition + length);
3307 const bytesRead = Math.max(0, Math.min(source.length - realPosition, length));
3308 if (position === -1) entry.cursor += bytesRead;
3309 return bytesRead;
3310 }
3311
3312 async writePromise(fd, buffer, offset, length, position) {
3313 if (typeof buffer === `string`) {
3314 return this.writeSync(fd, buffer, position);
3315 } else {
3316 return this.writeSync(fd, buffer, offset, length, position);
3317 }
3318 }
3319
3320 writeSync(fd, buffer, offset, length, position) {
3321 const entry = this.fds.get(fd);
3322 if (typeof entry === `undefined`) throw errors.EBADF(`read`);
3323 throw new Error(`Unimplemented`);
3324 }
3325
3326 async closePromise(fd) {
3327 return this.closeSync(fd);
3328 }
3329
3330 closeSync(fd) {
3331 const entry = this.fds.get(fd);
3332 if (typeof entry === `undefined`) throw errors.EBADF(`read`);
3333 this.fds.delete(fd);
3334 }
3335
3336 createReadStream(p, {
3337 encoding
3338 } = {}) {
3339 if (p === null) throw new Error(`Unimplemented`);
3340 const stream = Object.assign(new stream_1.PassThrough(), {
3341 bytesRead: 0,
3342 path: p,
3343 close: () => {
3344 clearImmediate(immediate);
3345 }
3346 });
3347 const immediate = setImmediate(() => {
3348 try {
3349 const data = this.readFileSync(p, encoding);
3350 stream.bytesRead = data.length;
3351 stream.write(data);
3352 stream.end();
3353 } catch (error) {
3354 stream.emit(`error`, error);
3355 stream.end();
3356 }
3357 });
3358 return stream;
3359 }
3360
3361 createWriteStream(p, {
3362 encoding
3363 } = {}) {
3364 if (this.readOnly) throw errors.EROFS(`open '${p}'`);
3365 if (p === null) throw new Error(`Unimplemented`);
3366 const stream = Object.assign(new stream_1.PassThrough(), {
3367 bytesWritten: 0,
3368 path: p,
3369 close: () => {
3370 stream.end();
3371 }
3372 });
3373 const chunks = [];
3374 stream.on(`data`, chunk => {
3375 const chunkBuffer = Buffer.from(chunk);
3376 stream.bytesWritten += chunkBuffer.length;
3377 chunks.push(chunkBuffer);
3378 });
3379 stream.on(`end`, () => {
3380 this.writeFileSync(p, Buffer.concat(chunks), encoding);
3381 });
3382 return stream;
3383 }
3384
3385 async realpathPromise(p) {
3386 return this.realpathSync(p);
3387 }
3388
3389 realpathSync(p) {
3390 const resolvedP = this.resolveFilename(`lstat '${p}'`, p);
3391 if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) throw errors.ENOENT(`lstat '${p}'`);
3392 return resolvedP;
3393 }
3394
3395 async existsPromise(p) {
3396 return this.existsSync(p);
3397 }
3398
3399 existsSync(p) {
3400 let resolvedP;
3401
3402 try {
3403 resolvedP = this.resolveFilename(`stat '${p}'`, p);
3404 } catch (error) {
3405 return false;
3406 }
3407
3408 return this.entries.has(resolvedP) || this.listings.has(resolvedP);
3409 }
3410
3411 async accessPromise(p, mode) {
3412 return this.accessSync(p, mode);
3413 }
3414
3415 accessSync(p, mode = fs_1.constants.F_OK) {
3416 const resolvedP = this.resolveFilename(`access '${p}'`, p);
3417 if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) throw errors.ENOENT(`access '${p}'`);
3418
3419 if (this.readOnly && mode & fs_1.constants.W_OK) {
3420 throw errors.EROFS(`access '${p}'`);
3421 }
3422 }
3423
3424 async statPromise(p) {
3425 return this.statSync(p);
3426 }
3427
3428 statSync(p) {
3429 const resolvedP = this.resolveFilename(`stat '${p}'`, p);
3430 if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) throw errors.ENOENT(`stat '${p}'`);
3431 if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) throw errors.ENOTDIR(`stat '${p}'`);
3432 return this.statImpl(`stat '${p}'`, resolvedP);
3433 }
3434
3435 async lstatPromise(p) {
3436 return this.lstatSync(p);
3437 }
3438
3439 lstatSync(p) {
3440 const resolvedP = this.resolveFilename(`lstat '${p}'`, p, false);
3441 if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) throw errors.ENOENT(`lstat '${p}'`);
3442 if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) throw errors.ENOTDIR(`lstat '${p}'`);
3443 return this.statImpl(`lstat '${p}'`, resolvedP);
3444 }
3445
3446 statImpl(reason, p) {
3447 const entry = this.entries.get(p); // File, or explicit directory
3448
3449 if (typeof entry !== `undefined`) {
3450 const stat = this.libzip.struct.statS();
3451 const rc = this.libzip.statIndex(this.zip, entry, 0, 0, stat);
3452 if (rc === -1) throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip)));
3453 const uid = this.stats.uid;
3454 const gid = this.stats.gid;
3455 const size = this.libzip.struct.statSize(stat) >>> 0;
3456 const blksize = 512;
3457 const blocks = Math.ceil(size / blksize);
3458 const mtimeMs = (this.libzip.struct.statMtime(stat) >>> 0) * 1000;
3459 const atimeMs = mtimeMs;
3460 const birthtimeMs = mtimeMs;
3461 const ctimeMs = mtimeMs;
3462 const atime = new Date(atimeMs);
3463 const birthtime = new Date(birthtimeMs);
3464 const ctime = new Date(ctimeMs);
3465 const mtime = new Date(mtimeMs);
3466 const type = this.listings.has(p) ? S_IFDIR : this.isSymbolicLink(entry) ? S_IFLNK : S_IFREG;
3467 const defaultMode = type === S_IFDIR ? 0o755 : 0o644;
3468 const mode = type | this.getUnixMode(entry, defaultMode) & 0o777;
3469 return Object.assign(new StatEntry(), {
3470 uid,
3471 gid,
3472 size,
3473 blksize,
3474 blocks,
3475 atime,
3476 birthtime,
3477 ctime,
3478 mtime,
3479 atimeMs,
3480 birthtimeMs,
3481 ctimeMs,
3482 mtimeMs,
3483 mode
3484 });
3485 } // Implicit directory
3486
3487
3488 if (this.listings.has(p)) {
3489 const uid = this.stats.uid;
3490 const gid = this.stats.gid;
3491 const size = 0;
3492 const blksize = 512;
3493 const blocks = 0;
3494 const atimeMs = this.stats.mtimeMs;
3495 const birthtimeMs = this.stats.mtimeMs;
3496 const ctimeMs = this.stats.mtimeMs;
3497 const mtimeMs = this.stats.mtimeMs;
3498 const atime = new Date(atimeMs);
3499 const birthtime = new Date(birthtimeMs);
3500 const ctime = new Date(ctimeMs);
3501 const mtime = new Date(mtimeMs);
3502 const mode = S_IFDIR | 0o755;
3503 return Object.assign(new StatEntry(), {
3504 uid,
3505 gid,
3506 size,
3507 blksize,
3508 blocks,
3509 atime,
3510 birthtime,
3511 ctime,
3512 mtime,
3513 atimeMs,
3514 birthtimeMs,
3515 ctimeMs,
3516 mtimeMs,
3517 mode
3518 });
3519 }
3520
3521 throw new Error(`Unreachable`);
3522 }
3523
3524 getUnixMode(index, defaultMode) {
3525 const rc = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S);
3526 if (rc === -1) throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip)));
3527 const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0;
3528 if (opsys !== this.libzip.ZIP_OPSYS_UNIX) return defaultMode;
3529 return this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16;
3530 }
3531
3532 registerListing(p) {
3533 let listing = this.listings.get(p);
3534 if (listing) return listing;
3535 const parentListing = this.registerListing(path_1.ppath.dirname(p));
3536 listing = new Set();
3537 parentListing.add(path_1.ppath.basename(p));
3538 this.listings.set(p, listing);
3539 return listing;
3540 }
3541
3542 registerEntry(p, index) {
3543 const parentListing = this.registerListing(path_1.ppath.dirname(p));
3544 parentListing.add(path_1.ppath.basename(p));
3545 this.entries.set(p, index);
3546 }
3547
3548 resolveFilename(reason, p, resolveLastComponent = true) {
3549 if (!this.ready) throw errors.EBUSY(`archive closed, ${reason}`);
3550 let resolvedP = path_1.ppath.resolve(path_1.PortablePath.root, p);
3551 if (resolvedP === `/`) return path_1.PortablePath.root;
3552
3553 while (true) {
3554 const parentP = this.resolveFilename(reason, path_1.ppath.dirname(resolvedP), true);
3555 const isDir = this.listings.has(parentP);
3556 const doesExist = this.entries.has(parentP);
3557 if (!isDir && !doesExist) throw errors.ENOENT(reason);
3558 if (!isDir) throw errors.ENOTDIR(reason);
3559 resolvedP = path_1.ppath.resolve(parentP, path_1.ppath.basename(resolvedP));
3560 if (!resolveLastComponent) break;
3561 const index = this.libzip.name.locate(this.zip, resolvedP.slice(1));
3562 if (index === -1) break;
3563
3564 if (this.isSymbolicLink(index)) {
3565 const target = this.getFileSource(index).toString();
3566 resolvedP = path_1.ppath.resolve(path_1.ppath.dirname(resolvedP), target);
3567 } else {
3568 break;
3569 }
3570 }
3571
3572 return resolvedP;
3573 }
3574
3575 allocateBuffer(content) {
3576 if (!Buffer.isBuffer(content)) content = Buffer.from(content);
3577 const buffer = this.libzip.malloc(content.byteLength);
3578 if (!buffer) throw new Error(`Couldn't allocate enough memory`); // Copy the file into the Emscripten heap
3579
3580 const heap = new Uint8Array(this.libzip.HEAPU8.buffer, buffer, content.byteLength);
3581 heap.set(content);
3582 return {
3583 buffer,
3584 byteLength: content.byteLength
3585 };
3586 }
3587
3588 allocateUnattachedSource(content) {
3589 const error = this.libzip.struct.errorS();
3590 const {
3591 buffer,
3592 byteLength
3593 } = this.allocateBuffer(content);
3594 const source = this.libzip.source.fromUnattachedBuffer(buffer, byteLength, 0, true, error);
3595
3596 if (source === 0) {
3597 this.libzip.free(error);
3598 throw new Error(this.libzip.error.strerror(error));
3599 }
3600
3601 return source;
3602 }
3603
3604 allocateSource(content) {
3605 const {
3606 buffer,
3607 byteLength
3608 } = this.allocateBuffer(content);
3609 const source = this.libzip.source.fromBuffer(this.zip, buffer, byteLength, 0, true);
3610
3611 if (source === 0) {
3612 this.libzip.free(buffer);
3613 throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip)));
3614 }
3615
3616 return source;
3617 }
3618
3619 setFileSource(p, content) {
3620 const target = path_1.ppath.relative(path_1.PortablePath.root, p);
3621 const lzSource = this.allocateSource(content);
3622
3623 try {
3624 return this.libzip.file.add(this.zip, target, lzSource, this.libzip.ZIP_FL_OVERWRITE);
3625 } catch (error) {
3626 this.libzip.source.free(lzSource);
3627 throw error;
3628 }
3629 }
3630
3631 isSymbolicLink(index) {
3632 const attrs = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S);
3633 if (attrs === -1) throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip)));
3634 const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0;
3635 if (opsys !== this.libzip.ZIP_OPSYS_UNIX) return false;
3636 const attributes = this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16;
3637 return (attributes & S_IFMT) === S_IFLNK;
3638 }
3639
3640 getFileSource(index) {
3641 const stat = this.libzip.struct.statS();
3642 const rc = this.libzip.statIndex(this.zip, index, 0, 0, stat);
3643 if (rc === -1) throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip)));
3644 const size = this.libzip.struct.statSize(stat);
3645 const buffer = this.libzip.malloc(size);
3646
3647 try {
3648 const file = this.libzip.fopenIndex(this.zip, index, 0, 0);
3649 if (file === 0) throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip)));
3650
3651 try {
3652 const rc = this.libzip.fread(file, buffer, size, 0);
3653 if (rc === -1) throw new Error(this.libzip.error.strerror(this.libzip.file.getError(file)));else if (rc < size) throw new Error(`Incomplete read`);else if (rc > size) throw new Error(`Overread`);
3654 const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size);
3655 const data = Buffer.from(memory);
3656 return data;
3657 } finally {
3658 this.libzip.fclose(file);
3659 }
3660 } finally {
3661 this.libzip.free(buffer);
3662 }
3663 }
3664
3665 async chmodPromise(p, mask) {
3666 return this.chmodSync(p, mask);
3667 }
3668
3669 chmodSync(p, mask) {
3670 if (this.readOnly) throw errors.EROFS(`chmod '${p}'`); // We don't allow to make the extracted entries group-writable
3671
3672 mask &= 0o755;
3673 const resolvedP = this.resolveFilename(`chmod '${p}'`, p, false);
3674 const entry = this.entries.get(resolvedP);
3675 if (typeof entry === `undefined`) throw new Error(`Assertion failed: The entry should have been registered (${resolvedP})`);
3676 const oldMod = this.getUnixMode(entry, S_IFREG | 0o000);
3677 const newMod = oldMod & ~0o777 | mask;
3678 const rc = this.libzip.file.setExternalAttributes(this.zip, entry, 0, 0, this.libzip.ZIP_OPSYS_UNIX, newMod << 16);
3679
3680 if (rc === -1) {
3681 throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip)));
3682 }
3683 }
3684
3685 async renamePromise(oldP, newP) {
3686 return this.renameSync(oldP, newP);
3687 }
3688
3689 renameSync(oldP, newP) {
3690 throw new Error(`Unimplemented`);
3691 }
3692
3693 async copyFilePromise(sourceP, destP, flags) {
3694 return this.copyFileSync(sourceP, destP, flags);
3695 }
3696
3697 copyFileSync(sourceP, destP, flags = 0) {
3698 if (this.readOnly) throw errors.EROFS(`copyfile '${sourceP} -> '${destP}'`);
3699 if ((flags & fs_1.constants.COPYFILE_FICLONE_FORCE) !== 0) throw errors.ENOSYS(`unsupported clone operation`, `copyfile '${sourceP}' -> ${destP}'`);
3700 const resolvedSourceP = this.resolveFilename(`copyfile '${sourceP} -> ${destP}'`, sourceP);
3701 const indexSource = this.entries.get(resolvedSourceP);
3702 if (typeof indexSource === `undefined`) throw errors.EINVAL(`copyfile '${sourceP}' -> '${destP}'`);
3703 const resolvedDestP = this.resolveFilename(`copyfile '${sourceP}' -> ${destP}'`, destP);
3704 const indexDest = this.entries.get(resolvedDestP);
3705 if ((flags & (fs_1.constants.COPYFILE_EXCL | fs_1.constants.COPYFILE_FICLONE_FORCE)) !== 0 && typeof indexDest !== `undefined`) throw errors.EEXIST(`copyfile '${sourceP}' -> '${destP}'`);
3706 const source = this.getFileSource(indexSource);
3707 const newIndex = this.setFileSource(resolvedDestP, source);
3708
3709 if (newIndex !== indexDest) {
3710 this.registerEntry(resolvedDestP, newIndex);
3711 }
3712 }
3713
3714 async appendFilePromise(p, content, opts) {
3715 return this.appendFileSync(p, content, opts);
3716 }
3717
3718 appendFileSync(p, content, opts = {}) {
3719 if (this.readOnly) throw errors.EROFS(`open '${p}'`);
3720 if (typeof opts === `undefined`) opts = {
3721 flag: `a`
3722 };else if (typeof opts === `string`) opts = {
3723 flag: `a`,
3724 encoding: opts
3725 };else if (typeof opts.flag === `undefined`) opts = Object.assign({
3726 flag: `a`
3727 }, opts);
3728 return this.writeFileSync(p, content, opts);
3729 }
3730
3731 async writeFilePromise(p, content, opts) {
3732 return this.writeFileSync(p, content, opts);
3733 }
3734
3735 writeFileSync(p, content, opts) {
3736 if (typeof p !== `string`) throw errors.EBADF(`read`);
3737 if (this.readOnly) throw errors.EROFS(`open '${p}'`);
3738 const resolvedP = this.resolveFilename(`open '${p}'`, p);
3739 if (this.listings.has(resolvedP)) throw errors.EISDIR(`open '${p}'`);
3740 const index = this.entries.get(resolvedP);
3741 if (index !== undefined && typeof opts === `object` && opts.flag && opts.flag.includes(`a`)) content = Buffer.concat([this.getFileSource(index), Buffer.from(content)]);
3742 let encoding = null;
3743 if (typeof opts === `string`) encoding = opts;else if (typeof opts === `object` && opts.encoding) encoding = opts.encoding;
3744 if (encoding !== null) content = content.toString(encoding);
3745 const newIndex = this.setFileSource(resolvedP, content);
3746
3747 if (newIndex !== index) {
3748 this.registerEntry(resolvedP, newIndex);
3749 }
3750 }
3751
3752 async unlinkPromise(p) {
3753 return this.unlinkSync(p);
3754 }
3755
3756 unlinkSync(p) {
3757 throw new Error(`Unimplemented`);
3758 }
3759
3760 async utimesPromise(p, atime, mtime) {
3761 return this.utimesSync(p, atime, mtime);
3762 }
3763
3764 utimesSync(p, atime, mtime) {
3765 if (this.readOnly) throw errors.EROFS(`utimes '${p}'`);
3766 const resolvedP = this.resolveFilename(`utimes '${p}'`, p);
3767 this.utimesImpl(resolvedP, mtime);
3768 }
3769
3770 async lutimesPromise(p, atime, mtime) {
3771 return this.lutimesSync(p, atime, mtime);
3772 }
3773
3774 lutimesSync(p, atime, mtime) {
3775 if (this.readOnly) throw errors.EROFS(`lutimes '${p}'`);
3776 const resolvedP = this.resolveFilename(`utimes '${p}'`, p, false);
3777 this.utimesImpl(resolvedP, mtime);
3778 }
3779
3780 utimesImpl(resolvedP, mtime) {
3781 if (this.listings.has(resolvedP)) if (!this.entries.has(resolvedP)) this.hydrateDirectory(resolvedP);
3782 const entry = this.entries.get(resolvedP);
3783 if (entry === undefined) throw new Error(`Unreachable`);
3784 const rc = this.libzip.file.setMtime(this.zip, entry, 0, toUnixTimestamp(mtime), 0);
3785
3786 if (rc === -1) {
3787 throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip)));
3788 }
3789 }
3790
3791 async mkdirPromise(p, opts) {
3792 return this.mkdirSync(p, opts);
3793 }
3794
3795 mkdirSync(p, {
3796 mode = 0o755,
3797 recursive = false
3798 } = {}) {
3799 if (recursive) return this.mkdirpSync(p, {
3800 chmod: mode
3801 });
3802 if (this.readOnly) throw errors.EROFS(`mkdir '${p}'`);
3803 const resolvedP = this.resolveFilename(`mkdir '${p}'`, p);
3804 if (this.entries.has(resolvedP) || this.listings.has(resolvedP)) throw errors.EEXIST(`mkdir '${p}'`);
3805 this.hydrateDirectory(resolvedP);
3806 this.chmodSync(resolvedP, mode);
3807 }
3808
3809 async rmdirPromise(p) {
3810 return this.rmdirSync(p);
3811 }
3812
3813 rmdirSync(p) {
3814 throw new Error(`Unimplemented`);
3815 }
3816
3817 hydrateDirectory(resolvedP) {
3818 const index = this.libzip.dir.add(this.zip, path_1.ppath.relative(path_1.PortablePath.root, resolvedP));
3819 if (index === -1) throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip)));
3820 this.registerListing(resolvedP);
3821 this.registerEntry(resolvedP, index);
3822 return index;
3823 }
3824
3825 async symlinkPromise(target, p) {
3826 return this.symlinkSync(target, p);
3827 }
3828
3829 symlinkSync(target, p) {
3830 if (this.readOnly) throw errors.EROFS(`symlink '${target}' -> '${p}'`);
3831 const resolvedP = this.resolveFilename(`symlink '${target}' -> '${p}'`, p);
3832 if (this.listings.has(resolvedP)) throw errors.EISDIR(`symlink '${target}' -> '${p}'`);
3833 if (this.entries.has(resolvedP)) throw errors.EEXIST(`symlink '${target}' -> '${p}'`);
3834 const index = this.setFileSource(resolvedP, target);
3835 this.registerEntry(resolvedP, index);
3836 const rc = this.libzip.file.setExternalAttributes(this.zip, index, 0, 0, this.libzip.ZIP_OPSYS_UNIX, (0o120000 | 0o777) << 16);
3837
3838 if (rc === -1) {
3839 throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip)));
3840 }
3841 }
3842
3843 async readFilePromise(p, encoding) {
3844 // This weird switch is required to tell TypeScript that the signatures are proper (otherwise it thinks that only the generic one is covered)
3845 switch (encoding) {
3846 case `utf8`:
3847 return this.readFileSync(p, encoding);
3848
3849 default:
3850 return this.readFileSync(p, encoding);
3851 }
3852 }
3853
3854 readFileSync(p, encoding) {
3855 if (typeof p !== `string`) throw errors.EBADF(`read`); // This is messed up regarding the TS signatures
3856
3857 if (typeof encoding === `object`) // @ts-ignore
3858 encoding = encoding ? encoding.encoding : undefined;
3859 const resolvedP = this.resolveFilename(`open '${p}'`, p);
3860 if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) throw errors.ENOENT(`open '${p}'`); // Ensures that the last component is a directory, if the user said so (even if it is we'll throw right after with EISDIR anyway)
3861
3862 if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) throw errors.ENOTDIR(`open '${p}'`);
3863 if (this.listings.has(resolvedP)) throw errors.EISDIR(`read`);
3864 const entry = this.entries.get(resolvedP);
3865 if (entry === undefined) throw new Error(`Unreachable`);
3866 const data = this.getFileSource(entry);
3867 return encoding ? data.toString(encoding) : data;
3868 }
3869
3870 async readdirPromise(p, {
3871 withFileTypes
3872 } = {}) {
3873 return this.readdirSync(p, {
3874 withFileTypes: withFileTypes
3875 });
3876 }
3877
3878 readdirSync(p, {
3879 withFileTypes
3880 } = {}) {
3881 const resolvedP = this.resolveFilename(`scandir '${p}'`, p);
3882 if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) throw errors.ENOENT(`scandir '${p}'`);
3883 const directoryListing = this.listings.get(resolvedP);
3884 if (!directoryListing) throw errors.ENOTDIR(`scandir '${p}'`);
3885 const entries = [...directoryListing];
3886 if (!withFileTypes) return entries;
3887 return entries.map(name => {
3888 return Object.assign(this.statImpl(`lstat`, path_1.ppath.join(p, name)), {
3889 name
3890 });
3891 });
3892 }
3893
3894 async readlinkPromise(p) {
3895 return this.readlinkSync(p);
3896 }
3897
3898 readlinkSync(p) {
3899 const resolvedP = this.resolveFilename(`readlink '${p}'`, p, false);
3900 if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) throw errors.ENOENT(`readlink '${p}'`); // Ensure that the last component is a directory (if it is we'll throw right after with EISDIR anyway)
3901
3902 if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) throw errors.ENOTDIR(`open '${p}'`);
3903 if (this.listings.has(resolvedP)) throw errors.EINVAL(`readlink '${p}'`);
3904 const entry = this.entries.get(resolvedP);
3905 if (entry === undefined) throw new Error(`Unreachable`);
3906 const rc = this.libzip.file.getExternalAttributes(this.zip, entry, 0, 0, this.libzip.uint08S, this.libzip.uint32S);
3907 if (rc === -1) throw new Error(this.libzip.error.strerror(this.libzip.getError(this.zip)));
3908 const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0;
3909 if (opsys !== this.libzip.ZIP_OPSYS_UNIX) throw errors.EINVAL(`readlink '${p}'`);
3910 const attributes = this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16;
3911 if ((attributes & 0o170000) !== 0o120000) throw errors.EINVAL(`readlink '${p}'`);
3912 return this.getFileSource(entry).toString();
3913 }
3914
3915 watch(p, a, b) {
3916 let persistent;
3917
3918 switch (typeof a) {
3919 case `function`:
3920 case `string`:
3921 case `undefined`:
3922 {
3923 persistent = true;
3924 }
3925 break;
3926
3927 default:
3928 {
3929 // @ts-ignore
3930 ({
3931 persistent = true
3932 } = a);
3933 }
3934 break;
3935 }
3936
3937 if (!persistent) return {
3938 on: () => {},
3939 close: () => {}
3940 };
3941 const interval = setInterval(() => {}, 24 * 60 * 60 * 1000);
3942 return {
3943 on: () => {},
3944 close: () => {
3945 clearInterval(interval);
3946 }
3947 };
3948 }
3949
3950}
3951
3952exports.ZipFS = ZipFS;
3953;
3954
3955/***/ }),
3956/* 11 */
3957/***/ (function(module, exports, __webpack_require__) {
3958
3959"use strict";
3960
3961
3962Object.defineProperty(exports, "__esModule", {
3963 value: true
3964});
3965var ErrorCode;
3966
3967(function (ErrorCode) {
3968 ErrorCode["API_ERROR"] = "API_ERROR";
3969 ErrorCode["BLACKLISTED"] = "BLACKLISTED";
3970 ErrorCode["BUILTIN_NODE_RESOLUTION_FAILED"] = "BUILTIN_NODE_RESOLUTION_FAILED";
3971 ErrorCode["MISSING_DEPENDENCY"] = "MISSING_DEPENDENCY";
3972 ErrorCode["MISSING_PEER_DEPENDENCY"] = "MISSING_PEER_DEPENDENCY";
3973 ErrorCode["QUALIFIED_PATH_RESOLUTION_FAILED"] = "QUALIFIED_PATH_RESOLUTION_FAILED";
3974 ErrorCode["INTERNAL"] = "INTERNAL";
3975 ErrorCode["UNDECLARED_DEPENDENCY"] = "UNDECLARED_DEPENDENCY";
3976 ErrorCode["UNSUPPORTED"] = "UNSUPPORTED";
3977})(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {}));
3978
3979; // Some errors are exposed as MODULE_NOT_FOUND for compatibility with packages
3980// that expect this umbrella error when the resolution fails
3981
3982const MODULE_NOT_FOUND_ERRORS = new Set([ErrorCode.BLACKLISTED, ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED, ErrorCode.MISSING_DEPENDENCY, ErrorCode.MISSING_PEER_DEPENDENCY, ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, ErrorCode.UNDECLARED_DEPENDENCY]);
3983/**
3984 * Simple helper function that assign an error code to an error, so that it can more easily be caught and used
3985 * by third-parties.
3986 */
3987
3988function makeError(pnpCode, message, data = {}) {
3989 const code = MODULE_NOT_FOUND_ERRORS.has(pnpCode) ? `MODULE_NOT_FOUND` : pnpCode;
3990 const propertySpec = {
3991 configurable: true,
3992 writable: true,
3993 enumerable: false
3994 };
3995 return Object.defineProperties(new Error(message), {
3996 code: Object.assign(Object.assign({}, propertySpec), {
3997 value: code
3998 }),
3999 pnpCode: Object.assign(Object.assign({}, propertySpec), {
4000 value: pnpCode
4001 }),
4002 data: Object.assign(Object.assign({}, propertySpec), {
4003 value: data
4004 })
4005 });
4006}
4007
4008exports.makeError = makeError;
4009/**
4010 * Returns the module that should be used to resolve require calls. It's usually the direct parent, except if we're
4011 * inside an eval expression.
4012 */
4013
4014function getIssuerModule(parent) {
4015 let issuer = parent;
4016
4017 while (issuer && (issuer.id === '[eval]' || issuer.id === '<repl>' || !issuer.filename)) issuer = issuer.parent;
4018
4019 return issuer || null;
4020}
4021
4022exports.getIssuerModule = getIssuerModule;
4023
4024/***/ }),
4025/* 12 */
4026/***/ (function(module, exports, __webpack_require__) {
4027
4028"use strict";
4029
4030
4031var __rest = this && this.__rest || function (s, e) {
4032 var t = {};
4033
4034 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
4035
4036 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
4037 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
4038 }
4039 return t;
4040};
4041
4042var __importDefault = this && this.__importDefault || function (mod) {
4043 return mod && mod.__esModule ? mod : {
4044 "default": mod
4045 };
4046};
4047
4048Object.defineProperty(exports, "__esModule", {
4049 value: true
4050});
4051
4052const fslib_1 = __webpack_require__(5);
4053
4054const libzip_1 = __webpack_require__(24);
4055
4056const fs_1 = __importDefault(__webpack_require__(2));
4057
4058const module_1 = __importDefault(__webpack_require__(6));
4059
4060const string_decoder_1 = __importDefault(__webpack_require__(28));
4061
4062const applyPatch_1 = __webpack_require__(29);
4063
4064const hydrateRuntimeState_1 = __webpack_require__(31);
4065
4066const makeApi_1 = __webpack_require__(32);
4067
4068const makeManager_1 = __webpack_require__(33); // We must copy the fs into a local, because otherwise
4069// 1. we would make the NodeFS instance use the function that we patched (infinite loop)
4070// 2. Object.create(fs) isn't enough, since it won't prevent the proto from being modified
4071
4072
4073const localFs = Object.assign({}, fs_1.default);
4074const nodeFs = new fslib_1.NodeFS(localFs);
4075const defaultRuntimeState = $$SETUP_STATE(hydrateRuntimeState_1.hydrateRuntimeState);
4076const defaultPnpapiResolution = __filename; // We create a virtual filesystem that will do three things:
4077// 1. all requests inside a folder named "$$virtual" will be remapped according the virtual folder rules
4078// 2. all requests going inside a Zip archive will be handled by the Zip fs implementation
4079// 3. any remaining request will be forwarded to Node as-is
4080
4081const defaultFsLayer = new fslib_1.VirtualFS({
4082 baseFs: new fslib_1.ZipOpenFS({
4083 baseFs: nodeFs,
4084 libzip: libzip_1.getLibzipSync(),
4085 maxOpenFiles: 80,
4086 readOnlyArchives: true
4087 })
4088});
4089let manager;
4090const defaultApi = Object.assign(makeApi_1.makeApi(defaultRuntimeState, {
4091 fakeFs: defaultFsLayer,
4092 pnpapiResolution: defaultPnpapiResolution
4093}), {
4094 /**
4095 * Can be used to generate a different API than the default one (for example
4096 * to map it on `/` rather than the local directory path, or to use a
4097 * different FS layer than the default one).
4098 */
4099 makeApi: _a => {
4100 var {
4101 basePath = undefined,
4102 fakeFs = defaultFsLayer,
4103 pnpapiResolution = defaultPnpapiResolution
4104 } = _a,
4105 rest = __rest(_a, ["basePath", "fakeFs", "pnpapiResolution"]);
4106
4107 const apiRuntimeState = typeof basePath !== `undefined` ? $$SETUP_STATE(hydrateRuntimeState_1.hydrateRuntimeState, basePath) : defaultRuntimeState;
4108 return makeApi_1.makeApi(apiRuntimeState, Object.assign({
4109 fakeFs,
4110 pnpapiResolution
4111 }, rest));
4112 },
4113
4114 /**
4115 * Will inject the specified API into the environment, monkey-patching FS. Is
4116 * automatically called when the hook is loaded through `--require`.
4117 */
4118 setup: api => {
4119 applyPatch_1.applyPatch(api || defaultApi, {
4120 fakeFs: defaultFsLayer,
4121 manager
4122 });
4123 }
4124});
4125manager = makeManager_1.makeManager(defaultApi, {
4126 fakeFs: defaultFsLayer
4127}); // eslint-disable-next-line arca/no-default-export
4128
4129exports.default = defaultApi;
4130
4131if (__non_webpack_module__.parent && __non_webpack_module__.parent.id === 'internal/preload') {
4132 defaultApi.setup();
4133
4134 if (__non_webpack_module__.filename) {
4135 // We delete it from the cache in order to support the case where the CLI resolver is invoked from "yarn run"
4136 // It's annoying because it might cause some issues when the file is multiple times in NODE_OPTIONS, but it shouldn't happen anyway.
4137 // @ts-ignore
4138 delete module_1.default._cache[__non_webpack_module__.filename];
4139 }
4140} // @ts-ignore
4141
4142
4143if (process.mainModule === __non_webpack_module__) {
4144 const reportError = (code, message, data) => {
4145 process.stdout.write(`${JSON.stringify([{
4146 code,
4147 message,
4148 data
4149 }, null])}\n`);
4150 };
4151
4152 const reportSuccess = resolution => {
4153 process.stdout.write(`${JSON.stringify([null, resolution])}\n`);
4154 };
4155
4156 const processResolution = (request, issuer) => {
4157 try {
4158 reportSuccess(defaultApi.resolveRequest(request, issuer));
4159 } catch (error) {
4160 reportError(error.code, error.message, error.data);
4161 }
4162 };
4163
4164 const processRequest = data => {
4165 try {
4166 const [request, issuer] = JSON.parse(data);
4167 processResolution(request, issuer);
4168 } catch (error) {
4169 reportError(`INVALID_JSON`, error.message, error.data);
4170 }
4171 };
4172
4173 if (process.argv.length > 2) {
4174 if (process.argv.length !== 4) {
4175 process.stderr.write(`Usage: ${process.argv[0]} ${process.argv[1]} <request> <issuer>\n`);
4176 process.exitCode = 64;
4177 /* EX_USAGE */
4178 } else {
4179 processResolution(process.argv[2], process.argv[3]);
4180 }
4181 } else {
4182 let buffer = '';
4183 const decoder = new string_decoder_1.default.StringDecoder();
4184 process.stdin.on('data', chunk => {
4185 buffer += decoder.write(chunk);
4186
4187 do {
4188 const index = buffer.indexOf('\n');
4189 if (index === -1) break;
4190 const line = buffer.slice(0, index);
4191 buffer = buffer.slice(index + 1);
4192 processRequest(line);
4193 } while (true);
4194 });
4195 }
4196}
4197
4198/***/ }),
4199/* 13 */
4200/***/ (function(module, exports, __webpack_require__) {
4201
4202"use strict";
4203
4204
4205var __importDefault = this && this.__importDefault || function (mod) {
4206 return mod && mod.__esModule ? mod : {
4207 "default": mod
4208 };
4209};
4210
4211Object.defineProperty(exports, "__esModule", {
4212 value: true
4213});
4214
4215const fs_1 = __importDefault(__webpack_require__(2));
4216
4217const path_1 = __webpack_require__(0);
4218
4219async function copyPromise(destinationFs, destination, sourceFs, source, opts) {
4220 const normalizedDestination = destinationFs.pathUtils.normalize(destination);
4221 const normalizedSource = sourceFs.pathUtils.normalize(source);
4222 const operations = [];
4223 const utimes = [];
4224 await destinationFs.mkdirpPromise(destination);
4225 await copyImpl(operations, utimes, destinationFs, normalizedDestination, sourceFs, normalizedSource, opts);
4226
4227 for (const operation of operations) await operation();
4228
4229 for (const [p, atime, mtime] of utimes) {
4230 await destinationFs.utimesPromise(p, atime, mtime);
4231 }
4232}
4233
4234exports.copyPromise = copyPromise;
4235
4236async function copyImpl(operations, utimes, destinationFs, destination, sourceFs, source, opts) {
4237 const destinationStat = await maybeLStat(destinationFs, destination);
4238 const sourceStat = await sourceFs.lstatPromise(source);
4239 utimes.push([destination, sourceStat.atime, sourceStat.mtime]);
4240
4241 switch (true) {
4242 case sourceStat.isDirectory():
4243 {
4244 await copyFolder(operations, utimes, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
4245 }
4246 break;
4247
4248 case sourceStat.isFile():
4249 {
4250 await copyFile(operations, utimes, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
4251 }
4252 break;
4253
4254 case sourceStat.isSymbolicLink():
4255 {
4256 await copySymlink(operations, utimes, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
4257 }
4258 break;
4259
4260 default:
4261 {
4262 throw new Error(`Unsupported file type (${sourceStat.mode})`);
4263 }
4264 break;
4265 }
4266
4267 operations.push(async () => destinationFs.chmodPromise(destination, sourceStat.mode & 0o777));
4268}
4269
4270async function maybeLStat(baseFs, p) {
4271 try {
4272 return await baseFs.lstatPromise(p);
4273 } catch (e) {
4274 return null;
4275 }
4276}
4277
4278async function copyFolder(operations, utimes, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
4279 if (destinationStat !== null && !destinationStat.isDirectory()) {
4280 if (opts.overwrite) {
4281 operations.push(async () => destinationFs.removePromise(destination));
4282 destinationStat = null;
4283 } else {
4284 return;
4285 }
4286 }
4287
4288 if (destinationStat === null) operations.push(async () => destinationFs.mkdirPromise(destination, {
4289 mode: sourceStat.mode
4290 }));
4291 const entries = await sourceFs.readdirPromise(source);
4292 await Promise.all(entries.map(async entry => {
4293 await copyImpl(operations, utimes, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), opts);
4294 }));
4295}
4296
4297async function copyFile(operations, utimes, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
4298 if (destinationStat !== null) {
4299 if (opts.overwrite) {
4300 operations.push(async () => destinationFs.removePromise(destination));
4301 destinationStat = null;
4302 } else {
4303 return;
4304 }
4305 }
4306
4307 if (destinationFs === sourceFs) {
4308 operations.push(async () => destinationFs.copyFilePromise(source, destination, fs_1.default.constants.COPYFILE_FICLONE));
4309 } else {
4310 operations.push(async () => destinationFs.writeFilePromise(destination, (await sourceFs.readFilePromise(source))));
4311 }
4312}
4313
4314async function copySymlink(operations, utimes, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
4315 if (destinationStat !== null) {
4316 if (opts.overwrite) {
4317 operations.push(async () => destinationFs.removePromise(destination));
4318 destinationStat = null;
4319 } else {
4320 return;
4321 }
4322 }
4323
4324 const target = await sourceFs.readlinkPromise(source);
4325 operations.push(async () => destinationFs.symlinkPromise(path_1.convertPath(destinationFs.pathUtils, target), destination));
4326}
4327
4328/***/ }),
4329/* 14 */
4330/***/ (function(module, exports, __webpack_require__) {
4331
4332"use strict";
4333
4334
4335Object.defineProperty(exports, "__esModule", {
4336 value: true
4337});
4338
4339const ProxiedFS_1 = __webpack_require__(4);
4340
4341class AliasFS extends ProxiedFS_1.ProxiedFS {
4342 constructor(target, {
4343 baseFs,
4344 pathUtils
4345 }) {
4346 super(pathUtils);
4347 this.target = target;
4348 this.baseFs = baseFs;
4349 }
4350
4351 getRealPath() {
4352 return this.target;
4353 }
4354
4355 getBaseFs() {
4356 return this.baseFs;
4357 }
4358
4359 mapFromBase(p) {
4360 return p;
4361 }
4362
4363 mapToBase(p) {
4364 return p;
4365 }
4366
4367}
4368
4369exports.AliasFS = AliasFS;
4370
4371/***/ }),
4372/* 15 */
4373/***/ (function(module, exports, __webpack_require__) {
4374
4375"use strict";
4376
4377
4378Object.defineProperty(exports, "__esModule", {
4379 value: true
4380});
4381
4382const NodeFS_1 = __webpack_require__(1);
4383
4384const ProxiedFS_1 = __webpack_require__(4);
4385
4386const path_1 = __webpack_require__(0);
4387
4388class CwdFS extends ProxiedFS_1.ProxiedFS {
4389 constructor(target, {
4390 baseFs = new NodeFS_1.NodeFS()
4391 } = {}) {
4392 super(path_1.ppath);
4393 this.target = target;
4394 this.baseFs = baseFs;
4395 }
4396
4397 getRealPath() {
4398 return this.pathUtils.resolve(this.baseFs.getRealPath(), this.target);
4399 }
4400
4401 mapFromBase(path) {
4402 return this.pathUtils.relative(this.getRealPath(), path);
4403 }
4404
4405 mapToBase(path) {
4406 return this.pathUtils.resolve(this.getRealPath(), path);
4407 }
4408
4409}
4410
4411exports.CwdFS = CwdFS;
4412
4413/***/ }),
4414/* 16 */
4415/***/ (function(module, exports, __webpack_require__) {
4416
4417"use strict";
4418
4419
4420Object.defineProperty(exports, "__esModule", {
4421 value: true
4422});
4423
4424const NodeFS_1 = __webpack_require__(1);
4425
4426const ProxiedFS_1 = __webpack_require__(4);
4427
4428const path_1 = __webpack_require__(0);
4429
4430const JAIL_ROOT = path_1.PortablePath.root;
4431
4432class JailFS extends ProxiedFS_1.ProxiedFS {
4433 constructor(target, {
4434 baseFs = new NodeFS_1.NodeFS()
4435 } = {}) {
4436 super(path_1.ppath);
4437 this.target = this.pathUtils.resolve(path_1.PortablePath.root, target);
4438 this.baseFs = baseFs;
4439 }
4440
4441 getRealPath() {
4442 return this.pathUtils.resolve(this.baseFs.getRealPath(), this.pathUtils.relative(path_1.PortablePath.root, this.target));
4443 }
4444
4445 getTarget() {
4446 return this.target;
4447 }
4448
4449 getBaseFs() {
4450 return this.baseFs;
4451 }
4452
4453 mapToBase(p) {
4454 const normalized = this.pathUtils.normalize(p);
4455 if (this.pathUtils.isAbsolute(p)) return this.pathUtils.resolve(this.target, this.pathUtils.relative(JAIL_ROOT, p));
4456 if (normalized.match(/^\.\.\//)) throw new Error(`Resolving this path (${p}) would escape the jail`);
4457 return this.pathUtils.resolve(this.target, p);
4458 }
4459
4460 mapFromBase(p) {
4461 return this.pathUtils.resolve(JAIL_ROOT, this.pathUtils.relative(this.target, p));
4462 }
4463
4464}
4465
4466exports.JailFS = JailFS;
4467
4468/***/ }),
4469/* 17 */
4470/***/ (function(module, exports, __webpack_require__) {
4471
4472"use strict";
4473
4474
4475Object.defineProperty(exports, "__esModule", {
4476 value: true
4477});
4478
4479const ProxiedFS_1 = __webpack_require__(4);
4480
4481class LazyFS extends ProxiedFS_1.ProxiedFS {
4482 constructor(factory, pathUtils) {
4483 super(pathUtils);
4484 this.instance = null;
4485 this.factory = factory;
4486 }
4487
4488 get baseFs() {
4489 if (!this.instance) this.instance = this.factory();
4490 return this.instance;
4491 }
4492
4493 set baseFs(value) {
4494 this.instance = value;
4495 }
4496
4497 mapFromBase(p) {
4498 return p;
4499 }
4500
4501 mapToBase(p) {
4502 return p;
4503 }
4504
4505}
4506
4507exports.LazyFS = LazyFS;
4508
4509/***/ }),
4510/* 18 */
4511/***/ (function(module, exports, __webpack_require__) {
4512
4513"use strict";
4514
4515
4516Object.defineProperty(exports, "__esModule", {
4517 value: true
4518});
4519
4520const FakeFS_1 = __webpack_require__(3);
4521
4522const path_1 = __webpack_require__(0);
4523
4524const makeError = () => Object.assign(new Error(`ENOSYS: unsupported filesystem access`), {
4525 code: `ENOSYS`
4526});
4527
4528class NoFS extends FakeFS_1.FakeFS {
4529 constructor() {
4530 super(path_1.ppath);
4531 }
4532
4533 getExtractHint() {
4534 throw makeError();
4535 }
4536
4537 getRealPath() {
4538 throw makeError();
4539 }
4540
4541 resolve() {
4542 throw makeError();
4543 }
4544
4545 async openPromise() {
4546 throw makeError();
4547 }
4548
4549 openSync() {
4550 throw makeError();
4551 }
4552
4553 async readPromise() {
4554 throw makeError();
4555 }
4556
4557 readSync() {
4558 throw makeError();
4559 }
4560
4561 async writePromise() {
4562 throw makeError();
4563 }
4564
4565 writeSync() {
4566 throw makeError();
4567 }
4568
4569 async closePromise() {
4570 throw makeError();
4571 }
4572
4573 closeSync() {
4574 throw makeError();
4575 }
4576
4577 createWriteStream() {
4578 throw makeError();
4579 }
4580
4581 createReadStream() {
4582 throw makeError();
4583 }
4584
4585 async realpathPromise() {
4586 throw makeError();
4587 }
4588
4589 realpathSync() {
4590 throw makeError();
4591 }
4592
4593 async readdirPromise() {
4594 throw makeError();
4595 }
4596
4597 readdirSync() {
4598 throw makeError();
4599 }
4600
4601 async existsPromise(p) {
4602 throw makeError();
4603 }
4604
4605 existsSync(p) {
4606 throw makeError();
4607 }
4608
4609 async accessPromise() {
4610 throw makeError();
4611 }
4612
4613 accessSync() {
4614 throw makeError();
4615 }
4616
4617 async statPromise() {
4618 throw makeError();
4619 }
4620
4621 statSync() {
4622 throw makeError();
4623 }
4624
4625 async lstatPromise(p) {
4626 throw makeError();
4627 }
4628
4629 lstatSync(p) {
4630 throw makeError();
4631 }
4632
4633 async chmodPromise() {
4634 throw makeError();
4635 }
4636
4637 chmodSync() {
4638 throw makeError();
4639 }
4640
4641 async mkdirPromise() {
4642 throw makeError();
4643 }
4644
4645 mkdirSync() {
4646 throw makeError();
4647 }
4648
4649 async rmdirPromise() {
4650 throw makeError();
4651 }
4652
4653 rmdirSync() {
4654 throw makeError();
4655 }
4656
4657 async symlinkPromise() {
4658 throw makeError();
4659 }
4660
4661 symlinkSync() {
4662 throw makeError();
4663 }
4664
4665 async renamePromise() {
4666 throw makeError();
4667 }
4668
4669 renameSync() {
4670 throw makeError();
4671 }
4672
4673 async copyFilePromise() {
4674 throw makeError();
4675 }
4676
4677 copyFileSync() {
4678 throw makeError();
4679 }
4680
4681 async appendFilePromise() {
4682 throw makeError();
4683 }
4684
4685 appendFileSync() {
4686 throw makeError();
4687 }
4688
4689 async writeFilePromise() {
4690 throw makeError();
4691 }
4692
4693 writeFileSync() {
4694 throw makeError();
4695 }
4696
4697 async unlinkPromise() {
4698 throw makeError();
4699 }
4700
4701 unlinkSync() {
4702 throw makeError();
4703 }
4704
4705 async utimesPromise() {
4706 throw makeError();
4707 }
4708
4709 utimesSync() {
4710 throw makeError();
4711 }
4712
4713 async readFilePromise() {
4714 throw makeError();
4715 }
4716
4717 readFileSync() {
4718 throw makeError();
4719 }
4720
4721 async readlinkPromise() {
4722 throw makeError();
4723 }
4724
4725 readlinkSync() {
4726 throw makeError();
4727 }
4728
4729 watch() {
4730 throw makeError();
4731 }
4732
4733}
4734
4735exports.NoFS = NoFS;
4736NoFS.instance = new NoFS();
4737
4738/***/ }),
4739/* 19 */
4740/***/ (function(module, exports, __webpack_require__) {
4741
4742"use strict";
4743
4744
4745Object.defineProperty(exports, "__esModule", {
4746 value: true
4747});
4748
4749const ProxiedFS_1 = __webpack_require__(4);
4750
4751const path_1 = __webpack_require__(0);
4752
4753class PosixFS extends ProxiedFS_1.ProxiedFS {
4754 constructor(baseFs) {
4755 super(path_1.npath);
4756 this.baseFs = baseFs;
4757 }
4758
4759 mapFromBase(path) {
4760 return path_1.npath.fromPortablePath(path);
4761 }
4762
4763 mapToBase(path) {
4764 return path_1.npath.toPortablePath(path);
4765 }
4766
4767}
4768
4769exports.PosixFS = PosixFS;
4770
4771/***/ }),
4772/* 20 */
4773/***/ (function(module, exports, __webpack_require__) {
4774
4775"use strict";
4776
4777
4778Object.defineProperty(exports, "__esModule", {
4779 value: true
4780});
4781
4782const NodeFS_1 = __webpack_require__(1);
4783
4784const ProxiedFS_1 = __webpack_require__(4);
4785
4786const path_1 = __webpack_require__(0);
4787
4788const NUMBER_REGEXP = /^[0-9]+$/; // $0: full path
4789// $1: virtual folder
4790// $2: virtual segment
4791// $3: hash
4792// $4: depth
4793// $5: subpath
4794
4795const VIRTUAL_REGEXP = /^(\/(?:[^\/]+\/)*?\$\$virtual)((?:\/([^\/]+)(?:\/([^\/]+))?)?((?:\/.*)?))$/;
4796
4797class VirtualFS extends ProxiedFS_1.ProxiedFS {
4798 constructor({
4799 baseFs = new NodeFS_1.NodeFS()
4800 } = {}) {
4801 super(path_1.ppath);
4802 this.baseFs = baseFs;
4803 }
4804
4805 static makeVirtualPath(base, component, to) {
4806 if (path_1.ppath.basename(base) !== `$$virtual`) throw new Error(`Assertion failed: Virtual folders must be named "$$virtual"`); // Obtains the relative distance between the virtual path and its actual target
4807
4808 const target = path_1.ppath.relative(path_1.ppath.dirname(base), to);
4809 const segments = target.split(`/`); // Counts how many levels we need to go back to start applying the rest of the path
4810
4811 let depth = 0;
4812
4813 while (depth < segments.length && segments[depth] === `..`) depth += 1;
4814
4815 const finalSegments = segments.slice(depth);
4816 const fullVirtualPath = path_1.ppath.join(base, component, String(depth), ...finalSegments);
4817 return fullVirtualPath;
4818 }
4819
4820 static resolveVirtual(p) {
4821 const match = p.match(VIRTUAL_REGEXP);
4822 if (!match) return p;
4823 const target = path_1.ppath.dirname(match[1]);
4824 if (!match[3] || !match[4]) return target;
4825 const isnum = NUMBER_REGEXP.test(match[4]);
4826 if (!isnum) return p;
4827 const depth = Number(match[4]);
4828 const backstep = `../`.repeat(depth);
4829 const subpath = match[5] || `.`;
4830 return VirtualFS.resolveVirtual(path_1.ppath.join(target, backstep, subpath));
4831 }
4832
4833 getExtractHint(hints) {
4834 return this.baseFs.getExtractHint(hints);
4835 }
4836
4837 getRealPath() {
4838 return this.baseFs.getRealPath();
4839 }
4840
4841 realpathSync(p) {
4842 const match = p.match(VIRTUAL_REGEXP);
4843 if (!match) return this.baseFs.realpathSync(p);
4844 if (!match[5]) return p;
4845 const realpath = this.baseFs.realpathSync(this.mapToBase(p));
4846 return VirtualFS.makeVirtualPath(match[1], match[3], realpath);
4847 }
4848
4849 async realpathPromise(p) {
4850 const match = p.match(VIRTUAL_REGEXP);
4851 if (!match) return await this.baseFs.realpathPromise(p);
4852 if (!match[5]) return p;
4853 const realpath = await this.baseFs.realpathPromise(this.mapToBase(p));
4854 return VirtualFS.makeVirtualPath(match[1], match[3], realpath);
4855 }
4856
4857 mapToBase(p) {
4858 return VirtualFS.resolveVirtual(p);
4859 }
4860
4861 mapFromBase(p) {
4862 return p;
4863 }
4864
4865}
4866
4867exports.VirtualFS = VirtualFS;
4868
4869/***/ }),
4870/* 21 */
4871/***/ (function(module, exports) {
4872
4873module.exports = require("stream");
4874
4875/***/ }),
4876/* 22 */
4877/***/ (function(module, exports, __webpack_require__) {
4878
4879"use strict";
4880
4881
4882Object.defineProperty(exports, "__esModule", {
4883 value: true
4884});
4885
4886function makeError(code, message) {
4887 return Object.assign(new Error(`${code}: ${message}`), {
4888 code
4889 });
4890}
4891
4892function EBUSY(message) {
4893 return makeError(`EBUSY`, message);
4894}
4895
4896exports.EBUSY = EBUSY;
4897
4898function ENOSYS(message, reason) {
4899 return makeError(`ENOSYS`, `${message}, ${reason}`);
4900}
4901
4902exports.ENOSYS = ENOSYS;
4903
4904function EINVAL(reason) {
4905 return makeError(`EINVAL`, `invalid argument, ${reason}`);
4906}
4907
4908exports.EINVAL = EINVAL;
4909
4910function EBADF(reason) {
4911 return makeError(`EBADF`, `bad file descriptor, ${reason}`);
4912}
4913
4914exports.EBADF = EBADF;
4915
4916function ENOENT(reason) {
4917 return makeError(`ENOENT`, `no such file or directory, ${reason}`);
4918}
4919
4920exports.ENOENT = ENOENT;
4921
4922function ENOTDIR(reason) {
4923 return makeError(`ENOTDIR`, `not a directory, ${reason}`);
4924}
4925
4926exports.ENOTDIR = ENOTDIR;
4927
4928function EISDIR(reason) {
4929 return makeError(`EISDIR`, `illegal operation on a directory, ${reason}`);
4930}
4931
4932exports.EISDIR = EISDIR;
4933
4934function EEXIST(reason) {
4935 return makeError(`EEXIST`, `file already exists, ${reason}`);
4936}
4937
4938exports.EEXIST = EEXIST;
4939
4940function EROFS(reason) {
4941 return makeError(`EROFS`, `read-only filesystem, ${reason}`);
4942}
4943
4944exports.EROFS = EROFS;
4945
4946/***/ }),
4947/* 23 */
4948/***/ (function(module, exports, __webpack_require__) {
4949
4950"use strict";
4951
4952
4953Object.defineProperty(exports, "__esModule", {
4954 value: true
4955});
4956
4957const fs_1 = __webpack_require__(2);
4958
4959const FakeFS_1 = __webpack_require__(3);
4960
4961const NodeFS_1 = __webpack_require__(1);
4962
4963const ZipFS_1 = __webpack_require__(10);
4964
4965const path_1 = __webpack_require__(0);
4966
4967const ZIP_FD = 0x80000000;
4968
4969class ZipOpenFS extends FakeFS_1.BasePortableFakeFS {
4970 constructor({
4971 libzip,
4972 baseFs = new NodeFS_1.NodeFS(),
4973 filter = null,
4974 maxOpenFiles = Infinity,
4975 readOnlyArchives = false,
4976 useCache = true
4977 }) {
4978 super();
4979 this.fdMap = new Map();
4980 this.nextFd = 3;
4981 this.isZip = new Set();
4982 this.notZip = new Set();
4983 this.libzip = libzip;
4984 this.baseFs = baseFs;
4985 this.zipInstances = useCache ? new Map() : null;
4986 this.filter = filter;
4987 this.maxOpenFiles = maxOpenFiles;
4988 this.readOnlyArchives = readOnlyArchives;
4989 this.isZip = new Set();
4990 this.notZip = new Set();
4991 }
4992
4993 static async openPromise(fn, opts) {
4994 const zipOpenFs = new ZipOpenFS(opts);
4995
4996 try {
4997 return await fn(zipOpenFs);
4998 } finally {
4999 zipOpenFs.saveAndClose();
5000 }
5001 }
5002
5003 getExtractHint(hints) {
5004 return this.baseFs.getExtractHint(hints);
5005 }
5006
5007 getRealPath() {
5008 return this.baseFs.getRealPath();
5009 }
5010
5011 saveAndClose() {
5012 if (this.zipInstances) {
5013 for (const [path, zipFs] of this.zipInstances.entries()) {
5014 zipFs.saveAndClose();
5015 this.zipInstances.delete(path);
5016 }
5017 }
5018 }
5019
5020 discardAndClose() {
5021 if (this.zipInstances) {
5022 for (const [path, zipFs] of this.zipInstances.entries()) {
5023 zipFs.discardAndClose();
5024 this.zipInstances.delete(path);
5025 }
5026 }
5027 }
5028
5029 remapFd(zipFs, fd) {
5030 const remappedFd = this.nextFd++ | ZIP_FD;
5031 this.fdMap.set(remappedFd, [zipFs, fd]);
5032 return remappedFd;
5033 }
5034
5035 async openPromise(p, flags, mode) {
5036 return await this.makeCallPromise(p, async () => {
5037 return await this.baseFs.openPromise(p, flags, mode);
5038 }, async (zipFs, {
5039 subPath
5040 }) => {
5041 return this.remapFd(zipFs, (await zipFs.openPromise(subPath, flags, mode)));
5042 });
5043 }
5044
5045 openSync(p, flags, mode) {
5046 return this.makeCallSync(p, () => {
5047 return this.baseFs.openSync(p, flags, mode);
5048 }, (zipFs, {
5049 subPath
5050 }) => {
5051 return this.remapFd(zipFs, zipFs.openSync(subPath, flags, mode));
5052 });
5053 }
5054
5055 async readPromise(fd, buffer, offset, length, position) {
5056 if ((fd & ZIP_FD) === 0) return await this.baseFs.readPromise(fd, buffer, offset, length, position);
5057 const entry = this.fdMap.get(fd);
5058 if (typeof entry === `undefined`) throw Object.assign(new Error(`EBADF: bad file descriptor, read`), {
5059 code: `EBADF`
5060 });
5061 const [zipFs, realFd] = entry;
5062 return await zipFs.readPromise(realFd, buffer, offset, length, position);
5063 }
5064
5065 readSync(fd, buffer, offset, length, position) {
5066 if ((fd & ZIP_FD) === 0) return this.baseFs.readSync(fd, buffer, offset, length, position);
5067 const entry = this.fdMap.get(fd);
5068 if (typeof entry === `undefined`) throw Object.assign(new Error(`EBADF: bad file descriptor, read`), {
5069 code: `EBADF`
5070 });
5071 const [zipFs, realFd] = entry;
5072 return zipFs.readSync(realFd, buffer, offset, length, position);
5073 }
5074
5075 async writePromise(fd, buffer, offset, length, position) {
5076 if ((fd & ZIP_FD) === 0) {
5077 if (typeof buffer === `string`) {
5078 return await this.baseFs.writePromise(fd, buffer, offset);
5079 } else {
5080 return await this.baseFs.writePromise(fd, buffer, offset, length, position);
5081 }
5082 }
5083
5084 const entry = this.fdMap.get(fd);
5085 if (typeof entry === `undefined`) throw Object.assign(new Error(`EBADF: bad file descriptor, write`), {
5086 code: `EBADF`
5087 });
5088 const [zipFs, realFd] = entry;
5089
5090 if (typeof buffer === `string`) {
5091 return await zipFs.writePromise(realFd, buffer, offset);
5092 } else {
5093 return await zipFs.writePromise(realFd, buffer, offset, length, position);
5094 }
5095 }
5096
5097 writeSync(fd, buffer, offset, length, position) {
5098 if ((fd & ZIP_FD) === 0) {
5099 if (typeof buffer === `string`) {
5100 return this.baseFs.writeSync(fd, buffer, offset);
5101 } else {
5102 return this.baseFs.writeSync(fd, buffer, offset, length, position);
5103 }
5104 }
5105
5106 const entry = this.fdMap.get(fd);
5107 if (typeof entry === `undefined`) throw Object.assign(new Error(`EBADF: bad file descriptor, write`), {
5108 code: `EBADF`
5109 });
5110 const [zipFs, realFd] = entry;
5111
5112 if (typeof buffer === `string`) {
5113 return zipFs.writeSync(realFd, buffer, offset);
5114 } else {
5115 return zipFs.writeSync(realFd, buffer, offset, length, position);
5116 }
5117 }
5118
5119 async closePromise(fd) {
5120 if ((fd & ZIP_FD) === 0) return await this.baseFs.closePromise(fd);
5121 const entry = this.fdMap.get(fd);
5122 if (typeof entry === `undefined`) throw Object.assign(new Error(`EBADF: bad file descriptor, close`), {
5123 code: `EBADF`
5124 });
5125 this.fdMap.delete(fd);
5126 const [zipFs, realFd] = entry;
5127 return await zipFs.closePromise(realFd);
5128 }
5129
5130 closeSync(fd) {
5131 if ((fd & ZIP_FD) === 0) return this.baseFs.closeSync(fd);
5132 const entry = this.fdMap.get(fd);
5133 if (typeof entry === `undefined`) throw Object.assign(new Error(`EBADF: bad file descriptor, close`), {
5134 code: `EBADF`
5135 });
5136 this.fdMap.delete(fd);
5137 const [zipFs, realFd] = entry;
5138 return zipFs.closeSync(realFd);
5139 }
5140
5141 createReadStream(p, opts) {
5142 if (p === null) return this.baseFs.createReadStream(p, opts);
5143 return this.makeCallSync(p, () => {
5144 return this.baseFs.createReadStream(p, opts);
5145 }, (zipFs, {
5146 subPath
5147 }) => {
5148 return zipFs.createReadStream(subPath, opts);
5149 });
5150 }
5151
5152 createWriteStream(p, opts) {
5153 if (p === null) return this.baseFs.createWriteStream(p, opts);
5154 return this.makeCallSync(p, () => {
5155 return this.baseFs.createWriteStream(p, opts);
5156 }, (zipFs, {
5157 subPath
5158 }) => {
5159 return zipFs.createWriteStream(subPath, opts);
5160 });
5161 }
5162
5163 async realpathPromise(p) {
5164 return await this.makeCallPromise(p, async () => {
5165 return await this.baseFs.realpathPromise(p);
5166 }, async (zipFs, {
5167 archivePath,
5168 subPath
5169 }) => {
5170 return this.pathUtils.resolve((await this.baseFs.realpathPromise(archivePath)), this.pathUtils.relative(path_1.PortablePath.root, (await zipFs.realpathPromise(subPath))));
5171 });
5172 }
5173
5174 realpathSync(p) {
5175 return this.makeCallSync(p, () => {
5176 return this.baseFs.realpathSync(p);
5177 }, (zipFs, {
5178 archivePath,
5179 subPath
5180 }) => {
5181 return this.pathUtils.resolve(this.baseFs.realpathSync(archivePath), this.pathUtils.relative(path_1.PortablePath.root, zipFs.realpathSync(subPath)));
5182 });
5183 }
5184
5185 async existsPromise(p) {
5186 return await this.makeCallPromise(p, async () => {
5187 return await this.baseFs.existsPromise(p);
5188 }, async (zipFs, {
5189 subPath
5190 }) => {
5191 return await zipFs.existsPromise(subPath);
5192 });
5193 }
5194
5195 existsSync(p) {
5196 return this.makeCallSync(p, () => {
5197 return this.baseFs.existsSync(p);
5198 }, (zipFs, {
5199 subPath
5200 }) => {
5201 return zipFs.existsSync(subPath);
5202 });
5203 }
5204
5205 async accessPromise(p, mode) {
5206 return await this.makeCallPromise(p, async () => {
5207 return await this.baseFs.accessPromise(p, mode);
5208 }, async (zipFs, {
5209 subPath
5210 }) => {
5211 return await zipFs.accessPromise(subPath, mode);
5212 });
5213 }
5214
5215 accessSync(p, mode) {
5216 return this.makeCallSync(p, () => {
5217 return this.baseFs.accessSync(p, mode);
5218 }, (zipFs, {
5219 subPath
5220 }) => {
5221 return zipFs.accessSync(subPath, mode);
5222 });
5223 }
5224
5225 async statPromise(p) {
5226 return await this.makeCallPromise(p, async () => {
5227 return await this.baseFs.statPromise(p);
5228 }, async (zipFs, {
5229 subPath
5230 }) => {
5231 return await zipFs.statPromise(subPath);
5232 });
5233 }
5234
5235 statSync(p) {
5236 return this.makeCallSync(p, () => {
5237 return this.baseFs.statSync(p);
5238 }, (zipFs, {
5239 subPath
5240 }) => {
5241 return zipFs.statSync(subPath);
5242 });
5243 }
5244
5245 async lstatPromise(p) {
5246 return await this.makeCallPromise(p, async () => {
5247 return await this.baseFs.lstatPromise(p);
5248 }, async (zipFs, {
5249 subPath
5250 }) => {
5251 return await zipFs.lstatPromise(subPath);
5252 });
5253 }
5254
5255 lstatSync(p) {
5256 return this.makeCallSync(p, () => {
5257 return this.baseFs.lstatSync(p);
5258 }, (zipFs, {
5259 subPath
5260 }) => {
5261 return zipFs.lstatSync(subPath);
5262 });
5263 }
5264
5265 async chmodPromise(p, mask) {
5266 return await this.makeCallPromise(p, async () => {
5267 return await this.baseFs.chmodPromise(p, mask);
5268 }, async (zipFs, {
5269 subPath
5270 }) => {
5271 return await zipFs.chmodPromise(subPath, mask);
5272 });
5273 }
5274
5275 chmodSync(p, mask) {
5276 return this.makeCallSync(p, () => {
5277 return this.baseFs.chmodSync(p, mask);
5278 }, (zipFs, {
5279 subPath
5280 }) => {
5281 return zipFs.chmodSync(subPath, mask);
5282 });
5283 }
5284
5285 async renamePromise(oldP, newP) {
5286 return await this.makeCallPromise(oldP, async () => {
5287 return await this.makeCallPromise(newP, async () => {
5288 return await this.baseFs.renamePromise(oldP, newP);
5289 }, async () => {
5290 throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), {
5291 code: `EEXDEV`
5292 });
5293 });
5294 }, async (zipFsO, {
5295 subPath: subPathO
5296 }) => {
5297 return await this.makeCallPromise(newP, async () => {
5298 throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), {
5299 code: `EEXDEV`
5300 });
5301 }, async (zipFsN, {
5302 subPath: subPathN
5303 }) => {
5304 if (zipFsO !== zipFsN) {
5305 throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), {
5306 code: `EEXDEV`
5307 });
5308 } else {
5309 return await zipFsO.renamePromise(subPathO, subPathN);
5310 }
5311 });
5312 });
5313 }
5314
5315 renameSync(oldP, newP) {
5316 return this.makeCallSync(oldP, () => {
5317 return this.makeCallSync(newP, () => {
5318 return this.baseFs.renameSync(oldP, newP);
5319 }, async () => {
5320 throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), {
5321 code: `EEXDEV`
5322 });
5323 });
5324 }, (zipFsO, {
5325 subPath: subPathO
5326 }) => {
5327 return this.makeCallSync(newP, () => {
5328 throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), {
5329 code: `EEXDEV`
5330 });
5331 }, (zipFsN, {
5332 subPath: subPathN
5333 }) => {
5334 if (zipFsO !== zipFsN) {
5335 throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), {
5336 code: `EEXDEV`
5337 });
5338 } else {
5339 return zipFsO.renameSync(subPathO, subPathN);
5340 }
5341 });
5342 });
5343 }
5344
5345 async copyFilePromise(sourceP, destP, flags = 0) {
5346 const fallback = async (sourceFs, sourceP, destFs, destP) => {
5347 if ((flags & fs_1.constants.COPYFILE_FICLONE_FORCE) !== 0) throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP}' -> ${destP}'`), {
5348 code: `EXDEV`
5349 });
5350 if (flags & fs_1.constants.COPYFILE_EXCL && (await this.existsPromise(sourceP))) throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP}' -> '${destP}'`), {
5351 code: `EEXIST`
5352 });
5353 let content;
5354
5355 try {
5356 content = await sourceFs.readFilePromise(sourceP);
5357 } catch (error) {
5358 throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP}' -> '${destP}'`), {
5359 code: `EINVAL`
5360 });
5361 }
5362
5363 await destFs.writeFilePromise(destP, content);
5364 };
5365
5366 return await this.makeCallPromise(sourceP, async () => {
5367 return await this.makeCallPromise(destP, async () => {
5368 return await this.baseFs.copyFilePromise(sourceP, destP, flags);
5369 }, async (zipFsD, {
5370 subPath: subPathD
5371 }) => {
5372 return await fallback(this.baseFs, sourceP, zipFsD, subPathD);
5373 });
5374 }, async (zipFsS, {
5375 subPath: subPathS
5376 }) => {
5377 return await this.makeCallPromise(destP, async () => {
5378 return await fallback(zipFsS, subPathS, this.baseFs, destP);
5379 }, async (zipFsD, {
5380 subPath: subPathD
5381 }) => {
5382 if (zipFsS !== zipFsD) {
5383 return await fallback(zipFsS, subPathS, zipFsD, subPathD);
5384 } else {
5385 return await zipFsS.copyFilePromise(subPathS, subPathD, flags);
5386 }
5387 });
5388 });
5389 }
5390
5391 copyFileSync(sourceP, destP, flags = 0) {
5392 const fallback = (sourceFs, sourceP, destFs, destP) => {
5393 if ((flags & fs_1.constants.COPYFILE_FICLONE_FORCE) !== 0) throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP}' -> ${destP}'`), {
5394 code: `EXDEV`
5395 });
5396 if (flags & fs_1.constants.COPYFILE_EXCL && this.existsSync(sourceP)) throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP}' -> '${destP}'`), {
5397 code: `EEXIST`
5398 });
5399 let content;
5400
5401 try {
5402 content = sourceFs.readFileSync(sourceP);
5403 } catch (error) {
5404 throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP}' -> '${destP}'`), {
5405 code: `EINVAL`
5406 });
5407 }
5408
5409 destFs.writeFileSync(destP, content);
5410 };
5411
5412 return this.makeCallSync(sourceP, () => {
5413 return this.makeCallSync(destP, () => {
5414 return this.baseFs.copyFileSync(sourceP, destP, flags);
5415 }, (zipFsD, {
5416 subPath: subPathD
5417 }) => {
5418 return fallback(this.baseFs, sourceP, zipFsD, subPathD);
5419 });
5420 }, (zipFsS, {
5421 subPath: subPathS
5422 }) => {
5423 return this.makeCallSync(destP, () => {
5424 return fallback(zipFsS, subPathS, this.baseFs, destP);
5425 }, (zipFsD, {
5426 subPath: subPathD
5427 }) => {
5428 if (zipFsS !== zipFsD) {
5429 return fallback(zipFsS, subPathS, zipFsD, subPathD);
5430 } else {
5431 return zipFsS.copyFileSync(subPathS, subPathD, flags);
5432 }
5433 });
5434 });
5435 }
5436
5437 async appendFilePromise(p, content, opts) {
5438 return await this.makeCallPromise(p, async () => {
5439 return await this.baseFs.appendFilePromise(p, content, opts);
5440 }, async (zipFs, {
5441 subPath
5442 }) => {
5443 return await zipFs.appendFilePromise(subPath, content, opts);
5444 });
5445 }
5446
5447 appendFileSync(p, content, opts) {
5448 return this.makeCallSync(p, () => {
5449 return this.baseFs.appendFileSync(p, content, opts);
5450 }, (zipFs, {
5451 subPath
5452 }) => {
5453 return zipFs.appendFileSync(subPath, content, opts);
5454 });
5455 }
5456
5457 async writeFilePromise(p, content, opts) {
5458 return await this.makeCallPromise(p, async () => {
5459 return await this.baseFs.writeFilePromise(p, content, opts);
5460 }, async (zipFs, {
5461 subPath
5462 }) => {
5463 return await zipFs.writeFilePromise(subPath, content, opts);
5464 });
5465 }
5466
5467 writeFileSync(p, content, opts) {
5468 return this.makeCallSync(p, () => {
5469 return this.baseFs.writeFileSync(p, content, opts);
5470 }, (zipFs, {
5471 subPath
5472 }) => {
5473 return zipFs.writeFileSync(subPath, content, opts);
5474 });
5475 }
5476
5477 async unlinkPromise(p) {
5478 return await this.makeCallPromise(p, async () => {
5479 return await this.baseFs.unlinkPromise(p);
5480 }, async (zipFs, {
5481 subPath
5482 }) => {
5483 return await zipFs.unlinkPromise(subPath);
5484 });
5485 }
5486
5487 unlinkSync(p) {
5488 return this.makeCallSync(p, () => {
5489 return this.baseFs.unlinkSync(p);
5490 }, (zipFs, {
5491 subPath
5492 }) => {
5493 return zipFs.unlinkSync(subPath);
5494 });
5495 }
5496
5497 async utimesPromise(p, atime, mtime) {
5498 return await this.makeCallPromise(p, async () => {
5499 return await this.baseFs.utimesPromise(p, atime, mtime);
5500 }, async (zipFs, {
5501 subPath
5502 }) => {
5503 return await zipFs.utimesPromise(subPath, atime, mtime);
5504 });
5505 }
5506
5507 utimesSync(p, atime, mtime) {
5508 return this.makeCallSync(p, () => {
5509 return this.baseFs.utimesSync(p, atime, mtime);
5510 }, (zipFs, {
5511 subPath
5512 }) => {
5513 return zipFs.utimesSync(subPath, atime, mtime);
5514 });
5515 }
5516
5517 async mkdirPromise(p, opts) {
5518 return await this.makeCallPromise(p, async () => {
5519 return await this.baseFs.mkdirPromise(p, opts);
5520 }, async (zipFs, {
5521 subPath
5522 }) => {
5523 return await zipFs.mkdirPromise(subPath, opts);
5524 });
5525 }
5526
5527 mkdirSync(p, opts) {
5528 return this.makeCallSync(p, () => {
5529 return this.baseFs.mkdirSync(p, opts);
5530 }, (zipFs, {
5531 subPath
5532 }) => {
5533 return zipFs.mkdirSync(subPath, opts);
5534 });
5535 }
5536
5537 async rmdirPromise(p) {
5538 return await this.makeCallPromise(p, async () => {
5539 return await this.baseFs.rmdirPromise(p);
5540 }, async (zipFs, {
5541 subPath
5542 }) => {
5543 return await zipFs.rmdirPromise(subPath);
5544 });
5545 }
5546
5547 rmdirSync(p) {
5548 return this.makeCallSync(p, () => {
5549 return this.baseFs.rmdirSync(p);
5550 }, (zipFs, {
5551 subPath
5552 }) => {
5553 return zipFs.rmdirSync(subPath);
5554 });
5555 }
5556
5557 async symlinkPromise(target, p, type) {
5558 return await this.makeCallPromise(p, async () => {
5559 return await this.baseFs.symlinkPromise(target, p, type);
5560 }, async (zipFs, {
5561 subPath
5562 }) => {
5563 return await zipFs.symlinkPromise(target, subPath);
5564 });
5565 }
5566
5567 symlinkSync(target, p, type) {
5568 return this.makeCallSync(p, () => {
5569 return this.baseFs.symlinkSync(target, p, type);
5570 }, (zipFs, {
5571 subPath
5572 }) => {
5573 return zipFs.symlinkSync(target, subPath);
5574 });
5575 }
5576
5577 async readFilePromise(p, encoding) {
5578 return this.makeCallPromise(p, async () => {
5579 // This weird switch is required to tell TypeScript that the signatures are proper (otherwise it thinks that only the generic one is covered)
5580 switch (encoding) {
5581 case `utf8`:
5582 return await this.baseFs.readFilePromise(p, encoding);
5583
5584 default:
5585 return await this.baseFs.readFilePromise(p, encoding);
5586 }
5587 }, async (zipFs, {
5588 subPath
5589 }) => {
5590 return await zipFs.readFilePromise(subPath, encoding);
5591 });
5592 }
5593
5594 readFileSync(p, encoding) {
5595 return this.makeCallSync(p, () => {
5596 // This weird switch is required to tell TypeScript that the signatures are proper (otherwise it thinks that only the generic one is covered)
5597 switch (encoding) {
5598 case `utf8`:
5599 return this.baseFs.readFileSync(p, encoding);
5600
5601 default:
5602 return this.baseFs.readFileSync(p, encoding);
5603 }
5604 }, (zipFs, {
5605 subPath
5606 }) => {
5607 return zipFs.readFileSync(subPath, encoding);
5608 });
5609 }
5610
5611 async readdirPromise(p, {
5612 withFileTypes
5613 } = {}) {
5614 return await this.makeCallPromise(p, async () => {
5615 return await this.baseFs.readdirPromise(p, {
5616 withFileTypes: withFileTypes
5617 });
5618 }, async (zipFs, {
5619 subPath
5620 }) => {
5621 return await zipFs.readdirPromise(subPath, {
5622 withFileTypes: withFileTypes
5623 });
5624 }, {
5625 requireSubpath: false
5626 });
5627 }
5628
5629 readdirSync(p, {
5630 withFileTypes
5631 } = {}) {
5632 return this.makeCallSync(p, () => {
5633 return this.baseFs.readdirSync(p, {
5634 withFileTypes: withFileTypes
5635 });
5636 }, (zipFs, {
5637 subPath
5638 }) => {
5639 return zipFs.readdirSync(subPath, {
5640 withFileTypes: withFileTypes
5641 });
5642 }, {
5643 requireSubpath: false
5644 });
5645 }
5646
5647 async readlinkPromise(p) {
5648 return await this.makeCallPromise(p, async () => {
5649 return await this.baseFs.readlinkPromise(p);
5650 }, async (zipFs, {
5651 subPath
5652 }) => {
5653 return await zipFs.readlinkPromise(subPath);
5654 });
5655 }
5656
5657 readlinkSync(p) {
5658 return this.makeCallSync(p, () => {
5659 return this.baseFs.readlinkSync(p);
5660 }, (zipFs, {
5661 subPath
5662 }) => {
5663 return zipFs.readlinkSync(subPath);
5664 });
5665 }
5666
5667 watch(p, a, b) {
5668 return this.makeCallSync(p, () => {
5669 return this.baseFs.watch(p, // @ts-ignore
5670 a, b);
5671 }, (zipFs, {
5672 subPath
5673 }) => {
5674 return zipFs.watch(subPath, // @ts-ignore
5675 a, b);
5676 });
5677 }
5678
5679 async makeCallPromise(p, discard, accept, {
5680 requireSubpath = true
5681 } = {}) {
5682 if (typeof p !== `string`) return await discard();
5683 const normalizedP = this.pathUtils.normalize(this.pathUtils.resolve(path_1.PortablePath.root, p));
5684 const zipInfo = this.findZip(normalizedP);
5685 if (!zipInfo) return await discard();
5686 if (requireSubpath && zipInfo.subPath === `/`) return await discard();
5687 return await this.getZipPromise(zipInfo.archivePath, async zipFs => await accept(zipFs, zipInfo));
5688 }
5689
5690 makeCallSync(p, discard, accept, {
5691 requireSubpath = true
5692 } = {}) {
5693 if (typeof p !== `string`) return discard();
5694 const normalizedP = this.pathUtils.normalize(this.pathUtils.resolve(path_1.PortablePath.root, p));
5695 const zipInfo = this.findZip(normalizedP);
5696 if (!zipInfo) return discard();
5697 if (requireSubpath && zipInfo.subPath === `/`) return discard();
5698 return this.getZipSync(zipInfo.archivePath, zipFs => accept(zipFs, zipInfo));
5699 }
5700
5701 findZip(p) {
5702 if (this.filter && !this.filter.test(p)) return null;
5703 const parts = p.split(/\//g);
5704
5705 for (let t = 2; t <= parts.length; ++t) {
5706 const archivePath = parts.slice(0, t).join(`/`);
5707 if (this.notZip.has(archivePath)) continue;
5708 if (this.isZip.has(archivePath)) return {
5709 archivePath,
5710 subPath: this.pathUtils.resolve(path_1.PortablePath.root, parts.slice(t).join(`/`))
5711 };
5712 let realArchivePath = archivePath;
5713 let stat;
5714
5715 while (true) {
5716 try {
5717 stat = this.baseFs.lstatSync(realArchivePath);
5718 } catch (error) {
5719 return null;
5720 }
5721
5722 if (stat.isSymbolicLink()) {
5723 realArchivePath = this.pathUtils.resolve(this.pathUtils.dirname(realArchivePath), this.baseFs.readlinkSync(realArchivePath));
5724 } else {
5725 break;
5726 }
5727 }
5728
5729 const isZip = stat.isFile() && this.pathUtils.extname(realArchivePath) === `.zip`;
5730
5731 if (isZip) {
5732 this.isZip.add(archivePath);
5733 return {
5734 archivePath,
5735 subPath: this.pathUtils.resolve(path_1.PortablePath.root, parts.slice(t).join(`/`))
5736 };
5737 } else {
5738 this.notZip.add(archivePath);
5739
5740 if (stat.isFile()) {
5741 return null;
5742 }
5743 }
5744 }
5745
5746 return null;
5747 }
5748
5749 limitOpenFiles(max) {
5750 if (this.zipInstances === null) return;
5751 let closeCount = this.zipInstances.size - max;
5752
5753 for (const [path, zipFs] of this.zipInstances.entries()) {
5754 if (closeCount <= 0) break;
5755 zipFs.saveAndClose();
5756 this.zipInstances.delete(path);
5757 closeCount -= 1;
5758 }
5759 }
5760
5761 async getZipPromise(p, accept) {
5762 const getZipOptions = async () => ({
5763 baseFs: this.baseFs,
5764 libzip: this.libzip,
5765 readOnly: this.readOnlyArchives,
5766 stats: await this.baseFs.statPromise(p)
5767 });
5768
5769 if (this.zipInstances) {
5770 let zipFs = this.zipInstances.get(p);
5771 if (!zipFs) zipFs = new ZipFS_1.ZipFS(p, (await getZipOptions())); // Removing then re-adding the field allows us to easily implement
5772 // a basic LRU garbage collection strategy
5773
5774 this.zipInstances.delete(p);
5775 this.zipInstances.set(p, zipFs);
5776 this.limitOpenFiles(this.maxOpenFiles);
5777 return await accept(zipFs);
5778 } else {
5779 const zipFs = new ZipFS_1.ZipFS(p, (await getZipOptions()));
5780
5781 try {
5782 return await accept(zipFs);
5783 } finally {
5784 zipFs.saveAndClose();
5785 }
5786 }
5787 }
5788
5789 getZipSync(p, accept) {
5790 const getZipOptions = () => ({
5791 baseFs: this.baseFs,
5792 libzip: this.libzip,
5793 readOnly: this.readOnlyArchives,
5794 stats: this.baseFs.statSync(p)
5795 });
5796
5797 if (this.zipInstances) {
5798 let zipFs = this.zipInstances.get(p);
5799 if (!zipFs) zipFs = new ZipFS_1.ZipFS(p, getZipOptions()); // Removing then re-adding the field allows us to easily implement
5800 // a basic LRU garbage collection strategy
5801
5802 this.zipInstances.delete(p);
5803 this.zipInstances.set(p, zipFs);
5804 this.limitOpenFiles(this.maxOpenFiles);
5805 return accept(zipFs);
5806 } else {
5807 const zipFs = new ZipFS_1.ZipFS(p, getZipOptions());
5808
5809 try {
5810 return accept(zipFs);
5811 } finally {
5812 zipFs.saveAndClose();
5813 }
5814 }
5815 }
5816
5817}
5818
5819exports.ZipOpenFS = ZipOpenFS;
5820
5821/***/ }),
5822/* 24 */
5823/***/ (function(module, exports, __webpack_require__) {
5824
5825"use strict";
5826
5827
5828Object.defineProperty(exports, "__esModule", {
5829 value: true
5830});
5831
5832const makeInterface_1 = __webpack_require__(25);
5833
5834let mod = null;
5835
5836function getLibzipSync() {
5837 if (mod === null) mod = makeInterface_1.makeInterface(__webpack_require__(26));
5838 return mod;
5839}
5840
5841exports.getLibzipSync = getLibzipSync;
5842
5843async function getLibzipPromise() {
5844 return getLibzipSync();
5845}
5846
5847exports.getLibzipPromise = getLibzipPromise;
5848
5849/***/ }),
5850/* 25 */
5851/***/ (function(module, exports, __webpack_require__) {
5852
5853"use strict";
5854
5855
5856Object.defineProperty(exports, "__esModule", {
5857 value: true
5858});
5859const number64 = [`number`, `number`];
5860
5861exports.makeInterface = libzip => ({
5862 // Those are getters because they can change after memory growth
5863 get HEAP8() {
5864 return libzip.HEAP8;
5865 },
5866
5867 get HEAPU8() {
5868 return libzip.HEAPU8;
5869 },
5870
5871 ZIP_CHECKCONS: 4,
5872 ZIP_CREATE: 1,
5873 ZIP_EXCL: 2,
5874 ZIP_TRUNCATE: 8,
5875 ZIP_RDONLY: 16,
5876 ZIP_FL_OVERWRITE: 8192,
5877 ZIP_OPSYS_DOS: 0x00,
5878 ZIP_OPSYS_AMIGA: 0x01,
5879 ZIP_OPSYS_OPENVMS: 0x02,
5880 ZIP_OPSYS_UNIX: 0x03,
5881 ZIP_OPSYS_VM_CMS: 0x04,
5882 ZIP_OPSYS_ATARI_ST: 0x05,
5883 ZIP_OPSYS_OS_2: 0x06,
5884 ZIP_OPSYS_MACINTOSH: 0x07,
5885 ZIP_OPSYS_Z_SYSTEM: 0x08,
5886 ZIP_OPSYS_CPM: 0x09,
5887 ZIP_OPSYS_WINDOWS_NTFS: 0x0a,
5888 ZIP_OPSYS_MVS: 0x0b,
5889 ZIP_OPSYS_VSE: 0x0c,
5890 ZIP_OPSYS_ACORN_RISC: 0x0d,
5891 ZIP_OPSYS_VFAT: 0x0e,
5892 ZIP_OPSYS_ALTERNATE_MVS: 0x0f,
5893 ZIP_OPSYS_BEOS: 0x10,
5894 ZIP_OPSYS_TANDEM: 0x11,
5895 ZIP_OPSYS_OS_400: 0x12,
5896 ZIP_OPSYS_OS_X: 0x13,
5897 uint08S: libzip._malloc(1),
5898 uint16S: libzip._malloc(2),
5899 uint32S: libzip._malloc(4),
5900 uint64S: libzip._malloc(8),
5901 malloc: libzip._malloc,
5902 free: libzip._free,
5903 getValue: libzip.getValue,
5904 open: libzip.cwrap(`zip_open`, `number`, [`string`, `number`, `number`]),
5905 openFromSource: libzip.cwrap(`zip_open_from_source`, `number`, [`number`, `number`, `number`]),
5906 close: libzip.cwrap(`zip_close`, `number`, [`number`]),
5907 discard: libzip.cwrap(`zip_discard`, null, [`number`]),
5908 getError: libzip.cwrap(`zip_get_error`, `number`, [`number`]),
5909 getName: libzip.cwrap(`zip_get_name`, `string`, [`number`, `number`, `number`]),
5910 getNumEntries: libzip.cwrap(`zip_get_num_entries`, `number`, [`number`, `number`]),
5911 stat: libzip.cwrap(`zip_stat`, `number`, [`number`, `string`, `number`, `number`]),
5912 statIndex: libzip.cwrap(`zip_stat_index`, `number`, [`number`, ...number64, `number`, `number`]),
5913 fopen: libzip.cwrap(`zip_fopen`, `number`, [`number`, `string`, `number`]),
5914 fopenIndex: libzip.cwrap(`zip_fopen_index`, `number`, [`number`, ...number64, `number`]),
5915 fread: libzip.cwrap(`zip_fread`, `number`, [`number`, `number`, `number`, `number`]),
5916 fclose: libzip.cwrap(`zip_fclose`, `number`, [`number`]),
5917 dir: {
5918 add: libzip.cwrap(`zip_dir_add`, `number`, [`number`, `string`])
5919 },
5920 file: {
5921 add: libzip.cwrap(`zip_file_add`, `number`, [`number`, `string`, `number`, `number`]),
5922 getError: libzip.cwrap(`zip_file_get_error`, `number`, [`number`]),
5923 getExternalAttributes: libzip.cwrap(`zip_file_get_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]),
5924 setExternalAttributes: libzip.cwrap(`zip_file_set_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]),
5925 setMtime: libzip.cwrap(`zip_file_set_mtime`, `number`, [`number`, ...number64, `number`, `number`])
5926 },
5927 error: {
5928 initWithCode: libzip.cwrap(`zip_error_init_with_code`, null, [`number`, `number`]),
5929 strerror: libzip.cwrap(`zip_error_strerror`, `string`, [`number`])
5930 },
5931 name: {
5932 locate: libzip.cwrap(`zip_name_locate`, `number`, [`number`, `string`, `number`])
5933 },
5934 source: {
5935 fromUnattachedBuffer: libzip.cwrap(`zip_source_buffer_create`, `number`, [`number`, `number`, `number`, `number`]),
5936 fromBuffer: libzip.cwrap(`zip_source_buffer`, `number`, [`number`, `number`, ...number64, `number`]),
5937 free: libzip.cwrap(`zip_source_free`, null, [`number`]),
5938 setMtime: libzip.cwrap(`zip_source_set_mtime`, `number`, [`number`, `number`])
5939 },
5940 struct: {
5941 stat: libzip.cwrap(`zipstruct_stat`, `number`, []),
5942 statS: libzip.cwrap(`zipstruct_statS`, `number`, []),
5943 statName: libzip.cwrap(`zipstruct_stat_name`, `string`, [`number`]),
5944 statIndex: libzip.cwrap(`zipstruct_stat_index`, `number`, [`number`]),
5945 statSize: libzip.cwrap(`zipstruct_stat_size`, `number`, [`number`]),
5946 statMtime: libzip.cwrap(`zipstruct_stat_mtime`, `number`, [`number`]),
5947 error: libzip.cwrap(`zipstruct_error`, `number`, []),
5948 errorS: libzip.cwrap(`zipstruct_errorS`, `number`, [])
5949 }
5950});
5951
5952/***/ }),
5953/* 26 */
5954/***/ (function(module, exports, __webpack_require__) {
5955
5956var frozenFs = Object.assign({}, __webpack_require__(2));
5957var Module = typeof Module !== "undefined" ? Module : {};
5958var moduleOverrides = {};
5959var key;
5960for (key in Module) {
5961 if (Module.hasOwnProperty(key)) {
5962 moduleOverrides[key] = Module[key];
5963 }
5964}
5965var arguments_ = [];
5966var thisProgram = "./this.program";
5967var quit_ = function(status, toThrow) {
5968 throw toThrow;
5969};
5970var ENVIRONMENT_IS_WORKER = false;
5971var ENVIRONMENT_IS_NODE = true;
5972var ENVIRONMENT_HAS_NODE = ENVIRONMENT_IS_NODE;
5973var scriptDirectory = "";
5974function locateFile(path) {
5975 if (Module["locateFile"]) {
5976 return Module["locateFile"](path, scriptDirectory);
5977 }
5978 return scriptDirectory + path;
5979}
5980var read_, readBinary;
5981var nodeFS;
5982var nodePath;
5983if (ENVIRONMENT_IS_NODE) {
5984 scriptDirectory = __dirname + "/";
5985 read_ = function shell_read(filename, binary) {
5986 var ret;
5987 ret = tryParseAsDataURI(filename);
5988 if (ret) {
5989 return binary ? ret : ret.toString();
5990 }
5991 if (!nodeFS) nodeFS = frozenFs;
5992 if (!nodePath) nodePath = __webpack_require__(7);
5993 filename = nodePath["normalize"](filename);
5994 return nodeFS["readFileSync"](filename, binary ? null : "utf8");
5995 };
5996 readBinary = function readBinary(filename) {
5997 var ret = read_(filename, true);
5998 if (!ret.buffer) {
5999 ret = new Uint8Array(ret);
6000 }
6001 assert(ret.buffer);
6002 return ret;
6003 };
6004 if (process["argv"].length > 1) {
6005 thisProgram = process["argv"][1].replace(/\\/g, "/");
6006 }
6007 arguments_ = process["argv"].slice(2);
6008 if (true) {
6009 module["exports"] = Module;
6010 }
6011 (function() {})("uncaughtException", function(ex) {
6012 if (!(ex instanceof ExitStatus)) {
6013 throw ex;
6014 }
6015 });
6016 (function() {})("unhandledRejection", abort);
6017 quit_ = function(status) {
6018 process["exit"](status);
6019 };
6020 Module["inspect"] = function() {
6021 return "[Emscripten Module object]";
6022 };
6023} else {
6024}
6025var out = Module["print"] || console.log.bind(console);
6026var err = Module["printErr"] || console.warn.bind(console);
6027for (key in moduleOverrides) {
6028 if (moduleOverrides.hasOwnProperty(key)) {
6029 Module[key] = moduleOverrides[key];
6030 }
6031}
6032moduleOverrides = null;
6033if (Module["arguments"]) arguments_ = Module["arguments"];
6034if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
6035if (Module["quit"]) quit_ = Module["quit"];
6036function dynamicAlloc(size) {
6037 var ret = HEAP32[DYNAMICTOP_PTR >> 2];
6038 var end = (ret + size + 15) & -16;
6039 if (end > _emscripten_get_heap_size()) {
6040 abort();
6041 }
6042 HEAP32[DYNAMICTOP_PTR >> 2] = end;
6043 return ret;
6044}
6045function getNativeTypeSize(type) {
6046 switch (type) {
6047 case "i1":
6048 case "i8":
6049 return 1;
6050 case "i16":
6051 return 2;
6052 case "i32":
6053 return 4;
6054 case "i64":
6055 return 8;
6056 case "float":
6057 return 4;
6058 case "double":
6059 return 8;
6060 default: {
6061 if (type[type.length - 1] === "*") {
6062 return 4;
6063 } else if (type[0] === "i") {
6064 var bits = parseInt(type.substr(1));
6065 assert(
6066 bits % 8 === 0,
6067 "getNativeTypeSize invalid bits " + bits + ", type " + type
6068 );
6069 return bits / 8;
6070 } else {
6071 return 0;
6072 }
6073 }
6074 }
6075}
6076var tempRet0 = 0;
6077var setTempRet0 = function(value) {
6078 tempRet0 = value;
6079};
6080var wasmBinary;
6081if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
6082var noExitRuntime;
6083if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"];
6084if (typeof WebAssembly !== "object") {
6085 err("no native wasm support detected");
6086}
6087function setValue(ptr, value, type, noSafe) {
6088 type = type || "i8";
6089 if (type.charAt(type.length - 1) === "*") type = "i32";
6090 switch (type) {
6091 case "i1":
6092 HEAP8[ptr >> 0] = value;
6093 break;
6094 case "i8":
6095 HEAP8[ptr >> 0] = value;
6096 break;
6097 case "i16":
6098 HEAP16[ptr >> 1] = value;
6099 break;
6100 case "i32":
6101 HEAP32[ptr >> 2] = value;
6102 break;
6103 case "i64":
6104 (tempI64 = [
6105 value >>> 0,
6106 ((tempDouble = value),
6107 +Math_abs(tempDouble) >= 1
6108 ? tempDouble > 0
6109 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |
6110 0) >>>
6111 0
6112 : ~~+Math_ceil(
6113 (tempDouble - +(~~tempDouble >>> 0)) / 4294967296
6114 ) >>> 0
6115 : 0)
6116 ]),
6117 (HEAP32[ptr >> 2] = tempI64[0]),
6118 (HEAP32[(ptr + 4) >> 2] = tempI64[1]);
6119 break;
6120 case "float":
6121 HEAPF32[ptr >> 2] = value;
6122 break;
6123 case "double":
6124 HEAPF64[ptr >> 3] = value;
6125 break;
6126 default:
6127 abort("invalid type for setValue: " + type);
6128 }
6129}
6130function getValue(ptr, type, noSafe) {
6131 type = type || "i8";
6132 if (type.charAt(type.length - 1) === "*") type = "i32";
6133 switch (type) {
6134 case "i1":
6135 return HEAP8[ptr >> 0];
6136 case "i8":
6137 return HEAP8[ptr >> 0];
6138 case "i16":
6139 return HEAP16[ptr >> 1];
6140 case "i32":
6141 return HEAP32[ptr >> 2];
6142 case "i64":
6143 return HEAP32[ptr >> 2];
6144 case "float":
6145 return HEAPF32[ptr >> 2];
6146 case "double":
6147 return HEAPF64[ptr >> 3];
6148 default:
6149 abort("invalid type for getValue: " + type);
6150 }
6151 return null;
6152}
6153var wasmMemory;
6154var wasmTable = new WebAssembly.Table({
6155 initial: 31,
6156 maximum: 31 + 0,
6157 element: "anyfunc"
6158});
6159var ABORT = false;
6160var EXITSTATUS = 0;
6161function assert(condition, text) {
6162 if (!condition) {
6163 abort("Assertion failed: " + text);
6164 }
6165}
6166function getCFunc(ident) {
6167 var func = Module["_" + ident];
6168 assert(
6169 func,
6170 "Cannot call unknown function " + ident + ", make sure it is exported"
6171 );
6172 return func;
6173}
6174function ccall(ident, returnType, argTypes, args, opts) {
6175 var toC = {
6176 string: function(str) {
6177 var ret = 0;
6178 if (str !== null && str !== undefined && str !== 0) {
6179 var len = (str.length << 2) + 1;
6180 ret = stackAlloc(len);
6181 stringToUTF8(str, ret, len);
6182 }
6183 return ret;
6184 },
6185 array: function(arr) {
6186 var ret = stackAlloc(arr.length);
6187 writeArrayToMemory(arr, ret);
6188 return ret;
6189 }
6190 };
6191 function convertReturnValue(ret) {
6192 if (returnType === "string") return UTF8ToString(ret);
6193 if (returnType === "boolean") return Boolean(ret);
6194 return ret;
6195 }
6196 var func = getCFunc(ident);
6197 var cArgs = [];
6198 var stack = 0;
6199 if (args) {
6200 for (var i = 0; i < args.length; i++) {
6201 var converter = toC[argTypes[i]];
6202 if (converter) {
6203 if (stack === 0) stack = stackSave();
6204 cArgs[i] = converter(args[i]);
6205 } else {
6206 cArgs[i] = args[i];
6207 }
6208 }
6209 }
6210 var ret = func.apply(null, cArgs);
6211 ret = convertReturnValue(ret);
6212 if (stack !== 0) stackRestore(stack);
6213 return ret;
6214}
6215function cwrap(ident, returnType, argTypes, opts) {
6216 argTypes = argTypes || [];
6217 var numericArgs = argTypes.every(function(type) {
6218 return type === "number";
6219 });
6220 var numericRet = returnType !== "string";
6221 if (numericRet && numericArgs && !opts) {
6222 return getCFunc(ident);
6223 }
6224 return function() {
6225 return ccall(ident, returnType, argTypes, arguments, opts);
6226 };
6227}
6228var ALLOC_NORMAL = 0;
6229var ALLOC_NONE = 3;
6230function allocate(slab, types, allocator, ptr) {
6231 var zeroinit, size;
6232 if (typeof slab === "number") {
6233 zeroinit = true;
6234 size = slab;
6235 } else {
6236 zeroinit = false;
6237 size = slab.length;
6238 }
6239 var singleType = typeof types === "string" ? types : null;
6240 var ret;
6241 if (allocator == ALLOC_NONE) {
6242 ret = ptr;
6243 } else {
6244 ret = [_malloc, stackAlloc, dynamicAlloc][allocator](
6245 Math.max(size, singleType ? 1 : types.length)
6246 );
6247 }
6248 if (zeroinit) {
6249 var stop;
6250 ptr = ret;
6251 assert((ret & 3) == 0);
6252 stop = ret + (size & ~3);
6253 for (; ptr < stop; ptr += 4) {
6254 HEAP32[ptr >> 2] = 0;
6255 }
6256 stop = ret + size;
6257 while (ptr < stop) {
6258 HEAP8[ptr++ >> 0] = 0;
6259 }
6260 return ret;
6261 }
6262 if (singleType === "i8") {
6263 if (slab.subarray || slab.slice) {
6264 HEAPU8.set(slab, ret);
6265 } else {
6266 HEAPU8.set(new Uint8Array(slab), ret);
6267 }
6268 return ret;
6269 }
6270 var i = 0,
6271 type,
6272 typeSize,
6273 previousType;
6274 while (i < size) {
6275 var curr = slab[i];
6276 type = singleType || types[i];
6277 if (type === 0) {
6278 i++;
6279 continue;
6280 }
6281 if (type == "i64") type = "i32";
6282 setValue(ret + i, curr, type);
6283 if (previousType !== type) {
6284 typeSize = getNativeTypeSize(type);
6285 previousType = type;
6286 }
6287 i += typeSize;
6288 }
6289 return ret;
6290}
6291var UTF8Decoder =
6292 typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined;
6293function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {
6294 var endIdx = idx + maxBytesToRead;
6295 var endPtr = idx;
6296 while (u8Array[endPtr] && !(endPtr >= endIdx)) ++endPtr;
6297 if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {
6298 return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));
6299 } else {
6300 var str = "";
6301 while (idx < endPtr) {
6302 var u0 = u8Array[idx++];
6303 if (!(u0 & 128)) {
6304 str += String.fromCharCode(u0);
6305 continue;
6306 }
6307 var u1 = u8Array[idx++] & 63;
6308 if ((u0 & 224) == 192) {
6309 str += String.fromCharCode(((u0 & 31) << 6) | u1);
6310 continue;
6311 }
6312 var u2 = u8Array[idx++] & 63;
6313 if ((u0 & 240) == 224) {
6314 u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;
6315 } else {
6316 u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (u8Array[idx++] & 63);
6317 }
6318 if (u0 < 65536) {
6319 str += String.fromCharCode(u0);
6320 } else {
6321 var ch = u0 - 65536;
6322 str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023));
6323 }
6324 }
6325 }
6326 return str;
6327}
6328function UTF8ToString(ptr, maxBytesToRead) {
6329 return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
6330}
6331function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
6332 if (!(maxBytesToWrite > 0)) return 0;
6333 var startIdx = outIdx;
6334 var endIdx = outIdx + maxBytesToWrite - 1;
6335 for (var i = 0; i < str.length; ++i) {
6336 var u = str.charCodeAt(i);
6337 if (u >= 55296 && u <= 57343) {
6338 var u1 = str.charCodeAt(++i);
6339 u = (65536 + ((u & 1023) << 10)) | (u1 & 1023);
6340 }
6341 if (u <= 127) {
6342 if (outIdx >= endIdx) break;
6343 outU8Array[outIdx++] = u;
6344 } else if (u <= 2047) {
6345 if (outIdx + 1 >= endIdx) break;
6346 outU8Array[outIdx++] = 192 | (u >> 6);
6347 outU8Array[outIdx++] = 128 | (u & 63);
6348 } else if (u <= 65535) {
6349 if (outIdx + 2 >= endIdx) break;
6350 outU8Array[outIdx++] = 224 | (u >> 12);
6351 outU8Array[outIdx++] = 128 | ((u >> 6) & 63);
6352 outU8Array[outIdx++] = 128 | (u & 63);
6353 } else {
6354 if (outIdx + 3 >= endIdx) break;
6355 outU8Array[outIdx++] = 240 | (u >> 18);
6356 outU8Array[outIdx++] = 128 | ((u >> 12) & 63);
6357 outU8Array[outIdx++] = 128 | ((u >> 6) & 63);
6358 outU8Array[outIdx++] = 128 | (u & 63);
6359 }
6360 }
6361 outU8Array[outIdx] = 0;
6362 return outIdx - startIdx;
6363}
6364function stringToUTF8(str, outPtr, maxBytesToWrite) {
6365 return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
6366}
6367function lengthBytesUTF8(str) {
6368 var len = 0;
6369 for (var i = 0; i < str.length; ++i) {
6370 var u = str.charCodeAt(i);
6371 if (u >= 55296 && u <= 57343)
6372 u = (65536 + ((u & 1023) << 10)) | (str.charCodeAt(++i) & 1023);
6373 if (u <= 127) ++len;
6374 else if (u <= 2047) len += 2;
6375 else if (u <= 65535) len += 3;
6376 else len += 4;
6377 }
6378 return len;
6379}
6380var UTF16Decoder =
6381 typeof TextDecoder !== "undefined" ? new TextDecoder("utf-16le") : undefined;
6382function writeArrayToMemory(array, buffer) {
6383 HEAP8.set(array, buffer);
6384}
6385var WASM_PAGE_SIZE = 65536;
6386function alignUp(x, multiple) {
6387 if (x % multiple > 0) {
6388 x += multiple - (x % multiple);
6389 }
6390 return x;
6391}
6392var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
6393function updateGlobalBufferAndViews(buf) {
6394 buffer = buf;
6395 Module["HEAP8"] = HEAP8 = new Int8Array(buf);
6396 Module["HEAP16"] = HEAP16 = new Int16Array(buf);
6397 Module["HEAP32"] = HEAP32 = new Int32Array(buf);
6398 Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf);
6399 Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf);
6400 Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf);
6401 Module["HEAPF32"] = HEAPF32 = new Float32Array(buf);
6402 Module["HEAPF64"] = HEAPF64 = new Float64Array(buf);
6403}
6404var DYNAMIC_BASE = 5263680,
6405 DYNAMICTOP_PTR = 20640;
6406var INITIAL_TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 16777216;
6407if (Module["wasmMemory"]) {
6408 wasmMemory = Module["wasmMemory"];
6409} else {
6410 wasmMemory = new WebAssembly.Memory({
6411 initial: INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE
6412 });
6413}
6414if (wasmMemory) {
6415 buffer = wasmMemory.buffer;
6416}
6417INITIAL_TOTAL_MEMORY = buffer.byteLength;
6418updateGlobalBufferAndViews(buffer);
6419HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;
6420function callRuntimeCallbacks(callbacks) {
6421 while (callbacks.length > 0) {
6422 var callback = callbacks.shift();
6423 if (typeof callback == "function") {
6424 callback();
6425 continue;
6426 }
6427 var func = callback.func;
6428 if (typeof func === "number") {
6429 if (callback.arg === undefined) {
6430 Module["dynCall_v"](func);
6431 } else {
6432 Module["dynCall_vi"](func, callback.arg);
6433 }
6434 } else {
6435 func(callback.arg === undefined ? null : callback.arg);
6436 }
6437 }
6438}
6439var __ATPRERUN__ = [];
6440var __ATINIT__ = [];
6441var __ATMAIN__ = [];
6442var __ATPOSTRUN__ = [];
6443var runtimeInitialized = false;
6444function preRun() {
6445 if (Module["preRun"]) {
6446 if (typeof Module["preRun"] == "function")
6447 Module["preRun"] = [Module["preRun"]];
6448 while (Module["preRun"].length) {
6449 addOnPreRun(Module["preRun"].shift());
6450 }
6451 }
6452 callRuntimeCallbacks(__ATPRERUN__);
6453}
6454function initRuntime() {
6455 runtimeInitialized = true;
6456 if (!Module["noFSInit"] && !FS.init.initialized) FS.init();
6457 TTY.init();
6458 callRuntimeCallbacks(__ATINIT__);
6459}
6460function preMain() {
6461 FS.ignorePermissions = false;
6462 callRuntimeCallbacks(__ATMAIN__);
6463}
6464function postRun() {
6465 if (Module["postRun"]) {
6466 if (typeof Module["postRun"] == "function")
6467 Module["postRun"] = [Module["postRun"]];
6468 while (Module["postRun"].length) {
6469 addOnPostRun(Module["postRun"].shift());
6470 }
6471 }
6472 callRuntimeCallbacks(__ATPOSTRUN__);
6473}
6474function addOnPreRun(cb) {
6475 __ATPRERUN__.unshift(cb);
6476}
6477function addOnPostRun(cb) {
6478 __ATPOSTRUN__.unshift(cb);
6479}
6480var Math_abs = Math.abs;
6481var Math_ceil = Math.ceil;
6482var Math_floor = Math.floor;
6483var Math_min = Math.min;
6484var runDependencies = 0;
6485var runDependencyWatcher = null;
6486var dependenciesFulfilled = null;
6487function getUniqueRunDependency(id) {
6488 return id;
6489}
6490function addRunDependency(id) {
6491 runDependencies++;
6492 if (Module["monitorRunDependencies"]) {
6493 Module["monitorRunDependencies"](runDependencies);
6494 }
6495}
6496function removeRunDependency(id) {
6497 runDependencies--;
6498 if (Module["monitorRunDependencies"]) {
6499 Module["monitorRunDependencies"](runDependencies);
6500 }
6501 if (runDependencies == 0) {
6502 if (runDependencyWatcher !== null) {
6503 clearInterval(runDependencyWatcher);
6504 runDependencyWatcher = null;
6505 }
6506 if (dependenciesFulfilled) {
6507 var callback = dependenciesFulfilled;
6508 dependenciesFulfilled = null;
6509 callback();
6510 }
6511 }
6512}
6513Module["preloadedImages"] = {};
6514Module["preloadedAudios"] = {};
6515function abort(what) {
6516 if (Module["onAbort"]) {
6517 Module["onAbort"](what);
6518 }
6519 what += "";
6520 out(what);
6521 err(what);
6522 ABORT = true;
6523 EXITSTATUS = 1;
6524 what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info.";
6525 throw new WebAssembly.RuntimeError(what);
6526}
6527var dataURIPrefix = "data:application/octet-stream;base64,";
6528function isDataURI(filename) {
6529 return String.prototype.startsWith
6530 ? filename.startsWith(dataURIPrefix)
6531 : filename.indexOf(dataURIPrefix) === 0;
6532}
6533var wasmBinaryFile =
6534 "data:application/octet-stream;base64,AGFzbQEAAAAB0QIwYAN/f38Bf2AGf3x/f39/AX9gAn9/AGAEf39+fwF+YAV/f39+fwF+YAN/fH8AYAF/AGACf38Bf2ABfwF/YAN/f34Bf2ADf35/AX5gBH9/f38Bf2AEf35/fwF/YAABf2AAAGACfH8BfGAEf35+fwBgAn5+AXxgBH9/f38AYAV/f39/fwBgAn5/AX9gA35/fwF/YAN/f34BfmABfwF+YAJ/fwF+YAN/fn8Bf2AFfn5/fn8BfmACf34Bf2AEf39+fwF/YAZ/f39/f38Bf2AFf39/f38BfmAEf39+fgF/YAh/fn5/f39+fwF/YAV/f35/fwF/YAR/f39/AX5gAX4Bf2ACf3wAYAN/fHwAYAJ/fgF+YAV/f39+fwBgBH9/f34BfmADf39/AX5gBX9+f39/AX9gBX9/f39/AX9gA39/fwBgAn9+AGADf35/AGAEf35+fwF/AogCGQNlbnYBYQAGA2VudgFiAAYDZW52AWMACANlbnYBZAAGA2VudgFlAAcDZW52AWYABw13YXNpX3Vuc3RhYmxlAWcACANlbnYBaAAIA2VudgFpAAgDZW52AWoAAANlbnYBawAIDXdhc2lfdW5zdGFibGUBbAArDXdhc2lfdW5zdGFibGUBbQALDXdhc2lfdW5zdGFibGUBbgAHA2VudgFvAAcDZW52AXAABwNlbnYBcQAHA2VudgFyAAcDZW52AXMABwNlbnYBdAAHA2VudgF1AAcDZW52AXYABw13YXNpX3Vuc3RhYmxlAXcACwNlbnYGbWVtb3J5AgCAAgNlbnYFdGFibGUBcAAfA/oC+AIsBgYCCAAABgYIGwICAywGEwYGEhsIGRstCBYXFywGGAgGBxcJBwYIAAYGLAwWAhQMCAcIAgwMCAsACCIIFwYSJAAABwYGAAsLCCscBgYLBgcpAAwGAAgIByksKx0AAAgsDQIHJxwMCCEgCgcrKwIIBhoLCAAACAIAAggZGQcHFxcIBwwqIiwIGyEAAAYrAAcHCCwsLAYGBgYmHBkMDBkPAAcAHiwAGRQABwgrBwcHCBYGDRsNBwgLAA0AAAgICAIHCCsrKwAHCwsLKx0dCwACBggNCwcMIRwHGwACBwAIBwEICAMvCAAHBwINCA0GABUACAcHAhQIGBYZAAgMCCoICCIIKS0bDBcHBwIIBwAsCQkbAAcICAgEKAQLCwcAAAYJCAgsCAYACAAGCAgHAAgIAgcHBwcHBgYICAgHBywCEggIBgYRDQYAAgAHEAQrAxYZAxAIGyUGBgYjLiIGBggCBgcHBB8KAgcHBwcNChYNDQ0AGwgHCA0OBgkBfwFBoKHBAgsH6wEtAXgAjgMBeQCNAwF6ANwCAUEAlAIBQgDYAQFDANUBAUQA0wEBRQDQAQFGAMsBAUcAqwIBSADlAQFJAEABSgDWAQFLAJcCAUwAlgIBTQCiAgFOAJkCAU8A5AEBUADjAQFRAOIBAVIA4QEBUwCRAgFUAOABAVUA3wEBVgDeAQFXAN0BAVgA3AEBWQD0AQFaAI8BAV8A2wEBJADaAQJhYQAeAmJhAG8CY2EA6gECZGEA2QECZWEAyQECZmEAhwMCZ2EAhgMCaGEAhQMCaWEAGwJqYQAYAmthAOkBAmxhAOgBAm1hAOcBAm5hAOYBCUEBAEEBCx73AfIB+gLoAuMC5ALgAt8CpwHJAsgCvQK8ArsCuQK4ArcCtgK1ArQCsAKuAqQCoAJagwOIA/0BjAP6AQq1lwn4AkABAX8jAEEQayIDIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMBEAgAygCDCADKAIINgIAIAMoAgwgAygCBDYCBAsLtQ0BB38CQCAARQ0AIABBeGoiAyAAQXxqKAIAIgFBeHEiAGohBQJAIAFBAXENACABQQNxRQ0BIAMgAygCACICayIDQZidASgCACIESQ0BIAAgAmohACADQZydASgCAEcEQCACQf8BTQRAIAMoAggiBCACQQN2IgJBA3RBsJ0BakcaIAQgAygCDCIBRgRAQYidAUGInQEoAgBBfiACd3E2AgAMAwsgBCABNgIMIAEgBDYCCAwCCyADKAIYIQYCQCADIAMoAgwiAUcEQCAEIAMoAggiAk0EQCACKAIMGgsgAiABNgIMIAEgAjYCCAwBCwJAIANBFGoiAigCACIEDQAgA0EQaiICKAIAIgQNAEEAIQEMAQsDQCACIQcgBCIBQRRqIgIoAgAiBA0AIAFBEGohAiABKAIQIgQNAAsgB0EANgIACyAGRQ0BAkAgAyADKAIcIgJBAnRBuJ8BaiIEKAIARgRAIAQgATYCACABDQFBjJ0BQYydASgCAEF+IAJ3cTYCAAwDCyAGQRBBFCAGKAIQIANGG2ogATYCACABRQ0CCyABIAY2AhggAygCECICBEAgASACNgIQIAIgATYCGAsgAygCFCICRQ0BIAEgAjYCFCACIAE2AhgMAQsgBSgCBCIBQQNxQQNHDQBBkJ0BIAA2AgAgBSABQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgAPCyAFIANNDQAgBSgCBCIBQQFxRQ0AAkAgAUECcUUEQCAFQaCdASgCAEYEQEGgnQEgAzYCAEGUnQFBlJ0BKAIAIABqIgA2AgAgAyAAQQFyNgIEIANBnJ0BKAIARw0DQZCdAUEANgIAQZydAUEANgIADwsgBUGcnQEoAgBGBEBBnJ0BIAM2AgBBkJ0BQZCdASgCACAAaiIANgIAIAMgAEEBcjYCBCAAIANqIAA2AgAPCyABQXhxIABqIQACQCABQf8BTQRAIAUoAgwhAiAFKAIIIgQgAUEDdiIBQQN0QbCdAWoiB0cEQEGYnQEoAgAaCyACIARGBEBBiJ0BQYidASgCAEF+IAF3cTYCAAwCCyACIAdHBEBBmJ0BKAIAGgsgBCACNgIMIAIgBDYCCAwBCyAFKAIYIQYCQCAFIAUoAgwiAUcEQEGYnQEoAgAgBSgCCCICTQRAIAIoAgwaCyACIAE2AgwgASACNgIIDAELAkAgBUEUaiICKAIAIgQNACAFQRBqIgIoAgAiBA0AQQAhAQwBCwNAIAIhByAEIgFBFGoiAigCACIEDQAgAUEQaiECIAEoAhAiBA0ACyAHQQA2AgALIAZFDQACQCAFIAUoAhwiAkECdEG4nwFqIgQoAgBGBEAgBCABNgIAIAENAUGMnQFBjJ0BKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiABNgIAIAFFDQELIAEgBjYCGCAFKAIQIgIEQCABIAI2AhAgAiABNgIYCyAFKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADQZydASgCAEcNAUGQnQEgADYCAA8LIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIACyAAQf8BTQRAIABBA3YiAUEDdEGwnQFqIQACf0GInQEoAgAiAkEBIAF0IgFxRQRAQYidASABIAJyNgIAIAAMAQsgACgCCAshAiAAIAM2AgggAiADNgIMIAMgADYCDCADIAI2AggPCyADQgA3AhAgAwJ/QQAgAEEIdiIBRQ0AGkEfIABB////B0sNABogASABQYD+P2pBEHZBCHEiAXQiAiACQYDgH2pBEHZBBHEiAnQiBCAEQYCAD2pBEHZBAnEiBHRBD3YgASACciAEcmsiAUEBdCAAIAFBFWp2QQFxckEcagsiAjYCHCACQQJ0QbifAWohAQJAQYydASgCACIEQQEgAnQiB3FFBEBBjJ0BIAQgB3I2AgAgASADNgIAIAMgAzYCDCADIAE2AhggAyADNgIIDAELIABBAEEZIAJBAXZrIAJBH0YbdCECIAEoAgAhAQJAA0AgASIEKAIEQXhxIABGDQEgAkEddiEBIAJBAXQhAiAEIAFBBHFqIgdBEGooAgAiAQ0ACyAHIAM2AhAgAyADNgIMIAMgBDYCGCADIAM2AggMAQsgBCgCCCIAIAM2AgwgBCADNgIIIANBADYCGCADIAQ2AgwgAyAANgIIC0GonQFBqJ0BKAIAQX9qIgA2AgAgAA0AQdCgASEDA0AgAygCACIAQQhqIQMgAA0AC0GonQFBfzYCAAsLQgEBfyMAQRBrIgEkACABIAA2AgwgASgCDARAIAEoAgwtAAFBAXEEQCABKAIMKAIEEBgLIAEoAgwQGAsgAUEQaiQAC0MBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMAn8jAEEQayIAIAIoAgg2AgwgACgCDEEMagsQRSACQRBqJAALzy4BC38jAEEQayILJAACQAJAAkACQAJAAkACQAJAAkACQAJAIABB9AFNBEBBiJ0BKAIAIgZBECAAQQtqQXhxIABBC0kbIgVBA3YiAHYiAUEDcQRAIAFBf3NBAXEgAGoiAkEDdCIEQbidAWooAgAiAUEIaiEAAkAgASgCCCIDIARBsJ0BaiIERgRAQYidASAGQX4gAndxNgIADAELQZidASgCABogAyAENgIMIAQgAzYCCAsgASACQQN0IgJBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMDAsgBUGQnQEoAgAiCE0NASABBEACQEECIAB0IgJBACACa3IgASAAdHEiAEEAIABrcUF/aiIAIABBDHZBEHEiAHYiAUEFdkEIcSICIAByIAEgAnYiAEECdkEEcSIBciAAIAF2IgBBAXZBAnEiAXIgACABdiIAQQF2QQFxIgFyIAAgAXZqIgJBA3QiA0G4nQFqKAIAIgEoAggiACADQbCdAWoiA0YEQEGInQEgBkF+IAJ3cSIGNgIADAELQZidASgCABogACADNgIMIAMgADYCCAsgAUEIaiEAIAEgBUEDcjYCBCABIAVqIgcgAkEDdCICIAVrIgNBAXI2AgQgASACaiADNgIAIAgEQCAIQQN2IgRBA3RBsJ0BaiEBQZydASgCACECAn8gBkEBIAR0IgRxRQRAQYidASAEIAZyNgIAIAEMAQsgASgCCAshBCABIAI2AgggBCACNgIMIAIgATYCDCACIAQ2AggLQZydASAHNgIAQZCdASADNgIADAwLQYydASgCACIKRQ0BIApBACAKa3FBf2oiACAAQQx2QRBxIgB2IgFBBXZBCHEiAiAAciABIAJ2IgBBAnZBBHEiAXIgACABdiIAQQF2QQJxIgFyIAAgAXYiAEEBdkEBcSIBciAAIAF2akECdEG4nwFqKAIAIgEoAgRBeHEgBWshAyABIQIDQAJAIAIoAhAiAEUEQCACKAIUIgBFDQELIAAoAgRBeHEgBWsiAiADIAIgA0kiAhshAyAAIAEgAhshASAAIQIMAQsLIAEoAhghCSABIAEoAgwiBEcEQEGYnQEoAgAgASgCCCIATQRAIAAoAgwaCyAAIAQ2AgwgBCAANgIIDAsLIAFBFGoiAigCACIARQRAIAEoAhAiAEUNAyABQRBqIQILA0AgAiEHIAAiBEEUaiICKAIAIgANACAEQRBqIQIgBCgCECIADQALIAdBADYCAAwKC0F/IQUgAEG/f0sNACAAQQtqIgBBeHEhBUGMnQEoAgAiB0UNAEEAIAVrIQICQAJAAkACf0EAIABBCHYiAEUNABpBHyAFQf///wdLDQAaIAAgAEGA/j9qQRB2QQhxIgB0IgEgAUGA4B9qQRB2QQRxIgF0IgMgA0GAgA9qQRB2QQJxIgN0QQ92IAAgAXIgA3JrIgBBAXQgBSAAQRVqdkEBcXJBHGoLIghBAnRBuJ8BaigCACIDRQRAQQAhAAwBCyAFQQBBGSAIQQF2ayAIQR9GG3QhAUEAIQADQAJAIAMoAgRBeHEgBWsiBiACTw0AIAMhBCAGIgINAEEAIQIgAyEADAMLIAAgAygCFCIGIAYgAyABQR12QQRxaigCECIDRhsgACAGGyEAIAEgA0EAR3QhASADDQALCyAAIARyRQRAQQIgCHQiAEEAIABrciAHcSIARQ0DIABBACAAa3FBf2oiACAAQQx2QRBxIgB2IgFBBXZBCHEiAyAAciABIAN2IgBBAnZBBHEiAXIgACABdiIAQQF2QQJxIgFyIAAgAXYiAEEBdkEBcSIBciAAIAF2akECdEG4nwFqKAIAIQALIABFDQELA0AgACgCBEF4cSAFayIDIAJJIQEgAyACIAEbIQIgACAEIAEbIQQgACgCECIBBH8gAQUgACgCFAsiAA0ACwsgBEUNACACQZCdASgCACAFa08NACAEKAIYIQggBCAEKAIMIgFHBEBBmJ0BKAIAIAQoAggiAE0EQCAAKAIMGgsgACABNgIMIAEgADYCCAwJCyAEQRRqIgMoAgAiAEUEQCAEKAIQIgBFDQMgBEEQaiEDCwNAIAMhBiAAIgFBFGoiAygCACIADQAgAUEQaiEDIAEoAhAiAA0ACyAGQQA2AgAMCAtBkJ0BKAIAIgEgBU8EQEGcnQEoAgAhAAJAIAEgBWsiAkEQTwRAQZCdASACNgIAQZydASAAIAVqIgM2AgAgAyACQQFyNgIEIAAgAWogAjYCACAAIAVBA3I2AgQMAQtBnJ0BQQA2AgBBkJ0BQQA2AgAgACABQQNyNgIEIAAgAWoiASABKAIEQQFyNgIECyAAQQhqIQAMCgtBlJ0BKAIAIgEgBUsEQEGUnQEgASAFayIBNgIAQaCdAUGgnQEoAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEADAoLQQAhACAFQS9qIgQCf0HgoAEoAgAEQEHooAEoAgAMAQtB7KABQn83AgBB5KABQoCggICAgAQ3AgBB4KABIAtBDGpBcHFB2KrVqgVzNgIAQfSgAUEANgIAQcSgAUEANgIAQYAgCyICaiIGQQAgAmsiB3EiAiAFTQ0JQcCgASgCACIDBEBBuKABKAIAIgggAmoiCSAITQ0KIAkgA0sNCgtBxKABLQAAQQRxDQQCQAJAQaCdASgCACIDBEBByKABIQADQCAAKAIAIgggA00EQCAIIAAoAgRqIANLDQMLIAAoAggiAA0ACwtBABA+IgFBf0YNBSACIQZB5KABKAIAIgBBf2oiAyABcQRAIAIgAWsgASADakEAIABrcWohBgsgBiAFTQ0FIAZB/v///wdLDQVBwKABKAIAIgAEQEG4oAEoAgAiAyAGaiIHIANNDQYgByAASw0GCyAGED4iACABRw0BDAcLIAYgAWsgB3EiBkH+////B0sNBCAGED4iASAAKAIAIAAoAgRqRg0DIAEhAAsgACEBAkAgBUEwaiAGTQ0AIAZB/v///wdLDQAgAUF/Rg0AQeigASgCACIAIAQgBmtqQQAgAGtxIgBB/v///wdLDQYgABA+QX9HBEAgACAGaiEGDAcLQQAgBmsQPhoMBAsgAUF/Rw0FDAMLQQAhBAwHC0EAIQEMBQsgAUF/Rw0CC0HEoAFBxKABKAIAQQRyNgIACyACQf7///8HSw0BIAIQPiIBQQAQPiIATw0BIAFBf0YNASAAQX9GDQEgACABayIGIAVBKGpNDQELQbigAUG4oAEoAgAgBmoiADYCACAAQbygASgCAEsEQEG8oAEgADYCAAsCQAJAAkBBoJ0BKAIAIgMEQEHIoAEhAANAIAEgACgCACICIAAoAgQiBGpGDQIgACgCCCIADQALDAILQZidASgCACIAQQAgASAATxtFBEBBmJ0BIAE2AgALQQAhAEHMoAEgBjYCAEHIoAEgATYCAEGonQFBfzYCAEGsnQFB4KABKAIANgIAQdSgAUEANgIAA0AgAEEDdCICQbidAWogAkGwnQFqIgM2AgAgAkG8nQFqIAM2AgAgAEEBaiIAQSBHDQALQZSdASAGQVhqIgBBeCABa0EHcUEAIAFBCGpBB3EbIgJrIgM2AgBBoJ0BIAEgAmoiAjYCACACIANBAXI2AgQgACABakEoNgIEQaSdAUHwoAEoAgA2AgAMAgsgAC0ADEEIcQ0AIAEgA00NACACIANLDQAgACAEIAZqNgIEQaCdASADQXggA2tBB3FBACADQQhqQQdxGyIAaiIBNgIAQZSdAUGUnQEoAgAgBmoiAiAAayIANgIAIAEgAEEBcjYCBCACIANqQSg2AgRBpJ0BQfCgASgCADYCAAwBCyABQZidASgCACIESQRAQZidASABNgIAIAEhBAsgASAGaiECQcigASEAAkACQAJAAkACQAJAA0AgAiAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0HIoAEhAANAIAAoAgAiAiADTQRAIAIgACgCBGoiBCADSw0DCyAAKAIIIQAMAAALAAsgACABNgIAIAAgACgCBCAGajYCBCABQXggAWtBB3FBACABQQhqQQdxG2oiCSAFQQNyNgIEIAJBeCACa0EHcUEAIAJBCGpBB3EbaiIBIAlrIAVrIQAgBSAJaiEHIAEgA0YEQEGgnQEgBzYCAEGUnQFBlJ0BKAIAIABqIgA2AgAgByAAQQFyNgIEDAMLIAFBnJ0BKAIARgRAQZydASAHNgIAQZCdAUGQnQEoAgAgAGoiADYCACAHIABBAXI2AgQgACAHaiAANgIADAMLIAEoAgQiAkEDcUEBRgRAIAJBeHEhCgJAIAJB/wFNBEAgASgCCCIDIAJBA3YiBEEDdEGwnQFqRxogAyABKAIMIgJGBEBBiJ0BQYidASgCAEF+IAR3cTYCAAwCCyADIAI2AgwgAiADNgIIDAELIAEoAhghCAJAIAEgASgCDCIGRwRAIAQgASgCCCICTQRAIAIoAgwaCyACIAY2AgwgBiACNgIIDAELAkAgAUEUaiIDKAIAIgUNACABQRBqIgMoAgAiBQ0AQQAhBgwBCwNAIAMhAiAFIgZBFGoiAygCACIFDQAgBkEQaiEDIAYoAhAiBQ0ACyACQQA2AgALIAhFDQACQCABIAEoAhwiAkECdEG4nwFqIgMoAgBGBEAgAyAGNgIAIAYNAUGMnQFBjJ0BKAIAQX4gAndxNgIADAILIAhBEEEUIAgoAhAgAUYbaiAGNgIAIAZFDQELIAYgCDYCGCABKAIQIgIEQCAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQAgBiACNgIUIAIgBjYCGAsgASAKaiEBIAAgCmohAAsgASABKAIEQX5xNgIEIAcgAEEBcjYCBCAAIAdqIAA2AgAgAEH/AU0EQCAAQQN2IgFBA3RBsJ0BaiEAAn9BiJ0BKAIAIgJBASABdCIBcUUEQEGInQEgASACcjYCACAADAELIAAoAggLIQEgACAHNgIIIAEgBzYCDCAHIAA2AgwgByABNgIIDAMLIAcCf0EAIABBCHYiAUUNABpBHyAAQf///wdLDQAaIAEgAUGA/j9qQRB2QQhxIgF0IgIgAkGA4B9qQRB2QQRxIgJ0IgMgA0GAgA9qQRB2QQJxIgN0QQ92IAEgAnIgA3JrIgFBAXQgACABQRVqdkEBcXJBHGoLIgE2AhwgB0IANwIQIAFBAnRBuJ8BaiECAkBBjJ0BKAIAIgNBASABdCIEcUUEQEGMnQEgAyAEcjYCACACIAc2AgAMAQsgAEEAQRkgAUEBdmsgAUEfRht0IQMgAigCACEBA0AgASICKAIEQXhxIABGDQMgA0EddiEBIANBAXQhAyACIAFBBHFqIgQoAhAiAQ0ACyAEIAc2AhALIAcgAjYCGCAHIAc2AgwgByAHNgIIDAILQZSdASAGQVhqIgBBeCABa0EHcUEAIAFBCGpBB3EbIgJrIgc2AgBBoJ0BIAEgAmoiAjYCACACIAdBAXI2AgQgACABakEoNgIEQaSdAUHwoAEoAgA2AgAgAyAEQScgBGtBB3FBACAEQVlqQQdxG2pBUWoiACAAIANBEGpJGyICQRs2AgQgAkHQoAEpAgA3AhAgAkHIoAEpAgA3AghB0KABIAJBCGo2AgBBzKABIAY2AgBByKABIAE2AgBB1KABQQA2AgAgAkEYaiEAA0AgAEEHNgIEIABBCGohASAAQQRqIQAgASAESQ0ACyACIANGDQMgAiACKAIEQX5xNgIEIAMgAiADayIEQQFyNgIEIAIgBDYCACAEQf8BTQRAIARBA3YiAUEDdEGwnQFqIQACf0GInQEoAgAiAkEBIAF0IgFxRQRAQYidASABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMBAsgA0IANwIQIAMCf0EAIARBCHYiAEUNABpBHyAEQf///wdLDQAaIAAgAEGA/j9qQRB2QQhxIgB0IgEgAUGA4B9qQRB2QQRxIgF0IgIgAkGAgA9qQRB2QQJxIgJ0QQ92IAAgAXIgAnJrIgBBAXQgBCAAQRVqdkEBcXJBHGoLIgA2AhwgAEECdEG4nwFqIQECQEGMnQEoAgAiAkEBIAB0IgZxRQRAQYydASACIAZyNgIAIAEgAzYCACADIAE2AhgMAQsgBEEAQRkgAEEBdmsgAEEfRht0IQAgASgCACEBA0AgASICKAIEQXhxIARGDQQgAEEddiEBIABBAXQhACACIAFBBHFqIgYoAhAiAQ0ACyAGIAM2AhAgAyACNgIYCyADIAM2AgwgAyADNgIIDAMLIAIoAggiACAHNgIMIAIgBzYCCCAHQQA2AhggByACNgIMIAcgADYCCAsgCUEIaiEADAULIAIoAggiACADNgIMIAIgAzYCCCADQQA2AhggAyACNgIMIAMgADYCCAtBlJ0BKAIAIgAgBU0NAEGUnQEgACAFayIBNgIAQaCdAUGgnQEoAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEADAMLQbScAUEwNgIAQQAhAAwCCwJAIAhFDQACQCAEKAIcIgBBAnRBuJ8BaiIDKAIAIARGBEAgAyABNgIAIAENAUGMnQEgB0F+IAB3cSIHNgIADAILIAhBEEEUIAgoAhAgBEYbaiABNgIAIAFFDQELIAEgCDYCGCAEKAIQIgAEQCABIAA2AhAgACABNgIYCyAEKAIUIgBFDQAgASAANgIUIAAgATYCGAsCQCACQQ9NBEAgBCACIAVqIgBBA3I2AgQgACAEaiIAIAAoAgRBAXI2AgQMAQsgBCAFQQNyNgIEIAQgBWoiAyACQQFyNgIEIAIgA2ogAjYCACACQf8BTQRAIAJBA3YiAUEDdEGwnQFqIQACf0GInQEoAgAiAkEBIAF0IgFxRQRAQYidASABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQsgAwJ/QQAgAkEIdiIARQ0AGkEfIAJB////B0sNABogACAAQYD+P2pBEHZBCHEiAHQiASABQYDgH2pBEHZBBHEiAXQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgACABciAFcmsiAEEBdCACIABBFWp2QQFxckEcagsiADYCHCADQgA3AhAgAEECdEG4nwFqIQECQAJAIAdBASAAdCIFcUUEQEGMnQEgBSAHcjYCACABIAM2AgAMAQsgAkEAQRkgAEEBdmsgAEEfRht0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgYoAhAiBQ0ACyAGIAM2AhALIAMgATYCGCADIAM2AgwgAyADNgIIDAELIAEoAggiACADNgIMIAEgAzYCCCADQQA2AhggAyABNgIMIAMgADYCCAsgBEEIaiEADAELAkAgCUUNAAJAIAEoAhwiAEECdEG4nwFqIgIoAgAgAUYEQCACIAQ2AgAgBA0BQYydASAKQX4gAHdxNgIADAILIAlBEEEUIAkoAhAgAUYbaiAENgIAIARFDQELIAQgCTYCGCABKAIQIgAEQCAEIAA2AhAgACAENgIYCyABKAIUIgBFDQAgBCAANgIUIAAgBDYCGAsCQCADQQ9NBEAgASADIAVqIgBBA3I2AgQgACABaiIAIAAoAgRBAXI2AgQMAQsgASAFQQNyNgIEIAEgBWoiBCADQQFyNgIEIAMgBGogAzYCACAIBEAgCEEDdiIFQQN0QbCdAWohAEGcnQEoAgAhAgJ/QQEgBXQiBSAGcUUEQEGInQEgBSAGcjYCACAADAELIAAoAggLIQUgACACNgIIIAUgAjYCDCACIAA2AgwgAiAFNgIIC0GcnQEgBDYCAEGQnQEgAzYCAAsgAUEIaiEACyALQRBqJAAgAAuDBAEDfyACQYDAAE8EQCAAIAEgAhAJGiAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIAJBAUgEQCAAIQIMAQsgAEEDcUUEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA08NASACQQNxDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIANBfGoiBCAASQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALPwEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBBDSASEAIANBEGokACAAC90BAQF/IwBBEGsiASQAIAEgADYCDAJAIAEoAgxFDQAgASgCDCgCMEEASwRAIAEoAgwiACAAKAIwQX9qNgIwCyABKAIMKAIwQQBLDQAgASgCDCgCIEEASwRAIAEoAgxBATYCICABKAIMEDcaCyABKAIMKAIkQQFGBEAgASgCDBBmCwJAIAEoAgwoAixFDQAgASgCDC0AKEEBcQ0AIAEoAgwoAiwgASgCDBD2AgsgASgCDEEAQgBBBRAkGiABKAIMKAIABEAgASgCDCgCABAeCyABKAIMEBgLIAFBEGokAAuBAgEBfyMAQRBrIgEkACABIAA2AgwgASABKAIMKAIcNgIEIAEoAgQQ2gIgASABKAIEKAIUNgIIIAEoAgggASgCDCgCEEsEQCABIAEoAgwoAhA2AggLAkAgASgCCEUNACABKAIMKAIMIAEoAgQoAhAgASgCCBAcGiABKAIMIgAgASgCCCAAKAIMajYCDCABKAIEIgAgASgCCCAAKAIQajYCECABKAIMIgAgASgCCCAAKAIUajYCFCABKAIMIgAgACgCECABKAIIazYCECABKAIEIgAgACgCFCABKAIIazYCFCABKAIEKAIUDQAgASgCBCABKAIEKAIINgIQCyABQRBqJAALYAEBfyMAQRBrIgEkACABIAA2AgggASABKAIIQgIQITYCBAJAIAEoAgRFBEAgAUEAOwEODAELIAEgASgCBC0AACABKAIELQABQQh0ajsBDgsgAS8BDiEAIAFBEGokACAAC1oBAX8jAEEgayICJAAgAiAANgIcIAIgATcDECACIAIoAhwgAikDEBDKATYCDCACKAIMBEAgAigCHCIAIAIpAxAgACkDEHw3AxALIAIoAgwhACACQSBqJAAgAAtvAQF/IwBBEGsiAiQAIAIgADYCCCACIAE7AQYgAiACKAIIQgIQITYCAAJAIAIoAgBFBEAgAkF/NgIMDAELIAIoAgAgAi8BBjoAACACKAIAIAIvAQZBCHU6AAEgAkEANgIMCyACKAIMGiACQRBqJAALjwEBAX8jAEEQayICJAAgAiAANgIIIAIgATYCBCACIAIoAghCBBAhNgIAAkAgAigCAEUEQCACQX82AgwMAQsgAigCACACKAIEOgAAIAIoAgAgAigCBEEIdjoAASACKAIAIAIoAgRBEHY6AAIgAigCACACKAIEQRh2OgADIAJBADYCDAsgAigCDBogAkEQaiQAC7YCAQF/IwBBMGsiBCQAIAQgADYCJCAEIAE2AiAgBCACNwMYIAQgAzYCFAJAIAQoAiQpAxhCASAEKAIUrYaDUARAIAQoAiRBDGpBHEEAEBcgBEJ/NwMo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gYKEeHFFDQALIANB/wFxRQRAIAIhAQwBCwNAIAItAAEhAyACQQFqIgEhAiADDQALCyABIABrC4sDAQF/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNwMYAkAgAygCJC0AKEEBcQRAIANCfzcDKAwBCwJAAkAgAygCJCgCIEEATQ0AIAMpAxhC////////////AFYNACADKQMYQgBYDQEgAygCIA0BCyADKAIkQQxqQRJBABAXIANCfzcDKAwBCyADKAIkLQA1QQFxBEAgA0J/NwMoDAELAn8jAEEQayIAIAMoAiQ2AgwgACgCDC0ANEEBcQsEQCADQgA3AygMAQsgAykDGFAEQCADQgA3AygMAQsgA0IANwMQA0AgAykDECADKQMYVARAIAMgAygCJCADKAIgIAMpAxCnaiADKQMYIAMpAxB9QQEQJCICNwMIIAJCAFMEQCADKAIkQQE6ADUgAykDEFAEQCADQn83AygMBAsgAyADKQMQNwMoDAMLIAMpAwhQBEAgAygCJEEBOgA0BSADIAMpAwggAykDEHw3AxAMAgsLCyADIAMpAxA3AygLIAMpAyghAiADQTBqJAAgAgs2AQF/IwBBEGsiASAANgIMAn4gASgCDC0AAEEBcQRAIAEoAgwpAwggASgCDCkDEH0MAQtCAAsLsgECAX8BfiMAQRBrIgEkACABIAA2AgQgASABKAIEQggQITYCAAJAIAEoAgBFBEAgAUIANwMIDAELIAEgASgCAC0AAK0gASgCAC0AB61COIYgASgCAC0ABq1CMIZ8IAEoAgAtAAWtQiiGfCABKAIALQAErUIghnwgASgCAC0AA61CGIZ8IAEoAgAtAAKtQhCGfCABKAIALQABrUIIhnx8NwMICyABKQMIIQIgAUEQaiQAIAIL8QICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgA2AgAgAyACIARrQXxxIgJqIgFBfGogADYCACACQQlJDQAgAyAANgIIIAMgADYCBCABQXhqIAA2AgAgAUF0aiAANgIAIAJBGUkNACADIAA2AhggAyAANgIUIAMgADYCECADIAA2AgwgAUFwaiAANgIAIAFBbGogADYCACABQWhqIAA2AgAgAUFkaiAANgIAIAIgA0EEcUEYciIBayICQSBJDQAgAK0iBUIghiAFhCEFIAEgA2ohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCwvcAQEBfyMAQRBrIgEkACABIAA2AgwgASgCDARAIAEoAgwoAigEQCABKAIMKAIoQQA2AiggASgCDCgCKEIANwMgIAEoAgwCfiABKAIMKQMYIAEoAgwpAyBWBEAgASgCDCkDGAwBCyABKAIMKQMgCzcDGAsgASABKAIMKQMYNwMAA0AgASkDACABKAIMKQMIWkUEQCABKAIMKAIAIAEpAwCnQQR0aigCABAYIAEgASkDAEIBfDcDAAwBCwsgASgCDCgCABAYIAEoAgwoAgQQGCABKAIMEBgLIAFBEGokAAtrAQF/IwBBIGsiAiAANgIcIAJCASACKAIcrYY3AxAgAkEMaiABNgIAA0AgAiACKAIMIgBBBGo2AgwgAiAAKAIANgIIIAIoAghBAEhFBEAgAiACKQMQQgEgAigCCK2GhDcDEAwBCwsgAikDEAuoAQEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIKAIgQQBNBEAgASgCCEEMakESQQAQFyABQX82AgwMAQsgASgCCCIAIAAoAiBBf2o2AiAgASgCCCgCIEUEQCABKAIIQQBCAEECECQaIAEoAggoAgAEQCABKAIIKAIAEDdBAEgEQCABKAIIQQxqQRRBABAXCwsLIAFBADYCDAsgASgCDCEAIAFBEGokACAACy8BAX8jAEEQayIBJAAgASAANgIMIAEoAgwoAggQGCABKAIMQQA2AgggAUEQaiQAC80BAQF/IwBBEGsiAiQAIAIgADYCCCACIAE2AgQCQCACKAIILQAoQQFxBEAgAkF/NgIMDAELIAIoAgRFBEAgAigCCEEMakESQQAQFyACQX82AgwMAQsgAigCBBA9IAIoAggoAgAEQCACKAIIKAIAIAIoAgQQOUEASARAIAIoAghBDGogAigCCCgCABAaIAJBfzYCDAwCCwsgAigCCCACKAIEQjhBAxAkQgBTBEAgAkF/NgIMDAELIAJBADYCDAsgAigCDCEAIAJBEGokACAAC2ACAX8BfiMAQRBrIgEkACABIAA2AgQCQCABKAIEKAIkQQFHBEAgASgCBEEMakESQQAQFyABQn83AwgMAQsgASABKAIEQQBCAEENECQ3AwgLIAEpAwghAiABQRBqJAAgAgugAQEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjcDCCADIAMoAhgoAgAgAygCFCADKQMIEMcBIgI3AwACQCACQgBTBEAgAygCGEEIaiADKAIYKAIAEBogA0F/NgIcDAELIAMpAwAgAykDCFIEQCADKAIYQQhqQQZBGxAXIANBfzYCHAwBCyADQQA2AhwLIAMoAhwhACADQSBqJAAgAAvfBAEBfyMAQSBrIgIgADYCGCACIAE2AhQCQCACKAIYRQRAIAJBATYCHAwBCyACIAIoAhgoAgA2AgwCQCACKAIYKAIIBEAgAiACKAIYKAIINgIQDAELIAJBATYCECACQQA2AggDQAJAIAIoAgggAigCGC8BBE8NAAJAIAIoAgwgAigCCGotAABBH0oEQCACKAIMIAIoAghqLQAAQYABSA0BCyACKAIMIAIoAghqLQAAQQ1GDQAgAigCDCACKAIIai0AAEEKRg0AIAIoAgwgAigCCGotAABBCUYEQAwBCyACQQM2AhACQCACKAIMIAIoAghqLQAAQeABcUHAAUYEQCACQQE2AgAMAQsCQCACKAIMIAIoAghqLQAAQfABcUHgAUYEQCACQQI2AgAMAQsCQCACKAIMIAIoAghqLQAAQfgBcUHwAUYEQCACQQM2AgAMAQsgAkEENgIQDAQLCwsgAigCCCACKAIAaiACKAIYLwEETwRAIAJBBDYCEAwCCyACQQE2AgQDQCACKAIEIAIoAgBNBEAgAigCDCACKAIIIAIoAgRqai0AAEHAAXFBgAFHBEAgAkEENgIQDAYFIAIgAigCBEEBajYCBAwCCwALCyACIAIoAgAgAigCCGo2AggLIAIgAigCCEEBajYCCAwBCwsLIAIoAhggAigCEDYCCCACKAIUBEACQCACKAIUQQJHDQAgAigCEEEDRw0AIAJBAjYCECACKAIYQQI2AggLAkAgAigCFCACKAIQRg0AIAIoAhBBAUYNACACQQU2AhwMAgsLIAIgAigCEDYCHAsgAigCHAtqAQF/IwBBEGsiASAANgIMIAEo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AhQgASgCHCgCbCABKAIQIAEoAhwoAixBhgJrak8EQCABKAIcKAI4IAEoAhwoAjggASgCEGogASgCECABKAIUaxAcGiABKAIcIgAgACgCcCABKAIQazYCcCABKAIcIgAgACgCbCABKAIQazYCbCABKAIcIgAgACgCXCABKAIQazYCXCABKAIcEM0CIAEgASgCECABKAIUajYCFAsgASgCHCgCACgCBARAIAEgASgCHCgCACABKAIcKAJ0IAEoAhwoAjggASgCHCgCbGpqIAEoAhQQdTYCGCABKAIcIgAgASgCGCAAKAJ0ajYCdCABKAIcKAJ0IAEoAhwoArQtakEDTwRAIAEgASgCHCgCbCABKAIcKAK0LWs2AgwgASgCHCABKAIcKAI4IAEoAgxqLQAANgJIIAEoAhwgASgCHCgCVCABKAIcKAI4IAEoAgxBAWpqLQAAIAEoAhwoAkggASgCHCgCWHRzcTYCSANAIAEoAhwoArQtBEAgASgCHCABKAIcKAJUIAEoAhwoAjggASgCDEECamotAAAgASgCHCgCSCABKAIcKAJYdHNxNgJIIAEoAhwoAkAgASgCDCABKAIcKAI0cUEBdGogASgCHCgCRCABKAIcKAJIQQF0ai8BADsBACABKAIcKAJEIAEoAhwoAkhBAXRqIAEoAgw7AQAgASABKAIMQQFqNgIMIAEoAhwiACAAKAK0LUF/ajYCtC0gASgCHCgCdCABKAIcKAK0LWpBA08NAQsLC0EAIQAgASgCHCgCdEGGAkkEfyABKAIcKAIAKAIEQQBHBUEAC0EBcQ0BCwsgASgCHCgCwC0gASgCHCgCPEkEQCABIAEoAhwoAmwgASgCHCgCdGo2AggCQCABKAIcKALALSABKAIISQRAIAEgASgCHCgCPCABKAIIazYCBCABKAIEQYICSwRAIAFBggI2AgQLIAEoAhwoAjggASgCCGpBACABKAIEEDQgASgCHCABKAIIIAEoAgRqNgLALQwBCyABKAIcKALALSABKAIIQYICakkEQCABIAEoAghBggJqIAEoAhwoAsAtazYCBCABKAIEIAEoAhwoAjwgASgCHCgCwC1rSwRAIAEgASgCHCgCPCABKAIcKALALWs2AgQLIAEoAhwoAjggASgCHCgCwC1qQQAgASgCBBA0IAEoAhwiACABKAIEIAAoAsAtajYC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CwJAIAMoAqQBLwFSRQRAIAMoAqQBIgAgAC8BDEH+/wNxOwEMDAELIAMoAqQBIgAgAC8BDEEBcjsBDAsgAyADKAKkASADKAKgARCCAUEBcToAhgEgAyADKAKgAUGACnFBgApHBH8gAy0AhgEFQQELQQFxOgCHASADAn9BASADKAKkAS8BUkGBAkYNABpBASADKAKkAS8BUkGCAkYNABogAygCpAEvAVJBgwJGC0EBcToAhQEgAy0AhwFBAXEEQCADIANBIGpCHBArNgIcIAMoAhxFBEAgAygCqAFBCGpBDkEAEBcgAygCkAEQJiADQX82AqwBDAILAkAgAygCoAFBgAJxBEACQCADKAKgAUGACHENACADKAKkASkDIEL/////D1YNACADKAKkASkDKEL/////D1gNAgsgAygCHCADKAKkASkDKBAvIAMoAhwgAygCpAEpAyAQLwwBCwJAAkAgAygCoAFBgAhxDQAgAygCpAEpAyBC/////w9WDQAgAygCpAEpAyhC/////w9WDQAgAygCpAEpA0hC/////w9YDQELIAMoAqQBKQMoQv////8PWgRAIAMoAhwgAygCpAEpAygQLwsgAygCpAEpAyBC/////w9aBEAgAygCHCADKAKkASkDIBAvCyADKAKkASkDSEL/////D1oEQCADKAIcIAMoAqQBKQNIEC8LCwsCfyMAQRBrIgAgAygCHDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFyADKAIcEBkgAygCkAEQJiADQX82AqwBDAILIANBAQJ/IwBBEGsiACADKAIcNgIMAn4gACgCDC0AAEEBcQRAIAAoAgwpAxAMAQtCAAunQf//A3ELIANBIGpBgAYQXjYCjAEgAygCHBAZIAMoAowBIAMoApABNgIAIAMgAygCjAE2ApABCyADLQCFAUEBcQRAIAMgA0EVakIHECs2AhAgAygCEEUEQCADKAKoAUEIakEOQQAQFyADKAKQARAmIANBfzYCrAEMAgsgAygCEEECECIgAygCEEHv1wBBAhBCIAMoAhAgAygCpAEvAVJB/wFxEIUBIAMoAhAgAygCpAEoAhBB//8DcRAiAn8jAEEQayIAIAMoAhA2AgwgACgCDC0AAEEBcUULBEAgAygCqAFBCGpBFEEAEBcgAygCEBAZIAMoApABECYgA0F/NgKsAQwCCyADQYGyAkEHIANBFWpBgAYQXjYCDCADKAIQEBkgAygCDCADKAKQATYCACADIAMoAgw2ApABCyADIANB0ABqQi4QKyIANgJMIABFBEAgAygCqAFBCGpBDkEAEBcgAygCkAEQJiADQX82AqwBDAELIAMoAkxB5dcAQerXACADKAKgAUGAAnEbQQQQQiADKAKgAUGAAnFFBEAgAygCTAJ/QS0gAy0AhgFBAXENABogAygCpAEvAQgLQf//A3EQIgsgAygCTAJ/QS0gAy0AhgFBAXENABogAygCpAEvAQoLQf//A3EQIiADKAJMIAMoAqQBLwEMECICQCADLQCFAUEBcQRAIAMoAkxB4wAQIgwBCyADKAJMIAMoAqQBKAIQQf//A3EQIgsgAygCpAEoAhQgA0GeAWogA0GcAWoQuwEgAygCTCADLwGeARAiIAMoAkwgAy8BnAEQIgJAAkAgAy0AhQFBAXFFDQAgAygCpAEpAyhCFFoNACADKAJMQQAQIwwBCyADKAJMIAMoAqQBKAIYECMLAkACQCADKAKgAUGAAnFBgAJHDQAgAygCpAEpAyBC/////w9UBEAgAygCpAEpAyhC/////w9UDQELIAMoAkxBfxAjIAMoAkxBfxAjDAELAkAgAygCpAEpAyBC/////w9UBEAgAygCTCADKAKkASkDIKcQIwwBCyADKAJMQX8QIwsCQCADKAKkASkDKEL/////D1QEQCADKAJMIAMoAqQBKQMopxAjDAELIAMoAkxBfxAjCwsgAygCTCADKAKkASgCMBBgQf//A3EQIiADIAMoAqQBKAI0IAMoAqABEMABQf//A3EgAygCkAFBgAYQwAFB//8DcWo2AogBIAMoAkwgAygCiAFB//8DcRAiIAMoAqABQYACcUUEQCADKAJMIAMoAqQBKAI4EGBB//8DcRAiIAMoAkwgAygCpAEoAjxB//8DcRAiIAMoAkwgAygCpAEvAUAQIiADKAJMIAMoAqQBKAJEECMCQCADKAKkASkDSEL/////D1QEQCADKAJMIAMoAqQBKQNIpxAjDAELIAMoAkxBfxAjCwsCfyMAQRBrIgAgAygCTDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFyADKAJMEBkgAygCkAEQJiADQX82AqwBDAELIAMoAqgBIANB0ABqAn4jAEEQayIAIAMoAkw2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IACwsQO0EASARAIAMoAkwQGSADKAKQARAmIANBfzYCrAEMAQsgAygCTBAZIAMoAqQBKAIwBEAgAygCqAEgAygCpAEoAjAQxAFBAEgEQCADKAKQARAmIANBfzYCrAEMAgsLIAMoApABBEAgAygCqAEgAygCkAFBgAYQvwFBAEgEQCADKAKQARAmIANBfzYCrAEMAgsLIAMoApABECYgAygCpAEoAjQEQCADKAKoASADKAKkASgCNCADKAKgARC/AUEASARAIANBfzYCrAEMAgsLIAMoAqABQYACcUUEQCADKAKkASgCOARAIAMoAqgBIAMoAqQBKAI4EMQBQQBIBEAgA0F/NgKsAQwDCwsLIAMgAy0AhwFBAXE2AqwBCyADKAKsASEAIANBsAFqJAAgAAvaAQEBfyMAQSBrIgQkACAEIAA7ARogBCABOwEYIAQgAjYCFCAEIAM2AhAgBEEQEBsiADYCDAJAIABFBEAgBEEANgIcDAELIAQoAgxBADYCACAEKAIMIAQoAhA2AgQgBCgCDCAELwEaOwEIIAQoAgwgBC8BGDsBCgJAIAQvARhBAEoEQCAEKAIUIAQvARgQiwMhACAEKAIMIAA2AgwgAEUEQCAEKAIMEBggBEEANgIcDAMLDAELIAQoAgxBADYCDAsgBCAEKAIMNgIcCyAEKAIcIQAgBEEgaiQAIAALjAMBAX8jAEEgayIEJAAgBCAANgIYIAQgATsBFiAEIAI2AhAgBCADNgIMAkAgBC8BFkUEQCAEQQA2AhwMAQsCQAJAAkACQCAEKAIQQYAwcSIABEAgAEGAEEYNASAAQYAgRg0CDAMLIARBADYCBAwDCyAEQQI2AgQMAgsgBEEENgIEDAELIAQoAgxBEkEAEBcgBEEANgIcDAELIARBFBAbIgA2AgggAEUEQCAEKAIMQQ5BABAXIARBADYCHAwBCyAELwEWQQFqEBshACAEKAIIIAA2AgAgAEUEQCAEKAIIEBggBEEANgIcDAELIAQoAggoAgAgBCgCGCAELwEWEBwaIAQoAggoAgAgBC8BFmpBADoAACAEKAIIIAQvARY7AQQgBCgCCEEANgIIIAQoAghBADYCDCAEKAIIQQA2AhAgBCgCBARAIAQoAgggBCgCBBA8QQVGBEAgBCgCCBApIAQoAgxBEkEAEBcgBEEANgIcDAILCyAEIAQoAgg2AhwLIAQoAhwhACAEQSBqJAAgAAs3AQF/IwBBEGsiASAANgIIAkAgASgCCEUEQCABQQA7AQ4MAQsgASABKAIILwEEOwEOCyABLwEOC4QDAQF/IwBBMGsiBSQAIAUgADYCKCAFIAE2AiQgBSACNgIgIAUgAzoAHyAFIAQ2AhgCQAJAIAUoAiANACAFLQAfQQFxDQAgBUEANgIsDAELIAUgBSgCIEEBQQAgBS0AH0EBcRtqEBs2AhQgBSgCFEUEQCAFKAIYQQ5BABAXIAVBADYCLAwBCwJAIAUoAigEQCAFIAUoAiggBSgCIK0QITYCECAFKAIQRQRAIAUoAhhBDkEAEBcgBSgCFBAYIAVBADYCLAwDCyAFKAIUIAUoAhAgBSgCIBAcGgwBCyAFKAIkIAUoAhQgBSgCIK0gBSgCGBBiQQBIBEAgBSgCFBAYIAVBADYCLAwCCwsgBS0AH0EBcQRAIAUoAhQgBSgCIGpBADoAACAFIAUoAhQ2AgwDQCAFKAIMIAUoAhQgBSgCIGpJBEAgBSgCDC0AAEUEQCAFKAIMQSA6AAALIAUgBSgCDEEBajYCDAwBCwsLIAUgBSgCFDYCLAsgBSgCLCEAIAVBMGokACAAC8IBAQF/IwBBMGsiBCQAIAQgADYCKCAEIAE2AiQgBCACNwMYIAQgAzYCFAJAIAQpAxhC////////////AFYEQCAEKAIUQRRBABAXIARBfzYCLAwBCyAEIAQoAiggBCgCJCAEKQMYEDEiAjcDCCACQgBTBEAgBCgCFCAEKAIoEBogBEF/NgIsDAELIAQpAwggBCkDGFMEQCAEKAIUQRFBABAXIARBfzYCLAwBCyAEQQA2AiwLIAQoAiwhACAEQTBqJAAgAAs2AQF/IwBBEGsiASQAIAEgADYCDCABKAIMEGQgASgCDCgCABBBIAEoAgwoAgQQQSABQRBqJAALqwEBAX8jAEEQayIBJAAgASAANgIMIAEoAgwoAggEQCABKAIMKAIIEB4gASgCDEEANgIICwJAIAEoAgwoAgRFDQAgASgCDCgCBCgCAEEBcUUNACABKAIMKAIEKAIQQX5HDQAgASgCDCgCBCIAIAAoAgBBfnE2AgAgASgCDCgCBCgCAEUEQCABKAIMKAIEEEEgASgCDEEANgIECwsgASgCDEEAOgAMIAFBEGokAAttAQF/IwBBIGsiBCQAIAQgADYCGCAEIAE2AhQgBCACNgIQIAQgAzYCDAJAIAQoAhhFBEAgBEEANgIcDAELIAQgBCgCFCAEKAIQIAQoAgwgBCgCGEEIahCJATYCHAsgBCgCHCEAIARBIGokACAAC1UBAX8jAEEQayIBJAAgASAANgIMAkACQCABKAIMKAIkQQFGDQAgASgCDCgCJEECRg0ADAELIAEoAgxBAEIAQQoQJBogASgCDEEANgIkCyABQRBqJAALWQIBfwF+AkACf0EAIABFDQAaIACtIAGtfiIDpyICIAAgAXJBgIAESQ0AGkF/IAIgA0IgiKcbCyICEBsiAEUNACAAQXxqLQAAQQNxRQ0AIABBACACEDQLIAALgQYCAX8BfiMAQZABayIDJAAgAyAANgKEASADIAE2AoABIAMgAjYCfCADEFwCQCADKAKAASkDCEIAUgRAIAMgAygCgAEoAgAoAgApA0g3A2AgAyADKAKAASgCACgCACkDSDcDaAwBCyADQgA3A2AgA0IANwNoCyADQgA3A3ACQANAIAMpA3AgAygCgAEpAwhUBEAgAygCgAEoAgAgAykDcKdBBHRqKAIAKQNIIAMpA2hUBEAgAyADKAKAASgCACADKQNwp0EEdGooAgApA0g3A2gLIAMpA2ggAygCgAEpAyBWBEAgAygCfEETQQAQFyADQn83A4gBDAMLIAMgAygCgAEoAgAgAykDcKdBBHRqKAIAKQNIIAMoAoABKAIAIAMpA3CnQQR0aigCACkDIHwgAygCgAEoAgAgAykDcKdBBHRqKAIAKAIwEGBB//8Dca18Qh58NwNYIAMpA1ggAykDYFYEQCADIAMpA1g3A2ALIAMpA2AgAygCgAEpAyBWBEAgAygCfEETQQAQFyADQn83A4gBDAMLIAMoAoQBKAIAIAMoAoABKAIAIAMpA3CnQQR0aigCACkDSEEAEC1BAEgEQCADKAJ8IAMoAoQBKAIAEBogA0J/NwOIAQwDCyADIAMoAoQBKAIAQQBBASADKAJ8ELoBQn9RBEAgAxBbIANCfzcDiAEMAwsgAygCgAEoAgAgAykDcKdBBHRqKAIAIAMQ6wEEQCADKAJ8QRVBABAXIAMQWyADQn83A4gBDAMFIAMoAoABKAIAIAMpA3CnQQR0aigCACgCNCADKAI0EMMBIQAgAygCgAEoAgAgAykDcKdBBHRqKAIAIAA2AjQgAygCgAEoAgAgAykDcKdBBHRqKAIAQQE6AAQgA0EANgI0IAMQWyADIAMpA3BCAXw3A3AMAgsACwsgAwJ+IAMpA2AgAykDaH1C////////////AFQEQCADKQNgIAMpA2h9DAELQv///////////wALNwOIAQsgAykDiAEhBCADQZABaiQAIAQLpgEBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADKAIQEPUBIgA2AgwCQCAARQRAIANBADYCHAwBCyADKAIMIAMoAhg2AgAgAygCDCADKAIUNgIEIAMoAhRBEHEEQCADKAIMIgAgACgCFEECcjYCFCADKAIMIgAgACgCGEECcjYCGAsgAyADKAIMNgIcCyADKAIcIQAgA0EgaiQAIAAL1QEBAX8jAEEgayIEJAAgBCAANgIYIAQgATcDECAEIAI2AgwgBCADNgIIAkACQCAEKQMQQv///////////wBXBEAgBCkDEEKAgICAgICAgIB/WQ0BCyAEKAIIQQRBPRAXIARBfzYCHAwBCwJ/IAQpAxAhASAEKAIMIQAgBCgCGCICKAJMQX9MBEAgAiABIAAQkwEMAQsgAiABIAAQkwELQQBIBEAgBCgCCEEEQbScASgCABAXIARBfzYCHAwBCyAEQQA2AhwLIAQoAhwhACAEQSBqJAAgAAsnAAJ/QQBBACAAEAYiACAAQRtGGyIARQ0AGkG0nAEgADYCAEEACxoLagEBfyMAQRBrIgMkACADIAFBwICAAnEEfyADIAJBBGo2AgwgAigCAAVBAAs2AgggAyAANgIAIAMgAUGAgAJyNgIEQQUgAxARIgBBgWBPBEBBtJwBQQAgAGs2AgBBfyEACyADQRBqJAAgAAtXAQJ/IwBBIGsiASQAIAEgADYCEEEKIAFBEGoQEyICQWFGBH8gASAANgIAQSggARASBSACCyIAQYFgTwRAQbScAUEAIABrNgIAQX8hAAsgAUEgaiQAIAALaQECfwJAIAAoAhQgACgCHE0NACAAQQBBACAAKAIkEQAAGiAAKAIUDQBBfw8LIAAoAgQiASAAKAIIIgJJBEAgACABIAJrrEEBIAAoAigRCgAaCyAAQQA2AhwgAEIANwMQIABCADcCBEEAC6YBAQF/IwBBEGsiAiQAIAIgADYCCCACIAE2AgQCQCACKAIILQAoQQFxBEAgAkF/NgIMDAELIAIoAggoAgAEQCACKAIIKAIAIAIoAgQQb0EASARAIAIoAghBDGogAigCCCgCABAaIAJBfzYCDAwCCwsgAigCCCACQQRqQgRBExAkQgBTBEAgAkF/NgIMDAELIAJBADYCDAsgAigCDCEAIAJBEGokACAAC0gCAX8BfiMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBCADKAIMQQhqEFIhBCADQRBqJAAgBAskAQF/IwBBEGsiAyQAIAMgAjYCDCAAIAEgAhClAiADQRBqJAAL0BECD38BfiMAQdAAayIFJAAgBSABNgJMIAVBN2ohEyAFQThqIRFBACEBAkACQANAAkAgDkEASA0AIAFB/////wcgDmtKBEBBtJwBQT02AgBBfyEODAELIAEgDmohDgsgBSgCTCIKIQECQAJAAkACfwJAAkACQAJAAkACQAJAAkACQCAKLQAAIgYEQANAAkACQAJAIAZB/wFxIgdFBEAgASEGDAELIAdBJUcNASABIQYDQCABLQABQSVHDQEgBSABQQJqIgc2AkwgBkEBaiEGIAEtAAIhCSAHIQEgCUElRg0ACwsgBiAKayEBIAAEQCAAIAogARAlCyABDRFBfyEPQQEhBiAFKAJMIQECQCAFKAJMLAABQVBqQQpPDQAgAS0AAkEkRw0AIAEsAAFBUGohD0EBIRJBAyEGCyAFIAEgBmoiATYCTEEAIQYCQCABLAAAIhBBYGoiCUEfSwRAIAEhBwwBCyABIQdBASAJdCIMQYnRBHFFDQADQCAFIAFBAWoiBzYCTCAGIAxyIQYgASwAASIQQWBqIglBH0sNASAHIQFBASAJdCIMQYnRBHENAAsLAkAgEEEqRgRAIAUCfwJAIAcsAAFBUGpBCk8NACAFKAJMIgEtAAJBJEcNACABLAABQQJ0IARqQcB+akEKNgIAIAEsAAFBA3QgA2pBgH1qKAIAIQ1BASESIAFBA2oMAQsgEg0VQQAhEkEAIQ0gAARAIAIgAigCACIBQQRqNgIAIAEoAgAhDQsgBSgCTEEBagsiATYCTCANQX9KDQFBACANayENIAZBgMAAciEGDAELIAVBzABqEJ4BIg1BAEgNEyAFKAJMIQELQX8hCAJAIAEtAABBLkcNACABLQABQSpGBEACQCABLAACQVBqQQpPDQAgBSgCTCIBLQADQSRHDQAgASwAAkECdCAEakHAfmpBCjYCACABLAACQQN0IANqQYB9aigCACEIIAUgAUEEaiIBNgJMDAILIBINFCAABH8gAiACKAIAIgFBBGo2AgAgASgCAAVBAAshCCAFIAUoAkxBAmoiATYCTAwBCyAFIAFBAWo2AkwgBUHMAGoQngEhCCAFKAJMIQELQQAhBwNAIAchDEF/IQsgASwAAEG/f2pBOUsNFCAFIAFBAWoiEDYCTCABLAAAIQcgECEBIAcgDEE6bGotAN8HIgdBf2pBCEkNAAsgB0UNEwJAAkACQCAHQRNGBEAgD0F/TA0BDBcLIA9BAEgNASAEIA9BAnRqIAc2AgAgBSADIA9BA3RqKQMANwNAC0EAIQEgAEUNEwwBCyAARQ0RIAVBQGsgByACEJ0BIAUoAkwhEAsgBkH//3txIgkgBiAGQYDAAHEbIQZBACELQYAIIQ8gESEHIBBBf2osAAAiAUFfcSABIAFBD3FBA0YbIAEgDBsiAUGof2oiEEEgTQ0BAkACfwJAAkAgAUG/f2oiCUEGSwRAIAFB0wBHDRQgCEUNASAFKAJADAMLIAlBAWsOAxMBEwgLQQAhASAAQSAgDUEAIAYQJwwCCyAFQQA2AgwgBSAFKQNAPgIIIAUgBUEIajYCQEF/IQggBUEIagshB0EAIQECQANAIAcoAgAiCUUNAQJAIAVBBGogCRC4ASIKQQBIIgkNACAKIAggAWtLDQAgB0EEaiEHIAggASAKaiIBSw0BDAILC0F/IQsgCQ0VCyAAQSAgDSABIAYQJyABRQRAQQAhAQwBC0EAIQwgBSgCQCEHA0AgBygCACIJRQ0BIAVBBGogCRC4ASIJIAxqIgwgAUoNASAAIAVBBGogCRAlIAdBBGohByAMIAFJDQALCyAAQSAgDSABIAZBgMAAcxAnIA0gASANIAFKGyEBDBELIAUgAUEBaiIHNgJMIAEtAAEhBiAHIQEMAQsLIBBBAWsOHwwMDAwMDAwMAQwDBAEBAQwEDAwMDAgFBgwMAgwJDAwHCyAOIQsgAA0PIBJFDQxBASEBA0AgBCABQQJ0aigCACIABEAgAyABQQN0aiAAIAIQnQFBASELIAFBAWoiAUEKRw0BDBELC0EBIQsgAUEJSw0PQX8hCyAEIAFBAnRqKAIADQ8DQCABQQFqIgFBCkcEQCAEIAFBAnRqKAIARQ0BCwtBf0EBIAFBCkkbIQsMDwsgACAFKwNAIA0gCCAGIAFBAREBACEBDAwLIAUoAkAiAUGKCCABGyIKQQAgCBC3ASIBIAggCmogARshByAJIQYgASAKayAIIAEbIQgMCQsgBSAFKQNAPAA3QQEhCCATIQogCSEGDAgLIAUpA0AiFEJ/VwRAIAVCACAUfSIUNwNAQQEhC0GACAwGCyAGQYAQcQRAQQEhC0GBCAwGC0GCCEGACCAGQQFxIgsbDAULIAUpA0AgERCMAiEKIAZBCHFFDQUgCCARIAprIgFBAWogCCABShshCAwFCyAIQQggCEEISxshCCAGQQhyIQZB+AAhAQsgBSkDQCARIAFBIHEQhgIhCiAGQQhxRQ0DIAUpA0BQDQMgAUEEdkGACGohD0ECIQsMAwtBACEBIAxB/wFxIgdBB0sNBQJAAkACQAJAAkACQAJAIAdBAWsOBwECAwQMBQYACyAFKAJAIA42AgAMCwsgBSgCQCAONgIADAoLIAUoAkAgDqw3AwAMCQsgBSgCQCAOOwEADAgLIAUoAkAgDjoAAAwHCyAFKAJAIA42AgAMBgsgBSgCQCAOrDcDAAwFCyAFKQNAIRRBgAgLIQ8gFCAREEYhCgsgBkH//3txIAYgCEF/ShshBiAFKQNAIRQCfwJAIAgNACAUUEUNACARIQpBAAwBCyAIIBRQIBEgCmtqIgEgCCABShsLIQgLIABBICALIAcgCmsiCSAIIAggCUgbIgdqIgwgDSANIAxIGyIBIAwgBhAnIAAgDyALECUgAEEwIAEgDCAGQYCABHMQJyAAQTAgByAJQQAQJyAAIAogCRAlIABBICABIAwgBkGAwABzECcMAQsLQQAhCwwBC0F/IQsLIAVB0ABqJAAgCwvUEQEBfyMAQbABayIGJAAgBiAANgKoASAGIAE2AqQBIAYgAjYCoAEgBiADNgKcASAGIAQ2ApgBIAYgBTYClAEgBkEANgKQAQNAIAYoApABQQ9LRQRAIAZBIGogBigCkAFBAXRqQQA7AQAgBiAGKAKQAUEBajYCkAEMAQsLIAZBADYCjAEDQCAGKAKMASAGKAKgAU9FBEAgBkEgaiAGKAKkASAGKAKMAUEBdGovAQBBAXRqIgAgAC8BAEEBajsBACAGIAYoAowBQQFqNgKMAQwBCwsgBiAGKAKYASgCADYCgAEgBkEPNgKEAQNAAkAgBigChAFBAUkNACAGQSBqIAYoAoQBQQF0ai8BAA0AIAYgBigChAFBf2o2AoQBDAELCyAGKAKAASAGKAKEAUsEQCAGIAYoAoQBNgKAAQsCQCAGKAKEAUUEQCAGQcAAOgBYIAZBAToAWSAGQQA7AVogBigCnAEiASgCACEAIAEgAEEEajYCACAAIAZB2ABqIgEoAQA2AQAgBigCnAEiAigCACEAIAIgAEEEajYCACAAIAEoAQA2AQAgBigCmAFBATYCACAGQQA2AqwBDAELIAZBATYCiAEDQAJAIAYoAogBIAYoAoQBTw0AIAZBIGogBigCiAFBAXRqLwEADQAgBiAGKAKIAUEBajYCiAEMAQsLIAYoAoABIAYoAogBSQRAIAYgBigCiAE2AoABCyAGQQE2AnQgBkEBNgKQAQNAIAYoApABQQ9NBEAgBiAGKAJ0QQF0NgJ0IAYgBigCdCAGQSBqIAYoApABQQF0ai8BAGs2AnQgBigCdEEASARAIAZBfzYCrAEMAwUgBiAGKAKQAUEBajYCkAEMAgsACwsCQCAGKAJ0QQBMDQAgBigCqAEEQCAGKAKEAUEBRg0BCyAGQX82AqwBDAELIAZBADsBAiAGQQE2ApABA0AgBigCkAFBD09FBEAgBigCkAFBAWpBAXQgBmogBigCkAFBAXQgBmovAQAgBkEgaiAGKAKQAUEBdGovAQBqOwEAIAYgBigCkAFBAWo2ApABDAELCyAGQQA2AowBA0AgBigCjAEgBigCoAFJBEAgBigCpAEgBigCjAFBAXRqLwEABEAgBigClAEhASAGKAKkASAGKAKMASICQQF0ai8BAEEBdCAGaiIDLwEAIQAgAyAAQQFqOwEAIABB//8DcUEBdCABaiACOwEACyAGIAYoAowBQQFqNgKMAQwBCwsCQCAGKAKoASIAQQFNBEAgAEEBawRAIAYgBigClAEiADYCTCAGIAA2AlAgBkEUNgJIDAILIAZB0O8ANgJQIAZBkPAANgJMIAZBgQI2AkgMAQsgBkHQ8AA2AlAgBkGQ8QA2AkwgBkEANgJICyAGQQA2AmwgBkEANgKMASAGIAYoAogBNgKQASAGIAYoApwBKAIANgJUIAYgBigCgAE2AnwgBkEANgJ4IAZBfzYCYCAGQQEgBigCgAF0NgJwIAYgBigCcEEBazYCXAJAAkAgBigCqAFBAUYEQCAGKAJwQdQGSw0BCyAGKAKoAUECRw0BIAYoAnBB0ARNDQELIAZBATYCrAEMAQsDQCAGIAYoApABIAYoAnhrOgBZAkAgBigClAEgBigCjAFBAXRqLwEAQQFqIAYoAkhJBEAgBkEAOgBYIAYgBigClAEgBigCjAFBAXRqLwEAOwFaDAELAkAgBigClAEgBigCjAFBAXRqLwEAIAYoAkhPBEAgBiAGKAJMIAYoApQBIAYoAowBQQF0ai8BACAGKAJIa0EBdGovAQA6AFggBiAGKAJQIAYoApQBIAYoAowBQQF0ai8BACAGKAJIa0EBdGovAQA7AVoMAQsgBkHgADoAWCAGQQA7AVoLCyAGQQEgBigCkAEgBigCeGt0NgJoIAZBASAGKAJ8dDYCZCAGIAYoAmQ2AogBA0AgBiAGKAJkIAYoAmhrNgJkIAYoAlQgBigCZCAGKAJsIAYoAnh2akECdGogBkHYAGooAQA2AQAgBigCZA0ACyAGQQEgBigCkAFBAWt0NgJoA0AgBigCbCAGKAJocQRAIAYgBigCaEEBdjYCaAwBCwsCQCAGKAJoBEAgBiAGKAJsIAYoAmhBAWtxNgJsIAYgBigCaCAGKAJsajYCbAwBCyAGQQA2AmwLIAYgBigCjAFBAWo2AowBIAZBIGogBigCkAFBAXRqIgEvAQBBf2ohACABIAA7AQACQCAAQf//A3FFBEAgBigCkAEgBigChAFGDQEgBiAGKAKkASAGKAKUASAGKAKMAUEBdGovAQBBAXRqLwEANgKQAQsCQCAGKAKQASAGKAKAAU0NACAGKAJgIAYoAmwgBigCXHFGDQAgBigCeEUEQCAGIAYoAoABNgJ4CyAGIAYoAlQgBigCiAFBAnRqNgJUIAYgBigCkAEgBigCeGs2AnwgBkEBIAYoAnx0NgJ0A0ACQCAGKAJ8IAYoAnhqIAYoAoQBTw0AIAYgBigCdCAGQSBqIAYoAnwgBigCeGpBAXRqLwEAazYCdCAGKAJ0QQBMDQAgBiAGKAJ8QQFqNgJ8IAYgBigCdEEBdDYCdAwBCwsgBiAGKAJwQQEgBigCfHRqNgJwAkACQCAGKAKoAUEBRgRAIAYoAnBB1AZLDQELIAYoAqgBQQJHDQEgBigCcEHQBE0NAQsgBkEBNgKsAQwECyAGIAYoAmwgBigCXHE2AmAgBigCnAEoAgAgBigCYEECdGogBigCfDoAACAGKAKcASgCACAGKAJgQQJ0aiAGKAKAAToAASAGKAKcASgCACAGKAJgQQJ0aiAGKAJUIAYoApwBKAIAa0ECdTsBAgsMAQsLIAYoAmwEQCAGQcAAOgBYIAYgBigCkAEgBigCeGs6AFkgBkEAOwFaIAYoAlQgBigCbEECdGogBkHYAGooAQA2AQALIAYoApwBIgAgACgCACAGKAJwQQJ0ajYCACAGKAKYASAGKAKAATYCACAGQQA2AqwBCyAGKAKsASEAIAZBsAFqJAAgAAu3AQEEfwJAIAIoAhAiAwR/IAMFIAIQ0AINASACKAIQCyACKAIUIgVrIAFJBEAgAiAAIAEgAigCJBEAAA8LAkAgAiwAS0EASA0AIAEhBANAIAQiA0UNASAAIANBf2oiBGotAABBCkcNAAsgAiAAIAMgAigCJBEAACIEIANJDQEgASADayEBIAAgA2ohACACKAIUIQUgAyEGCyAFIAAgARAcGiACIAIoAhQgAWo2AhQgASAGaiEECyAEC7ECAQF/IwBBIGsiAyQAIAMgADYCGCADIAE2AhQgAyACNgIQIAMgAygCGCgCBDYCDCADKAIMIAMoAhBLBEAgAyADKAIQNgIMCwJAIAMoAgxFBEAgA0EANgIcDAELIAMoAhgiACAAKAIEIAMoAgxrNgIEIAMoAhQgAygCGCgCACADKAIMEBwaAkAgAygCGCgCHCgCGEEBRgRAIAMoAhgoAjAgAygCFCADKAIMED8hACADKAIYIAA2AjAMAQsgAygCGCgCHCgCGEECRgRAIAMoAhgoAjAgAygCFCADKAIMEB0hACADKAIYIAA2AjALCyADKAIYIgAgAygCDCAAKAIAajYCACADKAIYIgAgAygCDCAAKAIIajYCCCADIAMoAgw2AhwLIAMoAhwhACADQSBqJAAgAAvtAQEBfyMAQRBrIgEgADYCCAJAAkACQCABKAIIRQ0AIAEoAggoAiBFDQAgASgCCCgCJA0BCyABQQE2AgwMAQsgASABKAIIKAIcNgIEAkACQCABKAIERQ0AIAEoAgQoAgAgASgCCEcNACABKAIEKAIEQSpGDQEgASgCBCgCBEE5Rg0BIAEoAgQoAgRBxQBGDQEgASgCBCgCBEHJAEYNASABKAIEKAIEQdsARg0BIAEoAgQoAgRB5wBGDQEgASgCBCgCBEHxAEYNASABKAIEKAIEQZoFRg0BCyABQQE2AgwMAQsgAUEANgIMCyABKAIMC9IEAQF/IwBBIGsiAyAANgIcIAMgATYCGCADIAI2AhQgAyADKAIcQdwWaiADKAIUQQJ0aigCADYCECADIAMoAhRBAXQ2AgwDQAJAIAMoAgwgAygCHCgC0ChKDQACQCADKAIMIAMoAhwoAtAoTg0AIAMoAhggAygCHCADKAIMQQJ0akHgFmooAgBBAnRqLwEAIAMoAhggAygCHEHcFmogAygCDEECdGooAgBBAnRqLwEATgRAIAMoAhggAygCHCADKAIMQQJ0akHgFmooAgBBAnRqLwEAIAMoAhggAygCHEHcFmogAygCDEECdGooAgBBAnRqLwEARw0BIAMoAhwgAygCDEECdGpB4BZqKAIAIAMoAhxB2Chqai0AACADKAIcQdwWaiADKAIMQQJ0aigCACADKAIcQdgoamotAABKDQELIAMgAygCDEEBajYCDAsgAygCGCADKAIQQQJ0ai8BACADKAIYIAMoAhxB3BZqIAMoAgxBAnRqKAIAQQJ0ai8BAEgNAAJAIAMoAhggAygCEEECdGovAQAgAygCGCADKAIcQdwWaiADKAIMQQJ0aigCAEECdGovAQBHDQAgAygCECADKAIcQdgoamotAAAgAygCHEHcFmogAygCDEECdGooAgAgAygCHEHYKGpqLQAASg0ADAELIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhxB3BZqIAMoAgxBAnRqKAIANgIAIAMgAygCDDYCFCADIAMoAgxBAXQ2AgwMAQsLIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhA2AgALDABB+JwBEANBgJ0BC+cIAQN/IwBBMGsiAiQAIAIgADYCLCACIAE2AiggAiACKAIoKAIANgIkIAIgAigCKCgCCCgCADYCICACIAIoAigoAggoAgw2AhwgAkF/NgIQIAIoAixBADYC0CggAigCLEG9BDYC1CggAkEANgIYA0AgAigCGCACKAIcTkUEQAJAIAIoAiQgAigCGEECdGovAQAEQCACIAIoAhgiATYCECACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohACAEIAA2AtAoIABBAnQgA2ogATYCACACKAIYIAIoAixB2ChqakEAOgAADAELIAIoAiQgAigCGEECdGpBADsBAgsgAiACKAIYQQFqNgIYDAELCwNAIAIoAiwoAtAoQQJIBEACQCACKAIQQQJIBEAgAiACKAIQQQFqIgA2AhAMAQtBACEACyACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohASAEIAE2AtAoIAFBAnQgA2ogADYCACACIAA2AgwgAigCJCACKAIMQQJ0akEBOwEAIAIoAgwgAigCLEHYKGpqQQA6AAAgAigCLCIAIAAoAqgtQX9qNgKoLSACKAIgBEAgAigCLCIAIAAoAqwtIAIoAiAgAigCDEECdGovAQJrNgKsLQsMAQsLIAIoAiggAigCEDYCBCACIAIoAiwoAtAoQQJtNgIYA0AgAigCGEEBSEUEQCACKAIsIAIoAiQgAigCGBB3IAIgAigCGEF/ajYCGAwBCwsgAiACKAIcNgIMA0AgAiACKAIsKALgFjYCGCACKAIsQdwWaiEBIAIoAiwiAygC0CghACADIABBf2o2AtAoIAIoAiwgAEECdCABaigCADYC4BYgAigCLCACKAIkQQEQdyACIAIoAiwoAuAWNgIUIAIoAhghASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBf2ohACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIUIQEgAigCLEHcFmohAyACKAIsIgQoAtQoQX9qIQAgBCAANgLUKCAAQQJ0IANqIAE2AgAgAigCJCACKAIMQQJ0aiACKAIkIAIoAhhBAnRqLwEAIAIoAiQgAigCFEECdGovAQBqOwEAIAIoAgwgAigCLEHYKGpqAn8gAigCGCACKAIsQdgoamotAAAgAigCFCACKAIsQdgoamotAABOBEAgAigCGCACKAIsQdgoamotAAAMAQsgAigCFCACKAIsQdgoamotAAALQQFqOgAAIAIoAiQgAigCFEECdGogAigCDCIAOwECIAIoAiQgAigCGEECdGogADsBAiACIAIoAgwiAEEBajYCDCACKAIsIAA2AuAWIAIoAiwgAigCJEEBEHcgAigCLCgC0ChBAk4NAAsgAigCLCgC4BYhASACKAIsQdwW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LCACIAIoAjgoAng2AiAgAiACKAI4KAKQATYCHCACAn8gAigCOCgCbCACKAI4KAIsQYYCa0sEQCACKAI4KAJsIAIoAjgoAixBhgJrawwBC0EACzYCGCACIAIoAjgoAkA2AhQgAiACKAI4KAI0NgIQIAIgAigCOCgCOCACKAI4KAJsakGCAmo2AgwgAiACKAIsIAIoAiBBAWtqLQAAOgALIAIgAigCLCACKAIgai0AADoACiACKAI4KAJ4IAIoAjgoAowBTwRAIAIgAigCMEECdjYCMAsgAigCHCACKAI4KAJ0SwRAIAIgAigCOCgCdDYCHAsDQAJAIAIgAigCOCgCOCACKAI0ajYCKAJAIAIoAiggAigCIGotAAAgAi0ACkcNACACKAIoIAIoAiBBAWtqLQAAIAItAAtHDQAgAigCKC0AACACKAIsLQAARw0AIAIgAigCKCIAQQFqNgIoIAAtAAEgAigCLC0AAUcEQAwBCyACIAIoAixBAmo2AiwgAiACKAIoQQFqNgIoA0AgAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoAn9BACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAigCLCACKAIMSQtBAXENAAsgAkGCAiACKAIMIAIoAixrazYCJCACIAIoAgxB/n1qNgIsIAIoAiQgAigCIEoEQCACKAI4IAIoAjQ2AnAgAiACKAIkNgIgIAIoAiQgAigCHE4NAiACIAIoAiwgAigCIEEBa2otAAA6AAsgAiACKAIsIAIoAiBqLQAAOgAKCwsgAiACKAIUIAIoAjQgAigCEHFBAXRqLwEAIgE2AjRBACEAIAEgAigCGEsEfyACIAIoAjBBf2oiADYCMCAAQQBHBUEAC0EBcQ0BCwsCQCACKAIgIAIoAjgoAnRNBEAgAiACKAIgNgI8DAELIAIgAigCOCgCdDYCPAsgAigCPAueEAEBfyMAQTBrIgIkACACIAA2AiggAiABNgIkIAICfyACKAIoKAIMQQVrIAIoAigoAixLBEAgAigCKCgCLAwBCyACKAIoKAIMQQVrCzYCICACQQA2AhAgAiACKAIoKAIAKAIENgIMA0ACQCACQf//AzYCHCACIAIoAigoArwtQSpqQQN1NgIUIAIoAigoAgAoAhAgAigCFEkNACACIAIoAigoAgAoAhAgAigCFGs2AhQgAiACKAIoKAJsIAIoAigoAlxrNgIYIAIoAhwgAigCGCACKAIoKAIAKAIEaksEQCACIAIoAhggAigCKCgCACgCBGo2AhwLIAIoAhwgAigCFEsEQCACIAIoAhQ2AhwLAkAgAigCHCACKAIgTw0AAkAgAigCHEUEQCACKAIkQQRHDQELIAIoAiRFDQAgAigCHCACKAIYIAIoAigoAgAoAgRqRg0BCwwBC0EAIQAgAkEBQQAgAigCJEEERgR/IAIoAhwgAigCGCACKAIoKAIAKAIEakYFQQALQQFxGzYCECACKAIoQQBBACACKAIQEFYgAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHyACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQHBogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQdRogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQHBogAigCKCACKAIoKAIsNgJsDAELIAIoAigoAjwgAigCKCgCbGsgAigCDE0EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAcGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAcGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2AiwMAQsCQCACKAIkRQ0AIAIoAiRBBEYNACACKAIoKAIAKAIEDQAgAigCKCgCbCACKAIoKAJcRw0AIAJBATYCLAwBCyACIAIoAigoAjwgAigCKCgCbGtBAWs2AhQCQCACKAIoKAIAKAIEIAIoAhRNDQAgAigCKCgCXCACKAIoKAIsSA0AIAIoAigiACAAKAJcIAIoAigoAixrNgJcIAIoAigiACAAKAJsIAIoAigoAixrNgJsIAIoAigoAjggAigCKCgCOCACKAIoKAIsaiACKAIoKAJsEBwaIAIoAigoArAtQQJJBEAgAigCKCIAIAAoArAtQQFqNgKwLQsgAiACKAIoKAIsIAIoAhRqNgIUCyACKAIUIAIoAigoAgAoAgRLBEAgAiACKAIoKAIAKAIENgIUCyACKAIUBEAgAigCKCgCACACKAIoKAI4IAIoAigoAmxqIAIoAhQQdRogAigCKCIAIAIoAhQgACgCbGo2AmwLIAIoAigoAsAtIAIoAigoAmxJBEAgAigCKCACKAIoKAJsNgLALQsgAiACKAIoKAK8LUEqakEDdTYCFCACAn9B//8DIAIoAigoAgwgAigCFGtB//8DSw0AGiACKAIoKAIMIAIoAhRrCzYCFCACAn8gAigCFCACKAIoKAIsSwRAIAIoAigoAiwMAQsgAigCFAs2AiAgAiACKAIoKAJsIAIoAigoAlxrNgIYAkAgAigCGCACKAIgSQRAIAIoAhhFBEAgAigCJEEERw0CCyACKAIkRQ0BIAIoAigoAgAoAgQNASACKAIYIAIoAhRLDQELIAICfyACKAIYIAIoAhRLBEAgAigCFAwBCyACKAIYCzYCHCACQQFBAAJ/QQAgAigCJEEERw0AGkEAIAIoAigoAgAoAgQNABogAigCHCACKAIYRgtBAXEbNgIQIAIoAiggAigCKCgCOCACKAIoKAJcaiACKAIcIAIoAhAQViACKAIoIgAgAigCHCAAKAJcajYCXCACKAIoKAIAEB8LIAJBAkEAIAIoAhAbNgIsCyACKAIsIQAgAkEwaiQAIAALsgIBAX8jAEEQayIBJAAgASAANgIIAkAgASgCCBB2BEAgAUF+NgIMDAELIAEgASgCCCgCHCgCBDYCBCABKAIIKAIcKAIIBEAgASgCCCgCKCABKAIIKAIcKAIIIAEoAggoAiQRAgALIAEoAggoAhwoAkQEQCABKAIIKAIoIAEoAggoAhwoAkQgASgCCCgCJBECAAsgASgCCCgCHCgCQARAIAEoAggoAiggASgCCCgCHCgCQCABKAIIKAIkEQIACyABKAIIKAIcKAI4BEAgASgCCCgCKCABKAIIKAIcKAI4IAEoAggoAiQRAgALIAEoAggoAiggASgCCCgCHCABKAIIKAIkEQIAIAEoAghBADYCHCABQX1BACABKAIEQfEARhs2AgwLIAEoAgwhACABQRBqJAAgAAvrFwECfyMAQfAAayIDIAA2AmwgAyABNgJoIAMgAjYCZCADQX82AlwgAyADKAJoLwECNgJUIANBADYCUCADQQc2AkwgA0EENgJIIAMoAlRFBEAgA0GKATYCTCADQQM2AkgLIANBADYCYANAIAMoAmAgAygCZEpFBEAgAyADKAJUNgJYIAMgAygCaCADKAJgQQFq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AygCbCIAIAAoArwtIAMoAgxBEGtqNgK8LQwBCyADKAJsIgAgAC8BuC0gAygCUEELa0H//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwiACADKAIMIAAoArwtajYCvC0LCwsLIANBADYCUCADIAMoAlg2AlwCQCADKAJURQRAIANBigE2AkwgA0EDNgJIDAELAkAgAygCWCADKAJURgRAIANBBjYCTCADQQM2AkgMAQsgA0EHNgJMIANBBDYCSAsLCyADIAMoAmBBAWo2AmAMAQsLC5EEAQF/IwBBMGsiAyAANgIsIAMgATYCKCADIAI2AiQgA0F/NgIcIAMgAygCKC8BAjYCFCADQQA2AhAgA0EHNgIMIANBBDYCCCADKAIURQRAIANBigE2AgwgA0EDNgIICyADKAIoIAMoAiRBAWpBAnRqQf//AzsBAiADQQA2AiADQCADKAIgIAMoAiRKRQRAIAMgAygCFDYCGCADIAMoAiggAygCIEEBakECdGovAQI2AhQgAyADKAIQQQFqIgA2AhACQAJAIAAgAygCDE4NACADKAIYIAMoAhRHDQAMAQsCQCADKAIQIAMoAghIBEAgAygCLEH8FGogAygCGEECdGoiACADKAIQIAAvAQBqOwEADAELAkAgAygCGARAIAMoAhggAygCHEcEQCADKAIsIAMoAhhBAnRqQfwUaiIAIAAvAQBBAWo7AQALIAMoAiwiACAAQbwVai8BAEEBajsBvBUMAQsCQCADKAIQQQpMBEAgAygCLCIAIABBwBVqLwEAQQFqOwHAFQwBCyADKAIsIgAgAEHEFWovAQBBAWo7AcQVCwsLIANBADYCECADIAMoAhg2AhwCQCADKAIURQRAIANBigE2AgwgA0EDNgIIDAELAkAgAygCGCADKAIURgRAIANBBjYCDCADQQM2AggMAQsgA0EHNgIMIANBBDYCCAsLCyADIAMoAiBBAWo2AiAMAQsLC6cSAQJ/IwBB0ABrIgMgADYCTCADIAE2AkggAyACNgJEIANBADYCOCADKAJMKAKgLQRAA0AgAyADKAJMKAKkLSADKAI4QQF0ai8BADYCQCADKAJMKAKYLSEAIAMgAygCOCIBQQFqNgI4IAMgACABai0AADYCPAJAIAMoAkBFBEAgAyADKAJIIAMoAjxBAnRqLwECNgIsAkAgAygCTCgCvC1BECADKAIsa0oEQCADIAMoAkggAygCPEECdGovAQA2AiggAygCTCIAIAAvAbgtIAMoAihB//8DcSADKAJMKAK8LXRyOwG4LSADKAJMLwG4LUH/AXEhASADKAJMKAIIIQIgAygCTCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJMLwG4LUEIdSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwgAygCKEH//wNxQRAgAygCTCgCvC1rdTsBuC0gAygCTCIAIAAoArwtIAMoAixBEGtqNgK8LQwBCyADKAJMIgAgAC8BuC0gAygCSCADKAI8QQJ0ai8BACADKAJMKAK8LXRyOwG4LSADKAJMIgAgAygCLCAAKAK8LWo2ArwtCwwBCyADIAMoAjwtAKBdNgI0IAMgAygCSCADKAI0QYECakECdGovAQI2AiQCQCADKAJMKAK8LUEQIAMoAiRrSgRAIAMgAygCSCADKAI0QYECakECdGovAQA2AiAgAygCTCIAIAAvAbgtIAMoAiBB//8DcSADKAJMKAK8LXRyOwG4LSADKAJMLwG4LUH/AXEhASADKAJMKAIIIQIgAygCTCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJMLwG4LUEIdSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwgAygCIEH//wNxQRAgAygCTCgCvC1rdTsBuC0gAygCTCIAIAAoArwtIAMoAiRBEGtqNgK8LQwBCyADKAJMIgAgAC8BuC0gAygCSCADKAI0QYECakECdGovAQAgAygCTCgCvC10cjsBuC0gAygCTCIAIAMoAiQgACgCvC1qNgK8LQsgAyADKAI0QQJ0QeDpAGooAgA2AjAgAygCMARAIAMgAygCPCADKAI0QQJ0QdDsAGooAgBrNgI8IAMgAygCMDYCHAJAIAMoAkwoArwtQRAgAygCHGtKBEAgAyADKAI8NgIYIAMoAkwiACAALwG4LSADKAIYQf//A3EgAygCTCgCvC10cjsBuC0gAygCTC8BuC1B/wFxIQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTC8BuC1BCHUhASADKAJMKAIIIQIgAygCTCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJMIAMoAhhB//8DcUEQIAMoAkwoArwta3U7AbgtIAMoAkwiACAAKAK8LSADKAIcQRBrajYCvC0MAQsgAygCTCIAIAAvAbgtIAMoAjxB//8DcSADKAJMKAK8LXRyOwG4LSADKAJMIgAgAygCHCAAKAK8LWo2ArwtCwsgAyADKAJAQX9qNgJAIAMCfyADKAJAQYACSQRAIAMoAkAtAKBZDAELIAMoAkBBB3ZBgAJqLQCgWQs2AjQgAyADKAJEIAMoAjRBAnRqLwECNgIUAkAgAygCTCgCvC1BECADKAIUa0oEQCADIAMoAkQgAygCNEECdGovAQA2AhAgAygCTCIAIAAvAbgtIAMoAhBB//8DcSADKAJMKAK8LXRyOwG4LSADKAJMLwG4LUH/AXEhASADKAJMKAIIIQIgAygCTCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJMLwG4LUEIdSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwgAygCEEH//wNxQRAgAygCTCgCvC1rdTsBuC0gAygCTCIAIAAoArwtIAMoAhRBEGtqNgK8LQwBCyADKAJMIgAgAC8BuC0gAygCRCADKAI0QQJ0ai8BACADKAJMKAK8LXRyOwG4LSADKAJMIgAgAygCFCAAKAK8LWo2ArwtCyADIAMoAjRBAnRB4OoAaigCADYCMCADKAIwBEAgAyADKAJAIAMoAjRBAnRB0O0AaigCAGs2AkAgAyADKAIwNgIMAkAgAygCTCgCvC1BECADKAIMa0oEQCADIAMoAkA2AgggAygCTCIAIAAvAbgtIAMoAghB//8DcSADKAJMKAK8LXRyOwG4LSADKAJMLwG4LUH/AXEhASADKAJMKAIIIQIgAygCTCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJMLwG4LUEIdSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwgAygCCEH//wNxQRAgAygCTCgCvC1rdTsBuC0gAygCTCIAIAAoArwtIAMoAgxBEGtqNgK8LQwBCyADKAJMIgAgAC8BuC0gAygCQEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwiACADKAIMIAAoArwtajYCvC0LCwsgAygCOCADKAJMKAKgLUkNAAsLIAMgAygCSC8Bggg2AgQCQCADKAJMKAK8LUEQIAMoAgRrSgRAIAMgAygCSC8BgAg2AgAgAygCTCIAIAAvAbgtIAMoAgBB//8DcSADKAJMKAK8LXRyOwG4LSADKAJMLwG4LUH/AXEhASADKAJMKAIIIQIgAygCTCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJMLwG4LUEIdSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwgAygCAEH//wNxQRAgAygCTCgCvC1rdTsBuC0gAygCTCIAIAAoArwtIAMoAgRBEGtqNgK8LQwBCyADKAJMIgAgAC8BuC0gAygCSC8BgAggAygCTCgCvC10cjsBuC0gAygCTCIAIAMoAgQgACgCvC1qNgK8LQsLlwIBBH8jAEEQayIBIAA2AgwCQCABKAIMKAK8LUEQRgRAIAEoAgwvAbgtQf8BcSECIAEoAgwoAgghAyABKAIMIgQoAhQhACAEIABBAWo2AhQgACADaiACOgAAIAEoAgwvAbgtQQh1IQIgASgCDCgCCCEDIAEoAgwiBCgCFCEAIAQgAEEBajYCFCAAIANqIAI6AAAgASgCDEEAOwG4LSABKAIMQQA2ArwtDAELIAEoAgwoArwtQQhOBEAgASgCDC8BuC0hAiABKAIMKAIIIQMgASgCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAjoAACABKAIMIgAgAC8BuC1BCHU7AbgtIAEoAgwiACAAKAK8LUEIazYCvC0LCwvvAQEEfyMAQRBrIgEgADYCDAJAIAEoAgwoArwtQQhKBEAgASgCDC8BuC1B/wFxIQIgASgCDCgCCCEDIAEoAgwiBCgCFCEAIAQgAEEBajYCFCAAIANqIAI6AAAgASgCDC8BuC1BCHUhAiABKAIMKAIIIQMgASgCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAjoAAAwBCyABKAIMKAK8LUEASgRAIAEoAgwvAbgtIQIgASgCDCgCCCEDIAEoAgwiBCgCFCEAIAQgAEEBajYCFCAAIANqIAI6AAALCyABKAIMQQA7AbgtIAEoAgxBADYCvC0L/AEBAX8jAEEQayIBIAA2AgwgAUEANgIIA0AgASgCCEGeAk5FBEAgASgCDEGUAWogASgCCEECdGpBADsBACABIAEoAghBAWo2AggMAQsLIAFBADYCCANAIAEoAghBHk5FBEAgASgCDEGIE2ogASgCCEECdGpBADsBACABIAEoAghBAWo2AggMAQsLIAFBADYCCANAIAEoAghBE05FBEAgASgCDEH8FGogASgCCEECdGpBADsBACABIAEoAghBAWo2AggMAQsLIAEoAgxBATsBlAkgASgCDEEANgKsLSABKAIMQQA2AqgtIAEoAgxBADYCsC0gASgCDEEANgKgLQsiAQF/IwBBEGsiASQAIAEgADYCDCABKAIMEBggAUEQaiQAC+kBAQF/IwBBMGsiAiAANgIkIAIgATcDGCACQgA3AxAgAiACKAIkKQMIQgF9NwMIAkADQCACKQMQIAIpAwhUBEAgAiACKQMQIAIpAwggAikDEH1CAYh8NwMAAkAgAigCJCgCBCACKQMAp0EDdGopAwAgAikDGFYEQCACIAIpAwBCAX03AwgMAQsCQCACKQMAIAIoAiQpAwhSBEAgAigCJCgCBCACKQMAQgF8p0EDdGopAwAgAikDGFgNAQsgAiACKQMANwMoDAQLIAIgAikDAEIBfDcDEAsMAQsLIAIgAikDEDcDKAsgAikDKAunAQEBfyMAQTBrIgQkACAEIAA2AiggBCABNgIkIAQgAjcDGCAEIAM2AhQgBCAEKAIoKQM4IAQoAigpAzAgBCgCJCAEKQMYIAQoAhQQiAE3AwgCQCAEKQMIQgBTBEAgBEF/NgIsDAELIAQoAiggBCkDCDcDOCAEKAIoIAQoAigpAzgQsAEhAiAEKAIoIAI3A0AgBEEANgIsCyAEKAIsIQAgBEEwaiQAIAAL6wEBAX8jAEEgayIDJAAgAyAANgIYIAMgATcDECADIAI2AgwCQCADKQMQIAMoAhgpAxBUBEAgA0EBOgAfDAELIAMgAygCGCgCACADKQMQQgSGpxBJIgA2AgggAEUEQCADKAIMQQ5BABAXIANBADoAHwwBCyADKAIYIAMoAgg2AgAgAyADKAIYKAIEIAMpAxBCAXxCA4anEEkiADYCBCAARQRAIAMoAgxBDkEAEBcgA0EAOgAfDAELIAMoAhggAygCBDYCBCADKAIYIAMpAxA3AxAgA0EBOgAfCyADLQAfQQFxIQAgA0EgaiQAIAAL0AIBAX8jAEEwayIEJAAgBCAANgIoIAQgATcDICAEIAI2AhwgBCADNgIYAkACQCAEKAIoDQAgBCkDIEIAWA0AIAQoAhhBEkEAEBcgBEEANgIsDAELIAQgBCgCKCAEKQMgIAQoAhwgBCgCGBBMIgA2AgwgAEUEQCAEQQA2AiwMAQsgBEEYEBsiADYCFCAARQRAIAQoAhhBDkEAEBcgBCgCDBA1IARBADYCLAwBCyAEKAIUIAQoAgw2AhAgBCgCFEEANgIUQQAQAiEAIAQoAhQgADYCDCMAQRBrIgAgBCgCFDYCDCAAKAIMQQA2AgAgACgCDEEANgIEIAAoAgxBADYCCCAEQQQgBCgCFCAEKAIYEIsBIgA2AhAgAEUEQCAEKAIUKAIQEDUgBCgCFBAYIARBADYCLAwBCyAEIAQoAhA2AiwLIAQoAiwhACAEQTBqJAAgAAupAQEBfyMAQTBrIgQkACAEIAA2AiggBCABNwMgIAQgAjYCHCAEIAM2AhgCQCAEKAIoRQRAIAQpAyBCAFYEQCAEKAIYQRJBABAXIARBADYCLAwCCyAEQQBCACAEKAIcIAQoAhgQswE2AiwMAQsgBCAEKAIoNgIIIAQgBCkDIDcDECAEIARBCGpCASAEKAIcIAQoAhgQswE2AiwLIAQoAiwhACAEQTBqJAAgAAtGAQF/IwBBIGsiAyQAIAMgADYCHCADIAE3AxAgAyACNgIMIAMoAhwgAykDECADKAIMIAMoAhxBCGoQTSEAIANBIGokACAAC38CAX8BfiAAvSIDQjSIp0H/D3EiAkH/D0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABELYBIQAgASgCAEFAags2AgAgAA8LIAEgAkGCeGo2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsLiwIBBH8gAkEARyEDAkACQAJAAkAgAkUNACAAQQNxRQ0AIAFB/wFxIQQDQCAALQAAIARGDQIgAEEBaiEAIAJBf2oiAkEARyEDIAJFDQEgAEEDcQ0ACwsgA0UNAQsgAC0AACABQf8BcUYNAQJAIAJBBE8EQCABQf8BcUGBgoQIbCEFIAJBfGoiAyADQXxxIgRrIQMgACAEakEEaiEEA0AgACgCACAFcyIGQX9zIAZB//37d2pxQYCBgoR4cQ0CIABBBGohACACQXxqIgJBA0sNAAsgAyECIAQhAAsgAkUNAQsgAUH/AXEhAQNAIAAtAAAgAUYNAiAAQQFqIQAgAkF/aiICDQALC0EADwsgAAsSACAARQRAQQAPCyAAIAEQ/wILjgIBAX8jAEEwayIDJAAgAyAANgIoIAMgATsBJiADIAI2AiAgAyADKAIoKAI0IANBHmogAy8BJkGABkEAEIMBNgIQAkAgAygCEEUNACADLwEeQQVIDQACQCADKAIQLQAAQQFGDQAMAQsgAyADKAIQIAMvAR6tECsiADYCFCAARQRADAELIAMoAhQQhgEaIAMgAygCFBAsNgIYIAMoAiAQxgEgAygCGEYEQCADIAMoAhQQMj0BDiADIAMoAhQgAy8BDq0QISADLwEOQYAQQQAQXzYCCCADKAIIBEAgAygCIBApIAMgAygCCDYCIAsLIAMoAhQQGQsgAyADKAIgNgIsIAMoAiwhACADQTBqJAAgAAu6EQIBfwF+IwBBgAFrIgUkACAFIAA2AnQgBSABNgJwIAUgAjYCbCAFIAM6AGsgBSAENgJkIAUgBSgCbEEARzoAHSAFQR5BLiAFLQBrQQFxGzYCKAJAAkAgBSgCbARAIAUoAmwQMiAFKAIorVQEQCAFKAJkQRNBABAXIAVCfzcDeAwDCwwBCyAFIAUoAnAgBSgCKK0gBUEwaiAFKAJkEEMiADYCbCAARQRAIAVCfzcDeAwCCwsgBSgCbEIEECEhAEHl1wBB6tcAIAUtAGtBAXEbKAAAIAAoAABHBEAgBSgCZEETQQAQFyAFLQAdQQFxRQRAIAUoAmwQGQsgBUJ/NwN4DAELIAUoAnQQXAJAIAUtAGtBAXFFBEAgBSgCbBAgIQAgBSgCdCAAOwEIDAELIAUoAnRBADsBCAsgBSgCbBAgIQAgBSgCdCAAOwEKIAUoAmwQICEAIAUoAnQgADsBDCAFKAJsECBB//8DcSEAIAUoAnQgADYCECAFIAUoAmwQIDsBLiAFIAUoAmwQIDsBLCAFLwEuIAUvASwQgQMhACAFKAJ0IAA2AhQgBSgCbBAsIQAgBSgCdCAANgIYIAUoAmwQLK0hBiAFKAJ0IAY3AyAgBSgCbBAsrSEGIAUoAnQgBjcDKCAFIAUoAmwQIDsBIiAFIAUoAmwQIDsBHgJAIAUtAGtBAXEEQCAFQQA7ASAgBSgCdEEANgI8IAUoAnRBADsBQCAFKAJ0QQA2AkQgBSgCdEIANwNIDAELIAUgBSgCbBAgOwEgIAUoAmwQIEH//wNxIQAgBSgCdCAANgI8IAUoAmwQICEAIAUoAnQgADsBQCAFKAJsECwhACAFKAJ0IAA2AkQgBSgCbBAsrSEGIAUoAnQgBjcDSAsCfyMAQRBrIgAgBSgCbDYCDCAAKAIMLQAAQQFxRQsEQCAFKAJkQRRBABAXIAUtAB1BAXFFBEAgBSgCbBAZCyAFQn83A3gMAQsCQCAFKAJ0LwEMQQFxBEAgBSgCdC8BDEHAAHEEQCAFKAJ0Qf//AzsBUgwCCyAFKAJ0QQE7AVIMAQsgBSgCdEEAOwFSCyAFKAJ0QQA2AjAgBSgCdEEANgI0IAUoAnRBADYCOCAFIAUvASAgBS8BIiAFLwEeamo2AiQCQCAFLQAdQQFxBEAgBSgCbBAyIAUoAiStVARAIAUoAmRBFUEAEBcgBUJ/NwN4DAMLDAELIAUoAmwQGSAFIAUoAnAgBSgCJK1BACAFKAJkEEMiADYCbCAARQRAIAVCfzcDeAwCCwsgBS8BIgRAIAUoAmwgBSgCcCAFLwEiQQEgBSgCZBCEASEAIAUoAnQgADYCMCAFKAJ0KAIwRQRAAn8jAEEQayIAIAUoAmQ2AgwgACgCDCgCAEERRgsEQCAFKAJkQRVBABAXCyAFLQAdQQFxRQRAIAUoAmwQGQsgBUJ/NwN4DAILIAUoAnQvAQxBgBBxBEAgBSgCdCgCMEECEDxBBUYEQCAFKAJkQRVBABAXIAUtAB1BAXFFBEAgBSgCbBAZCyAFQn83A3gMAwsLCyAFLwEeBEAgBSAFKAJsIAUoAnAgBS8BHkEAIAUoAmQQYTYCGCAFKAIYRQRAIAUtAB1BAXFFBEAgBSgCbBAZCyAFQn83A3gMAgsgBSgCGCAFLwEeQYACQYAEIAUtAGtBAXEbIAUoAnRBNGogBSgCZBDCAUEBcUUEQCAFKAIYEBggBS0AHUEBcUUEQCAFKAJsEBkLIAVCfzcDeAwCCyAFKAIYEBggBS0Aa0EBcQRAIAUoAnRBAToABAsLIAUvASAEQCAFKAJsIAUoAnAgBS8BIEEAIAUoAmQQhAEhACAFKAJ0IAA2AjggBSgCdCgCOEUEQCAFLQAdQQFxRQRAIAUoAmwQGQsgBUJ/NwN4DAILIAUoAnQvAQxBgBBxBEAgBSgCdCgCOEECEDxBBUYEQCAFKAJkQRVBABAXIAUtAB1BAXFFBEAgBSgCbBAZCyAFQn83A3gMAwsLCyAFKAJ0QfXgASAFKAJ0KAIwELkBIQAgBSgCdCAANgIwIAUoAnRB9cYBIAUoAnQoAjgQuQEhACAFKAJ0IAA2AjgCQAJAIAUoAnQpAyhC/////w9RDQAgBSgCdCkDIEL/////D1ENACAFKAJ0KQNIQv////8PUg0BCyAFIAUoAnQoAjQgBUEWakEBQYACQYAEIAUtAGtBAXEbIAUoAmQQgwE2AgwgBSgCDEUEQCAFLQAdQQFxRQRAIAUoAmwQGQsgBUJ/NwN4DAILIAUgBSgCDCAFLwEWrRArIgA2AhAgAEUEQCAFKAJkQQ5BABAXIAUtAB1BAXFFBEAgBSgCbBAZCyAFQn83A3gMAgsCQCAFKAJ0KQMoQv////8PUQRAIAUoAhAQMyEGIAUoAnQgBjcDKAwBCyAFLQBrQQFxBEAgBSgCEBDIAQsLIAUoAnQpAyBC/////w9RBEAgBSgCEBAzIQYgBSgCdCAGNwMgCyAFLQBrQQFxRQRAIAUoAnQpA0hC/////w9RBEAgBSgCEBAzIQYgBSgCdCAGNwNICyAFKAJ0KAI8Qf//A0YEQCAFKAIQECwhACAFKAJ0IAA2AjwLCyAFKAIQEEhBAXFFBEAgBSgCZEEVQQAQFyAFKAIQEBkgBS0AHUEBcUUEQCAFKAJsEBkLIAVCfzcDeAwCCyAFKAIQEBkLAn8jAEEQayIAIAUoAmw2AgwgACgCDC0AAEEBcUULBEAgBSgCZEEUQQAQFyAFLQAdQQFxRQRAIAUoAmwQGQsgBUJ/NwN4DAELIAUtAB1BAXFFBEAgBSgCbBAZCyAFKAJ0KQNIQv///////////wBWBEAgBSgCZEEEQRYQFyAFQn83A3gMAQsgBSgCdCAFKAJkEIADQQFxRQRAIAVCfzcDeAwBCyAFKAJ0KAI0EMEBIQAgBSgCdCAANgI0IAUgBSgCKCAFKAIkaq03A3gLIAUpA3ghBiAFQYABaiQAIAYLyQEBAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAyADQQxqEAc2AgACQCADKAIARQRAIAMoAgRBITsBACADKAIIQQA7AQAMAQsgAygCACgCFEHQAEgEQCADKAIAQdAANgIUCyADKAIEIAMoAgAoAgwgAygCACgCFEEJdCADKAIAKAIQQQV0akGgwH1qajsBACADKAIIIAMoAgAoAghBC3QgAygCACgCBEEFdGogAygCACgCAEEBdWo7AQALIANBEGokAAuDAwEBfyMAQSBrIgMkACADIAA7ARogAyABNgIUIAMgAjYCECADIAMoAhQgA0EIakHAAEEAEE8iADYCDAJAIABFBEAgA0EANgIcDAELIAMoAghBBWpB//8DSwRAIAMoAhBBEkEAEBcgA0EANgIcDAELIANBACADKAIIQQVqrRArIgA2AgQgAEUEQCADKAIQQQ5BABAXIANBADYCHAwBCyADKAIEQQEQhQEgAygCBCADKAIUEMYBECMgAygCBCADKAIMIAMoAggQQgJ/IwBBEGsiACADKAIENgIMIAAoAgwtAABBAXFFCwRAIAMoAhBBFEEAEBcgAygCBBAZIANBADYCHAwBCyADIAMvARoCfyMAQRBrIgAgAygCBDYCDAJ+IAAoAgwtAABBAXEEQCAAKAIMKQMQDAELQgALp0H//wNxCwJ/IwBBEGsiACADKAIENgIMIAAoAgwoAgQLQYAGEF42AgAgAygCBBAZIAMgAygCADYCHAsgAygCHCEAIANBIGokACAAC7QCAQF/IwBBMGsiAyQAIAMgADYCKCADIAE3AyAgAyACNgIcAkAgAykDIFAEQCADQQE6AC8MAQsgAyADKAIoKQMQIAMpAyB8NwMIAkAgAykDCCADKQMgWgRAIAMpAwhC/////wBYDQELIAMoAhxBDkEAEBcgA0EAOgAvDAELIAMgAygCKCgCACADKQMIp0EEdBBJIgA2AgQgAEUEQCADKAIcQQ5BABAXIANBADoALwwBCyADKAIoIAMoAgQ2AgAgAyADKAIoKQMINwMQA0AgAykDECADKQMIWkUEQCADKAIoKAIAIAMpAxCnQQR0ahCHASADIAMpAxBCAXw3AxAMAQsLIAMoAiggAykDCCIBNwMQIAMoAiggATcDCCADQQE6AC8LIAMtAC9BAXEhACADQTBqJAAgAAvMAQEBfyMAQSBrIgIkACACIAA3AxAgAiABNgIMIAJBMBAbIgE2AggCQCABRQRAIAIoAgxBDkEAEBcgAkEANgIcDAELIAIoAghBADYCACACKAIIQgA3AxAgAigCCEIANwMIIAIoAghCADcDICACKAIIQgA3AxggAigCCEEANgIoIAIoAghBADoALCACKAIIIAIpAxAgAigCDBC9AUEBcUUEQCACKAIIECggAkEANgIcDAELIAIgAigCCDYCHAsgAigCHCEBIAJBIGokACABC9kCAQF/IwBBIGsiAyQAIAMgADYCGCADIAE2AhQgAyACNgIQIAMgA0EMakIEECs2AggCQCADKAIIRQRAIANBfzYCHAwBCwNAIAMoAhQEQCADKAIUKAIEIAMoAhBxQYAGcQRAIAMoAghCABAuGiADKAIIIAMoAhQvAQgQIiADKAIIIAMoAhQvAQoQIgJ/IwBBEGsiACADKAIINgIMIAAoAgwtAABBAXFFCwRAIAMoAhhBCGpBFEEAEBcgAygCCBAZIANBfzYCHAwECyADKAIYIANBDGpCBBA7QQBIBEAgAygCCBAZIANBfzYCHAwECyADKAIULwEKQQBKBEAgAygCGCADKAIUKAIMIAMoAhQvAQqtEDtBAEgEQCADKAIIEBkgA0F/NgIcDAULCwsgAyADKAIUKAIANgIUDAELCyADKAIIEBkgA0EANgIcCyADKAIcIQAgA0EgaiQAIAALaAEBfyMAQRBrIgIgADYCDCACIAE2AgggAkEAOwEGA0AgAigCDARAIAIoAgwoAgQgAigCCHFBgAZxBEAgAiACKAIMLwEKIAIvAQZBBGpqOwEGCyACIAIoAgwoAgA2AgwMAQsLIAIvAQYL8AEBAX8jAEEQayIBJAAgASAANgIMIAEgASgCDDYCCCABQQA2AgQDQCABKAIMBEACQAJAIAEoAgwvAQhB9cYBRg0AIAEoAgwvAQhB9eABRg0AIAEoAgwvAQhBgbICRg0AIAEoAgwvAQhBAUcNAQsgASABKAIMKAIANgIAIAEoAgggASgCDEYEQCABIAEoAgA2AggLIAEoAgxBADYCACABKAIMECYgASgCBARAIAEoAgQgASgCADYCAAsgASABKAIANgIMDAILIAEgASgCDDYCBCABIAEoAgwoAgA2AgwMAQsLIAEoAgghACABQRBqJAAgAAuzBAEBfyMAQUBqIgUkACAFIAA2AjggBSABOwE2IAUgAjYCMCAFIAM2AiwgBSAENgIoIAUgBSgCOCAFLwE2rRArIgA2AiQCQCAARQRAIAUoAihBDkEAEBcgBUEAOgA/DAELIAVBADYCICAFQQA2AhgDQAJ/IwBBEGsiACAFKAIkNgIMIAAoAgwtAABBAXELBH8gBSgCJBAyQgRaBUEAC0EBcQRAIAUgBSgCJBAgOwEWIAUgBSgCJBAgOwEUIAUgBSgCJCAFLwEUrRAhNgIQIAUoAhBFBEAgBSgCKEEVQQAQFyAFKAIkEBkgBSgCGBAmIAVBADoAPwwDCyAFIAUvARYgBS8BFCAFKAIQIAUoAjAQXiIANgIcIABFBEAgBSgCKEEOQQAQFyAFKAIkEBkgBSgCGBAmIAVBADoAPwwDCwJAIAUoAhgEQCAFKAIgIAUoAhw2AgAgBSAFKAIcNgIgDAELIAUgBSgCHCIANgIgIAUgADYCGAsMAQsLIAUoAiQQSEEBcUUEQCAFIAUoAiQQMj4CDCAFIAUoAiQgBSgCDK0QITYCCAJAAkAgBSgCDEEETw0AIAUoAghFDQAgBSgCCEHS1wAgBSgCDBBQRQ0BCyAFKAIoQRVBABAXIAUoAiQQGSAFKAIYECYgBUEAOgA/DAILCyAFKAIkEBkCQCAFKAIsBEAgBSgCLCAFKAIYNgIADAELIAUoAhgQJgsgBUEBOgA/CyAFLQA/QQFxIQAgBUFAayQAIAAL7wIBAX8jAEEgayICJAAgAiAANgIYIAIgATYCFAJAIAIoAhhFBEAgAiACKAIUNgIcDAELIAIgAigCGDYCCANAIAIoAggoAgAEQCACIAIoAggoAgA2AggMAQsLA0AgAigCFARAIAIgAigCFCgCADYCECACQQA2AgQgAiACKAIYNgIMA0ACQCACKAIMRQ0AAkAgAigCDC8BCCACKAIULwEIRw0AIAIoAgwvAQogAigCFC8BCkcNACACKAIMLwEKBEAgAigCDCgCDCACKAIUKAIMIAIoAgwvAQoQUA0BCyACKAIMIgAgACgCBCACKAIUKAIEQYAGcXI2AgQgAkEBNgIEDAELIAIgAigCDCgCADYCDAwBCwsgAigCFEEANgIAAkAgAigCBARAIAIoAhQQJgwBCyACKAIIIAIoAhQiADYCACACIAA2AggLIAIgAigCEDYCFAwBCwsgAiACKAIYNgIcCyACKAIcIQAgAkEgaiQAIAALXQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkAgAigCBEUEQCACQQA2AgwMAQsgAiACKAIIIAIoAgQoAgAgAigCBC8BBK0QOzYCDAsgAigCDCEAIAJBEGokACAAC48BAQF/IwBBEGsiAiQAIAIgADYCCCACIAE2AgQCQAJAIAIoAggEQCACKAIEDQELIAIgAigCCCACKAIERjYCDAwBCyACKAIILwEEIAIoAgQvAQRHBEAgAkEANgIMDAELIAIgAigCCCgCACACKAIEKAIAIAIoAggvAQQQUEU2AgwLIAIoAgwhACACQRBqJAAgAAtVAQF/IwBBEGsiASQAIAEgADYCDCABQQBBAEEAEB02AgggASgCDARAIAEgASgCCCABKAIMKAIAIAEoAgwvAQQQHTYCCAsgASgCCCEAIAFBEGokACAAC4gBAQF/IwBBIGsiAyQAIAMgADYCFCADIAE2AhAgAyACNwMIAkACQCADKAIUKAIkQQFGBEAgAykDCEL///////////8AWA0BCyADKAIUQQxqQRJBABAXIANCfzcDGAwBCyADIAMoAhQgAygCECADKQMIQQsQJDcDGAsgAykDGCECIANBIGokACACC3MBAX8jAEEgayIBJAAgASAANgIYIAFCCDcDECABIAEoAhgpAxAgASkDEHw3AwgCQCABKQMIIAEoAhgpAxBUBEAgASgCGEEAOgAAIAFBfzYCHAwBCyABIAEoAhggASkDCBAuNgIcCyABKAIcGiABQSBqJAALBgBBtJwBC5YBAQF/IwBBIGsiAiAANgIYIAIgATcDEAJAAkACQCACKAIYLQAAQQFxRQ0AIAIoAhgpAxAgAikDEHwgAikDEFQNACACKAIYKQMQIAIpAxB8IAIoAhgpAwhYDQELIAIoAhhBADoAACACQQA2AhwMAQsgAiACKAIYKAIEIAIoAhgpAxCnajYCDCACIAIoAgw2AhwLIAIoAhwLGABBqJwBQgA3AgBBsJwBQQA2AgBBqJwBC7kCAQF/IwBBEGsiAiAANgIIIAIgATYCBAJAIAIoAghBgAFJBEAgAigCBCACKAIIOgAAIAJBATYCDAwBCyACKAIIQYAQSQRAIAIoAgQgAigCCEEGdkEfcUHAAXI6AAAgAigCBCACKAIIQT9xQYABcjoAASACQQI2AgwMAQsgAigCCEGAgARJBEAgAigCBCACKAIIQQx2QQ9xQeABcjoAACAC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AgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQMAJ/IAEoAqQBBEAgASgCpAEQMEECagwBC0EAC2pBAWoQGyIANgIcIABFBEAgAUH4ESgCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0HUlwELIQJB1ZcBQdSXASABKAKkARshAyABIAEoAqABNgIIIAEgAzYCBCABIAI2AgAgAEHNlwEgARBxIAEoAqgBIAEoAhw2AgggASABKAIcNgKsAQsgASgCrAEhACABQbABaiQAIAALcQEDfwJAAkADQCAAIAJB0IgBai0AAEcEQEHXACEDIAJBAWoiAkHXAEcNAQwCCwsgAiIDDQBBsIkBIQAMAQtBsIkBIQIDQCACLQAAIQQgAkEBaiIAIQIgBA0AIAAhAiADQX9qIgMNAAsLIAEoAhQaIAALMwEBfyAAKAIUIgMgASACIAAoAhAgA2siASABIAJLGyIBEBwaIAAgACgCFCABajYCFCACC4oBAQJ/IwBBoAFrIgMkACADQQhqQbiHAUGQARAcGiADIAA2AjQgAyAANgIcIANBfiAAayIEQf////8HQf////8HIARLGyIENgI4IAMgACAEaiIANgIkIAMgADYCGCADQQhqIAEgAhC6AiAEBEAgAygCHCIAIAAgAygCGEZrQQA6AAALIANBoAFqJAALvgIBAX8jAEHAwABrIgMkACADIAA2ArhAIAMgATYCtEAgAyACNwOoQAJAIAMoArRAEFNBAEgEQCADKAK4QEEIaiADKAK0QBAaIANBfzYCvEAMAQsgA0EANgIMIANCADcDEANAAkAgAyADKAK0QCADQSBqQoDAABAxIgI3AxggAkIAVw0AIAMoArhAIANBIGogAykDGBA7QQBIBEAgA0F/NgIMBSADKQMYQoDAAFINAiADKAK4QCgCVEUNAiADKQOoQEIAVw0CIAMgAykDGCADKQMQfDcDECADKAK4QCgCVCADKQMQuSADKQOoQLmjEFcMAgsLCyADKQMYQgBTBEAgAygCuEBBCGogAygCtEAQGiADQX82AgwLIAMoArRAEDcaIAMgAygCDDYCvEALIAMoArxAIQAgA0HAwABqJAAgAAuqAQEBfyMAQTBrIgMkACADIAA2AiggAyABNgIkIAMgAjcDGCADIAMoAigoAgAQOiICNwMQAkAgAkIAUwRAIANBfzYCLAwBCyADIAMoAiggAygCJCADKQMYEIQDIgI3AwAgAkIAUwRAIANBfzYCLAwBCyADIAMoAigoAgAQOiICNwMIIAJCAFMEQCADQX82AiwMAQsgA0EANgIsCyADKAIsIQAgA0EwaiQAIAAL/gEBAX8jAEGgwABrIgIkACACIAA2AphAIAIgATcDkEAgAiACKQOQQLo5AwACQANAIAIpA5BAQgBWBEAgAgJ+QoDAACACKQOQQEKAwABWDQAaIAIpA5BACz4CDCACKAKYQCgCACACQRBqIAIoAgytIAIoAphAQQhqEGJBAEgEQCACQX82ApxADAMLIAIoAphAIAJBEGogAigCDK0QO0EASARAIAJBfzYCnEAMAwUgAiACKQOQQCACNQIMfTcDkEAgAigCmEAoAlQgAisDACACKQOQQLqhIAIrAwCjEFcMAgsACwsgAkEANgKcQAsgAigCnEAhACACQaDAAGokACAAC/IRAgF/AX4jAEGgAWsiAyQAIAMgADYCmAEgAyABNgKUASADIAI2ApABAkAgAygClAEgA0E4ahA5QQBIBEAgAygCmAFBCGogAygClAEQGiADQX82ApwBDAELIAMpAzhCwACDUARAIAMgAykDOELAAIQ3AzggA0EAOwFoCwJAAkAgAygCkAEoAhBBf0cEQCADKAKQASgCEEF+Rw0BCyADLwFoRQ0AIAMoApABIAMvAWg2AhAMAQsCQAJAIAMoApABKAIQDQAgAykDOEIEg1ANACADIAMpAzhCCIQ3AzggAyADKQNQNwNYDAELIAMgAykDOEL3////D4M3AzgLCyADKQM4QoABg1AEQCADIAMpAzhCgAGENwM4IANBADsBagsgA0GAAjYCJAJAIAMpAzhCBINQBEAgAyADKAIkQYAIcjYCJCADQn83A3AMAQsgAygCkAEgAykDUDcDKCADIAMpA1A3A3ACQCADKQM4QgiDUARAAkACQAJ/AkAgAygCkAEoAhBBf0cEQCADKAKQASgCEEF+Rw0BC0EIDAELIAMoApABKAIQC0H//wNxIgBBDEsNAAJAAkACQCAAQQFrDgwDAwMDAwMDAQMDAwACCyADQpTC5PMPNwMQDAMLIANCg4Ow/w83AxAMAgsgA0L/////DzcDEAwBCyADQgA3AxALIAMpA1AgAykDEFYEQCADIAMoAiRBgAhyNgIkCwwBCyADKAKQASADKQNYNwMgCwsgAyADKAKYASgCABA6IgQ3A4gBIARCAFMEQCADKAKYAUEIaiADKAKYASgCABAaIANBfzYCnAEMAQsgAygCkAEiACAALwEMQff/A3E7AQwgAyADKAKYASADKAKQASADKAIkEF0iADYCKCAAQQBIBEAgA0F/NgKcAQwBCyADIAMvAWgCfwJAIAMoApABKAIQQX9HBEAgAygCkAEoAhBBfkcNAQtBCAwBCyADKAKQASgCEAtB//8DcUc6ACIgAyADLQAiQQFxBH8gAy8BaEEARwVBAAtBAXE6ACEgAyADLwFoBH8gAy0AIQVBAQtBAXE6ACAgAyADLQAiQQFxBH8gAygCkAEoAhBBAEcFQQALQQFxOgAfIAMCf0EBIAMtACJBAXENABpBASADKAKQASgCAEGAAXENABogAygCkAEvAVIgAy8BakcLQQFxOgAeIAMgAy0AHkEBcQR/IAMvAWpBAEcFQQALQQFxOgAdIAMgAy0AHkEBcQR/IAMoApABLwFSQQBHBUEAC0EBcToAHCADIAMoApQBNgI0IwBBEGsiACADKAI0NgIMIAAoAgwiACAAKAIwQQFqNgIwIAMtAB1BAXEEQCADIAMvAWpBABB6IgA2AgwgAEUEQCADKAKYAUEIakEYQQAQFyADKAI0EB4gA0F/NgKcAQwCCyADIAMoApgBIAMoAjQgAy8BakEAIAMoApgBKAIcIAMoAgwRKwAiADYCMCAARQRAIAMoAjQQHiADQX82ApwBDAILIAMoAjQQHiADIAMoAjA2AjQLIAMtACFBAXEEQCADIAMoApgBIAMoAjQgAy8BaBCiASIANgIwIABFBEAgAygCNBAeIANBfzYCnAEMAgsgAygCNBAeIAMgAygCMDYCNAsgAy0AIEEBcQRAIAMgAygCmAEgAygCNEEAEKEBIgA2AjAgAEUEQCADKAI0EB4gA0F/NgKcAQwCCyADKAI0EB4gAyADKAIwNgI0CyADLQAfQQFxBEAgAyADKAKYASADKAI0IAMoApABKAIQIAMoApABLwFQELICIgA2AjAgAEUEQCADKAI0EB4gA0F/NgKcAQwCCyADKAI0EB4gAyADKAIwNgI0CyADLQAcQQFxBEAgA0EANgIEAkAgAygCkAEoAlQEQCADIAMoApABKAJUNgIEDAELIAMoApgBKAIcBEAgAyADKAKYASgCHDYCBAsLIAMgAygCkAEvAVJBARB6IgA2AgggAEUEQCADKAKYAUEIakEYQQAQFyADKAI0EB4gA0F/NgKcAQwCCyADIAMoApgBIAMoAjQgAygCkAEvAVJBASADKAIEIAMoAggRKwAiADYCMCAARQRAIAMoAjQQHiADQX82ApwBDAILIAMoAjQQHiADIAMoAjA2AjQLIAMgAygCmAEoAgAQOiIENwOAASAEQgBTBEAgAygCmAFBCGogAygCmAEoAgAQGiADQX82ApwBDAELIAMgAygCmAEgAygCNCADKQNwEKYCNgIsIAMoAjQgA0E4ahA5QQBIBEAgAygCmAFBCGogAygCNBAaIANBfzYCLAsgAyADKAI0EKwCIgA6ACMgAEEYdEEYdUEASARAIAMoApgBQQhqIAMoAjQQGiADQX82AiwLIAMoAjQQHiADKAIsQQBIBEAgA0F/NgKcAQwBCyADIAMoApgBKAIAEDoiBDcDeCAEQgBTBEAgAygCmAFBCGogAygCmAEoAgAQGiADQX82ApwBDAELIAMoApgBKAIAIAMpA4gBEJ8BQQBIBEAgAygCmAFBCGogAygCmAEoAgAQGiADQX82ApwBDAELIAMpAzhC5ACDQuQAUgRAIAMoApgBQQhqQRRBABAXIANBfzYCnAEMAQsgAygCkAEoAgBBIHFFBEACQCADKQM4QhCDQgBSBEAgAygCkAEgAygCYDYCFAwBCyADKAKQAUEUahACGgsLIAMoApABIAMvAWg2AhAgAygCkAEgAygCZDYCGCADKAKQASADKQNQNwMoIAMoApABIAMpA3ggAykDgAF9NwMgIAMoApABIAMoApABLwEMQfn/A3EgAy0AI0EBdHI7AQwgAygCkAEgAygCJEGACHFBAEcQ/QIgAyADKAKYASADKAKQASADKAIkEF0iADYCLCAAQQBIBEAgA0F/NgKcAQwBCyADKAIoIAMoAixHBEAgAygCmAFBCGpBFEEAEBcgA0F/NgKcAQwBCyADKAKYASgCACADKQN4EJ8BQQBIBEAgAygCmAFBCGogAygCmAEoAgAQGiADQX82ApwBDAELIANBADYCnAELIAMoApwBIQAgA0GgAWokACAAC68CAQF/IwBBIGsi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AygCBBClASEAIANBEGokACAAC7oCAQF/IwBBIGsiAyQAIAMgADYCGCADIAE2AhQgAyACNgIQIAMgAygCGDYCDCADKAIMAn5C/////w9C/////w8gAygCECkDAFQNABogAygCECkDAAs+AiAgAygCDCADKAIUNgIcAkAgAygCDC0ABEEBcQRAIAMgAygCDEEQakEEQQAgAygCDC0ADEEBcRsQzAI2AggMAQsgAyADKAIMQRBqEMECNgIICyADKAIQIgAgACkDACADKAIMNQIgfTcDAAJAAkAgAygCCEEFaiIAQQZLDQACQAJAAkAgAEEBaw4GAwMDAwABAgsgA0EANgIcDAMLIANBATYCHAwCCyADKAIMKAIURQRAIANBAzYCHAwCCwsgAygCDCgCAEENIAMoAggQFyADQQI2AhwLIAMoAhwhACADQSBqJAAgAAskAQF/IwBBEGsiASAANgIMIAEgASgCDDYCCCABKAIIQQE6AAwLmQEBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI3AwggAyADKAIYNgIEAkACQCADKQMIQv////8PWARAIAMoAgQoAhRBAE0NAQsgAygCBCgCAEESQQAQFyADQQA6AB8MAQsgAygCBCADKQMIPgIUIAMoAgQgAygCFDYCECADQQE6AB8LIAMtAB9BAXEhACADQSBqJAAgAAuQAQEBfyMAQRBrIgEkACABIAA2AgggASABKAIINgIEAkAgASgCBC0ABEEBcQRAIAEgASgCBEEQahCoATYCAAwBCyABIAEoAgRBEGoQvgI2AgALAkAgASgCAARAIAEoAgQoAgBBDSABKAIAEBcgAUEAOgAPDAELIAFBAToADwsgAS0AD0EBcSEAIAFBEGokACAAC8ABAQF/IwBBEGsiASQAIAEgADYCCCABIAEoAgg2AgQgASgCBEEANgIUIAEoAgRBADYCECABKAIEQQA2AiAgASgCBEEANgIcAkAgASgCBC0ABEEBcQRAIAEgASgCBEEQaiABKAIEKAIIENICNgIADAELIAEgASgCBEEQahDCAjYCAAsCQCABKAIABEAgASgCBCgCAEENIAEoAgAQFyABQQA6AA8MAQsgAUEBOgAPCyABLQAPQQFxIQAgAUEQaiQAIAALywIBA38jAEHQAWsiAyQAIAMgAjYCzAFBACECIANBoAFqQQBBKBA0IAMgAygCzAE2AsgBAkBBACABIANByAFqIANB0ABqIANBoAFqEHJBAEgNACAAKAJMQQBOBEBBASECCyAAKAIAIQQgACwASkEATARAIAAgBEFfcTYCAAsgBEEgcSEFAn8gACgCMARAIAAgASADQcgBaiADQdAAaiADQaABahByDAELIABB0AA2AjAgACADQdAAajYCECAAIAM2AhwgACADNgIUIAAoAiwhBCAAIAM2AiwgACABIANByAFqIANB0ABqIANBoAFqEHIgBEUNABogAEEAQQAgACgCJBEAABogAEEANgIwIAAgBDYCLCAAQQA2AhwgAEEANgIQIAAoAhQaIABBADYCFEEACxogACAAKAIAIAVyNgIAIAJFDQALIANB0AFqJAALbwEBfyMAQRBrIgEgADYCCCABIAEoAgg2AgQCQCABKAIELQAEQQFxRQRAIAFBADYCDAwBCyABKAIEKAIIQQNIBEAgAUECNgIMDAELIAEoAgQoAghBB0oEQCABQQE2AgwMAQsgAUEANgIMCyABKAIMCywBAX8jAEEQayIBJAAgASAANgIMIAEgASgCDDYCCCABKAIIEBggAUEQaiQACzwBAX8jAEEQayIDJAAgAyAAOwEOIAMgATYCCCADIAI2AgRBASADKAIIIAMoAgQQpQEhACADQRBqJAAgAAuZAQEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIEEoEQCABQX42AgwMAQsgASABKAIIKAIcNgIEIAEoAgQoAjgEQCABKAIIKAIoIAEoAgQoAjggASgCCCgCJBECAAsgASgCCCgCKCABKAIIKAIcIAEoAggoAiQRAgAgASgCCEEANgIcIAFBADYCDAsgASgCDCEAIAFBEGokACAAC50EAQF/IwBBIGsiAyQAIAMgADYCGCADIAE2AhQgAyACNgIQIAMgAygCGCgCHDYCDAJAIAMoAgwoAjhFBEAgAygCGCgCKEEBIAMoAgwoAih0QQEgAygCGCgCIBEAACEAIAMoAgwgADYCOCADKAIMKAI4RQRAIANBATYCHAwCCwsgAygCDCgCLEUEQCADKAIMQQEgAygCDCgCKHQ2AiwgAygCDEEANgI0IAMoAgxBADYCMAsCQCADKAIQIAMoAgwoAixPBEAgAygCDCgCOCADKAIUIAMoAgwoAixrIAMoAgwoAiwQ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UCACIAIoAlAgAigCXCgCBEEFa2o2AkwgAiACKAJcKAIMNgJIIAIgAigCSCACKAJYIAIoAlwoAhBrazYCRCACIAIoAkggAigCXCgCEEGBAmtqNgJAIAIgAigCVCgCLDYCPCACIAIoAlQoAjA2AjggAiACKAJUKAI0NgI0IAIgAigCVCgCODYCMCACIAIoAlQoAjw2AiwgAiACKAJUKAJANgIoIAIgAigCVCgCUDYCJCACIAIoAlQoAlQ2AiAgAkEBIAIoAlQoAlh0QQFrNgIcIAJBASACKAJUKAJcdEEBazYCGANAIAIoAihBD0kEQCACIAIoAlAiAEEBajYCUCACIAIoAiwgAC0AACACKAIodGo2AiwgAiACKAIoQQhqNgIoIAIgAigCUCIAQQFqNgJQIAIgAigCLCAALQAAIAIoAih0ajYCLCACIAIoAihBCGo2AigLIAJBEGogAigCJCACKAIsIAIoAhxxQQJ0aigBADYBAAJAAkADQCACIAItABE2AgwgAiACKAIsIAIoAgx2NgIsIAIgAigCKCACKAIMazYCKCACIAItABA2AgwgAigCDEUEQCACLwESIQAgAiACKAJIIgFBAWo2AkggASAAOgAADAILIAIoAgxBEHEEQCACIAIvARI2AgggAiACKAIMQQ9xNgIMIAIoAgwEQCACKAIoIAIoAgxJBEAgAiACKAJQIgBBAWo2AlAgAiACKAIsIAAtAAAgAigCKHRqNgIsIAIgAigCKEEIajYCKAsgAiACKAIIIAIoAixBASACKAIMdEEBa3FqNgIIIAIgAigCLCACKAIMdjYCLCACIAIoAiggAigCDGs2AigLIAIoAihBD0kEQCACIAIoAlAiAEEBajYCUCACIAIoAiwgAC0AACACKAIodGo2AiwgAiACKAIoQQhqNgIoIAIgAigCUCIAQQFqNgJQIAIgAigCLCAALQAAIAIoAih0ajYCLCACIAIoAihBCGo2AigLIAJBEGogAigCICACKAIsIAIoAhhxQQJ0aigBADYBAAJAA0AgAiACLQARNgIMIAIgAigCLCACKAIMdjYCLCACIAIoAiggAigCDGs2AiggAiACLQAQNgIMIAIoAgxBEHEEQCACIAIvARI2AgQgAiACKAIMQQ9xNgIMIAIoAiggAigCDEkEQCACIAIoAlAiAEEBajYCUCACIAIoAiwgAC0AACACKAIodGo2AiwgAiACKAIoQQhqNgIoIAIoAiggAigCDEkEQCACIAIoAlAiAEEBajYCUCACIAIoAiwgAC0AACACKAIodGo2AiwgAiACKAIoQQhqNgIoCwsgAiACKAIEIAIoAixBASACKAIMdEEBa3FqNgIEIAIgAigCLCACKAIMdjYCLCACIAIoAiggAigCDGs2AiggAiACKAJIIAIoAkRrNgIMAkAgAigCBCACKAIMSwRAIAIgAigCBCACKAIMazYCDCACKAIMIAIoAjhLBEAgAigCVCgCxDcEQCACKAJcQdDxADYCGCACKAJUQdH+ADYCBAwKCwsgAiACKAIwNgIAAkAgAigCNEUEQCACIAIoAgAgAigCPCACKAIMa2o2AgAgAigCDCACKAIISQRAIAIgAigCCCACKAIMazYCCANAIAIgAigCACIAQQFqNgIAIAAtAAAhACACIAIoAkgiAUEBajYCSCABIAA6AAAgAiACKAIMQX9qIgA2AgwgAA0ACyACIAIoAkggAigCBGs2AgALDAELAkAgAigCNCACKAIMSQRAIAIgAigCACACKAI8IAIoAjRqIAIoAgxrajYCACACIAIoAgwgAigCNGs2AgwgAigCDCACKAIISQRAIAIgAigCCCACKAIMazYCCANAIAIgAigCACIAQQFqNgIAIAAtAAAhACACIAIoAkgiAUEBajYCSCABIAA6AAAgAiACKAIMQX9qIgA2AgwgAA0ACyACIAIoAjA2AgAgAigCNCACKAIISQRAIAIgAigCNDYCDCACIAIoAgggAigCDGs2AggDQCACIAIoAgAiAEEBajYCACAALQAAIQAgAiACKAJIIgFBAWo2AkggASAAOgAAIAIgAigCDEF/aiIANgIMIAANAAsgAiACKAJIIAIoAgRrNgIACwsMAQsgAiACKAIAIAIoAjQgAigCDGtqNgIAIAIoAgwgAigCCEkEQCACIAIoAgggAigCDGs2AggDQCACIAIoAgAiAEEBajYCACAALQAAIQAgAiACKAJIIgFBAWo2AkggASAAOgAAIAIgAigCDEF/aiIANgIMIAANAAsgAiACKAJIIAIoAgRrNgIACwsLA0AgAigCCEECTUUEQCACIAIoAgAiAEEBajYCACAALQAAIQAgAiACKAJIIgFBAWo2AkggASAAOgAAIAIgAigCACIAQQFqNgIAIAAtAAAhACACIAIoAkgiAUEBajYCSCABIAA6AAAgAiACKAIAIgBBAWo2AgAgAC0AACEAIAIgAigCSCIBQQFqNgJIIAEgADoAACACIAIoAghBA2s2AggMAQsLDAELIAIgAigCSCACKAIEazYCAANAIAIgAigCACIAQQFqNgIAIAAtAAAhACACIAIoAkgiAUEBajYCSCABIAA6AAAgAiACKAIAIgBBAWo2AgAgAC0AACEAIAIgAigCSCIBQQFqNgJIIAEgADoAACACIAIoAgAiAEEBajYCACAALQAAIQAgAiACKAJIIgFBAWo2AkggASAAOgAAIAIgAigCCEEDazYCCCACKAIIQQJLDQALCyACKAIIBEAgAiACKAIAIgBBAWo2AgAgAC0AACEAIAIgAigCSCIBQQFqNgJIIAEgADoAACACKAIIQQFLBEAgAiACKAIAIgBBAWo2AgAgAC0AACEAIAIgAigCSCIBQQFqNgJIIAEgADoAAAsLDAILIAIoAgxBwABxRQRAIAJBEGogAigCICACLwESIAIoAixBASACKAIMdEEBa3FqQQJ0aigBADYBAAwBCwsgAigCXEHu8QA2AhggAigCVEHR/gA2AgQMBAsMAgsgAigCDEHAAHFFBEAgAkEQaiACKAIkIAIvARIgAigCLEEBIAIoAgx0QQFrcWpBAnRqKAEANgEADAELCyACKAIMQSBxBEAgAigCVEG//gA2AgQMAgsgAigCXEGE8gA2AhggAigCVEHR/gA2AgQMAQtBACEAIAIoAlAgAigCTEkEfyACKAJIIAIoAkBJBUEAC0EBcQ0BCwsgAiACKAIoQQN2NgIIIAIgAigCUCACKAIIazYCUCACIAIoAiggAigCCEEDdGs2AiggAiACKAIsQQEgAigCKHRBAWtxNgIsIAIoAlwgAigCUDYCACACKAJcIAIoAkg2AgwgAigCXAJ/IAIoAlAgAigCTEkEQCACKAJMIAIoAlBrQQVqDAELQQUgAigCUCACKAJMa2sLNgIEIAIoAlwCfyACKAJIIAIoAkBJBEAgAigCQCACKAJIa0GBAmoMAQtBgQIgAigCSCACKAJAa2sLNgIQIAIoAlQgAigCLDYCPCACKAJUIAIoAig2AkALwRABAn8jAEEgayICJAAgAiAANgIYIAIgATYCFAJAA0ACQCACKAIYKAJ0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AkEDNgIcDAELIAIoAhgoAqAtBEAgAigCGAJ/IAIoAhgoAlxBAE4EQCACKAIYKAI4IAIoAhgoAlxqDAELQQALIAIoAhgoAmwgAigCGCgCXGtBABAqIAIoAhggAigCGCgCbDYCXCACKAIYKAIAEB8gAigCGCgCACgCEEUEQCACQQA2AhwMAgsLIAJBATYCHAsgAigCHCEAIAJBIGokACAAC7sMAQJ/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQCQANAAkAgAigCKCgCdEGCAk0EQCACKAIoEFUCQCACKAIoKAJ0QYICSw0AIAIoAiQNACACQQA2AiwMBAsgAigCKCgCdEUNAQsgAigCKEEANgJgAkAgAigCKCgCdEEDSQ0AIAIoAigoAmxBAE0NACACIAIoAigoAjggAigCKCgCbGpBf2o2AhggAiACKAIYLQAANgIcIAIoAhwhACACIAIoAhgiAUEBajYCGAJAIAEtAAEgAEcNACACKAIcIQAgAiACKAIYIgFBAWo2AhggAS0AASAARw0AIAIoAhwhACACIAIoAhgiAUEBajYCGCABLQABIABHDQAgAiACKAIoKAI4IAIoAigoAmxqQYICajYCFANAIAIoAhwhASACIAIoAhgiA0EBajYCGAJ/QQAgAy0AASABRw0AGiACKAIcIQEgAiACKAIYIgNBAWo2AhhBACADLQABIAFHDQAaIAIoAhwhASACIAIoAhgiA0EBajYCGEEAIAMtAAEgAUcNABogAigCHCEBIAIgAigCGCIDQQFqNgIYQQAgAy0AASABRw0AGiACKAIcIQEgAiACKAIYIgNBAWo2AhhBACADLQABIAFHDQAaIAIoAhwhASACIAIoAhgiA0EBajYCGEEAIAMtAAEgAUcNABogAigCHCEBIAIgAigCGCIDQQFqNgIYQQAgAy0AASABRw0AGiACKAIcIQEgAiACKAIYIgNBAWo2AhhBACADLQABIAFHDQAaIAIoAhggAigCFEkLQQFxDQALIAIoAihBggIgAigCFCACKAIYa2s2AmAgAigCKCgCYCACKAIoKAJ0SwRAIAIoAiggAigCKCgCdDYCYAsLCwJAIAIoAigoAmBBA08EQCACIAIoAigoAmBBfWo6ABMgAkEBOwEQIAIoAigiACgCpC0gACgCoC1BAXRqIAIvARA7AQAgAi0AEyEBIAIoAigiACgCmC0hAyAAIAAoAqAtIgBBAWo2AqAtIAAgA2ogAToAACACIAIvARBBf2o7ARAgAigCKCACLQATQaDdAGotAABBAnRqQZgJaiIAIAAvAQBBAWo7AQAgAigCKEGIE2oCfyACLwEQQYACSARAIAIvARAtAKBZDAELIAIvARBBB3VBgAJqLQCgWQtBAnRqIgAgAC8BAEEBajsBACACIAIoAigoAqAtIAIoAigoApwtQQFrRjYCICACKAIoIgAgACgCdCACKAIoKAJgazYCdCACKAIoIgAgAigCKCgCYCAAKAJsajYCbCACKAIoQQA2AmAMAQsgAiACKAIoIgAoAjggACgCbGotAAA6AA8gAigCKCIAKAKkLSAAKAKgLUEBdGpBADsBACACLQAPIQEgAigCKCIAKAKYLSEDIAAgACgCoC0iAEEBajYCoC0gACADaiABOgAAIAIoAiggAi0AD0ECdGoiACAALwGUAUEBajsBlAEgAiACKAIoKAKgLSACKAIoKAKcLUEBa0Y2AiAgAigCKCIAIAAoAnRBf2o2AnQgAigCKCIAIAAoAmxBAWo2AmwLIAIoAiAEQCACKAIoAn8gAigCKCgCXEEATgRAIAIoAigoAjggAigCKCgCXGoMAQtBAAsgAigCKCgCbCACKAIoKAJca0EAECogAigCKCACKAIoKAJsNgJcIAIoAigoAgAQHyACKAIoKAIAKAIQRQRAIAJBADYCLAwECwsMAQsLIAIoAihBADYCtC0gAigCJEEERgRAIAIoAigCfyACKAIoKAJcQQBOBEAgAigCKCgCOCACKAIoKAJcagwBC0EACyACKAIoKAJsIAIoAigoAlxrQQEQKiACKAIoIAIoAigoAmw2AlwgAigCKCgCABAfIAIoAigoAgAoAhBFBEAgAkECNgIsDAILIAJBAzYCLAwBCyACKAIoKAKgLQRAIAIoAigCfyACKAIoKAJcQQBOBEAgAigCKCgCOCACKAIoKAJcagwBC0EACyACKAIoKAJsIAIoAigoAlxrQQAQKiACKAIoIAIoAigoAmw2AlwgAigCKCgCABAfIAIoAigoAgAoAhBFBEAgAkEANgIsDAILCyACQQE2AiwLIAIoAiwhACACQTBqJAAgAAvABQECfyMAQSBrIgIkACACIAA2AhggAiABNgIUAkADQAJAIAIoAhgoAnRF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ACABKAIILwG8AQ0AIAEoAggvAcgBRQ0BCyABQQE2AgwMAQsgAUEgNgIAA0AgASgCAEGAAkgEQCABKAIIQZQBaiABKAIAQQJ0ai8BAARAIAFBATYCDAwDBSABIAEoAgBBAWo2AgAMAgsACwsgAUEANgIMCyABKAIMC44FAQR/IwBBIGsiASQAIAEgADYCHCABQQM2AhgCQCABKAIcKAK8LUEQIAEoAhhrSgRAIAFBAjYCFCABKAIcIgAgAC8BuC0gASgCFEH//wNxIAEoAhwoArwtdHI7AbgtIAEoAhwvAbgtQf8BcSECIAEoAhwoAgghAyABKAIcIgQoAhQhACAEIABBAWo2AhQgACADaiACOgAAIAEoAhwvAbgtQQh1IQIgASgCHCgCCCEDIAEoAhwiBCgCFCEAIAQgAEEBajYCFCAAIANqIAI6AAAgASgCHCABKAIUQf//A3FBECABKAIcKAK8LWt1OwG4LSABKAIcIgAgACgCvC0gASgCGEEQa2o2ArwtDAELIAEoAhwiACAALwG4LUECIAEoAhwoArwtdHI7AbgtIAEoAhwiACABKAIYIAAoArwtajYCvC0LIAFB4ucALwEANgIQAkAgASgCHCgCvC1BECABKAIQa0oEQCABQeDnAC8BADYCDCABKAIcIgAgAC8BuC0gASgCDEH//wNxIAEoAhwoArwtdHI7AbgtIAEoAhwvAbgtQf8BcSECIAEoAhwoAgghAyABKAIcIgQoAhQhACAEIABBAWo2AhQgACADaiACOgAAIAEoAhwvAbgtQQh1IQIgASgCHCgCCCEDIAEoAhwiBCgCFCEAIAQgAEEBajYCFCAAIANqIAI6AAAgASgCHCABKAIMQf//A3FBECABKAIcKAK8LWt1OwG4LSABKAIcIgAgACgCvC0gASgCEEEQa2o2ArwtDAELIAEoAhwiACAALwG4LUHg5wAvAQAgASgCHCgCvC10cjsBuC0gASgCHCIAIAEoAhAgACgCvC1qNgK8LQsgASgCHBCsASABQSBqJAALIwEBfyMAQRBrIgEkACABIAA2AgwgASgCDBCsASABQRBqJAAL2QMCAn8CfiMAQSBrIgIkAAJAIAFC////////////AIMiBUKAgICAgIDA/0N8IAVCgICAgICAwIC8f3xUBEAgAUIEhiAAQjyIhCEEIABC//////////8PgyIAQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQQMAgsgBEKAgICAgICAgEB9IQQgAEKAgICAgICAgAiFQgBSDQEgBEIBgyAEfCEEDAELIABQIAVCgICAgICAwP//AFQgBUKAgICAgIDA//8AURtFBEAgAUIEhiAAQjyIhEL/////////A4NCgICAgICAgPz/AIQhBAwBC0KAgICAgICA+P8AIQQgBUL///////+//8MAVg0AQgAhBCAFQjCIpyIDQZH3AEkNACACIAAgAUL///////8/g0KAgICAgIDAAIQiBEGB+AAgA2sQ6QIgAkEQaiAAIAQgA0H/iH9qEOICIAIpAwhCBIYgAikDACIAQjyIhCEEIAIpAxAgAikDGIRCAFKtIABC//////////8Pg4QiAEKBgICAgICAgAhaBEAgBEIBfCEEDAELIABCgICAgICAgIAIhUIAUg0AIARCAYMgBHwhBAsgAkEgaiQAIAQgAUKAgICAgICAgIB/g4S/C0UAQaCcAUIANwMAQZicAUIANwMAQZCcAUIANwMAQYicAUIANwMAQYCcAUIANwMAQfibAUIANwMAQfCbAUIANwMAQfCbAQuWAQEBfyMAQRBrIgEkACABIAA2AgwgASgCDCABKAIMQZQBajYCmBYgASgCDEGg3wA2AqAWIAEoAgwgASgCDEGIE2o2AqQWIAEoAgxBtN8ANgKsFiABKAIMIAEoAgxB/BRqNgKwFiABKAIMQcjfADYCuBYgASgCDEEAOwG4LSABKAIMQQA2ArwtIAEoAgwQrgEgAUEQaiQAC9cNAQF/IwBBIGsiAyAANgIYIAMgATYCFCADIAI2AhAgAyADKAIYQRB2NgIMIAMgAygCGEH//wNxNgIYAkAgAygCEEEBRgRAIAMgAygCFC0AACADKAIYajYCGCADKAIYQfH/A08EQCADIAMoAhhB8f8DazYCGAsgAyADKAIYIAMoAgxqNgIMIAMoAgxB8f8DTwRAIAMgAygCDEHx/wNrNgIMCyADIAMoAhggAygCDEEQdHI2AhwMAQsgAygCFEUEQCADQQE2AhwMAQsgAygCEEEQSQRAA0AgAyADKAIQIgBBf2o2AhAgAARAIAMgAygCFCIAQQFqNgIUIAMgAC0AACADKAIYajYCGCADIAMoAhggAygCDGo2AgwMAQsLIAMoAhhB8f8DTwRAIAMgAygCGEHx/wNrNgIYCyADIAMoAgxB8f8DcDYCDCADIAMoAhggAygCDEEQdHI2AhwMAQsDQCADKAIQQbArSUUEQCADIAMoAhBBsCtrNgIQIANB2wI2AggDQCADIAMoAhQtAAAgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0AASADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQACIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAMgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ABCADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAFIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAYgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0AByADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAIIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAkgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ACiADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQALIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAwgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ADSADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAOIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAA8gAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFEEQajYCFCADIAMoAghBf2oiADYCCCAADQALIAMgAygCGEHx/wNwNgIYIAMgAygCDEHx/wNwNgIMDAELCyADKAIQBEADQCADKAIQQRBJRQRAIAMgAygCEEEQazYCECADIAMoAhQtAAAgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0AASADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQACIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAMgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ABCADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAFIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAYgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0AByADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAIIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAkgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ACiADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQALIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAwgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ADSADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAOIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAA8gAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFEEQajYCFAwBCwsDQCADIAMoAhAiAEF/ajYCECAABEAgAyADKAIUIgBBAWo2AhQgAyAALQAAIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDAwBCwsgAyADKAIYQfH/A3A2AhggAyADKAIMQfH/A3A2AgwLIAMgAygCGCADKAIMQRB0cjYCHAsgAygCHAspAQF/IwBBEGsiAiQAIAIgADYCDCACIAE2AgggAigCCBAYIAJBEGokAAs6AQF/IwBBEGsiAyQAIAMgADYCDCADIAE2AgggAyACNgIEIAMoAgggAygCBGwQGyEAIANBEGokACAAC4QCAgF/AX4jAEHgAGsiAiQAIAIgADYCWCACIAE2AlQgAiACKAJYIAJByABqQgwQMSIDNwMIAkAgA0IAUwRAIAIoAlQgAigCWBAaIAJBfzYCXAwBCyACKQMIQgxSBEAgAigCVEERQQAQFyACQX82AlwMAQsgAigCVCACQcgAaiIAIABCDEEAEHsgAigCWCACQRBqEDlBAEgEQCACQQA2AlwMAQsgAigCOCACQQZqIAJBBGoQuwECQCACLQBTIAIoAjxBGHZGDQAgAi0AUyACLwEGQQh1Rg0AIAIoAlRBG0EAEBcgAkF/NgJcDAELIAJBADYCXAsgAigCXCEAIAJB4ABqJAAgAAtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAvVAwEBfyMAQdAAayIFJAAgBSAANgJEIAUgATYCQCAFIAI2AjwgBSADNwMwIAUgBDYCLCAFIAUoAkA2AigCQAJAIAUoAiwiAEEOSw0AAkACQAJAAkACQAJAAkAgAEEBaw4OAQIDBQYHBwcHBwcHBwQACyAFKAJEIAUoAigQ4QJBAEgEQCAFQn83A0gMCAsgBUIANwNIDAcLIAUgBSgCRCAFKAI8IAUpAzAQMSIDNwMgIANCAFMEQCAFKAIoIAUoAkQQGiAFQn83A0gMBwsgBSgCQCAFKAI8IAUoAjwgBSkDIEEAEHsgBSAFKQMgNwNIDAYLIAVCADcDSAwFCyAFIAUoAjw2AhwgBSgCHEEAOwEyIAUoAhwiACAAKQMAQoABhDcDACAFKAIcKQMAQgiDQgBSBEAgBSgCHCIAIAApAyBCDH03AyALIAVCADcDSAwECyAFQX82AhQgBUEFNgIQIAVBBDYCDCAFQQM2AgggBUECNgIEIAVBATYCACAFQQAgBRA2NwNIDAMLIAUgBSgCKCAFKAI8IAUpAzAQRDcDSAwCCyAFKAIoEK8BIAVCADcDSAwBCyAFKAIoQRJBABAXIAVCfzcDSAsgBSkDSCEDIAVB0ABqJAAgAwvuAgEBfyMAQSBrIgUkACAFIAA2AhggBSABNgIUIAUgAjsBEiAFIAM2AgwgBSAENgIIAkACQAJAIAUoAghFDQAgBSgCFEUNACAFLwESQQFGDQELIAUoAhhBCGpBEkEAEBcgBUEANgIcDAELIAUoAgxBAXEEQCAFKAIYQQhqQRhBABAXIAVBADYCHAwBCyAFQRgQGyIANgIEIABFBEAgBSgCGEEIakEOQQAQFyAFQQA2AhwMAQsjAEEQayIAIAUoAgQ2AgwgACgCDEEANgIAIAAoAgxBADYCBCAAKAIMQQA2AgggBSgCBEH4rNGRATYCDCAFKAIEQYnPlZoCNgIQIAUoAgRBkPHZogM2AhQgBSgCBEEAIAUoAgggBSgCCBAwrUEBEHsgBSAFKAIYIAUoAhRBBSAFKAIEEGUiADYCACAARQRAIAUoAgQQrwEgBUEANgIcDAELIAUgBSgCADYCHAsgBSgCHCEAIAVBIGokACAAC+gGAQF/IwBB4ABrIgQkACAEIAA2AlQgBCABNgJQIAQgAjcDSCAEIAM2AkQCQCAEKAJUKQM4IAQpA0h8QoCABHxCAX0gBCkDSFQEQCAEKAJEQRJBABAXIARCfzcDWAwBCyAEIAQoAlQoAgQgBCgCVCkDCKdBA3RqKQMANwMgIAQoAlQpAzggBCkDSHwgBCkDIFYEQCAEIAQoAlQpAwggBCkDSCAEKQMgIAQoAlQpAzh9fUKAgAR8QgF9QhCIfDcDGCAEKQMYIAQoAlQpAxBWBEAgBCAEKAJUKQMQNwMQIAQpAxBQBEAgBEIQNwMQCwNAIAQpAxAgBCkDGFpFBEAgBCAEKQMQQgGGNwMQDAELCyAEKAJUIAQpAxAgBCgCRBCyAUEBcUUEQCAEKAJEQQ5BABAXIARCfzcDWAwDCwsDQCAEKAJUKQMIIAQpAxhUBEBBgIAEEBshACAEKAJUKAIAIAQoAlQpAwinQQR0aiAANgIAIAAEQCAEKAJUKAIAIAQoAlQpAwinQQR0akKAgAQ3AwggBCgCVCIAIAApAwhCAXw3AwggBCAEKQMgQoCABHw3AyAgBCgCVCgCBCAEKAJUKQMIp0EDdGogBCkDIDcDAAwCBSAEKAJEQQ5BABAXIARCfzcDWAwECwALCwsgBCAEKAJUKQNANwMwIAQgBCgCVCkDOCAEKAJUKAIEIAQpAzCnQQN0aikDAH03AyggBEIANwM4A0AgBCkDOCAEKQNIVARAIAQCfiAEKQNIIAQpAzh9IAQoAlQoAgAgBCkDMKdBBHRqKQMIIAQpAyh9VARAIAQpA0ggBCkDOH0MAQsgBCgCVCgCACAEKQMwp0EEdGopAwggBCkDKH0LNwMIIAQoAlQoAgAgBCkDMKdBBHRqKAIAIAQpAyinaiAEKAJQIAQpAzinaiAEKQMIpxAcGiAEKQMIIAQoAlQoAgAgBCkDMKdBBHRqKQMIIAQpAyh9UQRAIAQgBCkDMEIBfDcDMAsgBCAEKQMIIAQpAzh8NwM4IARCADcDKAwBCwsgBCgCVCIAIAQpAzggACkDOHw3AzggBCgCVCAEKQMwNwNAIAQoAlQpAzggBCgCVCkDMFYEQCAEKAJUIAQoAlQpAzg3AzALIAQgBCkDODcDWAsgBCkDWCECIARB4ABqJAAgAgvnAwEBfyMAQUBqIgMkACADIAA2AjQgAyABNgIwIAMgAjcDKCADAn4gAykDKCADKAI0KQMwIAMoAjQpAzh9VARAIAMpAygMAQsgAygCNCkDMCADKAI0KQM4fQs3AygCQCADKQMoUARAIANCADcDOAwBCyADKQMoQv///////////wBWBEAgA0J/NwM4DAELIAMgAygCNCkDQDcDGCADIAMoAjQpAzggAygCNCgCBCADKQMYp0EDdGopAwB9NwMQIANCADcDIANAIAMpAyAgAykDKFQEQCADAn4gAykDKCADKQMgfSADKAI0KAIAIAMpAxinQQR0aikDCCADKQMQfVQEQCADKQMoIAMpAyB9DAELIAMoAjQoAgAgAykDGKdBBHRqKQMIIAMpAxB9CzcDCCADKAIwIAMpAyCnaiADKAI0KAIAIAMpAxinQQR0aigCACADKQMQp2ogAykDCKcQHBogAykDCCADKAI0KAIAIAMpAxinQQR0aikDCCADKQMQfVEEQCADIAMpAxhCAXw3AxgLIAMgAykDCCADKQMgfDcDICADQgA3AxAMAQsLIAMoAjQiACADKQMgIAApAzh8NwM4IAMoAjQgAykDGDcDQCADIAMpAyA3AzgLIAMpAzghAiADQUBrJAAgAguuBAEBfyMAQUBqIgMkACADIAA2AjggAyABNwMwIAMgAjYCLAJAIAMpAzBQBEAgA0EAQgBBASADKAIsEEw2AjwMAQsgAykDMCADKAI4KQMwVgRAIAMoAixBEkEAEBcgA0EANgI8DAELIAMoAjgoAigEQCADKAIsQR1BABAXIANBADYCPAwBCyADIAMoAjggAykDMBCwATcDICADIAMpAzAgAygCOCgCBCADKQMgp0EDdGopAwB9NwMYIAMpAxhQBEAgAyADKQMgQn98NwMgIAMgAygCOCgCACADKQMgp0EEdGopAwg3AxgLIAMgAygCOCgCACADKQMgp0EEdGopAwggAykDGH03AxAgAykDECADKQMwVgRAIAMoAixBHEEAEBcgA0EANgI8DAELIAMgAygCOCgCACADKQMgQgF8QQAgAygCLBBMIgA2AgwgAEUEQCADQQA2AjwMAQsgAygCDCgCACADKAIMKQMIQgF9p0EEdGogAykDGDcDCCADKAIMKAIEIAMoAgwp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ArQBIAMgATYCsAEgAyACNwOoASADIAMoArQBKAIAEDoiAjcDIAJAIAJCAFMEQCADKAK0AUEIaiADKAK0ASgCABAaIANCfzcDuAEMAQsgAyADKQMgNwOgASADQQA6ABcgA0IANwMYA0AgAykDGCADKQOoAVQEQCADIAMoArQBKAJAIAMoArABIAMpAxinQQN0aikDAKdBBHRqNgIMIAMgAygCtAECfyADKAIMKAIEBEAgAygCDCgCBAwBCyADKAIMKAIAC0GABBBdIgA2AhAgAEEASARAIANCfzcDuAEMAwsgAygCEARAIANBAToAFwsgAyADKQMYQgF8NwMYDAELCyADIAMoArQBKAIAEDoiAjcDICACQgBTBEAgAygCtAFBCGogAygCtAEoAgAQGiADQn83A7gBDAELIAMgAykDICADKQOgAX03A5gBAkAgAykDoAFC/////w9YBEAgAykDqAFC//8DWA0BCyADQQE6ABcLIAMgA0EwakLiABArIgA2AiwgAEUEQCADKAK0AUEIakEOQQAQFyADQn83A7gBDAELIAMtABdBAXEEQCADKAIsQdbXAEEEEEIgAygCLEIsEC8gAygCLEEtECIgAygCLEEtECIgAygCLEEAECMgAygCLEEAECMgAygCLCADKQOoARAvIAMoAiwgAykDqAEQLyADKAIsIAMpA5gBEC8gAygCLCADKQOgARAvIAMoAixB29cAQQQQQiADKAIsQQAQIyADKAIsIAMpA6ABIAMpA5gBfBAvIAMoAixBARAjCyADKAIsQeDXAEEEEEIgAygCLEEAECMgAygCLAJ+Qv//AyADKQOoAUL//wNaDQAaIAMpA6gBC6dB//8DcRAiIAMoAiwCfkL//wMgAykDqAFC//8DWg0AGiADKQOoAQunQf//A3EQIiADKAIsAn9BfyADKQOYAUL/////D1oNABogAykDmAGnCxAjIAMoAiwCf0F/IAMpA6ABQv////8PWg0AGiADKQOgAacLECMgAwJ/IAMoArQBLQAoQQFxBEAgAygCtAEoAiQMAQsgAygCtAEoAiALNgKUASADKAIsAn8gAygClAEEQCADKAKUAS8BBAwBC0EAC0H//wNxECICfyMAQRBrIgAgAygCLDYCDCAAKAIMLQAAQQFxRQsEQCADKAK0AUEIakEUQQAQFyADKAIsEBkgA0J/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AAwAADAxMjM0NTY3ODlBQkNERUYtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBuYW4ATkFOAC4ATm8gZXJyb3IATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABSZW5hbWluZyB0ZW1wb3JhcnkgZmlsZSBmYWlsZWQAQ2xvc2luZyB6aXAgYXJjaGl2ZSBmYWlsZWQAU2VlayBlcnJvcgBSZWFkIGVycm9yAFdyaXRlIGVycm9yAENSQyBlcnJvcgBDb250YWluaW5nIHppcCBhcmNoaXZlIHdhcyBjbG9zZWQATm8gc3VjaCBmaWxlAEZpbGUgYWxyZWFkeSBleGlzdHMAQ2FuJ3Qgb3BlbiBmaWxlAEZhaWx1cmUgdG8gY3JlYXRlIHRlbXBvcmFyeSBmaWxlAFpsaWIgZXJyb3IATWFsbG9jIGZhaWx1cmUARW50cnkgaGFzIGJlZW4gY2hhbmdlZABDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABQcmVtYXR1cmUgZW5kIG9mIGZpbGUASW52YWxpZCBhcmd1bWVudABOb3QgYSB6aXAgYXJjaGl2ZQBJbnRlcm5hbCBlcnJvcgBaaXAgYXJjaGl2ZSBpbmNvbnNpc3RlbnQAQ2FuJ3QgcmVtb3ZlIGZpbGUARW50cnkgaGFzIGJlZW4gZGVsZXRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAFJlYWQtb25seSBhcmNoaXZlAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkAFJlc291cmNlIHN0aWxsIGluIHVzZQBUZWxsIGVycm9yAENvbXByZXNzZWQgZGF0YSBpbnZhbGlkAAAAAAAAACUGAAAuBgAAVAYAAHMGAACOBgAAmQYAAKQGAACwBgAAugYAANwGAADpBgAA/QYAAA0HAAAuBwAAOQcAAEgHAABfBwAAgAcAAJYHAACnBwAAuQcAAMgHAADhBwAA8wcAAAoIAAAqCAAAPAgAAFEIAABpCAAAgQgAAJcIAACiCAAAIABB2BILEQEAAAABAAAAAQAAAAEAAAABAEH8EgsJAQAAAAEAAAACAEGoEwsBAQBB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CADqAAgAGgAIAJoACABaAAgA2gAIADoACAC6AAgAegAIAPoACAAGAAgAhgAIAEYACADGAAgAJgAIAKYACABmAAgA5gAIABYACACWAAgAVgAIANYACAA2AAgAtgAIAHYACAD2AAgADgAIAI4ACABOAAgAzgAIAC4ACACuAAgAbgAIAO4ACAAeAAgAngAIAF4ACADeAAgAPgAIAL4ACAB+AAgA/gAIAAEACACBAAgAQQAIAMEACAAhAAgAoQAIAGEACADhAAgAEQAIAJEACABRAAgA0QAIADEACACxAAgAcQAIAPEACAAJAAgAiQAIAEkACADJAAgAKQAIAKkACABpAAgA6QAIABkACACZAAgAWQAIANkACAA5AAgAuQAIAHkACAD5AAgABQAIAIUACABFAAgAxQAIACUACAClAAgAZQAIAOUACAAVAAgAlQAIAFUACADVAAgANQAIALUACAB1AAgA9QAIAA0ACACNAAgATQAIAM0ACAAtAAgArQAIAG0ACADtAAgAHQAIAJ0ACABdAAgA3QAIAD0ACAC9AAgAfQAIAP0ACAATAAkAEwEJAJMACQCTAQkAUwAJAFMBCQDTAAkA0wEJADMACQAzAQkAswAJALMBCQBzAAkAcwEJAPMACQDzAQkACwAJAAsBCQCLAAkAiwEJAEsACQBLAQkAywAJAMsBCQArAAkAKwEJAKsACQCrAQkAawAJAGsBCQDrAAkA6wEJABsACQAbAQkAmwAJAJsBCQBbAAkAWwEJANsACQDbAQkAOwAJADsBCQC7AAkAuwEJAHsACQB7AQkA+wAJAPsBCQAHAAkABwEJAIcACQCHAQkARwAJAEcBCQDHAAkAxwEJACcACQAnAQkApwAJAKcBCQBnAAkAZwEJAOcACQDnAQkAFwAJABcBCQCXAAkAlwEJAFcACQBXAQkA1wAJANcBCQA3AAkANwEJALcACQC3AQkAdwAJAHcBCQD3AAkA9wEJAA8ACQAPAQkAjwAJAI8BCQBPAAkATwEJAM8ACQDPAQkALwAJAC8BCQCvAAkArwEJAG8ACQBvAQkA7wAJAO8BCQAfAAkAHwEJAJ8ACQCfAQkAXwAJAF8BCQDfAAkA3wEJAD8ACQA/AQkAvwAJAL8BCQB/AAkAfwEJAP8ACQD/AQkAAAAHAEAABwAgAAcAYAAHABAABwBQAAcAMAAHAHAA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Y2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAABVbmtub3duIGVycm9yICVkACVzJXMlcwAAOiAAL3Byb2Mvc2VsZi9mZC8AL2Rldi91cmFuZG9tAHJ3YQAlcy5YWFhYWFgAcitiAHJiAFBLBQYAQcyZAQsCYE4AQYSaAQvsAQwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAABAAAACAAAAARNAAAkTQAAHwAAAGRNAAADAAAAAAAAAC30UVjPjLHARva1yykxA8cEW3AwtF39IHh/i5rYWSlQaEiJq6dWA2z/t82IP9R3tCulo3DxuuSo/EGD/dlv4Yp6Ly10lgcfDQleA3YscPdApSynb1dBqKp036BYZANKx8Q8U66vXxgEFbHjbSiGqwykv0Pw6VCBOVcWUjf/////////////////////";
6535if (!isDataURI(wasmBinaryFile)) {
6536 wasmBinaryFile = locateFile(wasmBinaryFile);
6537}
6538function getBinary() {
6539 try {
6540 if (wasmBinary) {
6541 return new Uint8Array(wasmBinary);
6542 }
6543 var binary = tryParseAsDataURI(wasmBinaryFile);
6544 if (binary) {
6545 return binary;
6546 }
6547 if (readBinary) {
6548 return readBinary(wasmBinaryFile);
6549 } else {
6550 throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)";
6551 }
6552 } catch (err) {
6553 abort(err);
6554 }
6555}
6556function createWasm() {
6557 var info = { env: asmLibraryArg, wasi_unstable: asmLibraryArg };
6558 function receiveInstance(instance, module) {
6559 var exports = instance.exports;
6560 Module["asm"] = exports;
6561 removeRunDependency("wasm-instantiate");
6562 }
6563 addRunDependency("wasm-instantiate");
6564 function instantiateSync() {
6565 var instance;
6566 var module;
6567 var binary;
6568 try {
6569 binary = getBinary();
6570 module = new WebAssembly.Module(binary);
6571 instance = new WebAssembly.Instance(module, info);
6572 } catch (e) {
6573 var str = e.toString();
6574 err("failed to compile wasm module: " + str);
6575 if (
6576 str.indexOf("imported Memory") >= 0 ||
6577 str.indexOf("memory import") >= 0
6578 ) {
6579 err(
6580 "Memory size incompatibility issues may be due to changing TOTAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set TOTAL_MEMORY at runtime to something smaller than it was at compile time)."
6581 );
6582 }
6583 throw e;
6584 }
6585 receiveInstance(instance, module);
6586 }
6587 if (Module["instantiateWasm"]) {
6588 try {
6589 var exports = Module["instantiateWasm"](info, receiveInstance);
6590 return exports;
6591 } catch (e) {
6592 err("Module.instantiateWasm callback failed with error: " + e);
6593 return false;
6594 }
6595 }
6596 instantiateSync();
6597 return Module["asm"];
6598}
6599var tempDouble;
6600var tempI64;
6601__ATINIT__.push({
6602 func: function() {
6603 ___wasm_call_ctors();
6604 }
6605});
6606function demangle(func) {
6607 return func;
6608}
6609function demangleAll(text) {
6610 var regex = /\b_Z[\w\d_]+/g;
6611 return text.replace(regex, function(x) {
6612 var y = demangle(x);
6613 return x === y ? x : y + " [" + x + "]";
6614 });
6615}
6616function jsStackTrace() {
6617 var err = new Error();
6618 if (!err.stack) {
6619 try {
6620 throw new Error(0);
6621 } catch (e) {
6622 err = e;
6623 }
6624 if (!err.stack) {
6625 return "(no stack trace available)";
6626 }
6627 }
6628 return err.stack.toString();
6629}
6630function stackTrace() {
6631 var js = jsStackTrace();
6632 if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"]();
6633 return demangleAll(js);
6634}
6635function ___lock() {}
6636var PATH = {
6637 splitPath: function(filename) {
6638 var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
6639 return splitPathRe.exec(filename).slice(1);
6640 },
6641 normalizeArray: function(parts, allowAboveRoot) {
6642 var up = 0;
6643 for (var i = parts.length - 1; i >= 0; i--) {
6644 var last = parts[i];
6645 if (last === ".") {
6646 parts.splice(i, 1);
6647 } else if (last === "..") {
6648 parts.splice(i, 1);
6649 up++;
6650 } else if (up) {
6651 parts.splice(i, 1);
6652 up--;
6653 }
6654 }
6655 if (allowAboveRoot) {
6656 for (; up; up--) {
6657 parts.unshift("..");
6658 }
6659 }
6660 return parts;
6661 },
6662 normalize: function(path) {
6663 var isAbsolute = path.charAt(0) === "/",
6664 trailingSlash = path.substr(-1) === "/";
6665 path = PATH.normalizeArray(
6666 path.split("/").filter(function(p) {
6667 return !!p;
6668 }),
6669 !isAbsolute
6670 ).join("/");
6671 if (!path && !isAbsolute) {
6672 path = ".";
6673 }
6674 if (path && trailingSlash) {
6675 path += "/";
6676 }
6677 return (isAbsolute ? "/" : "") + path;
6678 },
6679 dirname: function(path) {
6680 var result = PATH.splitPath(path),
6681 root = result[0],
6682 dir = result[1];
6683 if (!root && !dir) {
6684 return ".";
6685 }
6686 if (dir) {
6687 dir = dir.substr(0, dir.length - 1);
6688 }
6689 return root + dir;
6690 },
6691 basename: function(path) {
6692 if (path === "/") return "/";
6693 var lastSlash = path.lastIndexOf("/");
6694 if (lastSlash === -1) return path;
6695 return path.substr(lastSlash + 1);
6696 },
6697 extname: function(path) {
6698 return PATH.splitPath(path)[3];
6699 },
6700 join: function() {
6701 var paths = Array.prototype.slice.call(arguments, 0);
6702 return PATH.normalize(paths.join("/"));
6703 },
6704 join2: function(l, r) {
6705 return PATH.normalize(l + "/" + r);
6706 }
6707};
6708function ___setErrNo(value) {
6709 if (Module["___errno_location"])
6710 HEAP32[Module["___errno_location"]() >> 2] = value;
6711 return value;
6712}
6713var PATH_FS = {
6714 resolve: function() {
6715 var resolvedPath = "",
6716 resolvedAbsolute = false;
6717 for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
6718 var path = i >= 0 ? arguments[i] : FS.cwd();
6719 if (typeof path !== "string") {
6720 throw new TypeError("Arguments to path.resolve must be strings");
6721 } else if (!path) {
6722 return "";
6723 }
6724 resolvedPath = path + "/" + resolvedPath;
6725 resolvedAbsolute = path.charAt(0) === "/";
6726 }
6727 resolvedPath = PATH.normalizeArray(
6728 resolvedPath.split("/").filter(function(p) {
6729 return !!p;
6730 }),
6731 !resolvedAbsolute
6732 ).join("/");
6733 return (resolvedAbsolute ? "/" : "") + resolvedPath || ".";
6734 },
6735 relative: function(from, to) {
6736 from = PATH_FS.resolve(from).substr(1);
6737 to = PATH_FS.resolve(to).substr(1);
6738 function trim(arr) {
6739 var start = 0;
6740 for (; start < arr.length; start++) {
6741 if (arr[start] !== "") break;
6742 }
6743 var end = arr.length - 1;
6744 for (; end >= 0; end--) {
6745 if (arr[end] !== "") break;
6746 }
6747 if (start > end) return [];
6748 return arr.slice(start, end - start + 1);
6749 }
6750 var fromParts = trim(from.split("/"));
6751 var toParts = trim(to.split("/"));
6752 var length = Math.min(fromParts.length, toParts.length);
6753 var samePartsLength = length;
6754 for (var i = 0; i < length; i++) {
6755 if (fromParts[i] !== toParts[i]) {
6756 samePartsLength = i;
6757 break;
6758 }
6759 }
6760 var outputParts = [];
6761 for (var i = samePartsLength; i < fromParts.length; i++) {
6762 outputParts.push("..");
6763 }
6764 outputParts = outputParts.concat(toParts.slice(samePartsLength));
6765 return outputParts.join("/");
6766 }
6767};
6768var TTY = {
6769 ttys: [],
6770 init: function() {},
6771 shutdown: function() {},
6772 register: function(dev, ops) {
6773 TTY.ttys[dev] = { input: [], output: [], ops: ops };
6774 FS.registerDevice(dev, TTY.stream_ops);
6775 },
6776 stream_ops: {
6777 open: function(stream) {
6778 var tty = TTY.ttys[stream.node.rdev];
6779 if (!tty) {
6780 throw new FS.ErrnoError(43);
6781 }
6782 stream.tty = tty;
6783 stream.seekable = false;
6784 },
6785 close: function(stream) {
6786 stream.tty.ops.flush(stream.tty);
6787 },
6788 flush: function(stream) {
6789 stream.tty.ops.flush(stream.tty);
6790 },
6791 read: function(stream, buffer, offset, length, pos) {
6792 if (!stream.tty || !stream.tty.ops.get_char) {
6793 throw new FS.ErrnoError(60);
6794 }
6795 var bytesRead = 0;
6796 for (var i = 0; i < length; i++) {
6797 var result;
6798 try {
6799 result = stream.tty.ops.get_char(stream.tty);
6800 } catch (e) {
6801 throw new FS.ErrnoError(29);
6802 }
6803 if (result === undefined && bytesRead === 0) {
6804 throw new FS.ErrnoError(6);
6805 }
6806 if (result === null || result === undefined) break;
6807 bytesRead++;
6808 buffer[offset + i] = result;
6809 }
6810 if (bytesRead) {
6811 stream.node.timestamp = Date.now();
6812 }
6813 return bytesRead;
6814 },
6815 write: function(stream, buffer, offset, length, pos) {
6816 if (!stream.tty || !stream.tty.ops.put_char) {
6817 throw new FS.ErrnoError(60);
6818 }
6819 try {
6820 for (var i = 0; i < length; i++) {
6821 stream.tty.ops.put_char(stream.tty, buffer[offset + i]);
6822 }
6823 } catch (e) {
6824 throw new FS.ErrnoError(29);
6825 }
6826 if (length) {
6827 stream.node.timestamp = Date.now();
6828 }
6829 return i;
6830 }
6831 },
6832 default_tty_ops: {
6833 get_char: function(tty) {
6834 if (!tty.input.length) {
6835 var result = null;
6836 if (ENVIRONMENT_IS_NODE) {
6837 var BUFSIZE = 256;
6838 var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE);
6839 var bytesRead = 0;
6840 try {
6841 bytesRead = nodeFS.readSync(
6842 process.stdin.fd,
6843 buf,
6844 0,
6845 BUFSIZE,
6846 null
6847 );
6848 } catch (e) {
6849 if (e.toString().indexOf("EOF") != -1) bytesRead = 0;
6850 else throw e;
6851 }
6852 if (bytesRead > 0) {
6853 result = buf.slice(0, bytesRead).toString("utf-8");
6854 } else {
6855 result = null;
6856 }
6857 } else if (
6858 typeof window != "undefined" &&
6859 typeof window.prompt == "function"
6860 ) {
6861 result = window.prompt("Input: ");
6862 if (result !== null) {
6863 result += "\n";
6864 }
6865 } else if (typeof readline == "function") {
6866 result = readline();
6867 if (result !== null) {
6868 result += "\n";
6869 }
6870 }
6871 if (!result) {
6872 return null;
6873 }
6874 tty.input = intArrayFromString(result, true);
6875 }
6876 return tty.input.shift();
6877 },
6878 put_char: function(tty, val) {
6879 if (val === null || val === 10) {
6880 out(UTF8ArrayToString(tty.output, 0));
6881 tty.output = [];
6882 } else {
6883 if (val != 0) tty.output.push(val);
6884 }
6885 },
6886 flush: function(tty) {
6887 if (tty.output && tty.output.length > 0) {
6888 out(UTF8ArrayToString(tty.output, 0));
6889 tty.output = [];
6890 }
6891 }
6892 },
6893 default_tty1_ops: {
6894 put_char: function(tty, val) {
6895 if (val === null || val === 10) {
6896 err(UTF8ArrayToString(tty.output, 0));
6897 tty.output = [];
6898 } else {
6899 if (val != 0) tty.output.push(val);
6900 }
6901 },
6902 flush: function(tty) {
6903 if (tty.output && tty.output.length > 0) {
6904 err(UTF8ArrayToString(tty.output, 0));
6905 tty.output = [];
6906 }
6907 }
6908 }
6909};
6910var MEMFS = {
6911 ops_table: null,
6912 mount: function(mount) {
6913 return MEMFS.createNode(null, "/", 16384 | 511, 0);
6914 },
6915 createNode: function(parent, name, mode, dev) {
6916 if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
6917 throw new FS.ErrnoError(63);
6918 }
6919 if (!MEMFS.ops_table) {
6920 MEMFS.ops_table = {
6921 dir: {
6922 node: {
6923 getattr: MEMFS.node_ops.getattr,
6924 setattr: MEMFS.node_ops.setattr,
6925 lookup: MEMFS.node_ops.lookup,
6926 mknod: MEMFS.node_ops.mknod,
6927 rename: MEMFS.node_ops.rename,
6928 unlink: MEMFS.node_ops.unlink,
6929 rmdir: MEMFS.node_ops.rmdir,
6930 readdir: MEMFS.node_ops.readdir,
6931 symlink: MEMFS.node_ops.symlink
6932 },
6933 stream: { llseek: MEMFS.stream_ops.llseek }
6934 },
6935 file: {
6936 node: {
6937 getattr: MEMFS.node_ops.getattr,
6938 setattr: MEMFS.node_ops.setattr
6939 },
6940 stream: {
6941 llseek: MEMFS.stream_ops.llseek,
6942 read: MEMFS.stream_ops.read,
6943 write: MEMFS.stream_ops.write,
6944 allocate: MEMFS.stream_ops.allocate,
6945 mmap: MEMFS.stream_ops.mmap,
6946 msync: MEMFS.stream_ops.msync
6947 }
6948 },
6949 link: {
6950 node: {
6951 getattr: MEMFS.node_ops.getattr,
6952 setattr: MEMFS.node_ops.setattr,
6953 readlink: MEMFS.node_ops.readlink
6954 },
6955 stream: {}
6956 },
6957 chrdev: {
6958 node: {
6959 getattr: MEMFS.node_ops.getattr,
6960 setattr: MEMFS.node_ops.setattr
6961 },
6962 stream: FS.chrdev_stream_ops
6963 }
6964 };
6965 }
6966 var node = FS.createNode(parent, name, mode, dev);
6967 if (FS.isDir(node.mode)) {
6968 node.node_ops = MEMFS.ops_table.dir.node;
6969 node.stream_ops = MEMFS.ops_table.dir.stream;
6970 node.contents = {};
6971 } else if (FS.isFile(node.mode)) {
6972 node.node_ops = MEMFS.ops_table.file.node;
6973 node.stream_ops = MEMFS.ops_table.file.stream;
6974 node.usedBytes = 0;
6975 node.contents = null;
6976 } else if (FS.isLink(node.mode)) {
6977 node.node_ops = MEMFS.ops_table.link.node;
6978 node.stream_ops = MEMFS.ops_table.link.stream;
6979 } else if (FS.isChrdev(node.mode)) {
6980 node.node_ops = MEMFS.ops_table.chrdev.node;
6981 node.stream_ops = MEMFS.ops_table.chrdev.stream;
6982 }
6983 node.timestamp = Date.now();
6984 if (parent) {
6985 parent.contents[name] = node;
6986 }
6987 return node;
6988 },
6989 getFileDataAsRegularArray: function(node) {
6990 if (node.contents && node.contents.subarray) {
6991 var arr = [];
6992 for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
6993 return arr;
6994 }
6995 return node.contents;
6996 },
6997 getFileDataAsTypedArray: function(node) {
6998 if (!node.contents) return new Uint8Array();
6999 if (node.contents.subarray)
7000 return node.contents.subarray(0, node.usedBytes);
7001 return new Uint8Array(node.contents);
7002 },
7003 expandFileStorage: function(node, newCapacity) {
7004 var prevCapacity = node.contents ? node.contents.length : 0;
7005 if (prevCapacity >= newCapacity) return;
7006 var CAPACITY_DOUBLING_MAX = 1024 * 1024;
7007 newCapacity = Math.max(
7008 newCapacity,
7009 (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125)) | 0
7010 );
7011 if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);
7012 var oldContents = node.contents;
7013 node.contents = new Uint8Array(newCapacity);
7014 if (node.usedBytes > 0)
7015 node.contents.set(oldContents.subarray(0, node.usedBytes), 0);
7016 return;
7017 },
7018 resizeFileStorage: function(node, newSize) {
7019 if (node.usedBytes == newSize) return;
7020 if (newSize == 0) {
7021 node.contents = null;
7022 node.usedBytes = 0;
7023 return;
7024 }
7025 if (!node.contents || node.contents.subarray) {
7026 var oldContents = node.contents;
7027 node.contents = new Uint8Array(new ArrayBuffer(newSize));
7028 if (oldContents) {
7029 node.contents.set(
7030 oldContents.subarray(0, Math.min(newSize, node.usedBytes))
7031 );
7032 }
7033 node.usedBytes = newSize;
7034 return;
7035 }
7036 if (!node.contents) node.contents = [];
7037 if (node.contents.length > newSize) node.contents.length = newSize;
7038 else while (node.contents.length < newSize) node.contents.push(0);
7039 node.usedBytes = newSize;
7040 },
7041 node_ops: {
7042 getattr: function(node) {
7043 var attr = {};
7044 attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
7045 attr.ino = node.id;
7046 attr.mode = node.mode;
7047 attr.nlink = 1;
7048 attr.uid = 0;
7049 attr.gid = 0;
7050 attr.rdev = node.rdev;
7051 if (FS.isDir(node.mode)) {
7052 attr.size = 4096;
7053 } else if (FS.isFile(node.mode)) {
7054 attr.size = node.usedBytes;
7055 } else if (FS.isLink(node.mode)) {
7056 attr.size = node.link.length;
7057 } else {
7058 attr.size = 0;
7059 }
7060 attr.atime = new Date(node.timestamp);
7061 attr.mtime = new Date(node.timestamp);
7062 attr.ctime = new Date(node.timestamp);
7063 attr.blksize = 4096;
7064 attr.blocks = Math.ceil(attr.size / attr.blksize);
7065 return attr;
7066 },
7067 setattr: function(node, attr) {
7068 if (attr.mode !== undefined) {
7069 node.mode = attr.mode;
7070 }
7071 if (attr.timestamp !== undefined) {
7072 node.timestamp = attr.timestamp;
7073 }
7074 if (attr.size !== undefined) {
7075 MEMFS.resizeFileStorage(node, attr.size);
7076 }
7077 },
7078 lookup: function(parent, name) {
7079 throw FS.genericErrors[44];
7080 },
7081 mknod: function(parent, name, mode, dev) {
7082 return MEMFS.createNode(parent, name, mode, dev);
7083 },
7084 rename: function(old_node, new_dir, new_name) {
7085 if (FS.isDir(old_node.mode)) {
7086 var new_node;
7087 try {
7088 new_node = FS.lookupNode(new_dir, new_name);
7089 } catch (e) {}
7090 if (new_node) {
7091 for (var i in new_node.contents) {
7092 throw new FS.ErrnoError(55);
7093 }
7094 }
7095 }
7096 delete old_node.parent.contents[old_node.name];
7097 old_node.name = new_name;
7098 new_dir.contents[new_name] = old_node;
7099 old_node.parent = new_dir;
7100 },
7101 unlink: function(parent, name) {
7102 delete parent.contents[name];
7103 },
7104 rmdir: function(parent, name) {
7105 var node = FS.lookupNode(parent, name);
7106 for (var i in node.contents) {
7107 throw new FS.ErrnoError(55);
7108 }
7109 delete parent.contents[name];
7110 },
7111 readdir: function(node) {
7112 var entries = [".", ".."];
7113 for (var key in node.contents) {
7114 if (!node.contents.hasOwnProperty(key)) {
7115 continue;
7116 }
7117 entries.push(key);
7118 }
7119 return entries;
7120 },
7121 symlink: function(parent, newname, oldpath) {
7122 var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
7123 node.link = oldpath;
7124 return node;
7125 },
7126 readlink: function(node) {
7127 if (!FS.isLink(node.mode)) {
7128 throw new FS.ErrnoError(28);
7129 }
7130 return node.link;
7131 }
7132 },
7133 stream_ops: {
7134 read: function(stream, buffer, offset, length, position) {
7135 var contents = stream.node.contents;
7136 if (position >= stream.node.usedBytes) return 0;
7137 var size = Math.min(stream.node.usedBytes - position, length);
7138 if (size > 8 && contents.subarray) {
7139 buffer.set(contents.subarray(position, position + size), offset);
7140 } else {
7141 for (var i = 0; i < size; i++)
7142 buffer[offset + i] = contents[position + i];
7143 }
7144 return size;
7145 },
7146 write: function(stream, buffer, offset, length, position, canOwn) {
7147 if (buffer.buffer === HEAP8.buffer) {
7148 canOwn = false;
7149 }
7150 if (!length) return 0;
7151 var node = stream.node;
7152 node.timestamp = Date.now();
7153 if (buffer.subarray && (!node.contents || node.contents.subarray)) {
7154 if (canOwn) {
7155 node.contents = buffer.subarray(offset, offset + length);
7156 node.usedBytes = length;
7157 return length;
7158 } else if (node.usedBytes === 0 && position === 0) {
7159 node.contents = new Uint8Array(
7160 buffer.subarray(offset, offset + length)
7161 );
7162 node.usedBytes = length;
7163 return length;
7164 } else if (position + length <= node.usedBytes) {
7165 node.contents.set(buffer.subarray(offset, offset + length), position);
7166 return length;
7167 }
7168 }
7169 MEMFS.expandFileStorage(node, position + length);
7170 if (node.contents.subarray && buffer.subarray)
7171 node.contents.set(buffer.subarray(offset, offset + length), position);
7172 else {
7173 for (var i = 0; i < length; i++) {
7174 node.contents[position + i] = buffer[offset + i];
7175 }
7176 }
7177 node.usedBytes = Math.max(node.usedBytes, position + length);
7178 return length;
7179 },
7180 llseek: function(stream, offset, whence) {
7181 var position = offset;
7182 if (whence === 1) {
7183 position += stream.position;
7184 } else if (whence === 2) {
7185 if (FS.isFile(stream.node.mode)) {
7186 position += stream.node.usedBytes;
7187 }
7188 }
7189 if (position < 0) {
7190 throw new FS.ErrnoError(28);
7191 }
7192 return position;
7193 },
7194 allocate: function(stream, offset, length) {
7195 MEMFS.expandFileStorage(stream.node, offset + length);
7196 stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
7197 },
7198 mmap: function(stream, buffer, offset, length, position, prot, flags) {
7199 if (!FS.isFile(stream.node.mode)) {
7200 throw new FS.ErrnoError(43);
7201 }
7202 var ptr;
7203 var allocated;
7204 var contents = stream.node.contents;
7205 if (!(flags & 2) && contents.buffer === buffer.buffer) {
7206 allocated = false;
7207 ptr = contents.byteOffset;
7208 } else {
7209 if (position > 0 || position + length < stream.node.usedBytes) {
7210 if (contents.subarray) {
7211 contents = contents.subarray(position, position + length);
7212 } else {
7213 contents = Array.prototype.slice.call(
7214 contents,
7215 position,
7216 position + length
7217 );
7218 }
7219 }
7220 allocated = true;
7221 var fromHeap = buffer.buffer == HEAP8.buffer;
7222 ptr = _malloc(length);
7223 if (!ptr) {
7224 throw new FS.ErrnoError(48);
7225 }
7226 (fromHeap ? HEAP8 : buffer).set(contents, ptr);
7227 }
7228 return { ptr: ptr, allocated: allocated };
7229 },
7230 msync: function(stream, buffer, offset, length, mmapFlags) {
7231 if (!FS.isFile(stream.node.mode)) {
7232 throw new FS.ErrnoError(43);
7233 }
7234 if (mmapFlags & 2) {
7235 return 0;
7236 }
7237 var bytesWritten = MEMFS.stream_ops.write(
7238 stream,
7239 buffer,
7240 0,
7241 length,
7242 offset,
7243 false
7244 );
7245 return 0;
7246 }
7247 }
7248};
7249var ERRNO_CODES = {
7250 EPERM: 63,
7251 ENOENT: 44,
7252 ESRCH: 71,
7253 EINTR: 27,
7254 EIO: 29,
7255 ENXIO: 60,
7256 E2BIG: 1,
7257 ENOEXEC: 45,
7258 EBADF: 8,
7259 ECHILD: 12,
7260 EAGAIN: 6,
7261 EWOULDBLOCK: 6,
7262 ENOMEM: 48,
7263 EACCES: 2,
7264 EFAULT: 21,
7265 ENOTBLK: 105,
7266 EBUSY: 10,
7267 EEXIST: 20,
7268 EXDEV: 75,
7269 ENODEV: 43,
7270 ENOTDIR: 54,
7271 EISDIR: 31,
7272 EINVAL: 28,
7273 ENFILE: 41,
7274 EMFILE: 33,
7275 ENOTTY: 59,
7276 ETXTBSY: 74,
7277 EFBIG: 22,
7278 ENOSPC: 51,
7279 ESPIPE: 70,
7280 EROFS: 69,
7281 EMLINK: 34,
7282 EPIPE: 64,
7283 EDOM: 18,
7284 ERANGE: 68,
7285 ENOMSG: 49,
7286 EIDRM: 24,
7287 ECHRNG: 106,
7288 EL2NSYNC: 156,
7289 EL3HLT: 107,
7290 EL3RST: 108,
7291 ELNRNG: 109,
7292 EUNATCH: 110,
7293 ENOCSI: 111,
7294 EL2HLT: 112,
7295 EDEADLK: 16,
7296 ENOLCK: 46,
7297 EBADE: 113,
7298 EBADR: 114,
7299 EXFULL: 115,
7300 ENOANO: 104,
7301 EBADRQC: 103,
7302 EBADSLT: 102,
7303 EDEADLOCK: 16,
7304 EBFONT: 101,
7305 ENOSTR: 100,
7306 ENODATA: 116,
7307 ETIME: 117,
7308 ENOSR: 118,
7309 ENONET: 119,
7310 ENOPKG: 120,
7311 EREMOTE: 121,
7312 ENOLINK: 47,
7313 EADV: 122,
7314 ESRMNT: 123,
7315 ECOMM: 124,
7316 EPROTO: 65,
7317 EMULTIHOP: 36,
7318 EDOTDOT: 125,
7319 EBADMSG: 9,
7320 ENOTUNIQ: 126,
7321 EBADFD: 127,
7322 EREMCHG: 128,
7323 ELIBACC: 129,
7324 ELIBBAD: 130,
7325 ELIBSCN: 131,
7326 ELIBMAX: 132,
7327 ELIBEXEC: 133,
7328 ENOSYS: 52,
7329 ENOTEMPTY: 55,
7330 ENAMETOOLONG: 37,
7331 ELOOP: 32,
7332 EOPNOTSUPP: 138,
7333 EPFNOSUPPORT: 139,
7334 ECONNRESET: 15,
7335 ENOBUFS: 42,
7336 EAFNOSUPPORT: 5,
7337 EPROTOTYPE: 67,
7338 ENOTSOCK: 57,
7339 ENOPROTOOPT: 50,
7340 ESHUTDOWN: 140,
7341 ECONNREFUSED: 14,
7342 EADDRINUSE: 3,
7343 ECONNABORTED: 13,
7344 ENETUNREACH: 40,
7345 ENETDOWN: 38,
7346 ETIMEDOUT: 73,
7347 EHOSTDOWN: 142,
7348 EHOSTUNREACH: 23,
7349 EINPROGRESS: 26,
7350 EALREADY: 7,
7351 EDESTADDRREQ: 17,
7352 EMSGSIZE: 35,
7353 EPROTONOSUPPORT: 66,
7354 ESOCKTNOSUPPORT: 137,
7355 EADDRNOTAVAIL: 4,
7356 ENETRESET: 39,
7357 EISCONN: 30,
7358 ENOTCONN: 53,
7359 ETOOMANYREFS: 141,
7360 EUSERS: 136,
7361 EDQUOT: 19,
7362 ESTALE: 72,
7363 ENOTSUP: 138,
7364 ENOMEDIUM: 148,
7365 EILSEQ: 25,
7366 EOVERFLOW: 61,
7367 ECANCELED: 11,
7368 ENOTRECOVERABLE: 56,
7369 EOWNERDEAD: 62,
7370 ESTRPIPE: 135
7371};
7372var NODEFS = {
7373 isWindows: false,
7374 staticInit: function() {
7375 NODEFS.isWindows = !!process.platform.match(/^win/);
7376 var flags = { fs: fs.constants };
7377 if (flags["fs"]) {
7378 flags = flags["fs"];
7379 }
7380 NODEFS.flagsForNodeMap = {
7381 1024: flags["O_APPEND"],
7382 64: flags["O_CREAT"],
7383 128: flags["O_EXCL"],
7384 0: flags["O_RDONLY"],
7385 2: flags["O_RDWR"],
7386 4096: flags["O_SYNC"],
7387 512: flags["O_TRUNC"],
7388 1: flags["O_WRONLY"]
7389 };
7390 },
7391 bufferFrom: function(arrayBuffer) {
7392 return Buffer["alloc"] ? Buffer.from(arrayBuffer) : new Buffer(arrayBuffer);
7393 },
7394 convertNodeCode: function(e) {
7395 var code = e.code;
7396 assert(code in ERRNO_CODES);
7397 return ERRNO_CODES[code];
7398 },
7399 mount: function(mount) {
7400 assert(ENVIRONMENT_HAS_NODE);
7401 return NODEFS.createNode(null, "/", NODEFS.getMode(mount.opts.root), 0);
7402 },
7403 createNode: function(parent, name, mode, dev) {
7404 if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
7405 throw new FS.ErrnoError(28);
7406 }
7407 var node = FS.createNode(parent, name, mode);
7408 node.node_ops = NODEFS.node_ops;
7409 node.stream_ops = NODEFS.stream_ops;
7410 return node;
7411 },
7412 getMode: function(path) {
7413 var stat;
7414 try {
7415 stat = fs.lstatSync(path);
7416 if (NODEFS.isWindows) {
7417 stat.mode = stat.mode | ((stat.mode & 292) >> 2);
7418 }
7419 } catch (e) {
7420 if (!e.code) throw e;
7421 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7422 }
7423 return stat.mode;
7424 },
7425 realPath: function(node) {
7426 var parts = [];
7427 while (node.parent !== node) {
7428 parts.push(node.name);
7429 node = node.parent;
7430 }
7431 parts.push(node.mount.opts.root);
7432 parts.reverse();
7433 return PATH.join.apply(null, parts);
7434 },
7435 flagsForNode: function(flags) {
7436 flags &= ~2097152;
7437 flags &= ~2048;
7438 flags &= ~32768;
7439 flags &= ~524288;
7440 var newFlags = 0;
7441 for (var k in NODEFS.flagsForNodeMap) {
7442 if (flags & k) {
7443 newFlags |= NODEFS.flagsForNodeMap[k];
7444 flags ^= k;
7445 }
7446 }
7447 if (!flags) {
7448 return newFlags;
7449 } else {
7450 throw new FS.ErrnoError(28);
7451 }
7452 },
7453 node_ops: {
7454 getattr: function(node) {
7455 var path = NODEFS.realPath(node);
7456 var stat;
7457 try {
7458 stat = fs.lstatSync(path);
7459 } catch (e) {
7460 if (!e.code) throw e;
7461 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7462 }
7463 if (NODEFS.isWindows && !stat.blksize) {
7464 stat.blksize = 4096;
7465 }
7466 if (NODEFS.isWindows && !stat.blocks) {
7467 stat.blocks = ((stat.size + stat.blksize - 1) / stat.blksize) | 0;
7468 }
7469 return {
7470 dev: stat.dev,
7471 ino: stat.ino,
7472 mode: stat.mode,
7473 nlink: stat.nlink,
7474 uid: stat.uid,
7475 gid: stat.gid,
7476 rdev: stat.rdev,
7477 size: stat.size,
7478 atime: stat.atime,
7479 mtime: stat.mtime,
7480 ctime: stat.ctime,
7481 blksize: stat.blksize,
7482 blocks: stat.blocks
7483 };
7484 },
7485 setattr: function(node, attr) {
7486 var path = NODEFS.realPath(node);
7487 try {
7488 if (attr.mode !== undefined) {
7489 fs.chmodSync(path, attr.mode);
7490 node.mode = attr.mode;
7491 }
7492 if (attr.timestamp !== undefined) {
7493 var date = new Date(attr.timestamp);
7494 fs.utimesSync(path, date, date);
7495 }
7496 if (attr.size !== undefined) {
7497 fs.truncateSync(path, attr.size);
7498 }
7499 } catch (e) {
7500 if (!e.code) throw e;
7501 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7502 }
7503 },
7504 lookup: function(parent, name) {
7505 var path = PATH.join2(NODEFS.realPath(parent), name);
7506 var mode = NODEFS.getMode(path);
7507 return NODEFS.createNode(parent, name, mode);
7508 },
7509 mknod: function(parent, name, mode, dev) {
7510 var node = NODEFS.createNode(parent, name, mode, dev);
7511 var path = NODEFS.realPath(node);
7512 try {
7513 if (FS.isDir(node.mode)) {
7514 fs.mkdirSync(path, node.mode);
7515 } else {
7516 fs.writeFileSync(path, "", { mode: node.mode });
7517 }
7518 } catch (e) {
7519 if (!e.code) throw e;
7520 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7521 }
7522 return node;
7523 },
7524 rename: function(oldNode, newDir, newName) {
7525 var oldPath = NODEFS.realPath(oldNode);
7526 var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
7527 try {
7528 fs.renameSync(oldPath, newPath);
7529 } catch (e) {
7530 if (!e.code) throw e;
7531 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7532 }
7533 },
7534 unlink: function(parent, name) {
7535 var path = PATH.join2(NODEFS.realPath(parent), name);
7536 try {
7537 fs.unlinkSync(path);
7538 } catch (e) {
7539 if (!e.code) throw e;
7540 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7541 }
7542 },
7543 rmdir: function(parent, name) {
7544 var path = PATH.join2(NODEFS.realPath(parent), name);
7545 try {
7546 fs.rmdirSync(path);
7547 } catch (e) {
7548 if (!e.code) throw e;
7549 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7550 }
7551 },
7552 readdir: function(node) {
7553 var path = NODEFS.realPath(node);
7554 try {
7555 return fs.readdirSync(path);
7556 } catch (e) {
7557 if (!e.code) throw e;
7558 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7559 }
7560 },
7561 symlink: function(parent, newName, oldPath) {
7562 var newPath = PATH.join2(NODEFS.realPath(parent), newName);
7563 try {
7564 fs.symlinkSync(oldPath, newPath);
7565 } catch (e) {
7566 if (!e.code) throw e;
7567 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7568 }
7569 },
7570 readlink: function(node) {
7571 var path = NODEFS.realPath(node);
7572 try {
7573 path = fs.readlinkSync(path);
7574 path = NODEJS_PATH.relative(
7575 NODEJS_PATH.resolve(node.mount.opts.root),
7576 path
7577 );
7578 return path;
7579 } catch (e) {
7580 if (!e.code) throw e;
7581 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7582 }
7583 }
7584 },
7585 stream_ops: {
7586 open: function(stream) {
7587 var path = NODEFS.realPath(stream.node);
7588 try {
7589 if (FS.isFile(stream.node.mode)) {
7590 stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags));
7591 }
7592 } catch (e) {
7593 if (!e.code) throw e;
7594 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7595 }
7596 },
7597 close: function(stream) {
7598 try {
7599 if (FS.isFile(stream.node.mode) && stream.nfd) {
7600 fs.closeSync(stream.nfd);
7601 }
7602 } catch (e) {
7603 if (!e.code) throw e;
7604 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7605 }
7606 },
7607 read: function(stream, buffer, offset, length, position) {
7608 if (length === 0) return 0;
7609 try {
7610 return fs.readSync(
7611 stream.nfd,
7612 NODEFS.bufferFrom(buffer.buffer),
7613 offset,
7614 length,
7615 position
7616 );
7617 } catch (e) {
7618 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7619 }
7620 },
7621 write: function(stream, buffer, offset, length, position) {
7622 try {
7623 return fs.writeSync(
7624 stream.nfd,
7625 NODEFS.bufferFrom(buffer.buffer),
7626 offset,
7627 length,
7628 position
7629 );
7630 } catch (e) {
7631 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7632 }
7633 },
7634 llseek: function(stream, offset, whence) {
7635 var position = offset;
7636 if (whence === 1) {
7637 position += stream.position;
7638 } else if (whence === 2) {
7639 if (FS.isFile(stream.node.mode)) {
7640 try {
7641 var stat = fs.fstatSync(stream.nfd);
7642 position += stat.size;
7643 } catch (e) {
7644 throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
7645 }
7646 }
7647 }
7648 if (position < 0) {
7649 throw new FS.ErrnoError(28);
7650 }
7651 return position;
7652 }
7653 }
7654};
7655var NODERAWFS = {
7656 lookupPath: function(path) {
7657 return { path: path, node: { mode: NODEFS.getMode(path) } };
7658 },
7659 createStandardStreams: function() {
7660 FS.streams[0] = {
7661 fd: 0,
7662 nfd: 0,
7663 position: 0,
7664 path: "",
7665 flags: 0,
7666 tty: true,
7667 seekable: false
7668 };
7669 for (var i = 1; i < 3; i++) {
7670 FS.streams[i] = {
7671 fd: i,
7672 nfd: i,
7673 position: 0,
7674 path: "",
7675 flags: 577,
7676 tty: true,
7677 seekable: false
7678 };
7679 }
7680 },
7681 cwd: function() {
7682 return process.cwd();
7683 },
7684 chdir: function() {
7685 process.chdir.apply(void 0, arguments);
7686 },
7687 mknod: function(path, mode) {
7688 if (FS.isDir(path)) {
7689 fs.mkdirSync(path, mode);
7690 } else {
7691 fs.writeFileSync(path, "", { mode: mode });
7692 }
7693 },
7694 mkdir: function() {
7695 fs.mkdirSync.apply(void 0, arguments);
7696 },
7697 symlink: function() {
7698 fs.symlinkSync.apply(void 0, arguments);
7699 },
7700 rename: function() {
7701 fs.renameSync.apply(void 0, arguments);
7702 },
7703 rmdir: function() {
7704 fs.rmdirSync.apply(void 0, arguments);
7705 },
7706 readdir: function() {
7707 fs.readdirSync.apply(void 0, arguments);
7708 },
7709 unlink: function() {
7710 fs.unlinkSync.apply(void 0, arguments);
7711 },
7712 readlink: function() {
7713 return fs.readlinkSync.apply(void 0, arguments);
7714 },
7715 stat: function() {
7716 return fs.statSync.apply(void 0, arguments);
7717 },
7718 lstat: function() {
7719 return fs.lstatSync.apply(void 0, arguments);
7720 },
7721 chmod: function() {
7722 fs.chmodSync.apply(void 0, arguments);
7723 },
7724 fchmod: function() {
7725 fs.fchmodSync.apply(void 0, arguments);
7726 },
7727 chown: function() {
7728 fs.chownSync.apply(void 0, arguments);
7729 },
7730 fchown: function() {
7731 fs.fchownSync.apply(void 0, arguments);
7732 },
7733 truncate: function() {
7734 fs.truncateSync.apply(void 0, arguments);
7735 },
7736 ftruncate: function() {
7737 fs.ftruncateSync.apply(void 0, arguments);
7738 },
7739 utime: function() {
7740 fs.utimesSync.apply(void 0, arguments);
7741 },
7742 open: function(path, flags, mode, suggestFD) {
7743 if (typeof flags === "string") {
7744 flags = VFS.modeStringToFlags(flags);
7745 }
7746 var nfd = fs.openSync(path, NODEFS.flagsForNode(flags), mode);
7747 var fd = suggestFD != null ? suggestFD : FS.nextfd(nfd);
7748 var stream = {
7749 fd: fd,
7750 nfd: nfd,
7751 position: 0,
7752 path: path,
7753 flags: flags,
7754 seekable: true
7755 };
7756 FS.streams[fd] = stream;
7757 return stream;
7758 },
7759 close: function(stream) {
7760 if (!stream.stream_ops) {
7761 fs.closeSync(stream.nfd);
7762 }
7763 FS.closeStream(stream.fd);
7764 },
7765 llseek: function(stream, offset, whence) {
7766 if (stream.stream_ops) {
7767 return VFS.llseek(stream, offset, whence);
7768 }
7769 var position = offset;
7770 if (whence === 1) {
7771 position += stream.position;
7772 } else if (whence === 2) {
7773 position += fs.fstatSync(stream.nfd).size;
7774 } else if (whence !== 0) {
7775 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
7776 }
7777 if (position < 0) {
7778 throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
7779 }
7780 stream.position = position;
7781 return position;
7782 },
7783 read: function(stream, buffer, offset, length, position) {
7784 if (stream.stream_ops) {
7785 return VFS.read(stream, buffer, offset, length, position);
7786 }
7787 var seeking = typeof position !== "undefined";
7788 if (!seeking && stream.seekable) position = stream.position;
7789 var bytesRead = fs.readSync(
7790 stream.nfd,
7791 NODEFS.bufferFrom(buffer.buffer),
7792 offset,
7793 length,
7794 position
7795 );
7796 if (!seeking) stream.position += bytesRead;
7797 return bytesRead;
7798 },
7799 write: function(stream, buffer, offset, length, position) {
7800 if (stream.stream_ops) {
7801 return VFS.write(stream, buffer, offset, length, position);
7802 }
7803 if (stream.flags & +"1024") {
7804 FS.llseek(stream, 0, +"2");
7805 }
7806 var seeking = typeof position !== "undefined";
7807 if (!seeking && stream.seekable) position = stream.position;
7808 var bytesWritten = fs.writeSync(
7809 stream.nfd,
7810 NODEFS.bufferFrom(buffer.buffer),
7811 offset,
7812 length,
7813 position
7814 );
7815 if (!seeking) stream.position += bytesWritten;
7816 return bytesWritten;
7817 },
7818 allocate: function() {
7819 throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
7820 },
7821 mmap: function() {
7822 throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
7823 },
7824 msync: function() {
7825 return 0;
7826 },
7827 munmap: function() {
7828 return 0;
7829 },
7830 ioctl: function() {
7831 throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
7832 }
7833};
7834var FS = {
7835 root: null,
7836 mounts: [],
7837 devices: {},
7838 streams: [],
7839 nextInode: 1,
7840 nameTable: null,
7841 currentPath: "/",
7842 initialized: false,
7843 ignorePermissions: true,
7844 trackingDelegate: {},
7845 tracking: { openFlags: { READ: 1, WRITE: 2 } },
7846 ErrnoError: null,
7847 genericErrors: {},
7848 filesystems: null,
7849 syncFSRequests: 0,
7850 handleFSError: function(e) {
7851 if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace();
7852 return ___setErrNo(e.errno);
7853 },
7854 lookupPath: function(path, opts) {
7855 path = PATH_FS.resolve(FS.cwd(), path);
7856 opts = opts || {};
7857 if (!path) return { path: "", node: null };
7858 var defaults = { follow_mount: true, recurse_count: 0 };
7859 for (var key in defaults) {
7860 if (opts[key] === undefined) {
7861 opts[key] = defaults[key];
7862 }
7863 }
7864 if (opts.recurse_count > 8) {
7865 throw new FS.ErrnoError(32);
7866 }
7867 var parts = PATH.normalizeArray(
7868 path.split("/").filter(function(p) {
7869 return !!p;
7870 }),
7871 false
7872 );
7873 var current = FS.root;
7874 var current_path = "/";
7875 for (var i = 0; i < parts.length; i++) {
7876 var islast = i === parts.length - 1;
7877 if (islast && opts.parent) {
7878 break;
7879 }
7880 current = FS.lookupNode(current, parts[i]);
7881 current_path = PATH.join2(current_path, parts[i]);
7882 if (FS.isMountpoint(current)) {
7883 if (!islast || (islast && opts.follow_mount)) {
7884 current = current.mounted.root;
7885 }
7886 }
7887 if (!islast || opts.follow) {
7888 var count = 0;
7889 while (FS.isLink(current.mode)) {
7890 var link = FS.readlink(current_path);
7891 current_path = PATH_FS.resolve(PATH.dirname(current_path), link);
7892 var lookup = FS.lookupPath(current_path, {
7893 recurse_count: opts.recurse_count
7894 });
7895 current = lookup.node;
7896 if (count++ > 40) {
7897 throw new FS.ErrnoError(32);
7898 }
7899 }
7900 }
7901 }
7902 return { path: current_path, node: current };
7903 },
7904 getPath: function(node) {
7905 var path;
7906 while (true) {
7907 if (FS.isRoot(node)) {
7908 var mount = node.mount.mountpoint;
7909 if (!path) return mount;
7910 return mount[mount.length - 1] !== "/"
7911 ? mount + "/" + path
7912 : mount + path;
7913 }
7914 path = path ? node.name + "/" + path : node.name;
7915 node = node.parent;
7916 }
7917 },
7918 hashName: function(parentid, name) {
7919 var hash = 0;
7920 for (var i = 0; i < name.length; i++) {
7921 hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
7922 }
7923 return ((parentid + hash) >>> 0) % FS.nameTable.length;
7924 },
7925 hashAddNode: function(node) {
7926 var hash = FS.hashName(node.parent.id, node.name);
7927 node.name_next = FS.nameTable[hash];
7928 FS.nameTable[hash] = node;
7929 },
7930 hashRemoveNode: function(node) {
7931 var hash = FS.hashName(node.parent.id, node.name);
7932 if (FS.nameTable[hash] === node) {
7933 FS.nameTable[hash] = node.name_next;
7934 } else {
7935 var current = FS.nameTable[hash];
7936 while (current) {
7937 if (current.name_next === node) {
7938 current.name_next = node.name_next;
7939 break;
7940 }
7941 current = current.name_next;
7942 }
7943 }
7944 },
7945 lookupNode: function(parent, name) {
7946 var err = FS.mayLookup(parent);
7947 if (err) {
7948 throw new FS.ErrnoError(err, parent);
7949 }
7950 var hash = FS.hashName(parent.id, name);
7951 for (var node = FS.nameTable[hash]; node; node = node.name_next) {
7952 var nodeName = node.name;
7953 if (node.parent.id === parent.id && nodeName === name) {
7954 return node;
7955 }
7956 }
7957 return FS.lookup(parent, name);
7958 },
7959 createNode: function(parent, name, mode, rdev) {
7960 if (!FS.FSNode) {
7961 FS.FSNode = function(parent, name, mode, rdev) {
7962 if (!parent) {
7963 parent = this;
7964 }
7965 this.parent = parent;
7966 this.mount = parent.mount;
7967 this.mounted = null;
7968 this.id = FS.nextInode++;
7969 this.name = name;
7970 this.mode = mode;
7971 this.node_ops = {};
7972 this.stream_ops = {};
7973 this.rdev = rdev;
7974 };
7975 FS.FSNode.prototype = {};
7976 var readMode = 292 | 73;
7977 var writeMode = 146;
7978 Object.defineProperties(FS.FSNode.prototype, {
7979 read: {
7980 get: function() {
7981 return (this.mode & readMode) === readMode;
7982 },
7983 set: function(val) {
7984 val ? (this.mode |= readMode) : (this.mode &= ~readMode);
7985 }
7986 },
7987 write: {
7988 get: function() {
7989 return (this.mode & writeMode) === writeMode;
7990 },
7991 set: function(val) {
7992 val ? (this.mode |= writeMode) : (this.mode &= ~writeMode);
7993 }
7994 },
7995 isFolder: {
7996 get: function() {
7997 return FS.isDir(this.mode);
7998 }
7999 },
8000 isDevice: {
8001 get: function() {
8002 return FS.isChrdev(this.mode);
8003 }
8004 }
8005 });
8006 }
8007 var node = new FS.FSNode(parent, name, mode, rdev);
8008 FS.hashAddNode(node);
8009 return node;
8010 },
8011 destroyNode: function(node) {
8012 FS.hashRemoveNode(node);
8013 },
8014 isRoot: function(node) {
8015 return node === node.parent;
8016 },
8017 isMountpoint: function(node) {
8018 return !!node.mounted;
8019 },
8020 isFile: function(mode) {
8021 return (mode & 61440) === 32768;
8022 },
8023 isDir: function(mode) {
8024 return (mode & 61440) === 16384;
8025 },
8026 isLink: function(mode) {
8027 return (mode & 61440) === 40960;
8028 },
8029 isChrdev: function(mode) {
8030 return (mode & 61440) === 8192;
8031 },
8032 isBlkdev: function(mode) {
8033 return (mode & 61440) === 24576;
8034 },
8035 isFIFO: function(mode) {
8036 return (mode & 61440) === 4096;
8037 },
8038 isSocket: function(mode) {
8039 return (mode & 49152) === 49152;
8040 },
8041 flagModes: {
8042 r: 0,
8043 rs: 1052672,
8044 "r+": 2,
8045 w: 577,
8046 wx: 705,
8047 xw: 705,
8048 "w+": 578,
8049 "wx+": 706,
8050 "xw+": 706,
8051 a: 1089,
8052 ax: 1217,
8053 xa: 1217,
8054 "a+": 1090,
8055 "ax+": 1218,
8056 "xa+": 1218
8057 },
8058 modeStringToFlags: function(str) {
8059 var flags = FS.flagModes[str];
8060 if (typeof flags === "undefined") {
8061 throw new Error("Unknown file open mode: " + str);
8062 }
8063 return flags;
8064 },
8065 flagsToPermissionString: function(flag) {
8066 var perms = ["r", "w", "rw"][flag & 3];
8067 if (flag & 512) {
8068 perms += "w";
8069 }
8070 return perms;
8071 },
8072 nodePermissions: function(node, perms) {
8073 if (FS.ignorePermissions) {
8074 return 0;
8075 }
8076 if (perms.indexOf("r") !== -1 && !(node.mode & 292)) {
8077 return 2;
8078 } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) {
8079 return 2;
8080 } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) {
8081 return 2;
8082 }
8083 return 0;
8084 },
8085 mayLookup: function(dir) {
8086 var err = FS.nodePermissions(dir, "x");
8087 if (err) return err;
8088 if (!dir.node_ops.lookup) return 2;
8089 return 0;
8090 },
8091 mayCreate: function(dir, name) {
8092 try {
8093 var node = FS.lookupNode(dir, name);
8094 return 20;
8095 } catch (e) {}
8096 return FS.nodePermissions(dir, "wx");
8097 },
8098 mayDelete: function(dir, name, isdir) {
8099 var node;
8100 try {
8101 node = FS.lookupNode(dir, name);
8102 } catch (e) {
8103 return e.errno;
8104 }
8105 var err = FS.nodePermissions(dir, "wx");
8106 if (err) {
8107 return err;
8108 }
8109 if (isdir) {
8110 if (!FS.isDir(node.mode)) {
8111 return 54;
8112 }
8113 if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
8114 return 10;
8115 }
8116 } else {
8117 if (FS.isDir(node.mode)) {
8118 return 31;
8119 }
8120 }
8121 return 0;
8122 },
8123 mayOpen: function(node, flags) {
8124 if (!node) {
8125 return 44;
8126 }
8127 if (FS.isLink(node.mode)) {
8128 return 32;
8129 } else if (FS.isDir(node.mode)) {
8130 if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) {
8131 return 31;
8132 }
8133 }
8134 return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
8135 },
8136 MAX_OPEN_FDS: 4096,
8137 nextfd: function(fd_start, fd_end) {
8138 fd_start = fd_start || 0;
8139 fd_end = fd_end || FS.MAX_OPEN_FDS;
8140 for (var fd = fd_start; fd <= fd_end; fd++) {
8141 if (!FS.streams[fd]) {
8142 return fd;
8143 }
8144 }
8145 throw new FS.ErrnoError(33);
8146 },
8147 getStream: function(fd) {
8148 return FS.streams[fd];
8149 },
8150 createStream: function(stream, fd_start, fd_end) {
8151 if (!FS.FSStream) {
8152 FS.FSStream = function() {};
8153 FS.FSStream.prototype = {};
8154 Object.defineProperties(FS.FSStream.prototype, {
8155 object: {
8156 get: function() {
8157 return this.node;
8158 },
8159 set: function(val) {
8160 this.node = val;
8161 }
8162 },
8163 isRead: {
8164 get: function() {
8165 return (this.flags & 2097155) !== 1;
8166 }
8167 },
8168 isWrite: {
8169 get: function() {
8170 return (this.flags & 2097155) !== 0;
8171 }
8172 },
8173 isAppend: {
8174 get: function() {
8175 return this.flags & 1024;
8176 }
8177 }
8178 });
8179 }
8180 var newStream = new FS.FSStream();
8181 for (var p in stream) {
8182 newStream[p] = stream[p];
8183 }
8184 stream = newStream;
8185 var fd = FS.nextfd(fd_start, fd_end);
8186 stream.fd = fd;
8187 FS.streams[fd] = stream;
8188 return stream;
8189 },
8190 closeStream: function(fd) {
8191 FS.streams[fd] = null;
8192 },
8193 chrdev_stream_ops: {
8194 open: function(stream) {
8195 var device = FS.getDevice(stream.node.rdev);
8196 stream.stream_ops = device.stream_ops;
8197 if (stream.stream_ops.open) {
8198 stream.stream_ops.open(stream);
8199 }
8200 },
8201 llseek: function() {
8202 throw new FS.ErrnoError(70);
8203 }
8204 },
8205 major: function(dev) {
8206 return dev >> 8;
8207 },
8208 minor: function(dev) {
8209 return dev & 255;
8210 },
8211 makedev: function(ma, mi) {
8212 return (ma << 8) | mi;
8213 },
8214 registerDevice: function(dev, ops) {
8215 FS.devices[dev] = { stream_ops: ops };
8216 },
8217 getDevice: function(dev) {
8218 return FS.devices[dev];
8219 },
8220 getMounts: function(mount) {
8221 var mounts = [];
8222 var check = [mount];
8223 while (check.length) {
8224 var m = check.pop();
8225 mounts.push(m);
8226 check.push.apply(check, m.mounts);
8227 }
8228 return mounts;
8229 },
8230 syncfs: function(populate, callback) {
8231 if (typeof populate === "function") {
8232 callback = populate;
8233 populate = false;
8234 }
8235 FS.syncFSRequests++;
8236 if (FS.syncFSRequests > 1) {
8237 console.log(
8238 "warning: " +
8239 FS.syncFSRequests +
8240 " FS.syncfs operations in flight at once, probably just doing extra work"
8241 );
8242 }
8243 var mounts = FS.getMounts(FS.root.mount);
8244 var completed = 0;
8245 function doCallback(err) {
8246 FS.syncFSRequests--;
8247 return callback(err);
8248 }
8249 function done(err) {
8250 if (err) {
8251 if (!done.errored) {
8252 done.errored = true;
8253 return doCallback(err);
8254 }
8255 return;
8256 }
8257 if (++completed >= mounts.length) {
8258 doCallback(null);
8259 }
8260 }
8261 mounts.forEach(function(mount) {
8262 if (!mount.type.syncfs) {
8263 return done(null);
8264 }
8265 mount.type.syncfs(mount, populate, done);
8266 });
8267 },
8268 mount: function(type, opts, mountpoint) {
8269 var root = mountpoint === "/";
8270 var pseudo = !mountpoint;
8271 var node;
8272 if (root && FS.root) {
8273 throw new FS.ErrnoError(10);
8274 } else if (!root && !pseudo) {
8275 var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
8276 mountpoint = lookup.path;
8277 node = lookup.node;
8278 if (FS.isMountpoint(node)) {
8279 throw new FS.ErrnoError(10);
8280 }
8281 if (!FS.isDir(node.mode)) {
8282 throw new FS.ErrnoError(54);
8283 }
8284 }
8285 var mount = { type: type, opts: opts, mountpoint: mountpoint, mounts: [] };
8286 var mountRoot = type.mount(mount);
8287 mountRoot.mount = mount;
8288 mount.root = mountRoot;
8289 if (root) {
8290 FS.root = mountRoot;
8291 } else if (node) {
8292 node.mounted = mount;
8293 if (node.mount) {
8294 node.mount.mounts.push(mount);
8295 }
8296 }
8297 return mountRoot;
8298 },
8299 unmount: function(mountpoint) {
8300 var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
8301 if (!FS.isMountpoint(lookup.node)) {
8302 throw new FS.ErrnoError(28);
8303 }
8304 var node = lookup.node;
8305 var mount = node.mounted;
8306 var mounts = FS.getMounts(mount);
8307 Object.keys(FS.nameTable).forEach(function(hash) {
8308 var current = FS.nameTable[hash];
8309 while (current) {
8310 var next = current.name_next;
8311 if (mounts.indexOf(current.mount) !== -1) {
8312 FS.destroyNode(current);
8313 }
8314 current = next;
8315 }
8316 });
8317 node.mounted = null;
8318 var idx = node.mount.mounts.indexOf(mount);
8319 node.mount.mounts.splice(idx, 1);
8320 },
8321 lookup: function(parent, name) {
8322 return parent.node_ops.lookup(parent, name);
8323 },
8324 mknod: function(path, mode, dev) {
8325 var lookup = FS.lookupPath(path, { parent: true });
8326 var parent = lookup.node;
8327 var name = PATH.basename(path);
8328 if (!name || name === "." || name === "..") {
8329 throw new FS.ErrnoError(28);
8330 }
8331 var err = FS.mayCreate(parent, name);
8332 if (err) {
8333 throw new FS.ErrnoError(err);
8334 }
8335 if (!parent.node_ops.mknod) {
8336 throw new FS.ErrnoError(63);
8337 }
8338 return parent.node_ops.mknod(parent, name, mode, dev);
8339 },
8340 create: function(path, mode) {
8341 mode = mode !== undefined ? mode : 438;
8342 mode &= 4095;
8343 mode |= 32768;
8344 return FS.mknod(path, mode, 0);
8345 },
8346 mkdir: function(path, mode) {
8347 mode = mode !== undefined ? mode : 511;
8348 mode &= 511 | 512;
8349 mode |= 16384;
8350 return FS.mknod(path, mode, 0);
8351 },
8352 mkdirTree: function(path, mode) {
8353 var dirs = path.split("/");
8354 var d = "";
8355 for (var i = 0; i < dirs.length; ++i) {
8356 if (!dirs[i]) continue;
8357 d += "/" + dirs[i];
8358 try {
8359 FS.mkdir(d, mode);
8360 } catch (e) {
8361 if (e.errno != 20) throw e;
8362 }
8363 }
8364 },
8365 mkdev: function(path, mode, dev) {
8366 if (typeof dev === "undefined") {
8367 dev = mode;
8368 mode = 438;
8369 }
8370 mode |= 8192;
8371 return FS.mknod(path, mode, dev);
8372 },
8373 symlink: function(oldpath, newpath) {
8374 if (!PATH_FS.resolve(oldpath)) {
8375 throw new FS.ErrnoError(44);
8376 }
8377 var lookup = FS.lookupPath(newpath, { parent: true });
8378 var parent = lookup.node;
8379 if (!parent) {
8380 throw new FS.ErrnoError(44);
8381 }
8382 var newname = PATH.basename(newpath);
8383 var err = FS.mayCreate(parent, newname);
8384 if (err) {
8385 throw new FS.ErrnoError(err);
8386 }
8387 if (!parent.node_ops.symlink) {
8388 throw new FS.ErrnoError(63);
8389 }
8390 return parent.node_ops.symlink(parent, newname, oldpath);
8391 },
8392 rename: function(old_path, new_path) {
8393 var old_dirname = PATH.dirname(old_path);
8394 var new_dirname = PATH.dirname(new_path);
8395 var old_name = PATH.basename(old_path);
8396 var new_name = PATH.basename(new_path);
8397 var lookup, old_dir, new_dir;
8398 try {
8399 lookup = FS.lookupPath(old_path, { parent: true });
8400 old_dir = lookup.node;
8401 lookup = FS.lookupPath(new_path, { parent: true });
8402 new_dir = lookup.node;
8403 } catch (e) {
8404 throw new FS.ErrnoError(10);
8405 }
8406 if (!old_dir || !new_dir) throw new FS.ErrnoError(44);
8407 if (old_dir.mount !== new_dir.mount) {
8408 throw new FS.ErrnoError(75);
8409 }
8410 var old_node = FS.lookupNode(old_dir, old_name);
8411 var relative = PATH_FS.relative(old_path, new_dirname);
8412 if (relative.charAt(0) !== ".") {
8413 throw new FS.ErrnoError(28);
8414 }
8415 relative = PATH_FS.relative(new_path, old_dirname);
8416 if (relative.charAt(0) !== ".") {
8417 throw new FS.ErrnoError(55);
8418 }
8419 var new_node;
8420 try {
8421 new_node = FS.lookupNode(new_dir, new_name);
8422 } catch (e) {}
8423 if (old_node === new_node) {
8424 return;
8425 }
8426 var isdir = FS.isDir(old_node.mode);
8427 var err = FS.mayDelete(old_dir, old_name, isdir);
8428 if (err) {
8429 throw new FS.ErrnoError(err);
8430 }
8431 err = new_node
8432 ? FS.mayDelete(new_dir, new_name, isdir)
8433 : FS.mayCreate(new_dir, new_name);
8434 if (err) {
8435 throw new FS.ErrnoError(err);
8436 }
8437 if (!old_dir.node_ops.rename) {
8438 throw new FS.ErrnoError(63);
8439 }
8440 if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
8441 throw new FS.ErrnoError(10);
8442 }
8443 if (new_dir !== old_dir) {
8444 err = FS.nodePermissions(old_dir, "w");
8445 if (err) {
8446 throw new FS.ErrnoError(err);
8447 }
8448 }
8449 try {
8450 if (FS.trackingDelegate["willMovePath"]) {
8451 FS.trackingDelegate["willMovePath"](old_path, new_path);
8452 }
8453 } catch (e) {
8454 console.log(
8455 "FS.trackingDelegate['willMovePath']('" +
8456 old_path +
8457 "', '" +
8458 new_path +
8459 "') threw an exception: " +
8460 e.message
8461 );
8462 }
8463 FS.hashRemoveNode(old_node);
8464 try {
8465 old_dir.node_ops.rename(old_node, new_dir, new_name);
8466 } catch (e) {
8467 throw e;
8468 } finally {
8469 FS.hashAddNode(old_node);
8470 }
8471 try {
8472 if (FS.trackingDelegate["onMovePath"])
8473 FS.trackingDelegate["onMovePath"](old_path, new_path);
8474 } catch (e) {
8475 console.log(
8476 "FS.trackingDelegate['onMovePath']('" +
8477 old_path +
8478 "', '" +
8479 new_path +
8480 "') threw an exception: " +
8481 e.message
8482 );
8483 }
8484 },
8485 rmdir: function(path) {
8486 var lookup = FS.lookupPath(path, { parent: true });
8487 var parent = lookup.node;
8488 var name = PATH.basename(path);
8489 var node = FS.lookupNode(parent, name);
8490 var err = FS.mayDelete(parent, name, true);
8491 if (err) {
8492 throw new FS.ErrnoError(err);
8493 }
8494 if (!parent.node_ops.rmdir) {
8495 throw new FS.ErrnoError(63);
8496 }
8497 if (FS.isMountpoint(node)) {
8498 throw new FS.ErrnoError(10);
8499 }
8500 try {
8501 if (FS.trackingDelegate["willDeletePath"]) {
8502 FS.trackingDelegate["willDeletePath"](path);
8503 }
8504 } catch (e) {
8505 console.log(
8506 "FS.trackingDelegate['willDeletePath']('" +
8507 path +
8508 "') threw an exception: " +
8509 e.message
8510 );
8511 }
8512 parent.node_ops.rmdir(parent, name);
8513 FS.destroyNode(node);
8514 try {
8515 if (FS.trackingDelegate["onDeletePath"])
8516 FS.trackingDelegate["onDeletePath"](path);
8517 } catch (e) {
8518 console.log(
8519 "FS.trackingDelegate['onDeletePath']('" +
8520 path +
8521 "') threw an exception: " +
8522 e.message
8523 );
8524 }
8525 },
8526 readdir: function(path) {
8527 var lookup = FS.lookupPath(path, { follow: true });
8528 var node = lookup.node;
8529 if (!node.node_ops.readdir) {
8530 throw new FS.ErrnoError(54);
8531 }
8532 return node.node_ops.readdir(node);
8533 },
8534 unlink: function(path) {
8535 var lookup = FS.lookupPath(path, { parent: true });
8536 var parent = lookup.node;
8537 var name = PATH.basename(path);
8538 var node = FS.lookupNode(parent, name);
8539 var err = FS.mayDelete(parent, name, false);
8540 if (err) {
8541 throw new FS.ErrnoError(err);
8542 }
8543 if (!parent.node_ops.unlink) {
8544 throw new FS.ErrnoError(63);
8545 }
8546 if (FS.isMountpoint(node)) {
8547 throw new FS.ErrnoError(10);
8548 }
8549 try {
8550 if (FS.trackingDelegate["willDeletePath"]) {
8551 FS.trackingDelegate["willDeletePath"](path);
8552 }
8553 } catch (e) {
8554 console.log(
8555 "FS.trackingDelegate['willDeletePath']('" +
8556 path +
8557 "') threw an exception: " +
8558 e.message
8559 );
8560 }
8561 parent.node_ops.unlink(parent, name);
8562 FS.destroyNode(node);
8563 try {
8564 if (FS.trackingDelegate["onDeletePath"])
8565 FS.trackingDelegate["onDeletePath"](path);
8566 } catch (e) {
8567 console.log(
8568 "FS.trackingDelegate['onDeletePath']('" +
8569 path +
8570 "') threw an exception: " +
8571 e.message
8572 );
8573 }
8574 },
8575 readlink: function(path) {
8576 var lookup = FS.lookupPath(path);
8577 var link = lookup.node;
8578 if (!link) {
8579 throw new FS.ErrnoError(44);
8580 }
8581 if (!link.node_ops.readlink) {
8582 throw new FS.ErrnoError(28);
8583 }
8584 return PATH_FS.resolve(
8585 FS.getPath(link.parent),
8586 link.node_ops.readlink(link)
8587 );
8588 },
8589 stat: function(path, dontFollow) {
8590 var lookup = FS.lookupPath(path, { follow: !dontFollow });
8591 var node = lookup.node;
8592 if (!node) {
8593 throw new FS.ErrnoError(44);
8594 }
8595 if (!node.node_ops.getattr) {
8596 throw new FS.ErrnoError(63);
8597 }
8598 return node.node_ops.getattr(node);
8599 },
8600 lstat: function(path) {
8601 return FS.stat(path, true);
8602 },
8603 chmod: function(path, mode, dontFollow) {
8604 var node;
8605 if (typeof path === "string") {
8606 var lookup = FS.lookupPath(path, { follow: !dontFollow });
8607 node = lookup.node;
8608 } else {
8609 node = path;
8610 }
8611 if (!node.node_ops.setattr) {
8612 throw new FS.ErrnoError(63);
8613 }
8614 node.node_ops.setattr(node, {
8615 mode: (mode & 4095) | (node.mode & ~4095),
8616 timestamp: Date.now()
8617 });
8618 },
8619 lchmod: function(path, mode) {
8620 FS.chmod(path, mode, true);
8621 },
8622 fchmod: function(fd, mode) {
8623 var stream = FS.getStream(fd);
8624 if (!stream) {
8625 throw new FS.ErrnoError(8);
8626 }
8627 FS.chmod(stream.node, mode);
8628 },
8629 chown: function(path, uid, gid, dontFollow) {
8630 var node;
8631 if (typeof path === "string") {
8632 var lookup = FS.lookupPath(path, { follow: !dontFollow });
8633 node = lookup.node;
8634 } else {
8635 node = path;
8636 }
8637 if (!node.node_ops.setattr) {
8638 throw new FS.ErrnoError(63);
8639 }
8640 node.node_ops.setattr(node, { timestamp: Date.now() });
8641 },
8642 lchown: function(path, uid, gid) {
8643 FS.chown(path, uid, gid, true);
8644 },
8645 fchown: function(fd, uid, gid) {
8646 var stream = FS.getStream(fd);
8647 if (!stream) {
8648 throw new FS.ErrnoError(8);
8649 }
8650 FS.chown(stream.node, uid, gid);
8651 },
8652 truncate: function(path, len) {
8653 if (len < 0) {
8654 throw new FS.ErrnoError(28);
8655 }
8656 var node;
8657 if (typeof path === "string") {
8658 var lookup = FS.lookupPath(path, { follow: true });
8659 node = lookup.node;
8660 } else {
8661 node = path;
8662 }
8663 if (!node.node_ops.setattr) {
8664 throw new FS.ErrnoError(63);
8665 }
8666 if (FS.isDir(node.mode)) {
8667 throw new FS.ErrnoError(31);
8668 }
8669 if (!FS.isFile(node.mode)) {
8670 throw new FS.ErrnoError(28);
8671 }
8672 var err = FS.nodePermissions(node, "w");
8673 if (err) {
8674 throw new FS.ErrnoError(err);
8675 }
8676 node.node_ops.setattr(node, { size: len, timestamp: Date.now() });
8677 },
8678 ftruncate: function(fd, len) {
8679 var stream = FS.getStream(fd);
8680 if (!stream) {
8681 throw new FS.ErrnoError(8);
8682 }
8683 if ((stream.flags & 2097155) === 0) {
8684 throw new FS.ErrnoError(28);
8685 }
8686 FS.truncate(stream.node, len);
8687 },
8688 utime: function(path, atime, mtime) {
8689 var lookup = FS.lookupPath(path, { follow: true });
8690 var node = lookup.node;
8691 node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) });
8692 },
8693 open: function(path, flags, mode, fd_start, fd_end) {
8694 if (path === "") {
8695 throw new FS.ErrnoError(44);
8696 }
8697 flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags;
8698 mode = typeof mode === "undefined" ? 438 : mode;
8699 if (flags & 64) {
8700 mode = (mode & 4095) | 32768;
8701 } else {
8702 mode = 0;
8703 }
8704 var node;
8705 if (typeof path === "object") {
8706 node = path;
8707 } else {
8708 path = PATH.normalize(path);
8709 try {
8710 var lookup = FS.lookupPath(path, { follow: !(flags & 131072) });
8711 node = lookup.node;
8712 } catch (e) {}
8713 }
8714 var created = false;
8715 if (flags & 64) {
8716 if (node) {
8717 if (flags & 128) {
8718 throw new FS.ErrnoError(20);
8719 }
8720 } else {
8721 node = FS.mknod(path, mode, 0);
8722 created = true;
8723 }
8724 }
8725 if (!node) {
8726 throw new FS.ErrnoError(44);
8727 }
8728 if (FS.isChrdev(node.mode)) {
8729 flags &= ~512;
8730 }
8731 if (flags & 65536 && !FS.isDir(node.mode)) {
8732 throw new FS.ErrnoError(54);
8733 }
8734 if (!created) {
8735 var err = FS.mayOpen(node, flags);
8736 if (err) {
8737 throw new FS.ErrnoError(err);
8738 }
8739 }
8740 if (flags & 512) {
8741 FS.truncate(node, 0);
8742 }
8743 flags &= ~(128 | 512);
8744 var stream = FS.createStream(
8745 {
8746 node: node,
8747 path: FS.getPath(node),
8748 flags: flags,
8749 seekable: true,
8750 position: 0,
8751 stream_ops: node.stream_ops,
8752 ungotten: [],
8753 error: false
8754 },
8755 fd_start,
8756 fd_end
8757 );
8758 if (stream.stream_ops.open) {
8759 stream.stream_ops.open(stream);
8760 }
8761 if (Module["logReadFiles"] && !(flags & 1)) {
8762 if (!FS.readFiles) FS.readFiles = {};
8763 if (!(path in FS.readFiles)) {
8764 FS.readFiles[path] = 1;
8765 console.log("FS.trackingDelegate error on read file: " + path);
8766 }
8767 }
8768 try {
8769 if (FS.trackingDelegate["onOpenFile"]) {
8770 var trackingFlags = 0;
8771 if ((flags & 2097155) !== 1) {
8772 trackingFlags |= FS.tracking.openFlags.READ;
8773 }
8774 if ((flags & 2097155) !== 0) {
8775 trackingFlags |= FS.tracking.openFlags.WRITE;
8776 }
8777 FS.trackingDelegate["onOpenFile"](path, trackingFlags);
8778 }
8779 } catch (e) {
8780 console.log(
8781 "FS.trackingDelegate['onOpenFile']('" +
8782 path +
8783 "', flags) threw an exception: " +
8784 e.message
8785 );
8786 }
8787 return stream;
8788 },
8789 close: function(stream) {
8790 if (FS.isClosed(stream)) {
8791 throw new FS.ErrnoError(8);
8792 }
8793 if (stream.getdents) stream.getdents = null;
8794 try {
8795 if (stream.stream_ops.close) {
8796 stream.stream_ops.close(stream);
8797 }
8798 } catch (e) {
8799 throw e;
8800 } finally {
8801 FS.closeStream(stream.fd);
8802 }
8803 stream.fd = null;
8804 },
8805 isClosed: function(stream) {
8806 return stream.fd === null;
8807 },
8808 llseek: function(stream, offset, whence) {
8809 if (FS.isClosed(stream)) {
8810 throw new FS.ErrnoError(8);
8811 }
8812 if (!stream.seekable || !stream.stream_ops.llseek) {
8813 throw new FS.ErrnoError(70);
8814 }
8815 if (whence != 0 && whence != 1 && whence != 2) {
8816 throw new FS.ErrnoError(28);
8817 }
8818 stream.position = stream.stream_ops.llseek(stream, offset, whence);
8819 stream.ungotten = [];
8820 return stream.position;
8821 },
8822 read: function(stream, buffer, offset, length, position) {
8823 if (length < 0 || position < 0) {
8824 throw new FS.ErrnoError(28);
8825 }
8826 if (FS.isClosed(stream)) {
8827 throw new FS.ErrnoError(8);
8828 }
8829 if ((stream.flags & 2097155) === 1) {
8830 throw new FS.ErrnoError(8);
8831 }
8832 if (FS.isDir(stream.node.mode)) {
8833 throw new FS.ErrnoError(31);
8834 }
8835 if (!stream.stream_ops.read) {
8836 throw new FS.ErrnoError(28);
8837 }
8838 var seeking = typeof position !== "undefined";
8839 if (!seeking) {
8840 position = stream.position;
8841 } else if (!stream.seekable) {
8842 throw new FS.ErrnoError(70);
8843 }
8844 var bytesRead = stream.stream_ops.read(
8845 stream,
8846 buffer,
8847 offset,
8848 length,
8849 position
8850 );
8851 if (!seeking) stream.position += bytesRead;
8852 return bytesRead;
8853 },
8854 write: function(stream, buffer, offset, length, position, canOwn) {
8855 if (length < 0 || position < 0) {
8856 throw new FS.ErrnoError(28);
8857 }
8858 if (FS.isClosed(stream)) {
8859 throw new FS.ErrnoError(8);
8860 }
8861 if ((stream.flags & 2097155) === 0) {
8862 throw new FS.ErrnoError(8);
8863 }
8864 if (FS.isDir(stream.node.mode)) {
8865 throw new FS.ErrnoError(31);
8866 }
8867 if (!stream.stream_ops.write) {
8868 throw new FS.ErrnoError(28);
8869 }
8870 if (stream.flags & 1024) {
8871 FS.llseek(stream, 0, 2);
8872 }
8873 var seeking = typeof position !== "undefined";
8874 if (!seeking) {
8875 position = stream.position;
8876 } else if (!stream.seekable) {
8877 throw new FS.ErrnoError(70);
8878 }
8879 var bytesWritten = stream.stream_ops.write(
8880 stream,
8881 buffer,
8882 offset,
8883 length,
8884 position,
8885 canOwn
8886 );
8887 if (!seeking) stream.position += bytesWritten;
8888 try {
8889 if (stream.path && FS.trackingDelegate["onWriteToFile"])
8890 FS.trackingDelegate["onWriteToFile"](stream.path);
8891 } catch (e) {
8892 console.log(
8893 "FS.trackingDelegate['onWriteToFile']('" +
8894 stream.path +
8895 "') threw an exception: " +
8896 e.message
8897 );
8898 }
8899 return bytesWritten;
8900 },
8901 allocate: function(stream, offset, length) {
8902 if (FS.isClosed(stream)) {
8903 throw new FS.ErrnoError(8);
8904 }
8905 if (offset < 0 || length <= 0) {
8906 throw new FS.ErrnoError(28);
8907 }
8908 if ((stream.flags & 2097155) === 0) {
8909 throw new FS.ErrnoError(8);
8910 }
8911 if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {
8912 throw new FS.ErrnoError(43);
8913 }
8914 if (!stream.stream_ops.allocate) {
8915 throw new FS.ErrnoError(138);
8916 }
8917 stream.stream_ops.allocate(stream, offset, length);
8918 },
8919 mmap: function(stream, buffer, offset, length, position, prot, flags) {
8920 if (
8921 (prot & 2) !== 0 &&
8922 (flags & 2) === 0 &&
8923 (stream.flags & 2097155) !== 2
8924 ) {
8925 throw new FS.ErrnoError(2);
8926 }
8927 if ((stream.flags & 2097155) === 1) {
8928 throw new FS.ErrnoError(2);
8929 }
8930 if (!stream.stream_ops.mmap) {
8931 throw new FS.ErrnoError(43);
8932 }
8933 return stream.stream_ops.mmap(
8934 stream,
8935 buffer,
8936 offset,
8937 length,
8938 position,
8939 prot,
8940 flags
8941 );
8942 },
8943 msync: function(stream, buffer, offset, length, mmapFlags) {
8944 if (!stream || !stream.stream_ops.msync) {
8945 return 0;
8946 }
8947 return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);
8948 },
8949 munmap: function(stream) {
8950 return 0;
8951 },
8952 ioctl: function(stream, cmd, arg) {
8953 if (!stream.stream_ops.ioctl) {
8954 throw new FS.ErrnoError(59);
8955 }
8956 return stream.stream_ops.ioctl(stream, cmd, arg);
8957 },
8958 readFile: function(path, opts) {
8959 opts = opts || {};
8960 opts.flags = opts.flags || "r";
8961 opts.encoding = opts.encoding || "binary";
8962 if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
8963 throw new Error('Invalid encoding type "' + opts.encoding + '"');
8964 }
8965 var ret;
8966 var stream = FS.open(path, opts.flags);
8967 var stat = FS.stat(path);
8968 var length = stat.size;
8969 var buf = new Uint8Array(length);
8970 FS.read(stream, buf, 0, length, 0);
8971 if (opts.encoding === "utf8") {
8972 ret = UTF8ArrayToString(buf, 0);
8973 } else if (opts.encoding === "binary") {
8974 ret = buf;
8975 }
8976 FS.close(stream);
8977 return ret;
8978 },
8979 writeFile: function(path, data, opts) {
8980 opts = opts || {};
8981 opts.flags = opts.flags || "w";
8982 var stream = FS.open(path, opts.flags, opts.mode);
8983 if (typeof data === "string") {
8984 var buf = new Uint8Array(lengthBytesUTF8(data) + 1);
8985 var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
8986 FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);
8987 } else if (ArrayBuffer.isView(data)) {
8988 FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);
8989 } else {
8990 throw new Error("Unsupported data type");
8991 }
8992 FS.close(stream);
8993 },
8994 cwd: function() {
8995 return FS.currentPath;
8996 },
8997 chdir: function(path) {
8998 var lookup = FS.lookupPath(path, { follow: true });
8999 if (lookup.node === null) {
9000 throw new FS.ErrnoError(44);
9001 }
9002 if (!FS.isDir(lookup.node.mode)) {
9003 throw new FS.ErrnoError(54);
9004 }
9005 var err = FS.nodePermissions(lookup.node, "x");
9006 if (err) {
9007 throw new FS.ErrnoError(err);
9008 }
9009 FS.currentPath = lookup.path;
9010 },
9011 createDefaultDirectories: function() {
9012 FS.mkdir("/tmp");
9013 FS.mkdir("/home");
9014 FS.mkdir("/home/web_user");
9015 },
9016 createDefaultDevices: function() {
9017 FS.mkdir("/dev");
9018 FS.registerDevice(FS.makedev(1, 3), {
9019 read: function() {
9020 return 0;
9021 },
9022 write: function(stream, buffer, offset, length, pos) {
9023 return length;
9024 }
9025 });
9026 FS.mkdev("/dev/null", FS.makedev(1, 3));
9027 TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
9028 TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
9029 FS.mkdev("/dev/tty", FS.makedev(5, 0));
9030 FS.mkdev("/dev/tty1", FS.makedev(6, 0));
9031 var random_device;
9032 if (
9033 typeof crypto === "object" &&
9034 typeof crypto["getRandomValues"] === "function"
9035 ) {
9036 var randomBuffer = new Uint8Array(1);
9037 random_device = function() {
9038 crypto.getRandomValues(randomBuffer);
9039 return randomBuffer[0];
9040 };
9041 } else if (ENVIRONMENT_IS_NODE) {
9042 try {
9043 var crypto_module = __webpack_require__(27);
9044 random_device = function() {
9045 return crypto_module["randomBytes"](1)[0];
9046 };
9047 } catch (e) {}
9048 } else {
9049 }
9050 if (!random_device) {
9051 random_device = function() {
9052 abort("random_device");
9053 };
9054 }
9055 FS.createDevice("/dev", "random", random_device);
9056 FS.createDevice("/dev", "urandom", random_device);
9057 FS.mkdir("/dev/shm");
9058 FS.mkdir("/dev/shm/tmp");
9059 },
9060 createSpecialDirectories: function() {
9061 FS.mkdir("/proc");
9062 FS.mkdir("/proc/self");
9063 FS.mkdir("/proc/self/fd");
9064 FS.mount(
9065 {
9066 mount: function() {
9067 var node = FS.createNode("/proc/self", "fd", 16384 | 511, 73);
9068 node.node_ops = {
9069 lookup: function(parent, name) {
9070 var fd = +name;
9071 var stream = FS.getStream(fd);
9072 if (!stream) throw new FS.ErrnoError(8);
9073 var ret = {
9074 parent: null,
9075 mount: { mountpoint: "fake" },
9076 node_ops: {
9077 readlink: function() {
9078 return stream.path;
9079 }
9080 }
9081 };
9082 ret.parent = ret;
9083 return ret;
9084 }
9085 };
9086 return node;
9087 }
9088 },
9089 {},
9090 "/proc/self/fd"
9091 );
9092 },
9093 createStandardStreams: function() {
9094 if (Module["stdin"]) {
9095 FS.createDevice("/dev", "stdin", Module["stdin"]);
9096 } else {
9097 FS.symlink("/dev/tty", "/dev/stdin");
9098 }
9099 if (Module["stdout"]) {
9100 FS.createDevice("/dev", "stdout", null, Module["stdout"]);
9101 } else {
9102 FS.symlink("/dev/tty", "/dev/stdout");
9103 }
9104 if (Module["stderr"]) {
9105 FS.createDevice("/dev", "stderr", null, Module["stderr"]);
9106 } else {
9107 FS.symlink("/dev/tty1", "/dev/stderr");
9108 }
9109 var stdin = FS.open("/dev/stdin", "r");
9110 var stdout = FS.open("/dev/stdout", "w");
9111 var stderr = FS.open("/dev/stderr", "w");
9112 },
9113 ensureErrnoError: function() {
9114 if (FS.ErrnoError) return;
9115 FS.ErrnoError = function ErrnoError(errno, node) {
9116 this.node = node;
9117 this.setErrno = function(errno) {
9118 this.errno = errno;
9119 };
9120 this.setErrno(errno);
9121 this.message = "FS error";
9122 };
9123 FS.ErrnoError.prototype = new Error();
9124 FS.ErrnoError.prototype.constructor = FS.ErrnoError;
9125 [44].forEach(function(code) {
9126 FS.genericErrors[code] = new FS.ErrnoError(code);
9127 FS.genericErrors[code].stack = "<generic error, no stack>";
9128 });
9129 },
9130 staticInit: function() {
9131 FS.ensureErrnoError();
9132 FS.nameTable = new Array(4096);
9133 FS.mount(MEMFS, {}, "/");
9134 FS.createDefaultDirectories();
9135 FS.createDefaultDevices();
9136 FS.createSpecialDirectories();
9137 FS.filesystems = { MEMFS: MEMFS, NODEFS: NODEFS };
9138 },
9139 init: function(input, output, error) {
9140 FS.init.initialized = true;
9141 FS.ensureErrnoError();
9142 Module["stdin"] = input || Module["stdin"];
9143 Module["stdout"] = output || Module["stdout"];
9144 Module["stderr"] = error || Module["stderr"];
9145 FS.createStandardStreams();
9146 },
9147 quit: function() {
9148 FS.init.initialized = false;
9149 var fflush = Module["_fflush"];
9150 if (fflush) fflush(0);
9151 for (var i = 0; i < FS.streams.length; i++) {
9152 var stream = FS.streams[i];
9153 if (!stream) {
9154 continue;
9155 }
9156 FS.close(stream);
9157 }
9158 },
9159 getMode: function(canRead, canWrite) {
9160 var mode = 0;
9161 if (canRead) mode |= 292 | 73;
9162 if (canWrite) mode |= 146;
9163 return mode;
9164 },
9165 joinPath: function(parts, forceRelative) {
9166 var path = PATH.join.apply(null, parts);
9167 if (forceRelative && path[0] == "/") path = path.substr(1);
9168 return path;
9169 },
9170 absolutePath: function(relative, base) {
9171 return PATH_FS.resolve(base, relative);
9172 },
9173 standardizePath: function(path) {
9174 return PATH.normalize(path);
9175 },
9176 findObject: function(path, dontResolveLastLink) {
9177 var ret = FS.analyzePath(path, dontResolveLastLink);
9178 if (ret.exists) {
9179 return ret.object;
9180 } else {
9181 ___setErrNo(ret.error);
9182 return null;
9183 }
9184 },
9185 analyzePath: function(path, dontResolveLastLink) {
9186 try {
9187 var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
9188 path = lookup.path;
9189 } catch (e) {}
9190 var ret = {
9191 isRoot: false,
9192 exists: false,
9193 error: 0,
9194 name: null,
9195 path: null,
9196 object: null,
9197 parentExists: false,
9198 parentPath: null,
9199 parentObject: null
9200 };
9201 try {
9202 var lookup = FS.lookupPath(path, { parent: true });
9203 ret.parentExists = true;
9204 ret.parentPath = lookup.path;
9205 ret.parentObject = lookup.node;
9206 ret.name = PATH.basename(path);
9207 lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
9208 ret.exists = true;
9209 ret.path = lookup.path;
9210 ret.object = lookup.node;
9211 ret.name = lookup.node.name;
9212 ret.isRoot = lookup.path === "/";
9213 } catch (e) {
9214 ret.error = e.errno;
9215 }
9216 return ret;
9217 },
9218 createFolder: function(parent, name, canRead, canWrite) {
9219 var path = PATH.join2(
9220 typeof parent === "string" ? parent : FS.getPath(parent),
9221 name
9222 );
9223 var mode = FS.getMode(canRead, canWrite);
9224 return FS.mkdir(path, mode);
9225 },
9226 createPath: function(parent, path, canRead, canWrite) {
9227 parent = typeof parent === "string" ? parent : FS.getPath(parent);
9228 var parts = path.split("/").reverse();
9229 while (parts.length) {
9230 var part = parts.pop();
9231 if (!part) continue;
9232 var current = PATH.join2(parent, part);
9233 try {
9234 FS.mkdir(current);
9235 } catch (e) {}
9236 parent = current;
9237 }
9238 return current;
9239 },
9240 createFile: function(parent, name, properties, canRead, canWrite) {
9241 var path = PATH.join2(
9242 typeof parent === "string" ? parent : FS.getPath(parent),
9243 name
9244 );
9245 var mode = FS.getMode(canRead, canWrite);
9246 return FS.create(path, mode);
9247 },
9248 createDataFile: function(parent, name, data, canRead, canWrite, canOwn) {
9249 var path = name
9250 ? PATH.join2(
9251 typeof parent === "string" ? parent : FS.getPath(parent),
9252 name
9253 )
9254 : parent;
9255 var mode = FS.getMode(canRead, canWrite);
9256 var node = FS.create(path, mode);
9257 if (data) {
9258 if (typeof data === "string") {
9259 var arr = new Array(data.length);
9260 for (var i = 0, len = data.length; i < len; ++i)
9261 arr[i] = data.charCodeAt(i);
9262 data = arr;
9263 }
9264 FS.chmod(node, mode | 146);
9265 var stream = FS.open(node, "w");
9266 FS.write(stream, data, 0, data.length, 0, canOwn);
9267 FS.close(stream);
9268 FS.chmod(node, mode);
9269 }
9270 return node;
9271 },
9272 createDevice: function(parent, name, input, output) {
9273 var path = PATH.join2(
9274 typeof parent === "string" ? parent : FS.getPath(parent),
9275 name
9276 );
9277 var mode = FS.getMode(!!input, !!output);
9278 if (!FS.createDevice.major) FS.createDevice.major = 64;
9279 var dev = FS.makedev(FS.createDevice.major++, 0);
9280 FS.registerDevice(dev, {
9281 open: function(stream) {
9282 stream.seekable = false;
9283 },
9284 close: function(stream) {
9285 if (output && output.buffer && output.buffer.length) {
9286 output(10);
9287 }
9288 },
9289 read: function(stream, buffer, offset, length, pos) {
9290 var bytesRead = 0;
9291 for (var i = 0; i < length; i++) {
9292 var result;
9293 try {
9294 result = input();
9295 } catch (e) {
9296 throw new FS.ErrnoError(29);
9297 }
9298 if (result === undefined && bytesRead === 0) {
9299 throw new FS.ErrnoError(6);
9300 }
9301 if (result === null || result === undefined) break;
9302 bytesRead++;
9303 buffer[offset + i] = result;
9304 }
9305 if (bytesRead) {
9306 stream.node.timestamp = Date.now();
9307 }
9308 return bytesRead;
9309 },
9310 write: function(stream, buffer, offset, length, pos) {
9311 for (var i = 0; i < length; i++) {
9312 try {
9313 output(buffer[offset + i]);
9314 } catch (e) {
9315 throw new FS.ErrnoError(29);
9316 }
9317 }
9318 if (length) {
9319 stream.node.timestamp = Date.now();
9320 }
9321 return i;
9322 }
9323 });
9324 return FS.mkdev(path, mode, dev);
9325 },
9326 createLink: function(parent, name, target, canRead, canWrite) {
9327 var path = PATH.join2(
9328 typeof parent === "string" ? parent : FS.getPath(parent),
9329 name
9330 );
9331 return FS.symlink(target, path);
9332 },
9333 forceLoadFile: function(obj) {
9334 if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
9335 var success = true;
9336 if (typeof XMLHttpRequest !== "undefined") {
9337 throw new Error(
9338 "Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."
9339 );
9340 } else if (read_) {
9341 try {
9342 obj.contents = intArrayFromString(read_(obj.url), true);
9343 obj.usedBytes = obj.contents.length;
9344 } catch (e) {
9345 success = false;
9346 }
9347 } else {
9348 throw new Error("Cannot load without read() or XMLHttpRequest.");
9349 }
9350 if (!success) ___setErrNo(29);
9351 return success;
9352 },
9353 createLazyFile: function(parent, name, url, canRead, canWrite) {
9354 function LazyUint8Array() {
9355 this.lengthKnown = false;
9356 this.chunks = [];
9357 }
9358 LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
9359 if (idx > this.length - 1 || idx < 0) {
9360 return undefined;
9361 }
9362 var chunkOffset = idx % this.chunkSize;
9363 var chunkNum = (idx / this.chunkSize) | 0;
9364 return this.getter(chunkNum)[chunkOffset];
9365 };
9366 LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(
9367 getter
9368 ) {
9369 this.getter = getter;
9370 };
9371 LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
9372 var xhr = new XMLHttpRequest();
9373 xhr.open("HEAD", url, false);
9374 xhr.send(null);
9375 if (!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304))
9376 throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
9377 var datalength = Number(xhr.getResponseHeader("Content-length"));
9378 var header;
9379 var hasByteServing =
9380 (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
9381 var usesGzip =
9382 (header = xhr.getResponseHeader("Content-Encoding")) &&
9383 header === "gzip";
9384 var chunkSize = 1024 * 1024;
9385 if (!hasByteServing) chunkSize = datalength;
9386 var doXHR = function(from, to) {
9387 if (from > to)
9388 throw new Error(
9389 "invalid range (" + from + ", " + to + ") or no bytes requested!"
9390 );
9391 if (to > datalength - 1)
9392 throw new Error(
9393 "only " + datalength + " bytes available! programmer error!"
9394 );
9395 var xhr = new XMLHttpRequest();
9396 xhr.open("GET", url, false);
9397 if (datalength !== chunkSize)
9398 xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
9399 if (typeof Uint8Array != "undefined") xhr.responseType = "arraybuffer";
9400 if (xhr.overrideMimeType) {
9401 xhr.overrideMimeType("text/plain; charset=x-user-defined");
9402 }
9403 xhr.send(null);
9404 if (!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304))
9405 throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
9406 if (xhr.response !== undefined) {
9407 return new Uint8Array(xhr.response || []);
9408 } else {
9409 return intArrayFromString(xhr.responseText || "", true);
9410 }
9411 };
9412 var lazyArray = this;
9413 lazyArray.setDataGetter(function(chunkNum) {
9414 var start = chunkNum * chunkSize;
9415 var end = (chunkNum + 1) * chunkSize - 1;
9416 end = Math.min(end, datalength - 1);
9417 if (typeof lazyArray.chunks[chunkNum] === "undefined") {
9418 lazyArray.chunks[chunkNum] = doXHR(start, end);
9419 }
9420 if (typeof lazyArray.chunks[chunkNum] === "undefined")
9421 throw new Error("doXHR failed!");
9422 return lazyArray.chunks[chunkNum];
9423 });
9424 if (usesGzip || !datalength) {
9425 chunkSize = datalength = 1;
9426 datalength = this.getter(0).length;
9427 chunkSize = datalength;
9428 console.log(
9429 "LazyFiles on gzip forces download of the whole file when length is accessed"
9430 );
9431 }
9432 this._length = datalength;
9433 this._chunkSize = chunkSize;
9434 this.lengthKnown = true;
9435 };
9436 if (typeof XMLHttpRequest !== "undefined") {
9437 if (!ENVIRONMENT_IS_WORKER)
9438 throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
9439 var lazyArray = new LazyUint8Array();
9440 Object.defineProperties(lazyArray, {
9441 length: {
9442 get: function() {
9443 if (!this.lengthKnown) {
9444 this.cacheLength();
9445 }
9446 return this._length;
9447 }
9448 },
9449 chunkSize: {
9450 get: function() {
9451 if (!this.lengthKnown) {
9452 this.cacheLength();
9453 }
9454 return this._chunkSize;
9455 }
9456 }
9457 });
9458 var properties = { isDevice: false, contents: lazyArray };
9459 } else {
9460 var properties = { isDevice: false, url: url };
9461 }
9462 var node = FS.createFile(parent, name, properties, canRead, canWrite);
9463 if (properties.contents) {
9464 node.contents = properties.contents;
9465 } else if (properties.url) {
9466 node.contents = null;
9467 node.url = properties.url;
9468 }
9469 Object.defineProperties(node, {
9470 usedBytes: {
9471 get: function() {
9472 return this.contents.length;
9473 }
9474 }
9475 });
9476 var stream_ops = {};
9477 var keys = Object.keys(node.stream_ops);
9478 keys.forEach(function(key) {
9479 var fn = node.stream_ops[key];
9480 stream_ops[key] = function forceLoadLazyFile() {
9481 if (!FS.forceLoadFile(node)) {
9482 throw new FS.ErrnoError(29);
9483 }
9484 return fn.apply(null, arguments);
9485 };
9486 });
9487 stream_ops.read = function stream_ops_read(
9488 stream,
9489 buffer,
9490 offset,
9491 length,
9492 position
9493 ) {
9494 if (!FS.forceLoadFile(node)) {
9495 throw new FS.ErrnoError(29);
9496 }
9497 var contents = stream.node.contents;
9498 if (position >= contents.length) return 0;
9499 var size = Math.min(contents.length - position, length);
9500 if (contents.slice) {
9501 for (var i = 0; i < size; i++) {
9502 buffer[offset + i] = contents[position + i];
9503 }
9504 } else {
9505 for (var i = 0; i < size; i++) {
9506 buffer[offset + i] = contents.get(position + i);
9507 }
9508 }
9509 return size;
9510 };
9511 node.stream_ops = stream_ops;
9512 return node;
9513 },
9514 createPreloadedFile: function(
9515 parent,
9516 name,
9517 url,
9518 canRead,
9519 canWrite,
9520 onload,
9521 onerror,
9522 dontCreateFile,
9523 canOwn,
9524 preFinish
9525 ) {
9526 Browser.init();
9527 var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;
9528 var dep = getUniqueRunDependency("cp " + fullname);
9529 function processData(byteArray) {
9530 function finish(byteArray) {
9531 if (preFinish) preFinish();
9532 if (!dontCreateFile) {
9533 FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
9534 }
9535 if (onload) onload();
9536 removeRunDependency(dep);
9537 }
9538 var handled = false;
9539 Module["preloadPlugins"].forEach(function(plugin) {
9540 if (handled) return;
9541 if (plugin["canHandle"](fullname)) {
9542 plugin["handle"](byteArray, fullname, finish, function() {
9543 if (onerror) onerror();
9544 removeRunDependency(dep);
9545 });
9546 handled = true;
9547 }
9548 });
9549 if (!handled) finish(byteArray);
9550 }
9551 addRunDependency(dep);
9552 if (typeof url == "string") {
9553 Browser.asyncLoad(
9554 url,
9555 function(byteArray) {
9556 processData(byteArray);
9557 },
9558 onerror
9559 );
9560 } else {
9561 processData(url);
9562 }
9563 },
9564 indexedDB: function() {
9565 return (
9566 window.indexedDB ||
9567 window.mozIndexedDB ||
9568 window.webkitIndexedDB ||
9569 window.msIndexedDB
9570 );
9571 },
9572 DB_NAME: function() {
9573 return "EM_FS_" + window.location.pathname;
9574 },
9575 DB_VERSION: 20,
9576 DB_STORE_NAME: "FILE_DATA",
9577 saveFilesToDB: function(paths, onload, onerror) {
9578 onload = onload || function() {};
9579 onerror = onerror || function() {};
9580 var indexedDB = FS.indexedDB();
9581 try {
9582 var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
9583 } catch (e) {
9584 return onerror(e);
9585 }
9586 openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
9587 console.log("creating db");
9588 var db = openRequest.result;
9589 db.createObjectStore(FS.DB_STORE_NAME);
9590 };
9591 openRequest.onsuccess = function openRequest_onsuccess() {
9592 var db = openRequest.result;
9593 var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite");
9594 var files = transaction.objectStore(FS.DB_STORE_NAME);
9595 var ok = 0,
9596 fail = 0,
9597 total = paths.length;
9598 function finish() {
9599 if (fail == 0) onload();
9600 else onerror();
9601 }
9602 paths.forEach(function(path) {
9603 var putRequest = files.put(FS.analyzePath(path).object.contents, path);
9604 putRequest.onsuccess = function putRequest_onsuccess() {
9605 ok++;
9606 if (ok + fail == total) finish();
9607 };
9608 putRequest.onerror = function putRequest_onerror() {
9609 fail++;
9610 if (ok + fail == total) finish();
9611 };
9612 });
9613 transaction.onerror = onerror;
9614 };
9615 openRequest.onerror = onerror;
9616 },
9617 loadFilesFromDB: function(paths, onload, onerror) {
9618 onload = onload || function() {};
9619 onerror = onerror || function() {};
9620 var indexedDB = FS.indexedDB();
9621 try {
9622 var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
9623 } catch (e) {
9624 return onerror(e);
9625 }
9626 openRequest.onupgradeneeded = onerror;
9627 openRequest.onsuccess = function openRequest_onsuccess() {
9628 var db = openRequest.result;
9629 try {
9630 var transaction = db.transaction([FS.DB_STORE_NAME], "readonly");
9631 } catch (e) {
9632 onerror(e);
9633 return;
9634 }
9635 var files = transaction.objectStore(FS.DB_STORE_NAME);
9636 var ok = 0,
9637 fail = 0,
9638 total = paths.length;
9639 function finish() {
9640 if (fail == 0) onload();
9641 else onerror();
9642 }
9643 paths.forEach(function(path) {
9644 var getRequest = files.get(path);
9645 getRequest.onsuccess = function getRequest_onsuccess() {
9646 if (FS.analyzePath(path).exists) {
9647 FS.unlink(path);
9648 }
9649 FS.createDataFile(
9650 PATH.dirname(path),
9651 PATH.basename(path),
9652 getRequest.result,
9653 true,
9654 true,
9655 true
9656 );
9657 ok++;
9658 if (ok + fail == total) finish();
9659 };
9660 getRequest.onerror = function getRequest_onerror() {
9661 fail++;
9662 if (ok + fail == total) finish();
9663 };
9664 });
9665 transaction.onerror = onerror;
9666 };
9667 openRequest.onerror = onerror;
9668 }
9669};
9670var SYSCALLS = {
9671 DEFAULT_POLLMASK: 5,
9672 mappings: {},
9673 umask: 511,
9674 calculateAt: function(dirfd, path) {
9675 if (path[0] !== "/") {
9676 var dir;
9677 if (dirfd === -100) {
9678 dir = FS.cwd();
9679 } else {
9680 var dirstream = FS.getStream(dirfd);
9681 if (!dirstream) throw new FS.ErrnoError(8);
9682 dir = dirstream.path;
9683 }
9684 path = PATH.join2(dir, path);
9685 }
9686 return path;
9687 },
9688 doStat: function(func, path, buf) {
9689 try {
9690 var stat = func(path);
9691 } catch (e) {
9692 if (
9693 e &&
9694 e.node &&
9695 PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))
9696 ) {
9697 return -54;
9698 }
9699 throw e;
9700 }
9701 HEAP32[buf >> 2] = stat.dev;
9702 HEAP32[(buf + 4) >> 2] = 0;
9703 HEAP32[(buf + 8) >> 2] = stat.ino;
9704 HEAP32[(buf + 12) >> 2] = stat.mode;
9705 HEAP32[(buf + 16) >> 2] = stat.nlink;
9706 HEAP32[(buf + 20) >> 2] = stat.uid;
9707 HEAP32[(buf + 24) >> 2] = stat.gid;
9708 HEAP32[(buf + 28) >> 2] = stat.rdev;
9709 HEAP32[(buf + 32) >> 2] = 0;
9710 (tempI64 = [
9711 stat.size >>> 0,
9712 ((tempDouble = stat.size),
9713 +Math_abs(tempDouble) >= 1
9714 ? tempDouble > 0
9715 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>>
9716 0
9717 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>>
9718 0
9719 : 0)
9720 ]),
9721 (HEAP32[(buf + 40) >> 2] = tempI64[0]),
9722 (HEAP32[(buf + 44) >> 2] = tempI64[1]);
9723 HEAP32[(buf + 48) >> 2] = 4096;
9724 HEAP32[(buf + 52) >> 2] = stat.blocks;
9725 HEAP32[(buf + 56) >> 2] = (stat.atime.getTime() / 1e3) | 0;
9726 HEAP32[(buf + 60) >> 2] = 0;
9727 HEAP32[(buf + 64) >> 2] = (stat.mtime.getTime() / 1e3) | 0;
9728 HEAP32[(buf + 68) >> 2] = 0;
9729 HEAP32[(buf + 72) >> 2] = (stat.ctime.getTime() / 1e3) | 0;
9730 HEAP32[(buf + 76) >> 2] = 0;
9731 (tempI64 = [
9732 stat.ino >>> 0,
9733 ((tempDouble = stat.ino),
9734 +Math_abs(tempDouble) >= 1
9735 ? tempDouble > 0
9736 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>>
9737 0
9738 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>>
9739 0
9740 : 0)
9741 ]),
9742 (HEAP32[(buf + 80) >> 2] = tempI64[0]),
9743 (HEAP32[(buf + 84) >> 2] = tempI64[1]);
9744 return 0;
9745 },
9746 doMsync: function(addr, stream, len, flags) {
9747 var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));
9748 FS.msync(stream, buffer, 0, len, flags);
9749 },
9750 doMkdir: function(path, mode) {
9751 path = PATH.normalize(path);
9752 if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1);
9753 FS.mkdir(path, mode, 0);
9754 return 0;
9755 },
9756 doMknod: function(path, mode, dev) {
9757 switch (mode & 61440) {
9758 case 32768:
9759 case 8192:
9760 case 24576:
9761 case 4096:
9762 case 49152:
9763 break;
9764 default:
9765 return -28;
9766 }
9767 FS.mknod(path, mode, dev);
9768 return 0;
9769 },
9770 doReadlink: function(path, buf, bufsize) {
9771 if (bufsize <= 0) return -28;
9772 var ret = FS.readlink(path);
9773 var len = Math.min(bufsize, lengthBytesUTF8(ret));
9774 var endChar = HEAP8[buf + len];
9775 stringToUTF8(ret, buf, bufsize + 1);
9776 HEAP8[buf + len] = endChar;
9777 return len;
9778 },
9779 doAccess: function(path, amode) {
9780 if (amode & ~7) {
9781 return -28;
9782 }
9783 var node;
9784 var lookup = FS.lookupPath(path, { follow: true });
9785 node = lookup.node;
9786 if (!node) {
9787 return -44;
9788 }
9789 var perms = "";
9790 if (amode & 4) perms += "r";
9791 if (amode & 2) perms += "w";
9792 if (amode & 1) perms += "x";
9793 if (perms && FS.nodePermissions(node, perms)) {
9794 return -2;
9795 }
9796 return 0;
9797 },
9798 doDup: function(path, flags, suggestFD) {
9799 var suggest = FS.getStream(suggestFD);
9800 if (suggest) FS.close(suggest);
9801 return FS.open(path, flags, 0, suggestFD, suggestFD).fd;
9802 },
9803 doReadv: function(stream, iov, iovcnt, offset) {
9804 var ret = 0;
9805 for (var i = 0; i < iovcnt; i++) {
9806 var ptr = HEAP32[(iov + i * 8) >> 2];
9807 var len = HEAP32[(iov + (i * 8 + 4)) >> 2];
9808 var curr = FS.read(stream, HEAP8, ptr, len, offset);
9809 if (curr < 0) return -1;
9810 ret += curr;
9811 if (curr < len) break;
9812 }
9813 return ret;
9814 },
9815 doWritev: function(stream, iov, iovcnt, offset) {
9816 var ret = 0;
9817 for (var i = 0; i < iovcnt; i++) {
9818 var ptr = HEAP32[(iov + i * 8) >> 2];
9819 var len = HEAP32[(iov + (i * 8 + 4)) >> 2];
9820 var curr = FS.write(stream, HEAP8, ptr, len, offset);
9821 if (curr < 0) return -1;
9822 ret += curr;
9823 }
9824 return ret;
9825 },
9826 varargs: 0,
9827 get: function(varargs) {
9828 SYSCALLS.varargs += 4;
9829 var ret = HEAP32[(SYSCALLS.varargs - 4) >> 2];
9830 return ret;
9831 },
9832 getStr: function() {
9833 var ret = UTF8ToString(SYSCALLS.get());
9834 return ret;
9835 },
9836 getStreamFromFD: function(fd) {
9837 if (fd === undefined) fd = SYSCALLS.get();
9838 var stream = FS.getStream(fd);
9839 if (!stream) throw new FS.ErrnoError(8);
9840 return stream;
9841 },
9842 get64: function() {
9843 var low = SYSCALLS.get(),
9844 high = SYSCALLS.get();
9845 return low;
9846 },
9847 getZero: function() {
9848 SYSCALLS.get();
9849 }
9850};
9851function ___syscall10(which, varargs) {
9852 SYSCALLS.varargs = varargs;
9853 try {
9854 var path = SYSCALLS.getStr();
9855 FS.unlink(path);
9856 return 0;
9857 } catch (e) {
9858 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
9859 return -e.errno;
9860 }
9861}
9862function ___syscall15(which, varargs) {
9863 SYSCALLS.varargs = varargs;
9864 try {
9865 var path = SYSCALLS.getStr(),
9866 mode = SYSCALLS.get();
9867 FS.chmod(path, mode);
9868 return 0;
9869 } catch (e) {
9870 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
9871 return -e.errno;
9872 }
9873}
9874function ___syscall195(which, varargs) {
9875 SYSCALLS.varargs = varargs;
9876 try {
9877 var path = SYSCALLS.getStr(),
9878 buf = SYSCALLS.get();
9879 return SYSCALLS.doStat(FS.stat, path, buf);
9880 } catch (e) {
9881 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
9882 return -e.errno;
9883 }
9884}
9885function ___syscall197(which, varargs) {
9886 SYSCALLS.varargs = varargs;
9887 try {
9888 var stream = SYSCALLS.getStreamFromFD(),
9889 buf = SYSCALLS.get();
9890 return SYSCALLS.doStat(FS.stat, stream.path, buf);
9891 } catch (e) {
9892 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
9893 return -e.errno;
9894 }
9895}
9896function ___syscall221(which, varargs) {
9897 SYSCALLS.varargs = varargs;
9898 try {
9899 var stream = SYSCALLS.getStreamFromFD(),
9900 cmd = SYSCALLS.get();
9901 switch (cmd) {
9902 case 0: {
9903 var arg = SYSCALLS.get();
9904 if (arg < 0) {
9905 return -28;
9906 }
9907 var newStream;
9908 newStream = FS.open(stream.path, stream.flags, 0, arg);
9909 return newStream.fd;
9910 }
9911 case 1:
9912 case 2:
9913 return 0;
9914 case 3:
9915 return stream.flags;
9916 case 4: {
9917 var arg = SYSCALLS.get();
9918 stream.flags |= arg;
9919 return 0;
9920 }
9921 case 12: {
9922 var arg = SYSCALLS.get();
9923 var offset = 0;
9924 HEAP16[(arg + offset) >> 1] = 2;
9925 return 0;
9926 }
9927 case 13:
9928 case 14:
9929 return 0;
9930 case 16:
9931 case 8:
9932 return -28;
9933 case 9:
9934 ___setErrNo(28);
9935 return -1;
9936 default: {
9937 return -28;
9938 }
9939 }
9940 } catch (e) {
9941 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
9942 return -e.errno;
9943 }
9944}
9945function ___syscall3(which, varargs) {
9946 SYSCALLS.varargs = varargs;
9947 try {
9948 var stream = SYSCALLS.getStreamFromFD(),
9949 buf = SYSCALLS.get(),
9950 count = SYSCALLS.get();
9951 return FS.read(stream, HEAP8, buf, count);
9952 } catch (e) {
9953 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
9954 return -e.errno;
9955 }
9956}
9957function ___syscall38(which, varargs) {
9958 SYSCALLS.varargs = varargs;
9959 try {
9960 var old_path = SYSCALLS.getStr(),
9961 new_path = SYSCALLS.getStr();
9962 FS.rename(old_path, new_path);
9963 return 0;
9964 } catch (e) {
9965 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
9966 return -e.errno;
9967 }
9968}
9969function ___syscall40(which, varargs) {
9970 SYSCALLS.varargs = varargs;
9971 try {
9972 var path = SYSCALLS.getStr();
9973 FS.rmdir(path);
9974 return 0;
9975 } catch (e) {
9976 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
9977 return -e.errno;
9978 }
9979}
9980function ___syscall5(which, varargs) {
9981 SYSCALLS.varargs = varargs;
9982 try {
9983 var pathname = SYSCALLS.getStr(),
9984 flags = SYSCALLS.get(),
9985 mode = SYSCALLS.get();
9986 var stream = FS.open(pathname, flags, mode);
9987 return stream.fd;
9988 } catch (e) {
9989 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
9990 return -e.errno;
9991 }
9992}
9993function ___syscall54(which, varargs) {
9994 SYSCALLS.varargs = varargs;
9995 try {
9996 var stream = SYSCALLS.getStreamFromFD(),
9997 op = SYSCALLS.get();
9998 switch (op) {
9999 case 21509:
10000 case 21505: {
10001 if (!stream.tty) return -59;
10002 return 0;
10003 }
10004 case 21510:
10005 case 21511:
10006 case 21512:
10007 case 21506:
10008 case 21507:
10009 case 21508: {
10010 if (!stream.tty) return -59;
10011 return 0;
10012 }
10013 case 21519: {
10014 if (!stream.tty) return -59;
10015 var argp = SYSCALLS.get();
10016 HEAP32[argp >> 2] = 0;
10017 return 0;
10018 }
10019 case 21520: {
10020 if (!stream.tty) return -59;
10021 return -28;
10022 }
10023 case 21531: {
10024 var argp = SYSCALLS.get();
10025 return FS.ioctl(stream, op, argp);
10026 }
10027 case 21523: {
10028 if (!stream.tty) return -59;
10029 return 0;
10030 }
10031 case 21524: {
10032 if (!stream.tty) return -59;
10033 return 0;
10034 }
10035 default:
10036 abort("bad ioctl syscall " + op);
10037 }
10038 } catch (e) {
10039 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
10040 return -e.errno;
10041 }
10042}
10043function ___unlock() {}
10044function _emscripten_get_heap_size() {
10045 return HEAP8.length;
10046}
10047function _emscripten_memcpy_big(dest, src, num) {
10048 HEAPU8.set(HEAPU8.subarray(src, src + num), dest);
10049}
10050function emscripten_realloc_buffer(size) {
10051 try {
10052 wasmMemory.grow((size - buffer.byteLength + 65535) >> 16);
10053 updateGlobalBufferAndViews(wasmMemory.buffer);
10054 return 1;
10055 } catch (e) {}
10056}
10057function _emscripten_resize_heap(requestedSize) {
10058 var oldSize = _emscripten_get_heap_size();
10059 var PAGE_MULTIPLE = 65536;
10060 var LIMIT = 2147483648 - PAGE_MULTIPLE;
10061 if (requestedSize > LIMIT) {
10062 return false;
10063 }
10064 var MIN_TOTAL_MEMORY = 16777216;
10065 var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);
10066 while (newSize < requestedSize) {
10067 if (newSize <= 536870912) {
10068 newSize = alignUp(2 * newSize, PAGE_MULTIPLE);
10069 } else {
10070 newSize = Math.min(
10071 alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE),
10072 LIMIT
10073 );
10074 }
10075 }
10076 var replacement = emscripten_realloc_buffer(newSize);
10077 if (!replacement) {
10078 return false;
10079 }
10080 return true;
10081}
10082function _fd_close(fd) {
10083 try {
10084 var stream = SYSCALLS.getStreamFromFD(fd);
10085 FS.close(stream);
10086 return 0;
10087 } catch (e) {
10088 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
10089 return e.errno;
10090 }
10091}
10092function _fd_fdstat_get(fd, pbuf) {
10093 try {
10094 var stream = SYSCALLS.getStreamFromFD(fd);
10095 var type = stream.tty
10096 ? 2
10097 : FS.isDir(stream.mode)
10098 ? 3
10099 : FS.isLink(stream.mode)
10100 ? 7
10101 : 4;
10102 HEAP8[pbuf >> 0] = type;
10103 return 0;
10104 } catch (e) {
10105 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
10106 return e.errno;
10107 }
10108}
10109function _fd_read(fd, iov, iovcnt, pnum) {
10110 try {
10111 var stream = SYSCALLS.getStreamFromFD(fd);
10112 var num = SYSCALLS.doReadv(stream, iov, iovcnt);
10113 HEAP32[pnum >> 2] = num;
10114 return 0;
10115 } catch (e) {
10116 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
10117 return e.errno;
10118 }
10119}
10120function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
10121 try {
10122 var stream = SYSCALLS.getStreamFromFD(fd);
10123 var HIGH_OFFSET = 4294967296;
10124 var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0);
10125 var DOUBLE_LIMIT = 9007199254740992;
10126 if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) {
10127 return -61;
10128 }
10129 FS.llseek(stream, offset, whence);
10130 (tempI64 = [
10131 stream.position >>> 0,
10132 ((tempDouble = stream.position),
10133 +Math_abs(tempDouble) >= 1
10134 ? tempDouble > 0
10135 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>>
10136 0
10137 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>>
10138 0
10139 : 0)
10140 ]),
10141 (HEAP32[newOffset >> 2] = tempI64[0]),
10142 (HEAP32[(newOffset + 4) >> 2] = tempI64[1]);
10143 if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;
10144 return 0;
10145 } catch (e) {
10146 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
10147 return e.errno;
10148 }
10149}
10150function _fd_write(fd, iov, iovcnt, pnum) {
10151 try {
10152 var stream = SYSCALLS.getStreamFromFD(fd);
10153 var num = SYSCALLS.doWritev(stream, iov, iovcnt);
10154 HEAP32[pnum >> 2] = num;
10155 return 0;
10156 } catch (e) {
10157 if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
10158 return e.errno;
10159 }
10160}
10161var ___tm_current = 20656;
10162var ___tm_timezone = (stringToUTF8("GMT", 20704, 4), 20704);
10163function _gmtime_r(time, tmPtr) {
10164 var date = new Date(HEAP32[time >> 2] * 1e3);
10165 HEAP32[tmPtr >> 2] = date.getUTCSeconds();
10166 HEAP32[(tmPtr + 4) >> 2] = date.getUTCMinutes();
10167 HEAP32[(tmPtr + 8) >> 2] = date.getUTCHours();
10168 HEAP32[(tmPtr + 12) >> 2] = date.getUTCDate();
10169 HEAP32[(tmPtr + 16) >> 2] = date.getUTCMonth();
10170 HEAP32[(tmPtr + 20) >> 2] = date.getUTCFullYear() - 1900;
10171 HEAP32[(tmPtr + 24) >> 2] = date.getUTCDay();
10172 HEAP32[(tmPtr + 36) >> 2] = 0;
10173 HEAP32[(tmPtr + 32) >> 2] = 0;
10174 var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);
10175 var yday = ((date.getTime() - start) / (1e3 * 60 * 60 * 24)) | 0;
10176 HEAP32[(tmPtr + 28) >> 2] = yday;
10177 HEAP32[(tmPtr + 40) >> 2] = ___tm_timezone;
10178 return tmPtr;
10179}
10180function _gmtime(time) {
10181 return _gmtime_r(time, ___tm_current);
10182}
10183function _tzset() {
10184 if (_tzset.called) return;
10185 _tzset.called = true;
10186 HEAP32[__get_timezone() >> 2] = new Date().getTimezoneOffset() * 60;
10187 var currentYear = new Date().getFullYear();
10188 var winter = new Date(currentYear, 0, 1);
10189 var summer = new Date(currentYear, 6, 1);
10190 HEAP32[__get_daylight() >> 2] = Number(
10191 winter.getTimezoneOffset() != summer.getTimezoneOffset()
10192 );
10193 function extractZone(date) {
10194 var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/);
10195 return match ? match[1] : "GMT";
10196 }
10197 var winterName = extractZone(winter);
10198 var summerName = extractZone(summer);
10199 var winterNamePtr = allocate(
10200 intArrayFromString(winterName),
10201 "i8",
10202 ALLOC_NORMAL
10203 );
10204 var summerNamePtr = allocate(
10205 intArrayFromString(summerName),
10206 "i8",
10207 ALLOC_NORMAL
10208 );
10209 if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) {
10210 HEAP32[__get_tzname() >> 2] = winterNamePtr;
10211 HEAP32[(__get_tzname() + 4) >> 2] = summerNamePtr;
10212 } else {
10213 HEAP32[__get_tzname() >> 2] = summerNamePtr;
10214 HEAP32[(__get_tzname() + 4) >> 2] = winterNamePtr;
10215 }
10216}
10217function _mktime(tmPtr) {
10218 _tzset();
10219 var date = new Date(
10220 HEAP32[(tmPtr + 20) >> 2] + 1900,
10221 HEAP32[(tmPtr + 16) >> 2],
10222 HEAP32[(tmPtr + 12) >> 2],
10223 HEAP32[(tmPtr + 8) >> 2],
10224 HEAP32[(tmPtr + 4) >> 2],
10225 HEAP32[tmPtr >> 2],
10226 0
10227 );
10228 var dst = HEAP32[(tmPtr + 32) >> 2];
10229 var guessedOffset = date.getTimezoneOffset();
10230 var start = new Date(date.getFullYear(), 0, 1);
10231 var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();
10232 var winterOffset = start.getTimezoneOffset();
10233 var dstOffset = Math.min(winterOffset, summerOffset);
10234 if (dst < 0) {
10235 HEAP32[(tmPtr + 32) >> 2] = Number(
10236 summerOffset != winterOffset && dstOffset == guessedOffset
10237 );
10238 } else if (dst > 0 != (dstOffset == guessedOffset)) {
10239 var nonDstOffset = Math.max(winterOffset, summerOffset);
10240 var trueOffset = dst > 0 ? dstOffset : nonDstOffset;
10241 date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4);
10242 }
10243 HEAP32[(tmPtr + 24) >> 2] = date.getDay();
10244 var yday = ((date.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24)) | 0;
10245 HEAP32[(tmPtr + 28) >> 2] = yday;
10246 return (date.getTime() / 1e3) | 0;
10247}
10248function _setTempRet0($i) {
10249 setTempRet0($i | 0);
10250}
10251function _time(ptr) {
10252 var ret = (Date.now() / 1e3) | 0;
10253 if (ptr) {
10254 HEAP32[ptr >> 2] = ret;
10255 }
10256 return ret;
10257}
10258FS.staticInit();
10259if (ENVIRONMENT_HAS_NODE) {
10260 var fs = frozenFs;
10261 var NODEJS_PATH = __webpack_require__(7);
10262 NODEFS.staticInit();
10263}
10264if (ENVIRONMENT_IS_NODE) {
10265 var _wrapNodeError = function(func) {
10266 return function() {
10267 try {
10268 return func.apply(this, arguments);
10269 } catch (e) {
10270 if (!e.code) throw e;
10271 throw new FS.ErrnoError(ERRNO_CODES[e.code]);
10272 }
10273 };
10274 };
10275 var VFS = Object.assign({}, FS);
10276 for (var _key in NODERAWFS) FS[_key] = _wrapNodeError(NODERAWFS[_key]);
10277} else {
10278 throw new Error(
10279 "NODERAWFS is currently only supported on Node.js environment."
10280 );
10281}
10282function intArrayFromString(stringy, dontAddNull, length) {
10283 var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
10284 var u8array = new Array(len);
10285 var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
10286 if (dontAddNull) u8array.length = numBytesWritten;
10287 return u8array;
10288}
10289var decodeBase64 =
10290 typeof atob === "function"
10291 ? atob
10292 : function(input) {
10293 var keyStr =
10294 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
10295 var output = "";
10296 var chr1, chr2, chr3;
10297 var enc1, enc2, enc3, enc4;
10298 var i = 0;
10299 input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
10300 do {
10301 enc1 = keyStr.indexOf(input.charAt(i++));
10302 enc2 = keyStr.indexOf(input.charAt(i++));
10303 enc3 = keyStr.indexOf(input.charAt(i++));
10304 enc4 = keyStr.indexOf(input.charAt(i++));
10305 chr1 = (enc1 << 2) | (enc2 >> 4);
10306 chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
10307 chr3 = ((enc3 & 3) << 6) | enc4;
10308 output = output + String.fromCharCode(chr1);
10309 if (enc3 !== 64) {
10310 output = output + String.fromCharCode(chr2);
10311 }
10312 if (enc4 !== 64) {
10313 output = output + String.fromCharCode(chr3);
10314 }
10315 } while (i < input.length);
10316 return output;
10317 };
10318function intArrayFromBase64(s) {
10319 if (typeof ENVIRONMENT_IS_NODE === "boolean" && ENVIRONMENT_IS_NODE) {
10320 var buf;
10321 try {
10322 buf = Buffer.from(s, "base64");
10323 } catch (_) {
10324 buf = new Buffer(s, "base64");
10325 }
10326 return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
10327 }
10328 try {
10329 var decoded = decodeBase64(s);
10330 var bytes = new Uint8Array(decoded.length);
10331 for (var i = 0; i < decoded.length; ++i) {
10332 bytes[i] = decoded.charCodeAt(i);
10333 }
10334 return bytes;
10335 } catch (_) {
10336 throw new Error("Converting base64 string to bytes failed.");
10337 }
10338}
10339function tryParseAsDataURI(filename) {
10340 if (!isDataURI(filename)) {
10341 return;
10342 }
10343 return intArrayFromBase64(filename.slice(dataURIPrefix.length));
10344}
10345var asmLibraryArg = {
10346 d: ___lock,
10347 t: ___syscall10,
10348 p: ___syscall15,
10349 f: ___syscall195,
10350 v: ___syscall197,
10351 e: ___syscall221,
10352 q: ___syscall3,
10353 u: ___syscall38,
10354 s: ___syscall40,
10355 r: ___syscall5,
10356 o: ___syscall54,
10357 a: ___unlock,
10358 j: _emscripten_memcpy_big,
10359 k: _emscripten_resize_heap,
10360 g: _fd_close,
10361 n: _fd_fdstat_get,
10362 m: _fd_read,
10363 l: _fd_seek,
10364 w: _fd_write,
10365 h: _gmtime,
10366 memory: wasmMemory,
10367 i: _mktime,
10368 b: _setTempRet0,
10369 table: wasmTable,
10370 c: _time
10371};
10372var asm = createWasm();
10373var ___wasm_call_ctors = (Module["___wasm_call_ctors"] = asm["x"]);
10374var _zipstruct_stat = (Module["_zipstruct_stat"] = asm["y"]);
10375var _zipstruct_statS = (Module["_zipstruct_statS"] = asm["z"]);
10376var _zipstruct_stat_name = (Module["_zipstruct_stat_name"] = asm["A"]);
10377var _zipstruct_stat_index = (Module["_zipstruct_stat_index"] = asm["B"]);
10378var _zipstruct_stat_size = (Module["_zipstruct_stat_size"] = asm["C"]);
10379var _zipstruct_stat_mtime = (Module["_zipstruct_stat_mtime"] = asm["D"]);
10380var _zipstruct_error = (Module["_zipstruct_error"] = asm["E"]);
10381var _zipstruct_errorS = (Module["_zipstruct_errorS"] = asm["F"]);
10382var _zip_close = (Module["_zip_close"] = asm["G"]);
10383var _zip_dir_add = (Module["_zip_dir_add"] = asm["H"]);
10384var _zip_discard = (Module["_zip_discard"] = asm["I"]);
10385var _zip_error_init_with_code = (Module["_zip_error_init_with_code"] =
10386 asm["J"]);
10387var _zip_get_error = (Module["_zip_get_error"] = asm["K"]);
10388var _zip_file_get_error = (Module["_zip_file_get_error"] = asm["L"]);
10389var _zip_error_strerror = (Module["_zip_error_strerror"] = asm["M"]);
10390var _zip_fclose = (Module["_zip_fclose"] = asm["N"]);
10391var _zip_file_add = (Module["_zip_file_add"] = asm["O"]);
10392var _zip_file_get_external_attributes = (Module[
10393 "_zip_file_get_external_attributes"
10394] = asm["P"]);
10395var _zip_file_set_external_attributes = (Module[
10396 "_zip_file_set_external_attributes"
10397] = asm["Q"]);
10398var _zip_file_set_mtime = (Module["_zip_file_set_mtime"] = asm["R"]);
10399var _zip_fopen = (Module["_zip_fopen"] = asm["S"]);
10400var _zip_fopen_index = (Module["_zip_fopen_index"] = asm["T"]);
10401var _zip_fread = (Module["_zip_fread"] = asm["U"]);
10402var _zip_get_name = (Module["_zip_get_name"] = asm["V"]);
10403var _zip_get_num_entries = (Module["_zip_get_num_entries"] = asm["W"]);
10404var _zip_name_locate = (Module["_zip_name_locate"] = asm["X"]);
10405var _zip_open = (Module["_zip_open"] = asm["Y"]);
10406var _zip_open_from_source = (Module["_zip_open_from_source"] = asm["Z"]);
10407var _zip_source_buffer = (Module["_zip_source_buffer"] = asm["_"]);
10408var _zip_source_buffer_create = (Module["_zip_source_buffer_create"] =
10409 asm["$"]);
10410var _zip_source_free = (Module["_zip_source_free"] = asm["aa"]);
10411var _zip_source_set_mtime = (Module["_zip_source_set_mtime"] = asm["ba"]);
10412var _zip_stat = (Module["_zip_stat"] = asm["ca"]);
10413var _zip_stat_index = (Module["_zip_stat_index"] = asm["da"]);
10414var ___errno_location = (Module["___errno_location"] = asm["ea"]);
10415var __get_tzname = (Module["__get_tzname"] = asm["fa"]);
10416var __get_daylight = (Module["__get_daylight"] = asm["ga"]);
10417var __get_timezone = (Module["__get_timezone"] = asm["ha"]);
10418var _malloc = (Module["_malloc"] = asm["ia"]);
10419var _free = (Module["_free"] = asm["ja"]);
10420var stackSave = (Module["stackSave"] = asm["ka"]);
10421var stackAlloc = (Module["stackAlloc"] = asm["la"]);
10422var stackRestore = (Module["stackRestore"] = asm["ma"]);
10423var dynCall_vi = (Module["dynCall_vi"] = asm["na"]);
10424Module["asm"] = asm;
10425Module["cwrap"] = cwrap;
10426Module["getValue"] = getValue;
10427var calledRun;
10428function ExitStatus(status) {
10429 this.name = "ExitStatus";
10430 this.message = "Program terminated with exit(" + status + ")";
10431 this.status = status;
10432}
10433dependenciesFulfilled = function runCaller() {
10434 if (!calledRun) run();
10435 if (!calledRun) dependenciesFulfilled = runCaller;
10436};
10437function run(args) {
10438 args = args || arguments_;
10439 if (runDependencies > 0) {
10440 return;
10441 }
10442 preRun();
10443 if (runDependencies > 0) return;
10444 function doRun() {
10445 if (calledRun) return;
10446 calledRun = true;
10447 if (ABORT) return;
10448 initRuntime();
10449 preMain();
10450 if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
10451 postRun();
10452 }
10453 if (Module["setStatus"]) {
10454 Module["setStatus"]("Running...");
10455 setTimeout(function() {
10456 setTimeout(function() {
10457 Module["setStatus"]("");
10458 }, 1);
10459 doRun();
10460 }, 1);
10461 } else {
10462 doRun();
10463 }
10464}
10465Module["run"] = run;
10466if (Module["preInit"]) {
10467 if (typeof Module["preInit"] == "function")
10468 Module["preInit"] = [Module["preInit"]];
10469 while (Module["preInit"].length > 0) {
10470 Module["preInit"].pop()();
10471 }
10472}
10473noExitRuntime = true;
10474run();
10475
10476
10477/***/ }),
10478/* 27 */
10479/***/ (function(module, exports) {
10480
10481module.exports = require("crypto");
10482
10483/***/ }),
10484/* 28 */
10485/***/ (function(module, exports) {
10486
10487module.exports = require("string_decoder");
10488
10489/***/ }),
10490/* 29 */
10491/***/ (function(module, exports, __webpack_require__) {
10492
10493"use strict";
10494
10495
10496var __rest = this && this.__rest || function (s, e) {
10497 var t = {};
10498
10499 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
10500
10501 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
10502 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
10503 }
10504 return t;
10505};
10506
10507var __importDefault = this && this.__importDefault || function (mod) {
10508 return mod && mod.__esModule ? mod : {
10509 "default": mod
10510 };
10511};
10512
10513Object.defineProperty(exports, "__esModule", {
10514 value: true
10515});
10516
10517const fslib_1 = __webpack_require__(5);
10518
10519const fs_1 = __importDefault(__webpack_require__(2));
10520
10521const module_1 = __webpack_require__(6);
10522
10523const url_1 = __webpack_require__(30);
10524
10525const internalTools_1 = __webpack_require__(11);
10526
10527function applyPatch(pnpapi, opts) {
10528 // @ts-ignore
10529 const builtinModules = new Set(module_1.Module.builtinModules || Object.keys(process.binding('natives')));
10530 /**
10531 * The cache that will be used for all accesses occuring outside of a PnP context.
10532 */
10533
10534 const defaultCache = {};
10535 /**
10536 * Used to disable the resolution hooks (for when we want to fallback to the previous resolution - we then need
10537 * a way to "reset" the environment temporarily)
10538 */
10539
10540 let enableNativeHooks = true; // @ts-ignore
10541
10542 process.versions.pnp = String(pnpapi.VERSIONS.std); // @ts-ignore
10543
10544 const moduleExports = __webpack_require__(6); // @ts-ignore
10545
10546
10547 moduleExports.findPnpApi = lookupSource => {
10548 const lookupPath = lookupSource instanceof url_1.URL ? url_1.fileURLToPath(lookupSource) : lookupSource;
10549 const apiPath = opts.manager.findApiPathFor(lookupPath);
10550 if (apiPath === null) return null;
10551 const apiEntry = opts.manager.getApiEntry(apiPath, true);
10552 return apiEntry.instance;
10553 };
10554
10555 function getRequireStack(parent) {
10556 const requireStack = [];
10557
10558 for (let cursor = parent; cursor; cursor = cursor.parent) requireStack.push(cursor.filename || cursor.id);
10559
10560 return requireStack;
10561 } // A small note: we don't replace the cache here (and instead use the native one). This is an effort to not
10562 // break code similar to "delete require.cache[require.resolve(FOO)]", where FOO is a package located outside
10563 // of the Yarn dependency tree. In this case, we defer the load to the native loader. If we were to replace the
10564 // cache by our own, the native loader would populate its own cache, which wouldn't be exposed anymore, so the
10565 // delete call would be broken.
10566
10567
10568 const originalModuleLoad = module_1.Module._load;
10569
10570 module_1.Module._load = function (request, parent, isMain) {
10571 if (!enableNativeHooks) return originalModuleLoad.call(module_1.Module, request, parent, isMain); // Builtins are managed by the regular Node loader
10572
10573 if (builtinModules.has(request)) {
10574 try {
10575 enableNativeHooks = false;
10576 return originalModuleLoad.call(module_1.Module, request, parent, isMain);
10577 } finally {
10578 enableNativeHooks = true;
10579 }
10580 }
10581
10582 const parentApiPath = opts.manager.getApiPathFromParent(parent);
10583 const parentApi = parentApiPath !== null ? opts.manager.getApiEntry(parentApiPath, true).instance : null; // Requests that aren't covered by the PnP runtime goes through the
10584 // parent `_load` implementation. This is required for VSCode, for example,
10585 // which override `_load` to provide additional builtins to its extensions.
10586
10587 if (parentApi === null) return originalModuleLoad(request, parent, isMain); // The 'pnpapi' name is reserved to return the PnP api currently in use
10588 // by the program
10589
10590 if (request === `pnpapi`) return parentApi; // Request `Module._resolveFilename` (ie. `resolveRequest`) to tell us
10591 // which file we should load
10592
10593 const modulePath = module_1.Module._resolveFilename(request, parent, isMain); // We check whether the module is owned by the dependency tree of the
10594 // module that required it. If it isn't, then we need to create a new
10595 // store and possibly load its sandboxed PnP runtime.
10596
10597
10598 const isOwnedByRuntime = parentApi !== null ? parentApi.findPackageLocator(modulePath) !== null : false;
10599 const moduleApiPath = isOwnedByRuntime ? parentApiPath : opts.manager.findApiPathFor(fslib_1.npath.dirname(modulePath));
10600 const entry = moduleApiPath !== null ? opts.manager.getApiEntry(moduleApiPath) : {
10601 instance: null,
10602 cache: defaultCache
10603 }; // Check if the module has already been created for the given file
10604
10605 const cacheEntry = entry.cache[modulePath];
10606 if (cacheEntry) return cacheEntry.exports; // Create a new module and store it into the cache
10607 // @ts-ignore
10608
10609 const module = new module_1.Module(modulePath, parent);
10610 module.pnpApiPath = moduleApiPath;
10611 entry.cache[modulePath] = module; // The main module is exposed as global variable
10612
10613 if (isMain) {
10614 // @ts-ignore
10615 process.mainModule = module;
10616 module.id = '.';
10617 } // Try to load the module, and remove it from the cache if it fails
10618
10619
10620 let hasThrown = true;
10621
10622 try {
10623 module.load(modulePath);
10624 hasThrown = false;
10625 } finally {
10626 if (hasThrown) {
10627 delete module_1.Module._cache[modulePath];
10628 }
10629 }
10630
10631 return module.exports;
10632 };
10633
10634 const originalModuleResolveFilename = module_1.Module._resolveFilename;
10635
10636 module_1.Module._resolveFilename = function (request, parent, isMain, options) {
10637 if (builtinModules.has(request)) return request;
10638 if (!enableNativeHooks) return originalModuleResolveFilename.call(module_1.Module, request, parent, isMain, options);
10639
10640 if (options && options.plugnplay === false) {
10641 const {
10642 plugnplay
10643 } = options,
10644 rest = __rest(options, ["plugnplay"]); // Workaround a bug present in some version of Node (now fixed)
10645 // https://github.com/nodejs/node/pull/28078
10646
10647
10648 const forwardedOptions = Object.keys(rest).length > 0 ? rest : undefined;
10649
10650 try {
10651 enableNativeHooks = false;
10652 return originalModuleResolveFilename.call(module_1.Module, request, parent, isMain, forwardedOptions);
10653 } finally {
10654 enableNativeHooks = true;
10655 }
10656 } // We check that all the options present here are supported; better
10657 // to fail fast than to introduce subtle bugs in the runtime.
10658
10659
10660 if (options) {
10661 const optionNames = new Set(Object.keys(options));
10662 optionNames.delete(`paths`);
10663 optionNames.delete(`plugnplay`);
10664
10665 if (optionNames.size > 0) {
10666 throw internalTools_1.makeError(internalTools_1.ErrorCode.UNSUPPORTED, `Some options passed to require() aren't supported by PnP yet (${Array.from(optionNames).join(', ')})`);
10667 }
10668 }
10669
10670 const getIssuerSpecsFromPaths = paths => {
10671 return paths.map(path => ({
10672 apiPath: opts.manager.findApiPathFor(path),
10673 path: fslib_1.npath.toPortablePath(path),
10674 module: null
10675 }));
10676 };
10677
10678 const getIssuerSpecsFromModule = module => {
10679 const issuer = internalTools_1.getIssuerModule(module);
10680 const issuerPath = issuer !== null ? fslib_1.npath.dirname(issuer.filename) : process.cwd();
10681 return [{
10682 apiPath: opts.manager.getApiPathFromParent(issuer),
10683 path: fslib_1.npath.toPortablePath(issuerPath),
10684 module
10685 }];
10686 };
10687
10688 const makeFakeParent = path => {
10689 const fakeParent = new module_1.Module(``);
10690 const fakeFilePath = fslib_1.ppath.join(path, `[file]`);
10691 fakeParent.paths = module_1.Module._nodeModulePaths(fslib_1.npath.fromPortablePath(fakeFilePath));
10692 return fakeParent;
10693 };
10694
10695 const issuerSpecs = options && options.paths ? getIssuerSpecsFromPaths(options.paths) : getIssuerSpecsFromModule(parent);
10696 let firstError;
10697
10698 for (const {
10699 apiPath,
10700 path,
10701 module
10702 } of issuerSpecs) {
10703 let resolution;
10704 const issuerApi = apiPath !== null ? opts.manager.getApiEntry(apiPath, true).instance : null;
10705
10706 try {
10707 if (issuerApi !== null) {
10708 resolution = issuerApi.resolveRequest(request, `${path}/`);
10709 } else {
10710 resolution = originalModuleResolveFilename.call(module_1.Module, request, module || makeFakeParent(path), isMain);
10711 }
10712 } catch (error) {
10713 firstError = firstError || error;
10714 continue;
10715 }
10716
10717 if (resolution !== null) {
10718 return resolution;
10719 }
10720 }
10721
10722 const requireStack = getRequireStack(parent);
10723 Object.defineProperty(firstError, `requireStack`, {
10724 configurable: true,
10725 writable: true,
10726 enumerable: false,
10727 value: requireStack
10728 });
10729 if (requireStack.length > 0) firstError.message += `\nRequire stack:\n- ${requireStack.join(`\n- `)}`;
10730 throw firstError;
10731 };
10732
10733 const originalFindPath = module_1.Module._findPath;
10734
10735 module_1.Module._findPath = function (request, paths, isMain) {
10736 if (request === `pnpapi`) return false;
10737 if (!enableNativeHooks) return originalFindPath.call(module_1.Module, request, paths, isMain);
10738
10739 for (const path of paths || []) {
10740 let resolution;
10741
10742 try {
10743 const pnpApiPath = opts.manager.findApiPathFor(path);
10744
10745 if (pnpApiPath !== null) {
10746 const api = opts.manager.getApiEntry(pnpApiPath, true).instance;
10747 resolution = api.resolveRequest(request, path) || false;
10748 } else {
10749 resolution = originalFindPath.call(module_1.Module, request, [path], isMain);
10750 }
10751 } catch (error) {
10752 continue;
10753 }
10754
10755 if (resolution) {
10756 return resolution;
10757 }
10758 }
10759
10760 return false;
10761 };
10762
10763 fslib_1.patchFs(fs_1.default, new fslib_1.PosixFS(opts.fakeFs));
10764}
10765
10766exports.applyPatch = applyPatch;
10767;
10768
10769/***/ }),
10770/* 30 */
10771/***/ (function(module, exports) {
10772
10773module.exports = require("url");
10774
10775/***/ }),
10776/* 31 */
10777/***/ (function(module, exports, __webpack_require__) {
10778
10779"use strict";
10780
10781
10782Object.defineProperty(exports, "__esModule", {
10783 value: true
10784});
10785
10786const fslib_1 = __webpack_require__(5);
10787
10788function hydrateRuntimeState(data, {
10789 basePath
10790}) {
10791 const portablePath = fslib_1.npath.toPortablePath(basePath);
10792 const ignorePattern = data.ignorePatternData !== null ? new RegExp(data.ignorePatternData) : null;
10793 const packageRegistry = new Map(data.packageRegistryData.map(([packageName, packageStoreData]) => {
10794 return [packageName, new Map(packageStoreData.map(([packageReference, packageInformationData]) => {
10795 return [packageReference, {
10796 packageLocation: fslib_1.ppath.resolve(portablePath, packageInformationData.packageLocation),
10797 packageDependencies: new Map(packageInformationData.packageDependencies),
10798 packagePeers: new Set(packageInformationData.packagePeers),
10799 linkType: packageInformationData.linkType,
10800 discardFromLookup: packageInformationData.discardFromLookup || false
10801 }];
10802 }))];
10803 }));
10804 const packageLocatorsByLocations = new Map();
10805 const packageLocationLengths = new Set();
10806
10807 for (const [packageName, storeData] of data.packageRegistryData) {
10808 for (const [packageReference, packageInformationData] of storeData) {
10809 if (packageName === null !== (packageReference === null)) throw new Error(`Assertion failed: The name and reference should be null, or neither should`);
10810 if (packageInformationData.discardFromLookup) continue; // @ts-ignore: TypeScript isn't smart enough to understand the type assertion
10811
10812 const packageLocator = {
10813 name: packageName,
10814 reference: packageReference
10815 };
10816 packageLocatorsByLocations.set(packageInformationData.packageLocation, packageLocator);
10817 packageLocationLengths.add(packageInformationData.packageLocation.length);
10818 }
10819 }
10820
10821 for (const location of data.locationBlacklistData) packageLocatorsByLocations.set(location, null);
10822
10823 const fallbackExclusionList = new Map(data.fallbackExclusionList.map(([packageName, packageReferences]) => {
10824 return [packageName, new Set(packageReferences)];
10825 }));
10826 const fallbackPool = new Map(data.fallbackPool);
10827 const dependencyTreeRoots = data.dependencyTreeRoots;
10828 const enableTopLevelFallback = data.enableTopLevelFallback;
10829 return {
10830 basePath: portablePath,
10831 dependencyTreeRoots,
10832 enableTopLevelFallback,
10833 fallbackExclusionList,
10834 fallbackPool,
10835 ignorePattern,
10836 packageLocationLengths: [...packageLocationLengths].sort((a, b) => b - a),
10837 packageLocatorsByLocations,
10838 packageRegistry
10839 };
10840}
10841
10842exports.hydrateRuntimeState = hydrateRuntimeState;
10843
10844/***/ }),
10845/* 32 */
10846/***/ (function(module, exports, __webpack_require__) {
10847
10848"use strict";
10849
10850
10851Object.defineProperty(exports, "__esModule", {
10852 value: true
10853});
10854
10855const fslib_1 = __webpack_require__(5);
10856
10857const fslib_2 = __webpack_require__(5);
10858
10859const module_1 = __webpack_require__(6);
10860
10861const internalTools_1 = __webpack_require__(11);
10862
10863function makeApi(runtimeState, opts) {
10864 const alwaysWarnOnFallback = Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK) > 0;
10865 const debugLevel = Number(process.env.PNP_DEBUG_LEVEL); // @ts-ignore
10866
10867 const builtinModules = new Set(module_1.Module.builtinModules || Object.keys(process.binding('natives'))); // Splits a require request into its components, or return null if the request is a file path
10868
10869 const pathRegExp = /^(?![a-zA-Z]:[\\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^\/]+\/)?[^\/]+)\/?(.*|)$/; // Matches if the path starts with a valid path qualifier (./, ../, /)
10870 // eslint-disable-next-line no-unused-vars
10871
10872 const isStrictRegExp = /^\.{0,2}\//; // Matches if the path must point to a directory (ie ends with /)
10873
10874 const isDirRegExp = /\/$/; // We only instantiate one of those so that we can use strict-equal comparisons
10875
10876 const topLevelLocator = {
10877 name: null,
10878 reference: null
10879 }; // Used for compatibility purposes - cf setupCompatibilityLayer
10880
10881 const fallbackLocators = []; // To avoid emitting the same warning multiple times
10882
10883 const emittedWarnings = new Set();
10884 if (runtimeState.enableTopLevelFallback === true) fallbackLocators.push(topLevelLocator);
10885
10886 if (opts.compatibilityMode !== false) {
10887 // ESLint currently doesn't have any portable way for shared configs to
10888 // specify their own plugins that should be used (cf issue #10125). This
10889 // will likely get fixed at some point but it'll take time, so in the
10890 // meantime we'll just add additional fallback entries for common shared
10891 // configs.
10892 // Similarly, Gatsby generates files within the `public` folder located
10893 // within the project, but doesn't pre-resolve the `require` calls to use
10894 // its own dependencies. Meaning that when PnP see a file from the `public`
10895 // folder making a require, it thinks that your project forgot to list one
10896 // of your dependencies.
10897 for (const name of [`react-scripts`, `gatsby`]) {
10898 const packageStore = runtimeState.packageRegistry.get(name);
10899
10900 if (packageStore) {
10901 for (const reference of packageStore.keys()) {
10902 if (reference === null) {
10903 throw new Error(`Assertion failed: This reference shouldn't be null`);
10904 } else {
10905 fallbackLocators.push({
10906 name,
10907 reference
10908 });
10909 }
10910 }
10911 }
10912 }
10913 }
10914 /**
10915 * The setup code will be injected here. The tables listed below are guaranteed to be filled after the call to
10916 * the $$DYNAMICALLY_GENERATED_CODE function.
10917 */
10918
10919
10920 const {
10921 ignorePattern,
10922 packageRegistry,
10923 packageLocatorsByLocations,
10924 packageLocationLengths
10925 } = runtimeState;
10926 /**
10927 * Allows to print useful logs just be setting a value in the environment
10928 */
10929
10930 function makeLogEntry(name, args) {
10931 return {
10932 fn: name,
10933 args: args,
10934 error: null,
10935 result: null
10936 };
10937 }
10938
10939 function maybeLog(name, fn) {
10940 if (opts.allowDebug === false) return fn;
10941
10942 if (Number.isFinite(debugLevel)) {
10943 if (debugLevel >= 2) {
10944 return (...args) => {
10945 const logEntry = makeLogEntry(name, args);
10946
10947 try {
10948 return logEntry.result = fn(...args);
10949 } catch (error) {
10950 throw logEntry.error = error;
10951 } finally {
10952 console.trace(logEntry);
10953 }
10954 };
10955 } else if (debugLevel >= 1) {
10956 return (...args) => {
10957 try {
10958 return fn(...args);
10959 } catch (error) {
10960 const logEntry = makeLogEntry(name, args);
10961 logEntry.error = error;
10962 console.trace(logEntry);
10963 throw error;
10964 }
10965 };
10966 }
10967 }
10968
10969 return fn;
10970 }
10971 /**
10972 * Returns information about a package in a safe way (will throw if they cannot be retrieved)
10973 */
10974
10975
10976 function getPackageInformationSafe(packageLocator) {
10977 const packageInformation = getPackageInformation(packageLocator);
10978
10979 if (!packageInformation) {
10980 throw internalTools_1.makeError(internalTools_1.ErrorCode.INTERNAL, `Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)`);
10981 }
10982
10983 return packageInformation;
10984 }
10985 /**
10986 * Returns whether the specified locator is a dependency tree root (in which case it's part of the project) or not
10987 */
10988
10989
10990 function isDependencyTreeRoot(packageLocator) {
10991 if (packageLocator.name === null) return true;
10992
10993 for (const dependencyTreeRoot of runtimeState.dependencyTreeRoots) if (dependencyTreeRoot.name === packageLocator.name && dependencyTreeRoot.reference === packageLocator.reference) return true;
10994
10995 return false;
10996 }
10997 /**
10998 * Implements the node resolution for folder access and extension selection
10999 */
11000
11001
11002 function applyNodeExtensionResolution(unqualifiedPath, candidates, {
11003 extensions
11004 }) {
11005 // We use this "infinite while" so that we can restart the process as long as we hit package folders
11006 while (true) {
11007 let stat;
11008
11009 try {
11010 candidates.push(unqualifiedPath);
11011 stat = opts.fakeFs.statSync(unqualifiedPath);
11012 } catch (error) {} // If the file exists and is a file, we can stop right there
11013
11014
11015 if (stat && !stat.isDirectory()) return opts.fakeFs.realpathSync(unqualifiedPath); // If the file is a directory, we must check if it contains a package.json with a "main" entry
11016
11017 if (stat && stat.isDirectory()) {
11018 let pkgJson;
11019
11020 try {
11021 pkgJson = JSON.parse(opts.fakeFs.readFileSync(fslib_2.ppath.join(unqualifiedPath, fslib_2.toFilename(`package.json`)), `utf8`));
11022 } catch (error) {}
11023
11024 let nextUnqualifiedPath;
11025 if (pkgJson && pkgJson.main) nextUnqualifiedPath = fslib_2.ppath.resolve(unqualifiedPath, pkgJson.main); // If the "main" field changed the path, we start again from this new location
11026
11027 if (nextUnqualifiedPath && nextUnqualifiedPath !== unqualifiedPath) {
11028 const resolution = applyNodeExtensionResolution(nextUnqualifiedPath, candidates, {
11029 extensions
11030 });
11031
11032 if (resolution !== null) {
11033 return resolution;
11034 }
11035 }
11036 } // Otherwise we check if we find a file that match one of the supported extensions
11037
11038
11039 const qualifiedPath = extensions.map(extension => {
11040 return `${unqualifiedPath}${extension}`;
11041 }).find(candidateFile => {
11042 candidates.push(candidateFile);
11043 return opts.fakeFs.existsSync(candidateFile);
11044 });
11045 if (qualifiedPath) return qualifiedPath; // Otherwise, we check if the path is a folder - in such a case, we try to use its index
11046
11047 if (stat && stat.isDirectory()) {
11048 const indexPath = extensions.map(extension => {
11049 return fslib_2.ppath.format({
11050 dir: unqualifiedPath,
11051 name: fslib_2.toFilename(`index`),
11052 ext: extension
11053 });
11054 }).find(candidateFile => {
11055 candidates.push(candidateFile);
11056 return opts.fakeFs.existsSync(candidateFile);
11057 });
11058
11059 if (indexPath) {
11060 return indexPath;
11061 }
11062 } // Otherwise there's nothing else we can do :(
11063
11064
11065 return null;
11066 }
11067 }
11068 /**
11069 * This function creates fake modules that can be used with the _resolveFilename function.
11070 * Ideally it would be nice to be able to avoid this, since it causes useless allocations
11071 * and cannot be cached efficiently (we recompute the nodeModulePaths every time).
11072 *
11073 * Fortunately, this should only affect the fallback, and there hopefully shouldn't have a
11074 * lot of them.
11075 */
11076
11077
11078 function makeFakeModule(path) {
11079 // @ts-ignore
11080 const fakeModule = new module_1.Module(path, null);
11081 fakeModule.filename = path;
11082 fakeModule.paths = module_1.Module._nodeModulePaths(path);
11083 return fakeModule;
11084 }
11085 /**
11086 * Normalize path to posix format.
11087 */
11088
11089
11090 function normalizePath(p) {
11091 return fslib_1.npath.toPortablePath(p);
11092 }
11093 /**
11094 * Forward the resolution to the next resolver (usually the native one)
11095 */
11096
11097
11098 function callNativeResolution(request, issuer) {
11099 if (issuer.endsWith(`/`)) issuer = fslib_2.ppath.join(issuer, fslib_2.toFilename(`internal.js`)); // Since we would need to create a fake module anyway (to call _resolveLookupPath that
11100 // would give us the paths to give to _resolveFilename), we can as well not use
11101 // the {paths} option at all, since it internally makes _resolveFilename create another
11102 // fake module anyway.
11103
11104 return module_1.Module._resolveFilename(request, makeFakeModule(fslib_1.npath.fromPortablePath(issuer)), false, {
11105 plugnplay: false
11106 });
11107 }
11108 /**
11109 *
11110 */
11111
11112
11113 function isPathIgnored(path) {
11114 if (ignorePattern === null) return false;
11115 const subPath = fslib_2.ppath.contains(runtimeState.basePath, path);
11116 if (subPath === null) return false;
11117
11118 if (ignorePattern.test(subPath.replace(/\/$/, ``))) {
11119 return true;
11120 } else {
11121 return false;
11122 }
11123 }
11124 /**
11125 * This key indicates which version of the standard is implemented by this resolver. The `std` key is the
11126 * Plug'n'Play standard, and any other key are third-party extensions. Third-party extensions are not allowed
11127 * to override the standard, and can only offer new methods.
11128 *
11129 * If an new version of the Plug'n'Play standard is released and some extensions conflict with newly added
11130 * functions, they'll just have to fix the conflicts and bump their own version number.
11131 */
11132
11133
11134 const VERSIONS = {
11135 std: 3,
11136 resolveVirtual: 1
11137 };
11138 /**
11139 * We export a special symbol for easy access to the top level locator.
11140 */
11141
11142 const topLevel = topLevelLocator;
11143 /**
11144 * Gets the package information for a given locator. Returns null if they cannot be retrieved.
11145 */
11146
11147 function getPackageInformation({
11148 name,
11149 reference
11150 }) {
11151 const packageInformationStore = packageRegistry.get(name);
11152 if (!packageInformationStore) return null;
11153 const packageInformation = packageInformationStore.get(reference);
11154 if (!packageInformation) return null;
11155 return packageInformation;
11156 }
11157 /**
11158 * Finds the package locator that owns the specified path. If none is found, returns null instead.
11159 */
11160
11161
11162 function findPackageLocator(location) {
11163 let relativeLocation = normalizePath(fslib_2.ppath.relative(runtimeState.basePath, location));
11164 if (!relativeLocation.match(isStrictRegExp)) relativeLocation = `./${relativeLocation}`;
11165 if (location.match(isDirRegExp) && !relativeLocation.endsWith(`/`)) relativeLocation = `${relativeLocation}/`;
11166 let from = 0; // If someone wants to use a binary search to go from O(n) to O(log n), be my guest
11167
11168 while (from < packageLocationLengths.length && packageLocationLengths[from] > relativeLocation.length) from += 1;
11169
11170 for (let t = from; t < packageLocationLengths.length; ++t) {
11171 const locator = packageLocatorsByLocations.get(relativeLocation.substr(0, packageLocationLengths[t]));
11172 if (typeof locator === `undefined`) continue; // Ensures that the returned locator isn't a blacklisted one.
11173 //
11174 // Blacklisted packages are packages that cannot be used because their dependencies cannot be deduced. This only
11175 // happens with peer dependencies, which effectively have different sets of dependencies depending on their
11176 // parents.
11177 //
11178 // In order to deambiguate those different sets of dependencies, the Yarn implementation of PnP will generate a
11179 // symlink for each combination of <package name>/<package version>/<dependent package> it will find, and will
11180 // blacklist the target of those symlinks. By doing this, we ensure that files loaded through a specific path
11181 // will always have the same set of dependencies, provided the symlinks are correctly preserved.
11182 //
11183 // Unfortunately, some tools do not preserve them, and when it happens PnP isn't able anymore to deduce the set of
11184 // dependencies based on the path of the file that makes the require calls. But since we've blacklisted those
11185 // paths, we're able to print a more helpful error message that points out that a third-party package is doing
11186 // something incompatible!
11187
11188 if (locator === null) {
11189 throw internalTools_1.makeError(internalTools_1.ErrorCode.BLACKLISTED, `A forbidden path has been used in the package resolution process - this is usually caused by one of your tools calling 'fs.realpath' on the return value of 'require.resolve'. Since we need to use symlinks to simultaneously provide valid filesystem paths and disambiguate peer dependencies, they must be passed untransformed to 'require'.\n\nForbidden path: ${location}`, {
11190 location
11191 });
11192 }
11193
11194 return locator;
11195 }
11196
11197 return null;
11198 }
11199 /**
11200 * Transforms a request (what's typically passed as argument to the require function) into an unqualified path.
11201 * This path is called "unqualified" because it only changes the package name to the package location on the disk,
11202 * which means that the end result still cannot be directly accessed (for example, it doesn't try to resolve the
11203 * file extension, or to resolve directories to their "index.js" content). Use the "resolveUnqualified" function
11204 * to convert them to fully-qualified paths, or just use "resolveRequest" that do both operations in one go.
11205 *
11206 * Note that it is extremely important that the `issuer` path ends with a forward slash if the issuer is to be
11207 * treated as a folder (ie. "/tmp/foo/" rather than "/tmp/foo" if "foo" is a directory). Otherwise relative
11208 * imports won't be computed correctly (they'll get resolved relative to "/tmp/" instead of "/tmp/foo/").
11209 */
11210
11211
11212 function resolveToUnqualified(request, issuer, {
11213 considerBuiltins = true
11214 } = {}) {
11215 // The 'pnpapi' request is reserved and will always return the path to the PnP file, from everywhere
11216 if (request === `pnpapi`) return fslib_1.npath.toPortablePath(opts.pnpapiResolution); // Bailout if the request is a native module
11217
11218 if (considerBuiltins && builtinModules.has(request)) return null; // We allow disabling the pnp resolution for some subpaths.
11219 // This is because some projects, often legacy, contain multiple
11220 // levels of dependencies (ie. a yarn.lock inside a subfolder of
11221 // a yarn.lock). This is typically solved using workspaces, but
11222 // not all of them have been converted already.
11223
11224 if (issuer && isPathIgnored(issuer)) {
11225 // Absolute paths that seem to belong to a PnP tree are still
11226 // handled by our runtime even if the issuer isn't. This is
11227 // because the native Node resolution uses a special version
11228 // of the `stat` syscall which would otherwise bypass the
11229 // filesystem layer we require to access the files.
11230 if (!fslib_2.ppath.isAbsolute(request) || findPackageLocator(request) === null) {
11231 const result = callNativeResolution(request, issuer);
11232
11233 if (result === false) {
11234 throw internalTools_1.makeError(internalTools_1.ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED, `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp)\n\nRequire request: "${request}"\nRequired by: ${issuer}\n`, {
11235 request,
11236 issuer
11237 });
11238 }
11239
11240 return fslib_1.npath.toPortablePath(result);
11241 }
11242 }
11243
11244 let unqualifiedPath; // If the request is a relative or absolute path, we just return it normalized
11245
11246 const dependencyNameMatch = request.match(pathRegExp);
11247
11248 if (!dependencyNameMatch) {
11249 if (fslib_2.ppath.isAbsolute(request)) {
11250 unqualifiedPath = fslib_2.ppath.normalize(request);
11251 } else {
11252 if (!issuer) {
11253 throw internalTools_1.makeError(internalTools_1.ErrorCode.API_ERROR, `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, {
11254 request,
11255 issuer
11256 });
11257 }
11258
11259 if (issuer.match(isDirRegExp)) {
11260 unqualifiedPath = fslib_2.ppath.normalize(fslib_2.ppath.resolve(issuer, request));
11261 } else {
11262 unqualifiedPath = fslib_2.ppath.normalize(fslib_2.ppath.resolve(fslib_2.ppath.dirname(issuer), request));
11263 }
11264 } // No need to use the return value; we just want to check the blacklist status
11265
11266
11267 findPackageLocator(unqualifiedPath);
11268 } // Things are more hairy if it's a package require - we then need to figure out which package is needed, and in
11269 // particular the exact version for the given location on the dependency tree
11270 else {
11271 if (!issuer) {
11272 throw internalTools_1.makeError(internalTools_1.ErrorCode.API_ERROR, `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, {
11273 request,
11274 issuer
11275 });
11276 }
11277
11278 const [, dependencyName, subPath] = dependencyNameMatch;
11279 const issuerLocator = findPackageLocator(issuer); // If the issuer file doesn't seem to be owned by a package managed through pnp, then we resort to using the next
11280 // resolution algorithm in the chain, usually the native Node resolution one
11281
11282 if (!issuerLocator) {
11283 const result = callNativeResolution(request, issuer);
11284
11285 if (result === false) {
11286 throw internalTools_1.makeError(internalTools_1.ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED, `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree).\n\nRequire path: "${request}"\nRequired by: ${issuer}\n`, {
11287 request,
11288 issuer
11289 });
11290 }
11291
11292 return fslib_1.npath.toPortablePath(result);
11293 }
11294
11295 const issuerInformation = getPackageInformationSafe(issuerLocator); // We obtain the dependency reference in regard to the package that request it
11296
11297 let dependencyReference = issuerInformation.packageDependencies.get(dependencyName);
11298 let fallbackReference = null; // If we can't find it, we check if we can potentially load it from the packages that have been defined as potential fallbacks.
11299 // It's a bit of a hack, but it improves compatibility with the existing Node ecosystem. Hopefully we should eventually be able
11300 // to kill this logic and become stricter once pnp gets enough traction and the affected packages fix themselves.
11301
11302 if (typeof dependencyReference === `undefined`) {
11303 if (issuerLocator.name !== null) {
11304 // To allow programs to become gradually stricter, starting from the v2 we enforce that workspaces cannot depend on fallbacks.
11305 // This works by having a list containing all their locators, and checking when a fallback is required whether it's one of them.
11306 const exclusionEntry = runtimeState.fallbackExclusionList.get(issuerLocator.name);
11307 const canUseFallbacks = !exclusionEntry || !exclusionEntry.has(issuerLocator.reference);
11308
11309 if (canUseFallbacks) {
11310 for (let t = 0, T = fallbackLocators.length; t < T; ++t) {
11311 const fallbackInformation = getPackageInformationSafe(fallbackLocators[t]);
11312 const reference = fallbackInformation.packageDependencies.get(dependencyName);
11313 if (reference == null) continue;
11314 if (alwaysWarnOnFallback) fallbackReference = reference;else dependencyReference = reference;
11315 break;
11316 }
11317
11318 if (typeof dependencyReference === `undefined` && fallbackReference === null) {
11319 const reference = runtimeState.fallbackPool.get(dependencyName);
11320
11321 if (reference != null) {
11322 fallbackReference = reference;
11323 }
11324 }
11325 }
11326 }
11327 } // If we can't find the path, and if the package making the request is the top-level, we can offer nicer error messages
11328
11329
11330 let error = null;
11331
11332 if (dependencyReference === null) {
11333 if (isDependencyTreeRoot(issuerLocator)) {
11334 error = internalTools_1.makeError(internalTools_1.ErrorCode.MISSING_PEER_DEPENDENCY, `Your application tried to access ${dependencyName} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.\n\nRequired package: ${dependencyName} (via "${request}")\nRequired by: ${issuer}\n`, {
11335 request,
11336 issuer,
11337 dependencyName
11338 });
11339 } else {
11340 error = internalTools_1.makeError(internalTools_1.ErrorCode.MISSING_PEER_DEPENDENCY, `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.\n\nRequired package: ${dependencyName} (via "${request}")\nRequired by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuer})\n`, {
11341 request,
11342 issuer,
11343 issuerLocator: Object.assign({}, issuerLocator),
11344 dependencyName
11345 });
11346 }
11347 } else if (dependencyReference === undefined) {
11348 if (isDependencyTreeRoot(issuerLocator)) {
11349 error = internalTools_1.makeError(internalTools_1.ErrorCode.UNDECLARED_DEPENDENCY, `Your application tried to access ${dependencyName}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${dependencyName} (via "${request}")\nRequired by: ${issuer}\n`, {
11350 request,
11351 issuer,
11352 dependencyName
11353 });
11354 } else {
11355 error = internalTools_1.makeError(internalTools_1.ErrorCode.UNDECLARED_DEPENDENCY, `${issuerLocator.name} tried to access ${dependencyName}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${dependencyName} (via "${request}")\nRequired by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuer})\n`, {
11356 request,
11357 issuer,
11358 issuerLocator: Object.assign({}, issuerLocator),
11359 dependencyName
11360 });
11361 }
11362 }
11363
11364 if (dependencyReference === null) throw error || new Error(`Assertion failed: Expected an error to have been set`);
11365
11366 if (typeof dependencyReference === `undefined`) {
11367 if (fallbackReference === null || error === null) throw error || new Error(`Assertion failed: Expected an error to have been set`);
11368 dependencyReference = fallbackReference;
11369 const message = error.message.replace(/\n.*/g, ``);
11370 error.message = message;
11371
11372 if (!emittedWarnings.has(message)) {
11373 emittedWarnings.add(message);
11374 process.emitWarning(error);
11375 }
11376 } // We need to check that the package exists on the filesystem, because it might not have been installed
11377
11378
11379 const dependencyLocator = Array.isArray(dependencyReference) ? {
11380 name: dependencyReference[0],
11381 reference: dependencyReference[1]
11382 } : {
11383 name: dependencyName,
11384 reference: dependencyReference
11385 };
11386 const dependencyInformation = getPackageInformationSafe(dependencyLocator);
11387
11388 if (!dependencyInformation.packageLocation) {
11389 throw internalTools_1.makeError(internalTools_1.ErrorCode.MISSING_DEPENDENCY, `A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.\n\nRequired package: ${dependencyLocator.name}@${dependencyLocator.reference} (via "${request}")\nRequired by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuer})\n`, {
11390 request,
11391 issuer,
11392 dependencyLocator: Object.assign({}, dependencyLocator)
11393 });
11394 } // Now that we know which package we should resolve to, we only have to find out the file location
11395
11396
11397 const dependencyLocation = fslib_2.ppath.resolve(runtimeState.basePath, dependencyInformation.packageLocation);
11398
11399 if (subPath) {
11400 unqualifiedPath = fslib_2.ppath.resolve(dependencyLocation, subPath);
11401 } else {
11402 unqualifiedPath = dependencyLocation;
11403 }
11404 }
11405
11406 return fslib_2.ppath.normalize(unqualifiedPath);
11407 }
11408
11409 ;
11410 /**
11411 * Transforms an unqualified path into a qualified path by using the Node resolution algorithm (which automatically
11412 * appends ".js" / ".json", and transforms directory accesses into "index.js").
11413 */
11414
11415 function resolveUnqualified(unqualifiedPath, {
11416 extensions = Object.keys(module_1.Module._extensions)
11417 } = {}) {
11418 const candidates = [];
11419 const qualifiedPath = applyNodeExtensionResolution(unqualifiedPath, candidates, {
11420 extensions
11421 });
11422
11423 if (qualifiedPath) {
11424 return fslib_2.ppath.normalize(qualifiedPath);
11425 } else {
11426 throw internalTools_1.makeError(internalTools_1.ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, `Qualified path resolution failed - none of the candidates can be found on the disk.\n\nSource path: ${unqualifiedPath}\n${candidates.map(candidate => `Rejected candidate: ${candidate}\n`).join(``)}`, {
11427 unqualifiedPath
11428 });
11429 }
11430 }
11431
11432 ;
11433 /**
11434 * Transforms a request into a fully qualified path.
11435 *
11436 * Note that it is extremely important that the `issuer` path ends with a forward slash if the issuer is to be
11437 * treated as a folder (ie. "/tmp/foo/" rather than "/tmp/foo" if "foo" is a directory). Otherwise relative
11438 * imports won't be computed correctly (they'll get resolved relative to "/tmp/" instead of "/tmp/foo/").
11439 */
11440
11441 function resolveRequest(request, issuer, {
11442 considerBuiltins,
11443 extensions
11444 } = {}) {
11445 let unqualifiedPath = resolveToUnqualified(request, issuer, {
11446 considerBuiltins
11447 });
11448 if (unqualifiedPath === null) return null;
11449
11450 try {
11451 return resolveUnqualified(unqualifiedPath, {
11452 extensions
11453 });
11454 } catch (resolutionError) {
11455 if (resolutionError.pnpCode === 'QUALIFIED_PATH_RESOLUTION_FAILED') Object.assign(resolutionError.data, {
11456 request,
11457 issuer
11458 });
11459 throw resolutionError;
11460 }
11461 }
11462
11463 ;
11464
11465 function resolveVirtual(request) {
11466 const normalized = fslib_2.ppath.normalize(request);
11467 const resolved = fslib_1.VirtualFS.resolveVirtual(normalized);
11468 return resolved !== normalized ? resolved : null;
11469 }
11470
11471 return {
11472 VERSIONS,
11473 topLevel,
11474 getLocator: (name, referencish) => {
11475 if (Array.isArray(referencish)) {
11476 return {
11477 name: referencish[0],
11478 reference: referencish[1]
11479 };
11480 } else {
11481 return {
11482 name,
11483 reference: referencish
11484 };
11485 }
11486 },
11487 getDependencyTreeRoots: () => {
11488 return [...runtimeState.dependencyTreeRoots];
11489 },
11490 getPackageInformation: locator => {
11491 const info = getPackageInformation(locator);
11492 if (info === null) return null;
11493 const packageLocation = fslib_1.npath.fromPortablePath(info.packageLocation);
11494 const nativeInfo = Object.assign(Object.assign({}, info), {
11495 packageLocation
11496 });
11497 return nativeInfo;
11498 },
11499 findPackageLocator: path => {
11500 return findPackageLocator(fslib_1.npath.toPortablePath(path));
11501 },
11502 resolveToUnqualified: maybeLog(`resolveToUnqualified`, (request, issuer, opts) => {
11503 const portableIssuer = issuer !== null ? fslib_1.npath.toPortablePath(issuer) : null;
11504 const resolution = resolveToUnqualified(fslib_1.npath.toPortablePath(request), portableIssuer, opts);
11505 if (resolution === null) return null;
11506 return fslib_1.npath.fromPortablePath(resolution);
11507 }),
11508 resolveUnqualified: maybeLog(`resolveUnqualified`, (unqualifiedPath, opts) => {
11509 return fslib_1.npath.fromPortablePath(resolveUnqualified(fslib_1.npath.toPortablePath(unqualifiedPath), opts));
11510 }),
11511 resolveRequest: maybeLog(`resolveRequest`, (request, issuer, opts) => {
11512 const portableIssuer = issuer !== null ? fslib_1.npath.toPortablePath(issuer) : null;
11513 const resolution = resolveRequest(fslib_1.npath.toPortablePath(request), portableIssuer, opts);
11514 if (resolution === null) return null;
11515 return fslib_1.npath.fromPortablePath(resolution);
11516 }),
11517 resolveVirtual: maybeLog(`resolveVirtual`, path => {
11518 const result = resolveVirtual(fslib_1.npath.toPortablePath(path));
11519
11520 if (result !== null) {
11521 return fslib_1.npath.fromPortablePath(result);
11522 } else {
11523 return null;
11524 }
11525 })
11526 };
11527}
11528
11529exports.makeApi = makeApi;
11530
11531/***/ }),
11532/* 33 */
11533/***/ (function(module, exports, __webpack_require__) {
11534
11535"use strict";
11536
11537
11538Object.defineProperty(exports, "__esModule", {
11539 value: true
11540});
11541
11542const fslib_1 = __webpack_require__(5);
11543
11544const module_1 = __webpack_require__(6);
11545
11546function makeManager(pnpapi, opts) {
11547 const initialApiPath = fslib_1.npath.toPortablePath(pnpapi.resolveToUnqualified(`pnpapi`, null));
11548 const initialApiStats = opts.fakeFs.statSync(fslib_1.npath.toPortablePath(initialApiPath));
11549 const apiMetadata = new Map([[initialApiPath, {
11550 cache: module_1.Module._cache,
11551 instance: pnpapi,
11552 stats: initialApiStats
11553 }]]);
11554
11555 function loadApiInstance(pnpApiPath) {
11556 const nativePath = fslib_1.npath.fromPortablePath(pnpApiPath); // @ts-ignore
11557
11558 const module = new module_1.Module(nativePath, null);
11559 module.load(nativePath);
11560 return module.exports;
11561 }
11562
11563 function refreshApiEntry(pnpApiPath, apiEntry) {
11564 const stats = opts.fakeFs.statSync(pnpApiPath);
11565
11566 if (stats.mtime > apiEntry.stats.mtime) {
11567 console.warn(`[Warning] The runtime detected new informations in a PnP file; reloading the API instance (${pnpApiPath})`);
11568 apiEntry.instance = loadApiInstance(pnpApiPath);
11569 apiEntry.stats = stats;
11570 }
11571 }
11572
11573 function getApiEntry(pnpApiPath, refresh = false) {
11574 let apiEntry = apiMetadata.get(pnpApiPath);
11575
11576 if (typeof apiEntry !== `undefined`) {
11577 if (refresh) {
11578 refreshApiEntry(pnpApiPath, apiEntry);
11579 }
11580 } else {
11581 apiMetadata.set(pnpApiPath, apiEntry = {
11582 cache: {},
11583 instance: loadApiInstance(pnpApiPath),
11584 stats: opts.fakeFs.statSync(pnpApiPath)
11585 });
11586 }
11587
11588 return apiEntry;
11589 }
11590
11591 function findApiPathFor(modulePath) {
11592 let curr;
11593 let next = fslib_1.npath.toPortablePath(modulePath);
11594
11595 do {
11596 curr = next;
11597 const candidate = fslib_1.ppath.join(curr, `.pnp.js`);
11598 if (fslib_1.xfs.existsSync(candidate) && fslib_1.xfs.statSync(candidate).isFile()) return candidate;
11599 next = fslib_1.ppath.dirname(curr);
11600 } while (curr !== fslib_1.PortablePath.root);
11601
11602 return null;
11603 }
11604
11605 function getApiPathFromParent(parent) {
11606 if (parent == null) return initialApiPath;
11607
11608 if (typeof parent.pnpApiPath === `undefined`) {
11609 if (parent.filename !== null) {
11610 return findApiPathFor(parent.filename);
11611 } else {
11612 return initialApiPath;
11613 }
11614 }
11615
11616 if (parent.pnpApiPath !== null) return parent.pnpApiPath;
11617 return null;
11618 }
11619
11620 return {
11621 getApiPathFromParent,
11622 findApiPathFor,
11623 getApiEntry
11624 };
11625}
11626
11627exports.makeManager = makeManager;
11628
11629/***/ })
11630/******/ ])["default"];
11631});
\No newline at end of file